carlos / platform Public

docs: fix round 1 — dev/Kass prerequisite, gate reconciliation

Review catch (Important): plan-2's rollout note 3 (prove backhaul
across two REAL boxes on dev/Kass) was missing from the reconciliation
— added as step 0 of the arming checklist, explicit that it gates any
flagship arming rather than running in parallel with it.

Nit: name that plan-2's two MUST-FIX-BEFORE-STAGE-5 gates (seeded
change-gate, stuck-state visibility) already landed in this plan's own
Task 1 (8bd84c6) — the reconciliation had been silent on them.

Docs-only; full gate (build/vet/test/darwin, 30 packages) re-run green.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Paul Campbell pushed by paul@keymail.dev e6a1633817c71935d2204189277d84eca927f3ab parent 250c4e1
1 file changed, +26 −0
  • docs/superpowers/plans/2026-08-23-multi-region-steering.md +26 −0
diff --git a/docs/superpowers/plans/2026-08-23-multi-region-steering.md b/docs/superpowers/plans/2026-08-23-multi-region-steering.md
index dd5fee0c7..86e70b18d 100644
--- a/docs/superpowers/plans/2026-08-23-multi-region-steering.md
+++ b/docs/superpowers/plans/2026-08-23-multi-region-steering.md
@@ -363,6 +363,20 @@ rollout notes and constraints where they name Part 4 directly.
### Arming checklist (per deployment, in order)
+0. **Prove the backhaul path on the dev/Kass deployment across two REAL
+ boxes — plan-2 rollout note 3 — before any flagship arming.** This is
+ a PREREQUISITE, not parallel work: nothing in either this branch or
+ plan 2 (multi-region-backhaul) has run across two real boxes — Task
+ 6's two-edge e2e (`67de75f`) is in-process, with edges files written
+ directly into a fake store, not a real cross-box network hop. Arm a
+ second box on dev/Kass, verify checklist items 1–2 below hold LIVE
+ (not just in a fake store), drive one real cross-box hop with
+ `curl --resolve` against the far box's EIP for a host homed on the
+ near box, and confirm the marker/XFF/one-hop behaviour Task 6 pinned
+ in-process also holds over a real network hop. Flagship AU remains
+ the first STEERING target once this proving ground has passed — it
+ is the spec's designated low-stakes choice for steering specifically,
+ not a substitute for proving backhaul over a real network first.
1. **Confirm plan-2's stage-5 checklist items 1–2 already hold for this
deployment before arming steering at all** (consumed here, not
repeated in full — see `2026-08-22-multi-region-backhaul`'s rollout
@@ -527,6 +541,18 @@ rollout notes and constraints where they name Part 4 directly.
### Constraints from plan 2 (multi-region-backhaul), checked against what shipped
+- **Both of plan 2's whole-branch-final-review MUST-FIX-BEFORE-STAGE-5
+ gates already landed, in this plan's own Task 1.** Gate (a) — seed the
+ edges-file change-gate (`*last`) from the bucket at loop arm, so a
+ restart during a transient IMDS blip doesn't publish `"eip":""` over a
+ box's own last-good file — and gate (b) — visibility for the two
+ silent stuck-state paths (`staleHopRefusal` logging, the backhaul 502
+ `ErrorHandler` going through `logThrottled`) — are exactly this plan's
+ Task 1 (commit `8bd84c6`, "host+edge: stage-5 gates — seeded edges
+ gate, region field, stuck-state visibility"). Named explicitly here
+ because the reconciliation above was otherwise silent on them: they
+ are not still-open items, they are done, and step 0's dev/Kass proving
+ ground is the next gate in the same sequence, not a duplicate of these.
- **Pool narrowing (backhaul plan's constraint #6): honored, and more
strictly than asked.** The constraint required that a steered
non-shared-pool route only get latency records for the armed edges