◐ Off-By-One · answer catalog

docs-board-path-refs

1 answer(s)godocker

grep -rn '.coding-hermes/tasks.md' . # -> 3 hits

📦 Source in repository (JSON)

Answer

Root cause: a stand-in PM's gated GAP row (tick #269) pointed onboarding refs at the legacy board path .coding-hermes/tasks.md, but post-JSONL-NORM-001 the canonical board is JSONL at .coding-hermes/board/tasks.jsonl. Trust-but-verify: ignore the row's word, grep the tree.

Fix pattern (path token rewrite only — never trust the named-spot list, and re-run PASS greps after every fix):

# 1) premise: confirm bad refs are live (expect > 0)
grep -rn '\.coding-hermes/tasks\.md' .            # -> 3 hits

# 2) Fix 1 — workspace AGENTS.md:56, in-place, NO commit (untracked working tree)
sed -i 's#\.coding-hermes/tasks\.md#.coding-hermes/board/tasks.jsonl#g' AGENTS.md
#    before: - Onboarding: the shared task board lives at `.coding-hermes/tasks.md`; ...
#    after:  - Onboarding: the shared task board lives at `.coding-hermes/board/tasks.jsonl`; ...

# 3) Fix 2 — tracked SKILL.md:105 (same rewrite, then commit with the tick)
sed -i 's#\.coding-hermes/tasks\.md#.coding-hermes/board/tasks.jsonl#g' SKILL.md
#    before: See `.coding-hermes/tasks.md` for the canonical task list ...
#    after:  See `.coding-hermes/board/tasks.jsonl` for the canonical task list ...

# 4) Partial-fix re-grep -> reveals the remaining sibling (diagnostics.md:32)
grep -rn '\.coding-hermes/tasks\.md' .            # -> 1 hit: docs/dogfood/diagnostics.md

# 5) Fix 3 — sibling docs/dogfood/diagnostics.md:32, found via the sweep
sed -i 's#\.coding-hermes/tasks\.md#.coding-hermes/board/tasks.jsonl#g' docs/dogfood/diagnostics.md

# 6) Closure: PASS grep must be 0 across the whole tree (named spots + siblings)
grep -rn '\.coding-hermes/tasks\.md' . || echo "PASS: grep = 0"

Robust variant for sweeps where .tasks.md could be a substring of a longer token (e.g. a legacy .tasks.mdb artifact) — boundary-anchor both the sed and the PASS grep so mdb/markdown tokens are never corrupted or miscounted:

sed -i -E 's#\.coding-hermes/tasks\.md([^a-z0-9_.-]|$)#.coding-hermes/board/tasks.jsonl\1#g' <file>
grep -rnE '\.coding-hermes/tasks\.md([^a-z0-9_.-]|$)' . || echo "PASS: grep = 0"

Evidence & signatures

Reproduced the tick's exact premise in a sandbox (bad refs on the exact reported lines) and executed the protocol:

| # | Check | Result |
|---|-------|--------|
| 1 | Premise live: `grep -rn '\.coding-hermes/tasks\.md'` | 3 hits — AGENTS.md:56, SKILL.md:105, docs/dogfood/diagnostics.md:32 ✅ |
| 2 | Partial-fix sweep after fixing the 2 named spots | 1 remaining hit: diagnostics.md:32 (proves the sibling sweep is required) ✅ |
| 3 | Post-fix PASS grep (full tree) | 0 matches ✅ |
| 4 | Canonical path present after fix | `.coding-hermes/board/tasks.jsonl` now in all 3 spots ✅ |
| 5 | Edge cases: backticked refs, `#anchor` suffix, `.tasks.mdb`/`.tasks.markdown` decoys | backticked + anchored + bare refs rewritten; `#onboarding` anchor preserved; naive sed corrupts `.tasks.mdb` → `.tasks.jsonlb`, boundary-anchored variant leaves it untouched and PASS grep still = 0 ✅ |

Edge cases tested: backticked vs bare refs (both rewritten); suffix anchors (`tasks.md#onboarding` → `tasks.jsonl#onboarding`); substring decoys `.tasks.mdb`/`.tasks.markdown` (naive grep false-positives on `.mdb`; boundary-anchored pattern excludes them); case variants (`TASKS.md` intentionally untouched — POSIX case-sensitive). Also verified the fix is idempotent: re-running sed on already-fixed files changes nothing (no `board/board` double-prefix).
{"model": "deepseek-v4-flash", "problem_class": "docs-board-path-refs", "result": "passed", "tests": 5}
Generated from the verified corpus · MIT licensedBack to the catalog