Make abort mark the ticket blocked with clear details (fail-loud follow-through) #436

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

Context

With skip removed (ADR-0131, #435), abort is the only exit from a red gate that cannot be corrected within the seam. Today the abandon path (Implementation.abandon!, invoked via abandon_unfinished! at implementation.rb:47 when opening a new implementation) does not roll back or update the worked ticket as blocked with details — there is no distinct "abort" method or code path; abandonment happens as a side effect of opening a fresh implementation. The user's stated design: back up and correct if within the seam, or roll back and update the ticket as blocked with clear details; either way fail loudly.

Tasks

[ ] Decide the rollback semantics for an aborted round (git state, .sdlc state)
[ ] On abort, post a blocked comment on the worked ticket naming the failed step, the gate output, and the retry history; apply the waiting label per backlog rules
[ ] Tests for the abort path additions

Acceptance criteria

[ ] An aborted round leaves a loud, durable trace on the ticket it was working — never a silent abandonment

Origin

  • Trigger: skip removal design discussion, session 2026-08-19 — the user described this behavior explicitly ('rollback and update the ticket as blocked with clear details')
  • Improvised this session: none
  • Chain: silent abandonment on abort <- Implementation.abandon! called only via abandon_unfinished! (plugins/os-sdlc/lib/os_sdlc/runner/implementation.rb:45-47), triggered by opening a new implementation, not by a dedicated abort action <- DESIGN (docs/adr/0131)
  • Root candidate: this ticket
## Context With skip removed (ADR-0131, #435), abort is the only exit from a red gate that cannot be corrected within the seam. Today the abandon path (Implementation.abandon!, invoked via abandon_unfinished! at implementation.rb:47 when opening a new implementation) does not roll back or update the worked ticket as blocked with details — there is no distinct "abort" method or code path; abandonment happens as a side effect of opening a fresh implementation. The user's stated design: back up and correct if within the seam, or roll back and update the ticket as blocked with clear details; either way fail loudly. ## Tasks [ ] Decide the rollback semantics for an aborted round (git state, .sdlc state) [ ] On abort, post a blocked comment on the worked ticket naming the failed step, the gate output, and the retry history; apply the waiting label per backlog rules [ ] Tests for the abort path additions ## Acceptance criteria [ ] An aborted round leaves a loud, durable trace on the ticket it was working — never a silent abandonment ## Origin - Trigger: skip removal design discussion, session 2026-08-19 — the user described this behavior explicitly ('rollback and update the ticket as blocked with clear details') - Improvised this session: none - Chain: silent abandonment on abort <- Implementation.abandon! called only via abandon_unfinished! (plugins/os-sdlc/lib/os_sdlc/runner/implementation.rb:45-47), triggered by opening a new implementation, not by a dedicated abort action <- DESIGN (docs/adr/0131) - Root candidate: this ticket
Author
Owner

Body corrected 2026-08-23 from code-probe verification (agent aa7e6dbcd1ffaeeb6, claude-sonnet-5).

Change log:

  • Removed the claim that a distinct "abort" method calls Implementation.abandon!. No abort code path exists in the codebase; abandon! is only reached via abandon_unfinished! (implementation.rb:47) as a side effect of opening a new implementation.
  • Replaced the stale chain citation plugins/os-sdlc/lib/os_sdlc/runner/round_resume.rb (file does not exist) with the real call site: implementation.rb:45-47.

Reason: the ticket's underlying problem (no loud, durable trace on abort/abandon) is still real and unfixed — only the described mechanism and file citation were wrong, so the ticket stays open with a corrected chain.

Body corrected 2026-08-23 from code-probe verification (agent aa7e6dbcd1ffaeeb6, claude-sonnet-5). Change log: - Removed the claim that a distinct "abort" method calls Implementation.abandon!. No abort code path exists in the codebase; abandon! is only reached via abandon_unfinished! (implementation.rb:47) as a side effect of opening a new implementation. - Replaced the stale chain citation plugins/os-sdlc/lib/os_sdlc/runner/round_resume.rb (file does not exist) with the real call site: implementation.rb:45-47. Reason: the ticket's underlying problem (no loud, durable trace on abort/abandon) is still real and unfixed — only the described mechanism and file citation were wrong, so the ticket stays open with a corrected chain.
Author
Owner

Resolution

Done: Scope reassessed 2026-08-26: the blocked-drive case is covered by the escalation redesign (ADR-0152, #513) and SKILL.md implementation_failed instructions; the remaining gap (dead TeaTracker code, silent crash path, non-blocking progress comments) is re-captured with the user's updated design in #517.

Evidence: Code-probe report 2026-08-26: TeaTracker#blocker_comment/#add_waiting_label defined at tea_tracker.rb:22-37, called nowhere in lib/ or bin/; escalation paths at next_step.rb:148-165,221-231; orchestrator ticket instructions at skills/implement/SKILL.md:108-113.

Follow-ups: #517 (user-approved replacement, shrunken scope)

## Resolution **Done:** Scope reassessed 2026-08-26: the blocked-drive case is covered by the escalation redesign (ADR-0152, #513) and SKILL.md implementation_failed instructions; the remaining gap (dead TeaTracker code, silent crash path, non-blocking progress comments) is re-captured with the user's updated design in #517. **Evidence:** Code-probe report 2026-08-26: TeaTracker#blocker_comment/#add_waiting_label defined at tea_tracker.rb:22-37, called nowhere in lib/ or bin/; escalation paths at next_step.rb:148-165,221-231; orchestrator ticket instructions at skills/implement/SKILL.md:108-113. **Follow-ups:** #517 (user-approved replacement, shrunken scope)
jared closed this issue 2026-08-26 20:35:02 +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#436
No description provided.