Retire the recovery cluster and its test files #431

Closed
opened 2026-08-18 18:32:00 +00:00 by jared · 1 comment
Owner

#431 Retire the recovery cluster and its test files (open)

@jared created 2026-08-18 14:32

Parent

#425
Map: #425

What to build

Contract phase: with completion timestamps making stuck stored state
structurally impossible, delete the recovery machinery (resumer, rollback,
reemit, recovery-status, retry ledger) and the runner CLI recover command
surface, plus the test files covering async-guard and resume/recover paths.
The genuine human decision point — retry-with-guidance / skip / abort after
a failed gate — survives as routing on the surviving endpoints. Also retire
the tickets.state column machinery replaced by timestamp-derived state, if
not already removed by earlier tickets. Estimated net negative 200 to 600
LOC.

Acceptance criteria

[ ] recovery cluster deleted
[ ] remaining test suite green
[ ] retry-with-guidance/skip/abort still reachable and CLI-seam tested
[ ] no orphaned references verified with ast-grep

Blocked by

#430

Origin

• Trigger: /to-tickets skill on #425 spec
• Improvised this session: none
• Chain: #425 (DESIGN) ← decomposed via /to-tickets user approval 2026-08-18
• Root candidate: none (this is a decomposition task)

# #431 Retire the recovery cluster and its test files (open) @jared created 2026-08-18 14:32 ## Parent #425 Map: #425 ## What to build Contract phase: with completion timestamps making stuck stored state structurally impossible, delete the recovery machinery (resumer, rollback, reemit, recovery-status, retry ledger) and the runner CLI recover command surface, plus the test files covering async-guard and resume/recover paths. The genuine human decision point — retry-with-guidance / skip / abort after a failed gate — survives as routing on the surviving endpoints. Also retire the tickets.state column machinery replaced by timestamp-derived state, if not already removed by earlier tickets. Estimated net negative 200 to 600 LOC. ## Acceptance criteria [ ] recovery cluster deleted [ ] remaining test suite green [ ] retry-with-guidance/skip/abort still reachable and CLI-seam tested [ ] no orphaned references verified with ast-grep ## Blocked by #430 ## Origin • Trigger: /to-tickets skill on #425 spec • Improvised this session: none • Chain: #425 (DESIGN) ← decomposed via /to-tickets user approval 2026-08-18 • Root candidate: none (this is a decomposition task)
Author
Owner

Resolution

Done: Recovery cluster deleted: rollback.rb, reemit.rb, recovery_status.rb, wedge_target.rb, dispatch_consistency.rb, their Engine methods, the recover Thor command + usage string, and 4 test files pinning recovery/async-guard paths — net -867 LOC. Human decision point survives untouched: resume TICKET --action retry|retry-with-guidance|skip|abort (Resumer never depended on deleted machinery), covered by existing CLI-seam tests. Two disclosed boundary calls: RetryLedger KEPT despite being named in the ticket cluster (GateFailureFlow uses it on every gate failure in the still-live legacy pipeline — deleting it breaks standing behavior); tickets.state retirement DEFERRED (pervasive in TicketFlow/GateFailureFlow/TransitionApplier/Resumer, outside the recovery cluster's blast radius per the ticket's own if-clause). bin/refresh-plugins run.

Evidence: commit 61aa3a3; suite 276 runs/594 assertions 0 failures (delta from 306/655 exactly the 4 deleted test files); ast-grep+grep orphan sweep empty for all deleted class names; rubocop clean on modified files; LOC delta exceeds the ticket's -200..-600 estimate (larger test files than estimated)

Follow-ups: one, verdict: pre-existing scoped debt, already owned by later work — tickets.state → timestamp-derived retirement for the legacy ticket pipeline cascades into TicketFlow/TransitionTable and warrants its own ticket only if the legacy pipeline outlives the #425 rebuild; #433 assembly judges whether the legacy pipeline itself is stale code first, so no new ticket filed now (recorded in the map workbench)

## Resolution **Done:** Recovery cluster deleted: rollback.rb, reemit.rb, recovery_status.rb, wedge_target.rb, dispatch_consistency.rb, their Engine methods, the recover Thor command + usage string, and 4 test files pinning recovery/async-guard paths — net -867 LOC. Human decision point survives untouched: resume TICKET --action retry|retry-with-guidance|skip|abort (Resumer never depended on deleted machinery), covered by existing CLI-seam tests. Two disclosed boundary calls: RetryLedger KEPT despite being named in the ticket cluster (GateFailureFlow uses it on every gate failure in the still-live legacy pipeline — deleting it breaks standing behavior); tickets.state retirement DEFERRED (pervasive in TicketFlow/GateFailureFlow/TransitionApplier/Resumer, outside the recovery cluster's blast radius per the ticket's own if-clause). bin/refresh-plugins run. **Evidence:** commit 61aa3a3; suite 276 runs/594 assertions 0 failures (delta from 306/655 exactly the 4 deleted test files); ast-grep+grep orphan sweep empty for all deleted class names; rubocop clean on modified files; LOC delta exceeds the ticket's -200..-600 estimate (larger test files than estimated) **Follow-ups:** one, verdict: pre-existing scoped debt, already owned by later work — tickets.state → timestamp-derived retirement for the legacy ticket pipeline cascades into TicketFlow/TransitionTable and warrants its own ticket only if the legacy pipeline outlives the #425 rebuild; #433 assembly judges whether the legacy pipeline itself is stale code first, so no new ticket filed now (recorded in the map workbench)
jared closed this issue 2026-08-18 21:44:33 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jared/cc-os#431
No description provided.