Show os-sdlc step failure reasons to the orchestrator and in the report #806
Labels
No labels
P0
P1
P2
P3
bug
category/code-change
category/cross-repo
category/eval-run
category/investigation
category/no-test-target
category/owner-ruling
category/prose-artifact
category/recurring-chore
category/structure
category/umbrella
crc-refactor
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
rule-proposal
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#806
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
When a step fails, the orchestrator does not see why. The dispatch payload carries only
node,agentandinstructions. The reason goes only to the next agent's brief. The final report showsfailwith no reason. The user cannot find repeated failures, information gaps between agents, or bad choices that a rule or heuristic could prevent.Reproduce
n/a: feature ticket.
Approach
The reasons already exist:
A review agent failure renders the objections that the failed dispatch raised. A gate failure such as suite-check renders
TestReport.parse(output).lines(limit: 15)fromstep_results.output.TestReportcomes from #808.What the user sees:
The dispatch presenter from #805 adds a
failure:key when the step before this one failed.CompletionIntakealready tells the orchestrator to relaynext_stepexactly as given, so the relay carries the block.Required work:
TestReportlines for a gate failure, capped at 15 lines. The behavior-verifier does not writeobjectionsrows: its fail handoff carriesCORRECTION:andGAP:items (implementation 64, dispatch 665). The presenter must render those too; trace how they reach the next test-writer brief and read them from the same source.failure:key to the dispatch payload when the previous step failed.failures:list toImplementation::Summary#to_h, one entry for each failed dispatch, with its id, agent and first reason line.skills/implement/SKILL.md, tell the orchestrator: after you dispatch, show thefailureblock to the user. In the report step, show thefailureslist under the table — check: presentfailuresinplugins/os-sdlc/skills/implement/SKILL.mdRejected: a new
dispatches.reasoncolumn —objectionsandstep_results.outputalready hold the reasons.Rejected: show the failure before the dispatch — it slows the run for information the user reads later.
Acceptance criteria
failurenames the failed dispatch id and agent and lists both objections with their expected actions.failurelists the failed test names and messages and no backtrace lines.failurekey.implementation-reportruns, thenfailureshas two entries with id, agent and first reason line.Owner sketch
Non-goals
A concise lint report presenter. The raw
gate_resultsfact for the programmer node.Blocked by
#805: move
NextStepandCompletionIntakepayload rendering intopresenter/.#808: extract
TestReportandLintReport.Origin
failrows in the implementation summary table with no reasonpipeline/next_step.rb:82-86,presenter/implementation/dispatch_summary.rb:30-35)plugins/os-sdlc/lib/os_sdlc/pipeline/next_step.rb,plugins/os-sdlc/lib/os_sdlc/presenter/implementation/summary.rbTriage 2026-09-29: still valid, not a duplicate. No Failure presenter or failure: payload key exists on main. Fully specified (required work, 5 acceptance criteria, owner sketch). Blocked by #805 (open, payload rendering into presenters). Other blocker #808 is closed and merged (
5dcc15c7, TestReport/LintReport). Labels: waiting (named blocker #805), enhancement, create. Move to ready-for-agent when #805 merges.Blocker #805 closed (
17d051b7); ready for agent.