dead-reference-pointer flags placeholder path templates as dead references #129
Labels
No labels
P0
P1
P2
P3
bug
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#129
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Surfaced 2026-07-25 while verifying the new /os-aidd-lint:check skill path (ADR-0064).
The Tier-1 cop
dead-reference-pointertreats any backtick/markdown path as a literal file. Docs that legitimately describe a path template containing a placeholder therefore always fail it.Four current false positives, all pointing at
tmp/aidd-tier2/NN.prompt.mdwhereNNis a zero-padded index placeholder, not a filename:These were deliberately left unfixed — rewording docs to dodge the cop would make the wire contract less clear, which is the wrong tradeoff.
This is not specific to os-aidd-lint: any skill documenting a generated-path convention (os-sdlc's
tmp/lint-batch/group-NN.txt, os-doc-hygiene's scratch paths) hits the same thing.Possible directions, none decided: recognise a placeholder convention in path segments; allow an inline opt-out marker; or scope the cop to paths that resolve to a real directory. Needs a decision before implementation — the cop shares
PathReferenceScannerwith Tier 2'sAuthoritySourceResolver(ADR-0060), so widening the matcher has blast radius beyond this cop.Probable root cause identified, 2026-07-26.
bin/aidd-lint's repo-root detection appears to break when given a RELATIVE path — its dirname walk never escapes the current working directory, so reference paths resolve against the wrong root and produce spuriousdead-reference-pointeroffenses. Discovered while building themine-blindspotsskill (commitf7c52e1); the skill's## Setupsection now carries a mandatory "pass absolute paths" note at line 12 so a discovery run does not feed these false positives into its own candidate-miss diff.This may or may not be the same root cause as the originally reported
tmp/aidd-tier2/NN.prompt.mdplaceholder false positive — the placeholder case involves a path that genuinely does not exist (NN is a stand-in), which is a separate matter from root resolution. Both should be checked before closing.Third false-positive class identified, 2026-07-26.
A separate class from both the placeholder case and the relative-path root-resolution case has been filed as its own issue (#150). It covers references to real files at documented runtime locations outside the repo — specifically
os-vault/skills/write/SKILL.md:39pointing atvault-conventions.md"at the vault root", which exists at ~/Documents/SecondBrain/.All three classes should be triaged together before any of them is closed, since a single fix to reference resolution may or may not address all three.
Consolidated into #150 per its explicit joint-triage request. Verified live: the placeholder-segment gap still reproduces generally (PLACEHOLDER_TOKEN only covers YYYY/MM/DD, not NN-style tokens) even though the four originally-cited lines no longer literal-match after doc rewording — carried into #150 as class 2. The relative-path CLI root-detection bug mentioned in comments is now confirmed reproducing (4 vs 1 hits on the same file, subdir-relative vs absolute) — carried into #150 as class 3. Both remain undecided/needing a maintainer call where noted. Closing as duplicate.