workflow-fix: relocate genuine agents-prose asserts from behavioral tests into a closure-clean FAMILY_agents pin file (#2260 follow-up)
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.
Goal
Relocate the genuine .claude/agents/*.md prose assertions that live inside
BEHAVIORAL test files (files whose dependency closure imports unsynced
scripts/ / src/ modules) into a dedicated closure-clean agents-prose pin
file, so those files can drop out of guard (20)'s
_AGENTS_PROSE_EXEMPT_GENUINE dict in
tests/test_issue_skill_lint_family_sync.py and the new pin file can join
the FAMILY_agents spec-freshness sync family (#2260).
Context: #2260 coupled the vetted closure-clean agents-prose pin tests to a
Step 5a/10d FAMILY_agents sync family. Behavioral files with genuine
agents-prose asserts could NOT join (membership would sync them against
branch-era scripts//src/, the sync-scope boundary rationale (ii)), so
their asserts are carried as ACCEPTED RESIDUALS in the guard's
genuine-exempt dict. Each such assert can still red a worktree gate on pure
vintage skew (a fresh main-side agents edit + a branch-era assert). Moving
the asserts to a closure-clean pin file closes that residual.
Scope — the asserts to relocate
tests/test_matched_support.py— 3 prose asserts (~:350/:358/:391) overstatistics-critic.md/interpretation-critic.md/critic.md(matched-support lens wiring pins). File closure: numpy + importlib-by-path of the matched_support implementation.tests/test_pod_audit.py— theresearch-pm.mdtriage-protocol assert (test_pm_triage_protocol_present, ~:721-723). File closure: pod_audit / pod_config / runpod_api scripts.tests/test_bootstrap_pod_git_credentials.py— the #1271 no-tokenized-remote-URL negative pin over ALL agent specs (test_no_tokenized_remote_url_in_experimenter_recipes, agents-dir glob ~:291+). File closure: subprocess-executesscripts/bootstrap_pod.sh.tests/test_verify_plan.py— 2 planner.md prose asserts discovered at #2260 implement-time vet (the plan's provisional table had classed the file incidental):test_planner_md_carries_predicate_anchor_literals(:6812-6822, 4 anchor literals) and the durability-pin author-side assert (:7372-7375,Durability pin:/#884/Selector registration). File closure:scripts/verify_plan.py(unsynced).
Deliverable
- A new closure-clean pin file (e.g.
tests/test_agents_prose_pins.py; stdlib-only closure) carrying the relocated asserts verbatim (or behavior-equivalent), added toFAMILY_agents(FAMILY_OF entries + SPECS- SPECS_10D tokens in BOTH sync copies, a
_FORK_STUBS_2303stub, and test (1)'s SPECS-literal pin update — the guard (20) failure message enumerates the full checklist).
- SPECS_10D tokens in BOTH sync copies, a
- The four files above removed from
_AGENTS_PROSE_EXEMPT_GENUINE(their reader-pattern matches then either vanish or become incidental — re-vet per the #2260 §4.1 decision rule; a residual incidental mention moves to_AGENTS_PROSE_INCIDENTAL_EXEMPTand must pass its AST shape check). - Guard (20) green on the live tree after the move.
Explicitly excluded
tests/test_ensemble_review_cap.py is DELIBERATELY excluded: it is #2420's
subject file — its workflow-prose coupling decision (the spelled-cap scan
over the whole workflow doc surface) belongs to #2420, and its
genuine-exempt rationale string in guard (20) names #2420 as the owner of
any future promotion. Do not relocate its agents-dir glob here.
Acceptance
uv run pytest tests/test_issue_skill_lint_family_sync.py -qgreen with the four files out of the genuine-exempt dict.- The relocated asserts still pin the SAME prose (grep each literal in the new pin file).
uv run pytest tests/test_matched_support.py tests/test_pod_audit.py tests/test_bootstrap_pod_git_credentials.py tests/test_verify_plan.py -qgreen (no behavior loss in the source files).
Provenance
workflow_fix_target: tests/test_issue_skill_lint_family_sync.py
Filed by the #2260 unit-2 implementer per plan v3 §4.5 (implementation-time step). Origin: the FAMILY_agents coupling (#2260) accepted four genuine-residual exemptions whose relocation this task owns.