Remove the skip resume action from the round pipeline (fail loudly) #435

Closed
opened 2026-08-19 15:34:27 +00:00 by jared · 2 comments
Owner

Context

Walking the resume code after the legacy-pipeline retirement showed skip wedges rounds: it records a -1 StepResult and deactivates the escalation, but the round stays active with no pending dispatch, so InstructionQuery returns await_completion forever. The user's standing principle: the pipeline fails loudly; no accept-the-red path. Every escalation is already written skippable: false and the flag has zero behavioral readers.

Tasks

  • Red: replace test_skip_records_a_marked_step_result_for_the_skipped_step in tests/runner/cli_round_resume_test.rb with a test asserting action :skip raises RoundResume::Refused; delete the skipped_step_result helper
  • Green: remove skip: :skip! from ACTIONS, delete skip! and SKIPPED_EXIT_STATUS (lib/os_sdlc/runner/round_resume.rb:6-8,83-86); ACTIONS.fetch already refuses unknown actions
  • Drop skippable: false kwarg from Escalation.create in lib/os_sdlc/runner/completion_intake.rb:128; remove t.TrueClass :skippable from lib/os_sdlc/runner/db.rb:156; bump SCHEMA_VERSION 3→4 (db.rb:7, disposable db per ADR-0129)
  • Update tests/runner/instruction_query_parked_test.rb:31 (expected resume_command string) and :45 (fixture kwarg)
  • Sweep strings/prose: lib/os_sdlc/runner/instruction_query.rb:32, lib/os_sdlc/runner/cli.rb:26,61, skills/implement/SKILL.md:39, CONTEXT.md:11, skills/pipeline-state-investigate/SKILL.md:33,130,134,150,152
  • Remove dead Escalation::SkipNotAllowed (lib/os_sdlc/runner/escalation.rb:4) — defined, never raised or rescued
  • Full suite + rubocop green

Acceptance criteria

  • resume actions are exactly retry | retry-with-guidance | abort; --action skip is refused with a clear error
  • No reference to skip, SKIPPED_EXIT_STATUS, skippable, or SkipNotAllowed remains in plugins/os-sdlc lib, tests, skills, or docs
  • retry, retry-with-guidance, abort behavior unchanged; suite and rubocop green

Out of scope: making abort update the ticket as blocked with details (separate follow-up).

Origin

  • Trigger: post-retirement design review of the round resume path (session 2026-08-19), reading round_resume.rb / completion_intake.rb / instruction_query.rb
  • Improvised this session: none
  • Chain: wedged await_completion after skip ← skip! omits the gate chain ← skip action ported from the legacy Resumer concept in retirement Wave 1 (45e8b8f) without a fail-loud review. End: DESIGN (docs/os-sdlc-rebuild/legacy-retirement-plan.md, open question 1; ADR-0130).
  • Root candidate: this ticket
## Context Walking the resume code after the legacy-pipeline retirement showed skip wedges rounds: it records a -1 StepResult and deactivates the escalation, but the round stays active with no pending dispatch, so InstructionQuery returns await_completion forever. The user's standing principle: the pipeline fails loudly; no accept-the-red path. Every escalation is already written skippable: false and the flag has zero behavioral readers. ## Tasks - [ ] Red: replace test_skip_records_a_marked_step_result_for_the_skipped_step in tests/runner/cli_round_resume_test.rb with a test asserting action :skip raises RoundResume::Refused; delete the skipped_step_result helper - [ ] Green: remove skip: :skip! from ACTIONS, delete skip! and SKIPPED_EXIT_STATUS (lib/os_sdlc/runner/round_resume.rb:6-8,83-86); ACTIONS.fetch already refuses unknown actions - [ ] Drop skippable: false kwarg from Escalation.create in lib/os_sdlc/runner/completion_intake.rb:128; remove t.TrueClass :skippable from lib/os_sdlc/runner/db.rb:156; bump SCHEMA_VERSION 3→4 (db.rb:7, disposable db per ADR-0129) - [ ] Update tests/runner/instruction_query_parked_test.rb:31 (expected resume_command string) and :45 (fixture kwarg) - [ ] Sweep strings/prose: lib/os_sdlc/runner/instruction_query.rb:32, lib/os_sdlc/runner/cli.rb:26,61, skills/implement/SKILL.md:39, CONTEXT.md:11, skills/pipeline-state-investigate/SKILL.md:33,130,134,150,152 - [ ] Remove dead Escalation::SkipNotAllowed (lib/os_sdlc/runner/escalation.rb:4) — defined, never raised or rescued - [ ] Full suite + rubocop green ## Acceptance criteria - [ ] resume actions are exactly retry | retry-with-guidance | abort; --action skip is refused with a clear error - [ ] No reference to skip, SKIPPED_EXIT_STATUS, skippable, or SkipNotAllowed remains in plugins/os-sdlc lib, tests, skills, or docs - [ ] retry, retry-with-guidance, abort behavior unchanged; suite and rubocop green Out of scope: making abort update the ticket as blocked with details (separate follow-up). ## Origin - Trigger: post-retirement design review of the round resume path (session 2026-08-19), reading round_resume.rb / completion_intake.rb / instruction_query.rb - Improvised this session: none - Chain: wedged await_completion after skip ← skip! omits the gate chain ← skip action ported from the legacy Resumer concept in retirement Wave 1 (45e8b8f) without a fail-loud review. End: DESIGN (docs/os-sdlc-rebuild/legacy-retirement-plan.md, open question 1; ADR-0130). - Root candidate: this ticket
Author
Owner

Work started: TDD removal dispatched in-session (2026-08-19), main branch.

Work started: TDD removal dispatched in-session (2026-08-19), main branch.
Author
Owner

Resolution

Done: Removed the skip resume action, SKIPPED_EXIT_STATUS, the skippable escalations column (SCHEMA_VERSION 3→4), and the dead Escalation::SkipNotAllowed class; resume is retry|retry-with-guidance|abort. TDD: red test asserting skip is refused, then removal. CLI help, resume_command, and prose in implement SKILL, CONTEXT.md, pipeline-state-investigate SKILL updated. ADR-0131 records the fail-loud decision.

Evidence: Commit 3d9ffc2. Full suite 804 runs / 2095 assertions / 0 failures; rubocop clean on all touched files; grep audit shows no dangling skip/skippable/SkipNotAllowed references in the round pipeline. Diff reviewed in-session.

Follow-ups: #436 captured: make abort mark the worked ticket blocked with clear details. Also under active design discussion: whether the remaining resume actions survive at all (user is skeptical of park-and-resume entirely).

## Resolution **Done:** Removed the skip resume action, SKIPPED_EXIT_STATUS, the skippable escalations column (SCHEMA_VERSION 3→4), and the dead Escalation::SkipNotAllowed class; resume is retry|retry-with-guidance|abort. TDD: red test asserting skip is refused, then removal. CLI help, resume_command, and prose in implement SKILL, CONTEXT.md, pipeline-state-investigate SKILL updated. ADR-0131 records the fail-loud decision. **Evidence:** Commit 3d9ffc2. Full suite 804 runs / 2095 assertions / 0 failures; rubocop clean on all touched files; grep audit shows no dangling skip/skippable/SkipNotAllowed references in the round pipeline. Diff reviewed in-session. **Follow-ups:** #436 captured: make abort mark the worked ticket blocked with clear details. Also under active design discussion: whether the remaining resume actions survive at all (user is skeptical of park-and-resume entirely).
jared closed this issue 2026-08-19 15:41:41 +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#435
No description provided.