workflow-fix: Step 9c selector does not map .claude/agents prose files to their token-pin tests
Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
Provenance: surfaced by the Claude code-reviewer on #2364 round 1
(2026-08-27) while auditing the round's Gate-scope line; pre-existing on
trunk (Step 0.9 subclass pre-existing-on-trunk), not introduced by #2364.
The gap
The #2364 round edited .claude/agents/codex-code-reviewer.md (Blocker-tags
line) and .claude/agents/code-reviewer.md. Two committed tests pin exactly
those artifacts byte-identically:
tests/test_codex_code_reviewer_step09_tag_parity.py(pins the codex Blocker-tags line + the Step 5c-bis strip-subset sentence),tests/test_verdict_disagree_observer.py(Blocker-tags vocabulary consumer).
Neither appeared in the implementer's 96-file local union NOR the selector's
205-file Step 9c selection: select_step9c_tests.py has no mapping arm from
an edited .claude/agents/*.md file to the prose/token-pin tests that read
it (a text-pin test neither imports nor importlib-loads the agent file, so
the import-map arm from #1299 and the importlib-literal arm proposed in
#2380 both structurally miss it). Edits to agent specs are therefore not
gated by their own pin tests at Step 9c; #2364's reviewer discharged the
NOT-RUN presumption by hand (71 passed).
Proposed fix (implementing session refines)
Extend the selector's file→test mapping so .claude/agents/<name>.md (and
sibling agent-prose surfaces) map to their token-pin tests — either a
maintained explicit map (the FAMILY_agents vetted-membership list in
.claude/skills/issue/steps/09-step-5.md already enumerates candidates) or
a cheap content-scan arm (tests whose source contains the literal edited
path). Add a membership assert so the map cannot silently rot (the guard-20
convention in tests/test_issue_skill_lint_family_sync.py).
Acceptance
- Editing
.claude/agents/codex-code-reviewer.mdalone makes the selector selecttests/test_codex_code_reviewer_step09_tag_parity.py. - The mapping is enumerable + pinned (a new agent-pin test either joins the map or a named exempt list; a lint/test asserts completeness).
- No regression in selector wall-time worth noting (the map is static).