Step 5a spec-freshness: add tests/issue_skill_source.py to FAMILY_workflow (half-sync reds test_issue_skill_* collection)
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
Close the Step 5a half-sync gap: the family-atomic spec-freshness block in .claude/skills/issue/SKILL.md (Step 5a, FAMILY_workflow) syncs :(glob)tests/test_issue_skill_*.py from origin/main but NOT the helper module tests/issue_skill_source.py that those tests import (from tests.issue_skill_source import issue_skill_text, read_workflow_doc — introduced by the #2155 SKILL split-step/repoint refactor). Any worktree whose fork point predates the helper gets the pin tests synced WITHOUT the helper: every test_issue_skill_*.py file then fails collection (ModuleNotFoundError: No module named 'tests.issue_skill_source'), which walls pytest -k runs and reds the Step 9c gate as NEW — exactly the #1824/#1860 half-sync class the family mechanism exists to prevent, but at the FAMILY arm (the #2208 import-satisfiability probe covers only the SIBLING-issue arm).
Incident
2026-08-17, issue-2333 worktree: the Step 5a sync (commits ae16ff6fc2 + a015ab89de) pulled the current test_issue_skill_* set; the round-6 implementer then hit 66 collection errors on uv run pytest tests/ -k issue2333 (aborted collection; worked around with an explicit five-file invocation). Repaired manually by syncing the helper: worktree commit 7f341af9e9 (git checkout origin/main -- tests/issue_skill_source.py, spec-freshness subject shape).
Fix (prescribed)
- Add
tests/issue_skill_source.pytoSPECSandFAMILY_OF["tests/issue_skill_source.py"]="workflow"in the Step 5a block of.claude/skills/issue/SKILL.md(and any mirrored copies of the block, e.g. the pre-gate re-sync at Step 10d region — grep forFAMILY_OFoccurrences). - Consider (same change or explicit follow-up): an import-satisfiability probe for FAMILY-synced test files mirroring the sibling arm's #2208 probe (
pytest --collect-onlyon a sample of syncedtest_issue_skill_*files; on failure revert the family sync), so the NEXT main-side helper module cannot recreate the class. If deferred, state why. - Regression pin: extend the relevant
tests/test_issue_skill_*pin test (or add one) asserting the Step 5a SPECS string containstests/issue_skill_source.py.
Candidate metadata
- target_file: .claude/skills/issue/SKILL.md (Step 5a family-atomic sync block)
- fingerprint: step5a-family-workflow-missing-issue-skill-source-helper
- confidence: high (reproduced + manually repaired in the incident worktree)