Gate each fast-path finding on its cop and touched tests; run the full suite once per batch #1254
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#1254
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
bin/fast-gateruns the full os-sdlc suite after every fast-path finding. In fast-batch-12, the full-suite gate runs took about 17 of the 35 agent minutes. The edits took about 30 s for each builder. The batch cost is mostly gate time, not edit time. CRC run 4 over os-sdlc will run many findings, so this cost repeats on each one.Reproduce
n/a: cost ticket; the evidence is the fast-batch-12 cost rows in
docs/sdlc-fast-path.md.Approach
Decided 2026-10-23.
bin/fast-gateruns only the tests for the files that the finding changed. The batch keeps its one full-suite run:skills/fast-batch/SKILL.mdstep 7 item 1 already runsruby plugins/os-sdlc/tests/all.rbin the worktree before the merge. No new--fullflag.FastGate::Run#checks(fast_gate/run.rb:33) buildsSuiteCheckfrom a newFastGate::SuiteScope.SuiteScopetakes fast-gate's merge-base changed paths (fast_gate/changed_files.rb). It maps them to tests with the same mapping thatSuite::DiffPlanuses (Codebase#tests_for,Suite::Candidates), and it widens totarget.test.commandunder the same rule asDiffPlan#widened?(ADR-0202). Do not changeProject::Changesor its four callers.When no test maps and nothing widens,
SuiteScoperuns no suite, and the summary saysno touched tests.The PASS line names the scope:
touched N testsorfull suite.Update the fast-gate text in
skills/fast-batch/references/batch-brief.md,agents/finding-builder.md, anddocs/sdlc-fast-path.md:24to say the gate runs the touched tests, and that the batch runs the full suite once before the merge.Required work:
SuiteScopeinplugins/os-sdlc/lib/os_sdlc/fast_gate/run.rbtouchedinplugins/os-sdlc/lib/os_sdlc/fast_gate/suite_scope.rbtouched testsinplugins/os-sdlc/skills/fast-batch/references/batch-brief.mdtouched testsindocs/sdlc-fast-path.mdRejected: a
--fullflag — the batch-end suite run already exists in step 7. ChangeProject::Changesto take a base ref — it touches four callers that do not need it.Acceptance criteria
bin/fast-gateruns, then only those tests run and the PASS line saystouched N tests.bin/fast-gateruns, then the full suite runs and the PASS line saysfull suite.bin/fast-gateruns, then no suite runs and the summary saysno touched tests.bin/fast-gateruns, then the gate fails and names the failing test.Owner sketch
Origin
docs/sdlc-fast-path.md, fast-batch-12 cost rows; commit3cc28a30)bin/fast-gatedesign (commit05e4e1b7) — DESIGN:plugins/os-sdlc/bin/fast-gateplugins/os-sdlc/bin/fast-gate,plugins/os-sdlc/lib/os_sdlc/fast_gateBlocking edges
fast_gate/suite_check.rb, the PASS summary).VERDICT: CREATE
Work started on branch ticket-1254 (os-sdlc implement pipeline).
Resolution
Done: bin/fast-gate runs only the tests mapped to the changed files (new FastGate::SuiteScope over Suite::DiffPlan); it widens to the full suite when a changed code file has no mapped test, and runs no suite when nothing maps. The PASS line names the scope: 'touched N tests', 'full suite', or 'no touched tests'. fast-batch keeps its one full-suite run before the merge (SKILL.md step 7 item 1); batch-brief.md, finding-builder.md and docs/sdlc-fast-path.md say so.
Evidence: Implementation 120 complete with 0 retries in 12 min 8 s, Runner commit
65a8df97on ticket-1254; suite-check gate green (suite 62 s); contract-auditor pass. Main loop read the production diff.Follow-ups: none