docs(tdd): backtick Touched-files paths in 0044–0047 (fix false structural-(a))#131
Merged
cahenesy merged 1 commit intoJun 10, 2026
Merged
Conversation
…tural-(a)) Resolves the /implement structural-finding(a) halt on TDD 0044 (run 20260610-093522). It was a FALSE HALT: 0044–0047 wrote their ## Touched files paths as bare text (`- scripts/lib/gates.sh — …`), but _rework_touched_files (scripts/lib/gates.sh ~:1390) parses "the first backtick-delimited token" per the convention every other TDD uses (`- `scripts/lib/gates.sh` — …`). So the parser read description backticks (COVERAGE_MAP, coverage_map_block, gh pr create) as the declared set, and the rework's genuinely in-scope edit to scripts/lib/gates.sh failed the FR-67(a) membership check. The rework was never out of scope. Fix (no design substance changed): - Backticked the path token in ## Touched files for all four drafts. Verified _rework_touched_files now returns the real paths for each. - 0044 also pins the GENUINE major the false halt masked (Opus reviewer's Finding 1): coverage_map_normalize's diff-presence test `grep -qxF "$file"` lets an option-shaped citation (--x::name) bypass on GNU grep (CI/prod), surviving as `pinned` and defeating FR-78's model-independent guarantee — it escaped the eval only because this box wraps grep with ugrep. Added a Failure-mode + a Verification regression case mandating `grep -qxF -- "$file"`. The code fix itself is the resumed bounded-rework's job on the retained branch. - BLOCKERS.md: 0044 entry checked off with the full diagnosis. Latent runner footgun (candidate gap-closure, NOT fixed here): tdd-lint does not enforce backticked Touched-files paths, and _rework_touched_files (first-backtick) disagrees with _rework_file_declared_bound (em-dash split). Make one tolerant of bare paths, or have tdd-lint require the backtick. Open assumptions: none surfaced (mechanical format conformance + pinning a reviewer-found bug; no design interview). Resolvable via `/implement --resume` once merged (structural-finding is resumable; 0043 succeeded as PR #130 and 0044's build branch is retained — not a rebuild). tl_lint structural + --bounds: exit 0 on all four TDDs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This was referenced Jun 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Backtick the
## Touched filespath tokens in TDDs 0044–0047 (drafts), resolving the/implementstructural-finding(a)halt on 0044 (run20260610-093522). No design substance changed — format conformance + pinning one reviewer-found bug.Why — it was a FALSE halt
0044–0047 wrote their touched-files paths as bare text (
- scripts/lib/gates.sh — …), but_rework_touched_files(scripts/lib/gates.sh~:1390) parses "the first backtick-delimited token" per the convention every other TDD uses (- `scripts/lib/gates.sh` — …). So the parser read the description backticks (COVERAGE_MAP,coverage_map_block,gh pr create) as the declared set, and the rework's genuinely in-scope edit toscripts/lib/gates.shfailed the FR-67(a) membership check. Proven by running the parser before/after the fix.Changes
## Touched files. Verified_rework_touched_filesnow returns the real paths for each.majorthe false halt masked (the Opus reviewer's Finding 1):coverage_map_normalize's diff-presence testgrep -qxF "$file"lets an option-shaped citation (--x::name) bypass on GNU grep (CI/prod) — surviving aspinned, defeating FR-78's stated model-independent anti-false-green guarantee. It escaped the eval only because this box wrapsgrepwithugrep. Added a Failure-mode + a Verification regression case mandatinggrep -qxF -- "$file". The code fix itself is the resumed bounded-rework's job on the retained build branch.Latent runner footgun (candidate gap-closure — NOT fixed here)
tdd-lintdoes not enforce backticked Touched-files paths, and the two runner parsers disagree:_rework_touched_files(first-backtick) vs_rework_file_declared_bound(em-dash split, tolerates bare paths). The/tdd-authortemplate example itself shows a bare- <path> — <purpose>, so fresh TDDs keep reproducing this. Durable fix: make_rework_touched_filestolerate bare paths, or havetdd-lintrequire the backtick. Flagged for a future TDD.Open assumptions & waivers
Open assumptions: none surfaced (mechanical format conformance + pinning a reviewer-found bug; no design interview run).
Verification
_rework_touched_filessimulation: returns the 5/3/4/3 real paths for 0044/0045/0046/0047 (garbage before).tl_lintstructural +--bounds: exit 0 on all four.After merge
/implement --resume—structural-findingis resumable; 0043 already succeeded (PR #130) and 0044's build branch is retained, so this resumes (not a rebuild). The resumed review re-finds the grepmajor; the bounded-rework loop — now with a correctly-parsed in-scope set — ships thegrep -qxF -- "$file"fix, then the run continues to 0045–0047.🤖 Generated with Claude Code