design-self-serve-offline-moves
Self-serve region moves: the design (rev 16), the four plans (1-3 READY, 4 at rev 3), and the BUILD of plan 1 (lifetimes and order), ready for Paul's rulings and an inert merge.
Plan 1 gives every instance record a lifetime (host incarnation slot, incarnation and move_seq on the record, tombstone retirement) so that a later self-serve move can never be undone by a stale box, console or create. Everything ships inert: nothing changes until an operator runs the lifetimes cutover (carlos system lifetimes cutover, an admission gate the console drains before activating; the door refuses while any box lacks the lifetimes-1 edges-file capability). Claims-on deployments are untouched (a nil judge is today's behaviour everywhere).
Built by subagent-driven development, twelve task gates (Tasks 1, 2, 6a, 0, 3, 5, 4, 6b, 6c, 7, 8, 9), each task-reviewed to clean; Astra's whole-branch review found four blocking items (box-floor skip after a marker-read failure; a create retiring a foreign slot over a corrupt record; raw instance-key counts in internal/domains; the rollout note) and two residuals, all fixed; Astra's check 3 says READY. Boxes roll before the console; the cutover runs after the old console stopped; an older box must never return once the marker exists.
Owed before merge: Paul's census ruling on #280 (all rows PROPOSED), the copy review (discussion #350), CI green on the tip. Owed after: the carlos system lifetimes cutover subcommand in the carlos CLI repo (the console door and docs are here), then plans 2, 3 and 4 rev 4.
Self-serve offline moves: design (rev 16, Astra READY) and four implementation plans. Plan 1 lifetimes and order (rev 5, in Astra review 5); plan 2 token, door, reservations, reports, job (rev 1, in Astra review 1); plan 3 holding page, alias rule, probe mode (rev 1); plan 4 cleanup (rev 1). Nothing built yet; the build starts with plan 1 once READY, behind CARLOSSELFSERVE_MOVES.
Agent notes
Review artefacts: /home/paulca/.cache/tmp/claude-1001/own/after236/selfserve-plan1-review{,2,3,4,5}.md and selfserve-plan2-review.md; running log OVERNIGHT-20261021-selfserve.md in the same directory. Each plan-1 round shrank: 16, 12, 10, 9 findings; rev 5 removed the slot cache and merged the successor hold with its lifetime install.
Discussions 2 open
Tasks 18/26 done
- Plan 1 lifetimes and order: Astra READY (rev 22, b48a5d40, after 21 rounds) Done
- Plan 2 door, token, job: Astra READY (rev 18, 52c5fc2a, after 18 rounds) Done
- Plan 3 holding page: Astra READY Done
- Plan 4 cleanup: Astra READY Not started
- Build plan 1 (tasks 1-9): BUILT, Astra READY, CI green at e8087b49; merge inert awaits Paul Started
Activity
- claude agent, operated by paul@keymail.dev replied to Plan 1 copy review: the new sentences on design-self-serve-offline-moves
- claude agent, operated by paul@keymail.dev added task Plan 1 Task 8: edges-file pair, home-map fold (3571b264..d86371e8)
- claude agent, operated by paul@keymail.dev added task Plan 1 Task 9: end-to-end witnesses (8e38e78b..7e6a0845)
- claude agent, operated by paul@keymail.dev added task Plan 1: Astra final review F1-F7 + R1/N1 fixed; READY at e8087b49; CI green
- task updated: Plan 1 Task 5: lazy migration, marker adoption (9991e16f..766641c0)
- claude agent, operated by paul@keymail.dev added task Plan 1 Task 4: retirement, purge, box floor (c354c191..52421ae2)
- claude agent, operated by paul@keymail.dev added task Plan 1 Task 6b: reconcile removal loop, host consumers (7c8046dc..ede14218)
- claude agent, operated by paul@keymail.dev added task Plan 1 Task 6c: console routing, read audit TestNoUnjudgedRecordReads (7ce649e2..80f5487f)
- claude agent, operated by paul@keymail.dev added task Plan 1 Task 7: move_seq, registry pair, existing-row rules (f50d0565..026b14ff)
- claude agent, operated by paul@keymail.dev added task Plan 1 Task 2: SQLite lifetime tables (e065b41a..76b59713)
- claude agent, operated by paul@keymail.dev added task Plan 1 Task 6a: LifetimeJudge, judged readers, root index (81b27317..5ed73da6)
- claude agent, operated by paul@keymail.dev added task Plan 1 Task 0: cutover admission gate (6730df5d..b81a9534)
- claude agent, operated by paul@keymail.dev added task Plan 1 Task 3: create/attach doors, fenceRecord (a2960376..2a75caa7)
- claude agent, operated by paul@keymail.dev added task Plan 1 Task 5: lazy migration, marker adoption (9991e16f..766641c0)
- task updated: Plan 1 build: all tasks built and reviewed; Astra final review READY at e8087b49 (two fix rounds); awaiting CI, then Paul's census (#280) and copy rulings
- claude agent, operated by paul@keymail.dev added task Plan 1 Task 1: record lifetime fields, slot, judge primitives (267ea4fc..60e45985)
- task updated: Build plan 1 (tasks 1-9): BUILT, Astra READY, CI green at e8087b49; merge inert awaits Paul
- claude agent, operated by paul@keymail.dev opened Plan 1 copy review: the new sentences on design-self-serve-offline-moves
- claude agent, operated by paul@keymail.dev pushed e8087b49c domains: an unknown label keeps its alias only after the name's precedence checks pass (final review 2, N1)
- claude agent, operated by paul@keymail.dev pushed a232dc79c console: a create cleans up a corrupt or stale body under its own live slot, quarantine first (final review 2, R1)
- claude agent, operated by paul@keymail.dev pushed 4a82a5f70 console: hostname locks are refcounted and the lifetime log throttle prunes old keys (final review F7)
- claude agent, operated by paul@keymail.dev pushed c289fe846 host: the no-change release witness arms a fresh releaser, so a stray marker write shows (final review F6)
- claude agent, operated by paul@keymail.dev pushed d16b3c227 console: the migration pass slows down on attempts, not candidates (final review F5)
- claude agent, operated by paul@keymail.dev pushed fc499519a docs: the lifetimes cutover forbids an older box after the marker and names the roll window (final review F4)
- claude agent, operated by paul@keymail.dev pushed 0316ce6a9 domains: the catch-all label counts are judged, so a stale body neither shares a label nor reserves one (final review F3)
- claude agent, operated by paul@keymail.dev pushed 2e9efe252 console: a create retires another owner's live slot only when no record exists under its key (final review F2)
- claude agent, operated by paul@keymail.dev pushed 29b896f93 console: the cutover door runs the box floor unless a validated marker was read (final review F1)
- claude agent, operated by paul@keymail.dev pushed 73722b837 ci: the cutover's two output fences declare text, and the closed-door walk counts the lifetimes cutover door (64)
- task updated: Paul: section 10 Q1-Q6 (Q3 changes a ruling)
- claude agent, operated by paul@keymail.dev pushed 7e6a0845d census: self-serve moves 1 Task 9 fix round 1 records the create door's committed answer and names the @fields row kind