daily-fix: spec-freshness awk exclusion keys on subject shap
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.
Overview / Motivation
Auto-filed by the /daily Step C parked-candidate sweep (2026-07-28) from a formal candidate block parked on task #1747 (ts 2026-07-28T12:28:19Z, fp c758ab311e19; emitted during #1747's own merge flow).
Goal
Tighten the Step 5a / Step 10d family-dirty detection's commit-subject exclusion to match the prescribed sync-commit subject SHAPE ("sync workflow-surface specs from") instead of the bare token "spec-freshness", so a deliverable commit legitimately carrying the token is not silently excluded.
Workflow gap
- Bug observed: the family-dirty detection excludes branch-side commits whose SUBJECT contains the bare token "spec-freshness"; #1747's own DELIVERABLE commit ("task #1747: Step 5a spec-freshness sync sources fetched origin/main") legitimately carries the token, so
.claude/skillsread as CLEAN and the Step 10d post-gate re-sync would have clobbered the deliverable with origin/main's copy — the session had to force the workflow family dirty by hand (2026-07-28). - Why it is a workflow gap: the exclusion is meant to skip only PRESCRIBED sync commits, but it keys on a bare substring any wf-fix ABOUT the sync machinery will legitimately carry — a fail-open clobber, the inverse of the guard's fail-safe design.
- Confidence (emitter): medium
- verified-at-filing:
grep -n 'index($0, "spec-freshness")' .claude/skills/issue/SKILL.md→ 3 hits (lines 2436, 10426, 11711 — the candidate names two copies; there are THREE awk copies to fix in lockstep), and the prescribed sync-commit subject "sync workflow-surface specs from" exists verbatim at SKILL.md:2471/10413/11728, so the proposed anchor string is real (2026-07-29 UTC). Pin test:tests/test_issue_skill_lint_family_sync.py:193asserts the awk string verbatim — must be updated in the same commit. Landed-fix history check:git log --oneline --since='7 days ago' -- .claude/skills/issue/SKILL.mdshows #1747's own merge (fed4be9f6b) which added the fetched-origin sourcing, not this exclusion tightening; the bare-token awk is still live at all 3 sites.
Proposed change (candidate diff sketch — refine in planning)
- | awk 'index($0, "spec-freshness") == 0'
+ | awk 'index($0, "sync workflow-surface specs from") == 0'
All THREE copies (SKILL.md:2436 Step 5a, :10426 Guard block, :11711 Step 10d), kept in lockstep per the #1714 drift-guard pin test; update the Guard-3 subject-variant prose + tests/test_issue_skill_lint_family_sync.py's awk assertion in the same commit.
Scope / surfaces
- Primary target:
.claude/skills/issue/SKILL.md(3 awk copies),tests/test_issue_skill_lint_family_sync.py(pin assertion) - Grep for further copies before editing:
grep -rn 'spec-freshness") == 0' .claude/ scripts/ tests/.
Constraints / invariants
- Workflow-surface only.
scripts/workflow_lint.py --check-askspasses. - The #1714 lockstep pin test must pass after the edit.
- Recursion guard applies to the spawned session.
Provenance
-
sha-verify (filing-time, #1467):
c758ab311e19cited in commit context does NOT resolve as a commit in this repo at filing time — treat as a transcript/session reference, not a commit. -
workflow_fix_target: .claude/skills/issue/SKILL.md
-
fingerprint: c758ab311e19
target_file: .claude/skills/issue/SKILL.md bug_observed: the Step 5a / Step 10d family-dirty detection excludes branch-side commits whose SUBJECT contains the bare token "spec-freshness"; task #1747's own DELIVERABLE commit ("task #1747: Step 5a spec-freshness sync sources fetched origin/main") legitimately carries the token, so .claude/skills read as CLEAN and the Step 10d post-gate re-sync would have clobbered the deliverable with origin/main's copy — the session had to force the workflow family dirty by hand (2026-07-28, this task's merge flow). why_workflow_gap: the exclusion is meant to skip only PRESCRIBED sync commits, but it keys on a bare substring any wf-fix ABOUT the sync machinery will legitimately carry — a fail-open clobber, the inverse of the guard's fail-safe design. proposed_change: tighten the awk exclusion (both the Step 5a block and the Step 10d inline copy, kept in lockstep per the #1714 drift-guard pin test) to match the prescribed sync-commit subject SHAPE, e.g. the substring "sync workflow-surface specs from", instead of the bare token "spec-freshness"; update the Guard-3 subject-variant prose + the pin test's awk assertion in the same commit. confidence: medium related_task: #1747