os-sdlc: wire code-probe evidence brief into downstream dispatch + gate its output #403
Labels
No labels
P0
P1
P2
P3
bug
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
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#403
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?
Follow-up from #359/ADR-0118. (1) No runner consumer reads .sdlc/tickets//evidence-brief.md back into the next dispatch packet (needs an EvidenceBrief annotation analogous to SeamDecisionBrief). (2) The code-probe map-row gate (
test -s {{brief_path}}) checks the incoming brief, not the agent's output — consider gating on evidence-brief.md like seam/verdict gates.Decomposition
Decision: mirror the seam-decision pattern exactly. New named gate
"evidence"in GateEvaluator (like"seam"/"verdict"); EvidenceBrief parser + brief annotation sibling to SeamDecision/SeamDecisionBrief; code-probe map row swaps its no-op shell gate for"evidence". No new ADR — extends ADR-0113/0116 patterns.Tasks (via os-sdlc pipeline agents: test-writer → programmer → lint → reviewer)
path_for→.sdlc/tickets/<id>/evidence-brief.md;valid?iff file exists and contains the six labeled lines of skills/code-probe/references/brief-template.md."evidence"(like SEAM_GATE/VERDICT_GATE) — pass iff EvidenceBrief valid, fail with a naming message otherwise.## Evidence brief(mirror SeamDecisionBrief's test-writer branch; sibling class, not nested).gate: "evidence"replacingtest -s {{brief_path}}. (Blocked by the gate task.)Acceptance criteria
"evidence"gate fails when evidence-brief.md is missing, empty, or missing any of the six labeled lines; passes on a template-shaped file.{{brief_path}}.os-backlog closewith done/evidence/follow-ups.In scope
Parser, named gate, seam-designer packet injection, map row, tests.
Out of scope
Feeding the evidence brief to test-writer/review stages, changing the brief template's shape, retrofitting other stages' gates, agent/skill prose changes.
Work starting via /os-sdlc:implement on main.
Resolution
Done: EvidenceBrief reader class + named evidence-brief gate in GateEvaluator (fails closed on missing/empty output) + seam-designer dispatch brief now inlines evidence-brief content; code-probe map row gate swapped from tautological test -s {{brief_path}}; SeamDecisionBrief renamed StageBriefAnnotations per review transform. Full os-sdlc pipeline run end to end (code-probe -> seam-designer -> test-writer -> programmer -> lint -> review APPROVE).
Evidence: Commits
3f0a5a7+ merge to main; suite on main 915 runs / 2252 assertions / 0 failures; rubocop clean on changed files; reviewer verdict APPROVE in .sdlc/tickets/403/verdict.md; bin/refresh-plugins clean.Follow-ups: Captured as issue #404 (resume retry crash on agentless states + reviewer packet evidence gap). Deliberately dropped: structural six-line validation of evidence-brief.md — gate is presence/non-empty like sibling artifact gates; tighten later only if probe briefs drift.