carlos / platform Public

Region HA spec 1 rev 5.4 and plan 1b: claim readers and evidence, dormant

Spec 1 restated against the host lifecycle claim (rev 6.25+), with Paul's
rulings H10-H19 (2026-10-06): automatic failover on a verified terminated
read alone; host-actors.json as the one roster; choose() for the executor;
no warm reuse of local copies (R6); a box-side reservation check;
automatic enrollment on evidence; a cross-region confirmer for emptied
regions; box-started relocations accept a console's last good report;
disk evidence only for discharging a dead box's cleanup chores. §9 asks
the claim and moves specs for L1-L20 (#236).

Plan 1b builds the parts that need none of L1-L20, all dormant behind
CARLOS_REGION_HA (strconv.ParseBool true, in /etc/carlos/host.env):
- boxid: the AWS-signed identity record is enrollment evidence
  (Verifier.Enroll, both binding directions, legacy tofu id).
- console: eligible boxes from the roster's proven cloud; the P5-D2 hash
  as the final tie-break; WarmCopyTrusted removed.
- agent: publishes its identity record once, under its label.
- termfence: the fence binds to the roster entry and a worker in the
  box's own region; terminated alone (H19).
- boxvolumes: running-time volume records and a fail-safe Discharge.
- edges file: a relocatable host is home only on its claim's executor,
  stamped with holder.stamp; bounded, deadline-limited claim reads.
- system update: root defers an update while the box takes part in a
  claim operation (update-begun marker, .hostexec scan).
- infra: control/boxes, box-volumes, box-enrollment and box-fences are
  create-only and never deleted; tofu test.

Relocation, reconcile row cases, create wiring and fence writes wait for
the claim; the plan lists each against its L-number.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Squashed from design-region-ha-rev5 into main.
Paul Campbell pushed by claude agent, operated by paul@keymail.dev 3e12133ff47671eb67858ee6560e4a2c28c2495b parent 1c43c2c
42 files changed, +9409 −801
  • docs/superpowers/plans/2026-10-06-region-ha-1b-claim-readers.md +4312 −0
  • docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-BRIEF-1.md +47 −0
  • docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-BRIEF-2.md +70 −0
  • docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-BRIEF-3.md +56 −0
  • docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-R1.md +19 −0
  • docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-R2.md +29 −0
  • docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-R3.md +14 −0
  • docs/superpowers/specs/2026-10-04-region-ha-box-placement-design.md +1343 −427
  • docs/superpowers/specs/CODEX-FINDINGS-REGION-HA-REV5-1.md +47 −0
  • docs/superpowers/specs/CODEX-FINDINGS-REGION-HA-REV5-2.md +77 −0
  • docs/superpowers/specs/CODEX-FINDINGS-REGION-HA-REV5-3.md +68 −0
  • docs/superpowers/specs/CODEX-FINDINGS-REGION-HA-REV5-4.md +49 −0
  • docs/superpowers/specs/CODEX-FINDINGS-REGION-HA-REV5-5.md +12 −0
  • docs/superpowers/specs/CODEX-REVIEW-BRIEF-REGION-HA-REV5-1.md +61 −0
  • docs/superpowers/specs/CODEX-REVIEW-BRIEF-REGION-HA-REV5-2.md +85 −0
  • docs/superpowers/specs/CODEX-REVIEW-BRIEF-REGION-HA-REV5-3.md +78 −0
  • docs/superpowers/specs/CODEX-REVIEW-BRIEF-REGION-HA-REV5-4.md +70 −0
  • docs/superpowers/specs/CODEX-REVIEW-BRIEF-REGION-HA-REV5-5.md +57 −0
  • infra/modules/deployment-buckets/main.tf +20 −11
  • infra/modules/deployment-buckets/tests/evidence.tftest.hcl +62 −0
  • internal/activator/activator.go +5 −1
  • internal/activator/installed.go +5 −34
  • internal/activator/installed_test.go +0 −32
  • internal/boxid/boxid_test.go +113 −90
  • internal/boxid/record.go +24 −46
  • internal/boxid/verify.go +121 −39
  • internal/boxvolumes/volumes.go +394 −0
  • internal/boxvolumes/volumes_test.go +361 −0
  • internal/console/boxchoice.go +50 −26
  • internal/console/boxchoice_test.go +76 −29
  • internal/edge/homemap_alias_stamp_test.go +18 −0
  • internal/host/agent.go +3 −0
  • internal/host/boxrecord.go +189 −0
  • internal/host/boxrecord_test.go +183 −0
  • internal/host/edgesclaims.go +276 −0
  • internal/host/edgesclaims_test.go +421 −0
  • internal/host/edgesfile.go +34 −8
  • internal/host/systemapply.go +17 −0
  • internal/host/systemparticipation.go +134 −0
  • internal/host/systemparticipation_test.go +205 −0
  • internal/termfence/fence.go +94 −30
  • internal/termfence/fence_test.go +110 −28

CI cancelled — superseded by a newer push — run details

docs/superpowers/plans/2026-10-06-region-ha-1b-claim-readers.md

Loading diff…

docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-BRIEF-1.md

Loading diff…

docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-BRIEF-2.md

Loading diff…

docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-BRIEF-3.md

Loading diff…

docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-R1.md

Loading diff…

docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-R2.md

Loading diff…

docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-R3.md

Loading diff…

docs/superpowers/specs/2026-10-04-region-ha-box-placement-design.md

Loading diff…

docs/superpowers/specs/CODEX-FINDINGS-REGION-HA-REV5-1.md

Loading diff…

docs/superpowers/specs/CODEX-FINDINGS-REGION-HA-REV5-2.md

Loading diff…

docs/superpowers/specs/CODEX-FINDINGS-REGION-HA-REV5-3.md

Loading diff…

docs/superpowers/specs/CODEX-FINDINGS-REGION-HA-REV5-4.md

Loading diff…

docs/superpowers/specs/CODEX-FINDINGS-REGION-HA-REV5-5.md

Loading diff…

docs/superpowers/specs/CODEX-REVIEW-BRIEF-REGION-HA-REV5-1.md

Loading diff…

docs/superpowers/specs/CODEX-REVIEW-BRIEF-REGION-HA-REV5-2.md

Loading diff…

docs/superpowers/specs/CODEX-REVIEW-BRIEF-REGION-HA-REV5-3.md

Loading diff…

docs/superpowers/specs/CODEX-REVIEW-BRIEF-REGION-HA-REV5-4.md

Loading diff…

docs/superpowers/specs/CODEX-REVIEW-BRIEF-REGION-HA-REV5-5.md

Loading diff…

infra/modules/deployment-buckets/main.tf

Loading diff…

infra/modules/deployment-buckets/tests/evidence.tftest.hcl

Loading diff…

internal/activator/activator.go

Loading diff…

internal/activator/installed.go

Loading diff…

internal/activator/installed_test.go

Loading diff…

internal/boxid/boxid_test.go

Loading diff…

internal/boxid/record.go

Loading diff…

internal/boxid/verify.go

Loading diff…

internal/boxvolumes/volumes.go

Loading diff…

internal/boxvolumes/volumes_test.go

Loading diff…

internal/console/boxchoice.go

Loading diff…

internal/console/boxchoice_test.go

Loading diff…

internal/edge/homemap_alias_stamp_test.go

Loading diff…

internal/host/agent.go

Loading diff…

internal/host/boxrecord.go

Loading diff…

internal/host/boxrecord_test.go

Loading diff…

internal/host/edgesclaims.go

Loading diff…

internal/host/edgesclaims_test.go

Loading diff…

internal/host/edgesfile.go

Loading diff…

internal/host/systemapply.go

Loading diff…

internal/host/systemparticipation.go

Loading diff…

internal/host/systemparticipation_test.go

Loading diff…

internal/termfence/fence.go

Loading diff…

internal/termfence/fence_test.go

Loading diff…