docs: disclose single-engine-host node distribution + add study site & story slides

Paper (stage-07 lead): add an Apparatus disclosure (§4.3) and a Node-distribution
limitation (§7) stating that all relay hops ran as isolated Docker containers on a
single engine host and the two phones were consenting endpoints, not forwarders.
Containment (engine != local) holds; cross-machine timing is out of scope / future work.

Add the self-contained study site (docs/paper-site/: build_site.py, index.html) built
straight from the sealed paper markdown, plus a generator + six 1080x1920 Instagram-story
teaser slides (make_story_slides.py, story/) using only sealed, audited numbers. Defensive
measurement framing throughout; the pre-registered nulls are reported, not spun.
This commit is contained in:
leetcrypt
2026-07-22 17:03:58 -07:00
parent 7b28e0a89d
commit de0d34cce1
16 changed files with 2650 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
<!doctype html><html><head><meta charset=utf-8>
<meta name=viewport content="width=1080,height=1920">
<style>
*{margin:0;padding:0;box-sizing:border-box}
html,body{width:1080px;height:1920px;overflow:hidden}
body{
font-family:-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
background:radial-gradient(120% 90% at 50% 0%,#141b2e 0%,#0a0e1a 55%,#05070f 100%);
color:#eef2fb; position:relative;
}
.frame{position:absolute;inset:0;padding:96px 84px;display:flex;flex-direction:column}
.kicker{font-size:30px;letter-spacing:.30em;font-weight:700;text-transform:uppercase;color:#63d3ff}
.rq{font-size:34px;letter-spacing:.10em;font-weight:800;color:#8b9bc4;text-transform:uppercase}
h1{font-size:104px;line-height:1.02;font-weight:850;letter-spacing:-.01em;margin:8px 0}
h2{font-size:62px;line-height:1.08;font-weight:800;letter-spacing:-.01em}
.sub{font-size:40px;line-height:1.34;color:#c3cce2;font-weight:450}
.big{font-family:'SF Mono',ui-monospace,Menlo,monospace;font-weight:800;letter-spacing:-.02em}
.mono{font-family:'SF Mono',ui-monospace,Menlo,monospace}
.pill{display:inline-block;padding:12px 26px;border-radius:999px;font-size:30px;font-weight:700}
.good{background:rgba(52,211,153,.16);color:#59f0b6;border:2px solid rgba(52,211,153,.45)}
.bad{background:rgba(248,113,113,.14);color:#ff9b9b;border:2px solid rgba(248,113,113,.4)}
.muted{color:#8b9bc4}
.foot{position:absolute;left:84px;right:84px;bottom:70px;display:flex;justify-content:space-between;
align-items:center;font-size:26px;color:#6b7a9c;font-weight:600;letter-spacing:.04em}
.spacer{flex:1}
.card{background:rgba(255,255,255,.035);border:2px solid rgba(255,255,255,.08);border-radius:28px;
padding:40px 44px}
.dim{color:#9aa7c6}
</style></head><body>
<div class=frame>
<div class=kicker>The verdict</div>
<div style="height:18px"></div>
<h2>7 pre-registered tests.<br>Holm-corrected.<br><span style="color:#59f0b6">3 survived.</span></h2>
<div style="height:44px"></div>
<svg viewBox="0 0 940 620" width="912" xmlns="http://www.w3.org/2000/svg" style="align-self:center">
<line x1="440" y1="30" x2="440" y2="600" stroke="#3a4a78" stroke-width="3" stroke-dasharray="6 8"/>
<text x="440" y="618" text-anchor="middle" font-size="26" fill="#6b7a9c" font-family="monospace">no effect</text>
<text x="0" y="78" font-size="30" fill="#cfe4ff" font-family="monospace">RQ1-P1</text>
<line x1="288" y1="70" x2="668" y2="70" stroke="#59f0b6" stroke-width="6"/>
<circle cx="531" cy="70" r="10" fill="#59f0b6"/>
<text x="870" y="80" font-size="40" fill="#59f0b6">&#10003;</text>
<text x="0" y="158" font-size="30" fill="#cfe4ff" font-family="monospace">RQ2-P1</text>
<line x1="478" y1="150" x2="744" y2="150" stroke="#59f0b6" stroke-width="6"/>
<circle cx="622" cy="150" r="10" fill="#59f0b6"/>
<text x="870" y="160" font-size="40" fill="#59f0b6">&#10003;</text>
<text x="0" y="238" font-size="30" fill="#cfe4ff" font-family="monospace">RQ2-P3</text>
<line x1="516" y1="230" x2="653" y2="230" stroke="#59f0b6" stroke-width="6"/>
<circle cx="584" cy="230" r="10" fill="#59f0b6"/>
<text x="870" y="240" font-size="40" fill="#59f0b6">&#10003;</text>
<text x="0" y="318" font-size="30" fill="#cfe4ff" font-family="monospace">RQ1-P2</text>
<line x1="379" y1="310" x2="516" y2="310" stroke="#6b7a9c" stroke-width="6"/>
<circle cx="448" cy="310" r="10" fill="#6b7a9c"/>
<text x="870" y="320" font-size="40" fill="#6b7a9c">&times;</text>
<text x="0" y="398" font-size="30" fill="#cfe4ff" font-family="monospace">RQ3-P2</text>
<line x1="326" y1="390" x2="531" y2="390" stroke="#6b7a9c" stroke-width="6"/>
<circle cx="432" cy="390" r="10" fill="#6b7a9c"/>
<text x="870" y="400" font-size="40" fill="#6b7a9c">&times;</text>
<text x="0" y="478" font-size="30" fill="#cfe4ff" font-family="monospace">RQ3-perf</text>
<line x1="364" y1="470" x2="501" y2="470" stroke="#6b7a9c" stroke-width="6"/>
<circle cx="425" cy="470" r="10" fill="#6b7a9c"/>
<text x="870" y="480" font-size="40" fill="#6b7a9c">&times;</text>
<text x="0" y="558" font-size="30" fill="#cfe4ff" font-family="monospace">RQ3-lat</text>
<line x1="318" y1="550" x2="562" y2="550" stroke="#6b7a9c" stroke-width="6"/>
<circle cx="440" cy="550" r="10" fill="#6b7a9c"/>
<text x="870" y="560" font-size="40" fill="#6b7a9c">&times;</text>
</svg>
<div style="height:26px"></div>
<div class=sub style="text-align:center">Bridge doesn't leak. Federation is a mix, not a funnel.<br>The AI selector didn't win. <b>We pre-committed to the nulls</b><br><b>&mdash; and we report them.</b> That's the point.</div>
<div class=spacer></div>
<div class=foot><span>BCa 95% CI &middot; &alpha;=0.05</span><span>reproducible &middot; sealed &middot; lab-only</span></div>
</div></body></html>