carlos / platform Public

spec: rollback pops History[0]; say it once, not both ways

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015QCUCpfxbCyEAVQ2m51dH5
Paul Campbell pushed by paul@keymail.dev cd0d59a0ad70f3c49127286bdd019cd728ea638b parent 785f0bc
1 file changed, +4 −4
  • docs/superpowers/specs/2026-09-06-carlos-system-update-design.md +4 −4

CI failed — run details

diff --git a/docs/superpowers/specs/2026-09-06-carlos-system-update-design.md b/docs/superpowers/specs/2026-09-06-carlos-system-update-design.md
index 7db22cae1..2bc453e58 100644
--- a/docs/superpowers/specs/2026-09-06-carlos-system-update-design.md
+++ b/docs/superpowers/specs/2026-09-06-carlos-system-update-design.md
@@ -417,11 +417,11 @@ outcome (a no-op request, §6) is shown as such, not as an apply.
**`carlos system rollback [--channel …]`**
-Swaps `Current` with `History[0]` — whole releases, so the previous
+Pops `History[0]` into `Current` — whole releases, so the previous
artifacts and hashes come back with the version — re-signs with
-`PromotedAt` now, bumps the serial. `History[0]` becomes `Current` and is
-removed from `History`; a second rollback goes one further back. Nothing GCs `bootstrap/router/` in
-v1, so the objects are there. Every box rolls back through the same path
+`PromotedAt` now, bumps the serial. The outgoing release is not pushed
+back, so a second rollback goes one further back rather than undoing the
+first. Nothing GCs `bootstrap/router/` in v1, so the objects are there. Every box rolls back through the same path
it rolled forward on; the box-side `.prev` (§6) is for the box that
cannot come up, not for this.