Every ticket as the root of its provenance graph — goal, patch, approval, runs and (as the ticket-class build lands) mandate, manifestations, guarantees, journey, artifacts and children. Rendered through the <<<TicketGraphList>>> tag.
RFC (all-hands, DEEP): why do agents STOP when loaded with tasks — why don't they carry through? Grounded in observed orphaning
goal
The core reliability question: loaded agents STOP short and do not carry their tasks through. This RFC is grounded in DIRECT EVIDENCE observed this session, not speculation:
OBSERVED: (E1) a dispatched pair (#164) was orphaned — 'no completion record... may have been running when the previous Claude Code process exited'. (E2) multiple background agent tasks marked STOPPED on session churn (bai6v318g, b0m359qxo, blk5c616q). (E3) 43 tickets queued with ZERO agents running until manually re-dispatched — the chain did not self-continue.
HYPOTHESES TO INVESTIGATE (all-hands, one lens each):
H1 LIFECYCLE/DURABILITY: background agents are children of the SESSION process; on session summarize/restart/exit they are orphaned with no durable record. The ticket ledger is durable but the RUNNER (pair_loop) is session-bound. H2 CONTEXT EXHAUSTION: a loaded agent's context fills -> summarization -> the task thread/intent is diluted and the agent drifts or declares done. H3 PREMATURE COMPLETION: agents declare DONE before acceptance is met; the adversary-pair only partially guards this. H4 NO CHECKPOINT/RESUME: in-flight work has no durable checkpoint (LangGraph #177), so any interruption = total loss, not resume. H5 LOOP NON-CONTINUATION: the dispatch chain/ScheduleWakeup is not re-armed and stops silently. H6 TOOL/PERMISSION HALT: a denied tool call halts an agent mid-task with no retry/reroute. H7 HANDOFF GAP: on resume, the agent does not re-read the ticket JOURNAL to reconstruct 'what was I doing'.
MITIGATIONS TO DESIGN+RECOMMEND: (M1) move the runner to a DURABLE SERVICE (process_manager, like kokoro/litellm) so agents survive session teardown; (M2) checkpoint/resume via LangGraph (#177); (M3) resume-from-journal — an agent picking up a ticket rebuilds state from its append-only journal; (M4) completion gated hard on acceptance criteria + independent adversary; (M5) the dispatch loop as a durable cron/service, not a session-bound cron; (M6) tool-denial reroute. DELIVERABLE: docs/AGENT_CARRYTHROUGH_RFC.md — root-cause analysis per hypothesis (with evidence), a ranked fix list, and the minimal change that would have made #164 survive. Method: all-hands (multi-lens research), adversarially verified.
patch
none
approval
unapproved
runs
no runs recorded
mandate (clauses)
not yet recorded — lands with the ticket-class build
manifestations
not yet recorded — lands with the ticket-class build
guarantees
not yet recorded — lands with the ticket-class build
journey (blunders & successes)
not yet recorded — lands with the ticket-class build
artifacts (forge)
not yet recorded — lands with the ticket-class build