Resumer retry on agent-less states should re-run the gate #371

Closed
opened 2026-08-14 19:43:02 +00:00 by jared · 2 comments
Owner

Context

After fa0985f the escalation row survives, but resume --action retry on an agent-less state (e.g. lint) still raises Sequel::NotNullConstraintViolation. Needs a design decision: route through TicketFlow#emit_action/run_automated vs an automated-dispatch branch in Resumer to allow retrying non-agent gates without breaking the escalation contract.

## Context After fa0985f the escalation row survives, but `resume --action retry` on an agent-less state (e.g. lint) still raises Sequel::NotNullConstraintViolation. Needs a design decision: route through TicketFlow#emit_action/run_automated vs an automated-dispatch branch in Resumer to allow retrying non-agent gates without breaking the escalation contract.
Author
Owner

Deviation incident 2026-08-15 — /os-sdlc:implement run for #402+#405, session https://claude.ai/code/session_01GSYJVRGmBiLGjPppHjY3bZ. Deviating skill: plugins/os-sdlc/skills/implement/SKILL.md.

Expected: resume --action retry re-runs the lint gate after out-of-band fixes. Actual (both tickets, twice each): lint gate escalated with exhausted_from=lint; per prior sessions retry crashes (NOT NULL dispatches.agent, see closed #404), so the orchestrator fixed offenses via lint-fixer subagents, verified rubocop-clean + suite green manually, then resume --action skip. skip worked and routed to reviewer both times. The gate result therefore rests on orchestrator-run checks, not the runner's own gate — see also #405's reviewer noting gate-log.txt held only the invocation error 'no target selected, exit=3'.

Deviation incident 2026-08-15 — /os-sdlc:implement run for #402+#405, session https://claude.ai/code/session_01GSYJVRGmBiLGjPppHjY3bZ. Deviating skill: plugins/os-sdlc/skills/implement/SKILL.md. Expected: resume --action retry re-runs the lint gate after out-of-band fixes. Actual (both tickets, twice each): lint gate escalated with exhausted_from=lint; per prior sessions retry crashes (NOT NULL dispatches.agent, see closed #404), so the orchestrator fixed offenses via lint-fixer subagents, verified rubocop-clean + suite green manually, then resume --action skip. skip worked and routed to reviewer both times. The gate result therefore rests on orchestrator-run checks, not the runner's own gate — see also #405's reviewer noting gate-log.txt held only the invocation error 'no target selected, exit=3'.
Author
Owner

Resolution

Done: Design decision it asked for was made and shipped: 76e3c8e routes agentless-state retry through TicketFlow#emit_action/run_automated, exactly the first proposed option.

Evidence: Same evidence as #364's close: resumer.rb:38-42, ticket_flow.rb:28-34 kind == :automated branch, escalation_test.rb green on HEAD 3b60fb8. Duplicate of #364 per ticket-skeptic 2026-08-15.

Follow-ups: none

## Resolution **Done:** Design decision it asked for was made and shipped: 76e3c8e routes agentless-state retry through TicketFlow#emit_action/run_automated, exactly the first proposed option. **Evidence:** Same evidence as #364's close: resumer.rb:38-42, ticket_flow.rb:28-34 kind == :automated branch, escalation_test.rb green on HEAD 3b60fb8. Duplicate of #364 per ticket-skeptic 2026-08-15. **Follow-ups:** none
jared closed this issue 2026-08-16 00:35:08 +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#371
No description provided.