Late-gate routing rule: test_path offenses dispatch to test-lint-fixer #313
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#313
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?
Question
How does the existing late lint stage (autocorrect → lint gate → lint-worklist → lint-fixer fanout, plus the lint-fixer-single loop path) split offenses by file location so files under test_path dispatch to test-lint-fixer while others go to lint-fixer? Both dispatch paths must be covered — the #261 deadlock arose in the re-dispatch loop. Depends on the test-lint-fixer charter (#312).
Map: #310
Blocked by #312
Resolution (2026-08-07)
Routing rule: agent selection is a pure function of the assignment file's path. A lint assignment file whose target is under test_path dispatches os-sdlc:test-lint-fixer; any other file dispatches os-sdlc:lint-fixer. The rule applies at every dispatch point — the lint-worklist fanout AND the lint-fixer-single re-dispatch loop (where the #261 deadlock actually occurred). No new rows, no worklist restructuring: the existing per-file assignment machinery is reused unchanged; only the agent name varies by path. Per ADR-0097 discipline the routing function lives in tested Ruby under lib/os_sdlc/transition_table/, never in skill prose.
No refusal machinery (per #312): a persisting offense after dispatch is the stepper's ordinary gate failure — now with a worker chartered to act on every file class, the #261 staffing gap is closed structurally.
Conditional green re-run: when any test file was edited at the late gate, green-assert re-runs before proceeding to ac-lint/review — the mirror of #311's red-assert bracket, deterministically verifying the assertion-set invariant held. When only production files were fixed, no re-run; zero cost on that path.