carlos / platform Public

Instance key provision: Astra round 3, unedited

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Paul Campbell pushed by claude agent, operated by paul@keymail.dev 794c45ed663f9e6f3d9d93cb579299336459c3bc parent f649d97
1 file changed, +42 −0
  • docs/superpowers/plans/CODEX-PLAN-INSTANCE-KEY-R3.md +42 −0
diff --git a/docs/superpowers/plans/CODEX-PLAN-INSTANCE-KEY-R3.md b/docs/superpowers/plans/CODEX-PLAN-INSTANCE-KEY-R3.md
new file mode 100644
index 000000000..56e6eb815
--- /dev/null
+++ b/docs/superpowers/plans/CODEX-PLAN-INSTANCE-KEY-R3.md
@@ -0,0 +1,42 @@
+Reviewed HEAD `f649d972825a085aa444b30687b093d38dab7ae4`.
+
+1. **P2 — Replica exclusion stops minting, but still delivers configured keys.** [Plan:1546](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/instance-key-provision/docs/superpowers/plans/2026-10-10-instance-key-provision.md:1546)
+ Returning `InstanceKeyReplica` leaves environment composition unchanged. A home can retain platform key A in its own env while configuration supplies B; the replica receives B because it has no minted override. `InstanceKey("")` then returns B successfully. The adoption endpoint’s 409 cannot enforce refusal because the helper explicitly ignores failures and returns the key ([plan:604](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/instance-key-provision/docs/superpowers/plans/2026-10-10-instance-key-provision.md:604)). This permits the wrong key over the home’s replicated data, contrary to ruling 17’s promised exclusion. Enforce the exclusion at key delivery/resolution, and test an actual replica launch with configured and pre-existing env keys.
+
+2. **P3 — The final dependency order contradicts the shipping gate.** [Plan:3585](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/instance-key-provision/docs/superpowers/plans/2026-10-10-instance-key-provision.md:3585)
+ “O6 and O7 … in that order” conflicts with ruling 24 and O6’s explicit requirement that O7 ship first. Correct the final instruction so it cannot direct implementation back into R2-5’s artifact-retirement defect.
+
+The five round 2 findings are addressed **at the plan-contract level**:
+
+- **R2-1/2:** configuration presence no longer counts; adoption identifies the key, and installation checks its pinned digest.
+- **R2-3:** writer binding and admission-time invalidation reject stale-session and rollback records.
+- **R2-4:** the relay supplies continuous publication; O6 explicitly gates relocation. A lost first report causes refusal.
+- **R2-5:** O7 specifies retirement, inventory and rollback handling before the writer ships, subject to correcting finding 2 above.
+
+The `source` check is sound as specified: the agent derives it and the digest from the launch’s actual environment layers, then checks the helper’s echo against captured launch state. Replica adoption evidence is refused; finding 1 concerns the process still using the delivered key.
+
+The configured-secret digest warrants the existing **P3 note**. A public per-host salt would reduce cross-host correlation and reusable guessing work, but would still permit guessing weak keys. It need not block this plan under the stated threat model.
+
+Static review only; I did not independently compile or execute the proposed snippets.
+
+---
+
+**FIRST PROMPT:**
+Review the instance-key plan at HEAD using the round 3 brief.
+
+**WHAT:**
+Assess whether the revised plan is ready to build.
+
+**STATUS:**
+Review complete: one P2 and one P3. No files changed.
+
+**NEEDED:**
+Nothing for this review.
+
+**RECOMMENDED:**
+Close the replica delivery gap and correct the dependency order.
+
+**SESSION:**
+Safe to close; no processes or scratch files left behind.
+
+**Verdict: not ready to build.**
\ No newline at end of file