carlos / platform Public

woodstar runbook: rehearsal catch — #77 dropped atproto-did from apbridge; cutover sha -> e7406bb

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Paul Campbell 9382ee9122a26544506483d0886912449f583072 parent 68d85df
1 file changed, +14 −1
  • docs/superpowers/plans/2026-08-16-woodstar-cutover-runbook.md +14 −1
diff --git a/docs/superpowers/plans/2026-08-16-woodstar-cutover-runbook.md b/docs/superpowers/plans/2026-08-16-woodstar-cutover-runbook.md
index d7d80f69f..4b40aa7d1 100644
--- a/docs/superpowers/plans/2026-08-16-woodstar-cutover-runbook.md
+++ b/docs/superpowers/plans/2026-08-16-woodstar-cutover-runbook.md
@@ -22,7 +22,7 @@ per spec `docs/superpowers/specs/2026-08-12-woodstar-carloku-migration-design.md
| Delegation zone | `acme.oncarlos.com` (oncarlos.com zone `Z04313755ASMHAWD536L`, Route53, keymail account — edge publishes TXT here via `CARLOS_DNS_PROVIDER=route53` suffix-walk) |
| Delegation CNAME | `_acme-challenge.woodstar.app` → `_acme-challenge.woodstar.app.acme.oncarlos.com` — **DONE 2026-08-16** (stale Caddy TXT leftovers deleted in the same change batch) |
| Old-box cert headroom | apex + wildcard both expire **2026-10-21**; old-box renewal is blocked by the delegation CNAME from its ~Sept 21 renewal window — cutover must land before then, rollback keeps existing certs |
-| W0 build sha | woodstar `origin/main` `1aa534e` — **BUILT + SHIPPED + PROMOTED 2026-08-17** (all six binaries + status, one sha, `GOOS=linux GOARCH=arm64`, clean worktree; channel `canary/woodstar`). A later re-ship repeats D2.3 verbatim at the newer sha |
+| W0 build sha | **`e7406bb` — the last pre-#77 main commit** (SHIPPED + PROMOTED + ADOPTED 2026-08-17, superseding the first `1aa534e` ship). REHEARSAL CATCH: #77 moved the `/.well-known/atproto-did` handler out of apbridge into atbridge, so `1aa534e`'s six-service topology 404s every Bluesky handle verification — `e7406bb` keeps #66 (fan-out) + #76 and matches live prod behavior exactly. The PDS rollout (D5) re-ships newer main WITH atbridge |
| Account | `woodstar` = sqid **`bdm`** on console.carloku.com (Paul owner) — settled 2026-08-17 |
| Channel | `canary/woodstar` (the canary/keymail pattern; all seven apps ride it) |
| Old-box SSH | `ssh -i ~/.ssh/woodstar-canary.pem ec2-user@52.30.232.124` (key per woodstar `scripts/status-publish.sh`) |
@@ -243,6 +243,19 @@ Original checklist (for a re-run; all over
## D3 — Rehearsal (copies only, tear down after)
+**FIRST RUN 2026-08-17 (at `1aa534e`):** restore 11 s + integrity `ok`
+× 3 + relay serving in 1 s = **freeze-to-serving 12 s**. Loopback
+probes: feed/`info`/AASA/real-media-file/search all 200; webfinger +
+`/users/paul` 200 `application/activity+json`; `/subscribe` WS **101**;
+`/img/x` 404 `text/plain` (unfurl service answering — NOT the SPA-HTML
+failure shape); `/stream/` 401 (notify alive, auth-gated);
+`/unfurl?url=…` curl-timeout — the loopback egress lock refusing the
+external fetch, by design. Host behaviors: www → 301 apex ✓, paul →
+302 `/paul` ✓, **atproto-did → 404 ✗ — THE RUN'S CATCH** (see the W0
+build sha row: #77 removed the handler from apbridge; sha moved to
+`e7406bb`, re-shipped + re-adopted). Rehearsal MUST re-run at
+`e7406bb` and show atproto-did 200 before D4.
+
- [ ] **D3.1** server-side CopyObject of the old bucket's backups into
`s3://carlos-data-ie-271376211898/woodstar-rehearsal/`.
- [ ] **D3.2** on the flagship: `litestream restore` the three DBs from