Tier-2 CLAUDE_MD_CHARTER_PATH has no production caller — ADR-0062's CLAUDE.md-only catalog may never load #166
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#166
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?
Problem
AiddLint::Tier2::Judge::CLAUDE_MD_CHARTER_PATH(lib/aidd_lint/tier2/judge.rb:16) points atreferences/tier2-claude-md-charter.md, the ADR-0062 supplementary catalog scoped to the CLAUDE.md artifact class (contradictory-rules,non-load-bearing-content). It is selected via thecharter_path:keyword onJudge#initialize.Nothing in production ever passes that keyword. All three production construction sites default it:
So
@charter_pathis alwaysCHARTER_PATH, and the CLAUDE.md-only entries appear to never reach a live judge. ADR-0062's basename gate ("gated by artifact class/basename", per judge.rb's own comment at :17-21) looks unimplemented — the constant and the seam exist, the dispatch does not.What I verified
grep -rn "CLAUDE_MD_CHARTER_PATH"across the whole plugin (lib/,bin/,hooks/,skills/,tests/,references/,agents/): matches are judge.rb:16 (the definition), judge.rb:18 (a comment), and five call sites intests/tier2/judge_test.rb. No production caller.grep -rn "Judge.new"acrossbin/,lib/,hooks/: the three sites above, none passingcharter_path:.grep -rnforCLAUDE_MD_CHARTER_PATH/tier2-claude-md-charteracross the rest of the repo outside the plugin: only prose mentions indocs/adr/0063-*.md, no code.What I did NOT verify
Judge.newonly, not for reflective or indirect construction.judge_test.rb:329-334carries a NOTE aboutcharter_path:being "left as open wiring, not fixed here" — so this may be known and intentionally parked rather than a regression. A maintainer should confirm intent before anyone wires it up.Why it matters
If confirmed, two catalog entries admitted by ADR-0062 have never judged a real file, and any validation study or recall claim resting on them is unfounded. The tests pass because they construct the Judge with
charter_path:explicitly — exactly the path production never takes, so the suite cannot catch this.Suggested resolution
Either wire the basename gate (select
CLAUDE_MD_CHARTER_PATHwhen the subject's basename isCLAUDE.md/CLAUDE.local.md, per ADR-0062) and add a test asserting the selection happens through the production entry point, or record explicitly that ADR-0062's dispatch is deferred and mark the entries as not-yet-live.Provenance
Found while implementing #164 (Tier-2 cross-file authority sources); deliberately not fixed there, since wiring an unrelated ADR's dispatch under a charter-amendment ticket would have been scope creep. Filed as decision-needed, not as agreed work.
Frozen in the 2026-08-16 backlog reset — see #419 for the expiry procedure. Do not work unless a live run rediscovers this issue.