From 77c819d0c4a8bb485343ffae739f2df405a01cdd Mon Sep 17 00:00:00 2001 From: leyten <86632281+leyten@users.noreply.github.com> Date: Mon, 20 Jul 2026 22:36:46 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20P0-#3=20relay=20automation=20DONE=20?= =?UTF-8?q?=E2=80=94=20relays=20live=20as=20services,=20daemon=20auto-disc?= =?UTF-8?q?overs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operator half: shard-relay.service on the two existing paid public boxes, reservations verified end-to-end (zero new spend; DZ pilot untouched). Network half: c0mpute #44 — /relays.json resolution at enroll, load-bearing entry validation (a malformed -relays entry is sidecar-fatal), env outranks, repo ships the list empty (no public IPs in git). Next = the P0-#6 ring session (churn proof + warm re-join receipt). --- docs/LAUNCH.md | 28 +++++++++++++++++++--------- docs/M25_ENGINE.md | 20 ++++++++++++++------ 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/docs/LAUNCH.md b/docs/LAUNCH.md index be4353e..194c9a2 100644 --- a/docs/LAUNCH.md +++ b/docs/LAUNCH.md @@ -7,12 +7,13 @@ > This file is THE list. If it's not here, it's not a launch blocker — stop carrying it in your head. > _Last synced: 2026-07-20._ > -> **REMAINING BLOCKERS AT A GLANCE (2026-07-20 EOD):** P0-#3 relay automation · P0-#6 -> churn-survival PROOF (+ the warm re-join ≤3min receipt, folded into the same ring session) · -> P1-#3 WSL2 turnkey · P1-#4 adversary hardening → then the rehearsal day. DONE: P0-#1 residue -> **3/4 in one day (manifest resolution shard #125 + c0mpute #42 · standby `sidecar -seed` wiring -> c0mpute #42 · node-side challenge probe shard #126/#127 + c0mpute #43)**, P0-#2, P0-#4, P0-#5 -> EAGLE watchdog, P1-#1 (map live), P1-#2 (Leg 8 + epoch + pay-model). +> **REMAINING BLOCKERS AT A GLANCE (2026-07-20 night):** P0-#6 churn-survival PROOF (+ the warm +> re-join ≤3min receipt, folded into the same ring session) · P1-#3 WSL2 turnkey · P1-#4 adversary +> hardening → then the rehearsal day. DONE TODAY: P0-#1 residue **3/4** (manifest resolution shard +> #125 + c0mpute #42 · standby `sidecar -seed` c0mpute #42 · challenge probe shard #126/#127 + +> c0mpute #43) **and P0-#3 relay automation** (relays LIVE as systemd services + reservations +> verified; daemon auto-discovery c0mpute #44). Earlier: P0-#2, P0-#4, P0-#5 EAGLE watchdog, +> P1-#1 (map live), P1-#2 (Leg 8 + epoch + pay-model). --- @@ -66,9 +67,18 @@ You have a working decentralized inference network. What's left is turning "I ca subprocess gate). Plus the whole SSH + `/root`-flat-layout premise (that half = the daemon, P0-#1). A stranger's box (home dir, non-root, weird paths, WSL2) must Just Work with none of today's hand-patches. -3. **Relay / NAT infrastructure, automated.** NAT'd home nodes reach the network via a public relay + - DCUtR hole-punch — *proven today* — but someone must RUN public relays and the daemon must auto-discover - + reserve on them. Today I ran the relay by hand on one box. +3. ~~**Relay / NAT infrastructure, automated.**~~ ✅ **DONE 2026-07-20 (c0mpute #44 + live infra).** + NAT'd home nodes reach the network via a public relay + DCUtR hole-punch (proven 07-14; relay = + rendezvous only, the data path upgrades to direct). Now automated on both halves: **operator** — + `shard-relay.service` (sidecar `-relay -quic`, persistent key ⇒ stable PeerId, Restart=always) + runs on two existing paid public boxes, reservations verified end-to-end from a test sidecar; + **network** — the daemon resolves `/relays.json` off the orchestrator origin at enroll (cached, + offline-tolerant), VALIDATES every entry (a malformed `-relays` entry is sidecar-fatal — one bad + list push must never kill the fleet; operator env outranks), and arms `-relays` on every sidecar + boot so a NAT'd node announces its circuit addrs from first boot. The repo ships `relays.json` + EMPTY (no public IPs in git); the launch deploy fills it (addrs in the ops notes). _Deferred, + not launch-blocking: AutoNAT-gated reservation (today every node with a list reserves — harmless + at launch scale, circuit addrs rank below direct in dial order)._ 4. ~~**OpenAI-API correctness** (audit M2)~~ ✅ **DONE** (verified 2026-07-15; was remediated in the audit fix, PR #96 — LAUNCH.md was stale). `phase0/m25_gateway.py`: strict `max_tokens`/`max_completion_tokens` diff --git a/docs/M25_ENGINE.md b/docs/M25_ENGINE.md index fc682cd..8f64c83 100644 --- a/docs/M25_ENGINE.md +++ b/docs/M25_ENGINE.md @@ -62,12 +62,20 @@ they shipped). All offline/GPU-less; balance untouched (~$25). upstream answer) + shadow-mode cosine-threshold validation at max block depth on a real cross-vendor pair BEFORE enforcement. -**⇒ THE ONE NEXT ACTION: P0-#3 relay automation** (daemon auto-discovers + reserves on public -relays; the FSN/AMS relay boxes exist — see [[doublezero-pilot-assessment]] for iids). Then the -**P0-#6 ring session: churn-survival proof + the warm re-join ≤3min receipt** (one ring, two -receipts — kill a stage mid-serve → re-form → next request serves; restart a warm daemon → time to -READY; ~$3-5, dead-man switch discipline). Then P1-#4 hardening → P1-#3 WSL2 → rehearsal. -Queued small c0mpute follow-up: daemon restarts a stall-killed coordinator with `M25_EAGLE=0`. +**P0-#3 relay automation: ALSO DONE same night (c0mpute #44 + live infra).** `shard-relay.service` +LIVE on the two existing paid public boxes (sidecar `-relay -quic`, stable PeerIds, DZ pilot +untouched; reservations verified end-to-end from a test sidecar — addrs in the ops notes/memory +[[launch-relays-live]]). Daemon resolves `/relays.json` off the orchestrator origin at enroll, +VALIDATES entries (a malformed `-relays` entry is sidecar-fatal — one bad push must never kill the +fleet; env outranks), arms `-relays` every sidecar boot. Repo ships `relays.json` EMPTY (no public +IPs in git); launch deploy fills it. relay-resolve-test 12/12 + sim proof (unreachable relay = +log, never fatal). Deferred: AutoNAT-gated reservation (harmless at launch scale). + +**⇒ THE ONE NEXT ACTION: the P0-#6 ring session — churn-survival proof + the warm re-join ≤3min +receipt** (one ring, two receipts — kill a stage mid-serve → re-form → next request serves; +restart a warm daemon → time to READY; ~$3-5, dead-man switch discipline). Then P1-#4 hardening → +P1-#3 WSL2 → rehearsal. Queued small c0mpute follow-up: daemon restarts a stall-killed coordinator +with `M25_EAGLE=0`. ### ⇒ 2026-07-20 (LATEST-4) — P0-#5 RING-VALIDATED + KNOBS FORWARDED (PR #122); WEDGE FINDING BANKED **Controlled-ring validation done** (3×5090 Poland/Germany/Poland, ~$3.5, receipt