gate_verdicts fact replaces gate_results for contract-auditor in both poodr maps and reviewer in coding.yaml #686
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#686
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
Rescoped 2026-09-24: the reviewer node exists only in coding.yaml, which no implementation has used. The same argument applies on the default map to contract-auditor, whose charter reads "the latest green gate results" and enters only after suite-check passes. Map edges route on gate results stored by the Runner, so brief facts do not affect routing.
coding.yaml:25 gives the reviewer node
enrich: [ticket_brief, gate_results]. The gate_results fact carries each gate step's full output text (brief_facts.rbgate_results, output passed throughsized). The reviewer charter says at agents/reviewer.md:13: "The deterministic gates already prove mechanical code quality: style, lint, structure. Do not re-check it." None of the six judgment checks reference gate text. Measured over the project pipeline DB (2026-09-17 to 2026-09-24): gate_results median 3,812 chars per dispatch, max 240,397. The hook cap is 10,000 UTF-16 units (ADR-0206), so this fact alone pushes reviewer briefs into the fallback path.Reproduce
n/a: design audit finding, not a runtime defect.
Approach
Add a gate_verdicts fact resolver in brief_facts.rb that returns { step => verdict } from latest_step_summaries with no output field. Use it in place of gate_results for contract-auditor (poodr-implementation.yaml:163, poodr-ticket-implementation.yaml:174) and reviewer (coding.yaml:25). Update the Input lines of reviewer.md and contract-auditor.md to name gate verdicts. Template: the red_tests trim in #670.
Required work:
Acceptance criteria
Owner sketch
Resolver: plugins/os-sdlc/lib/os_sdlc/pipeline/brief_facts.rb (FACT_RESOLVERS, private method next to gate_results). Maps: the three files above. Charters: reviewer.md line 9, contract-auditor.md line 9. Tests: the existing BriefFacts test file and the map tests that assert those enrich lists.
Evidence
Audit row from #676: map coding.yaml | node reviewer | fact gate_results | TRIM | reviewer.md:13 "Do not re-check it."
Origin
Skeptic verdict: CREATE (os-backlog:ticket-skeptic, session 9434289b, citations verified).
Second-opinion review (Codex, session 9434289b): RISK MEDIUM. reviewer.md:9 declares gate output as an input. Ship the charter Input edit in the same change as the map edit. Also: the reviewer role has zero dispatches in .sdlc/pipeline.db, so coding.yaml has no runtime evidence either way.
Map-usage check (session 9434289b): the reviewer node exists only in coding.yaml, which no implementation has used (25 of 25 ran poodr-ticket-implementation.yaml). On the default map the same argument applies to contract-auditor, whose charter reads 'the latest green gate results' and enters only after suite-check pass. Proposed rescope: add a gate_verdicts fact and use it for both reviewer (coding.yaml) and contract-auditor (poodr-ticket-implementation.yaml:174, poodr-implementation.yaml:163). Routing is unaffected: map edges route on gate results stored by the Runner, not on brief facts.
reviewer receives full gate output it is told not to re-check; trim gate_results to gate verdictsto gate_verdicts fact replaces gate_results for contract-auditor in both poodr maps and reviewer in coding.yamlWork started on branch ticket-686 via /os-sdlc:implement, session 9434289b.
Resolution
Done: gate_verdicts fact added to BriefFacts ({ step => verdict }, no output). contract-auditor in both poodr maps and reviewer in coding.yaml enrich gate_verdicts instead of gate_results. reviewer.md and contract-auditor.md Input lines name gate verdicts. Three new test files.
Evidence: os-sdlc implementation 28: 13 dispatches, 2 retries, escalated bound_exhausted:suite-check/fail. Cause: pre-existing test cli_subagent_start_test.rb:132 and support/subagent_start_cli.rb:80 asserted the old gate_results shape; programmer cannot edit tests (#665 routing gap). Hand-fixed per escalation procedure step 4; full suite 1411 runs 0 failures 0 errors; rubocop clean on 6 files; branch ticket-686.
Follow-ups: none new. The routing gap that forced the hand-fix is already #665.