What happened
During the 2026-08-15 encapsulation sweep (PR #2703), a fresh-context worker reading plugins/claude-config/skills/audit-instructions/reference/conflict-criteria.md against claude-memory:audit's current state found the exact failure the encapsulation classification predicted has already materialized: the sibling widened its check population and the boundary doc never followed.
plugins/claude-memory/skills/audit/context/audit.md (~lines 9–17) now discovers surfaces via scripts/discover-instruction-surfaces.sh, emitting project and user scope — its header comment states the motivation ("A bare find . sees project scope only, which left ~/.claude/CLAUDE.md and ~/.claude/rules/*.md audited by nothing"), and its Step 3 explicitly compares user-scope surfaces against project ones as live C6 conflicts.
Against that, conflict-criteria.md §"Boundary: what C6's population actually is" still asserts (all now false):
- ~L51–52: the audit workflow discovers files with bare
find . -maxdepth 1 -name "CLAUDE.md" / find .claude/rules
- ~L53–54: the plugin resolves a user-level directory only for auto-memory, never for rules
- ~L58–60: a user-global-vs-project contradiction is deferred by I15 as memory-layer and "neither check reports it"
- ~L65 routing table: "any
~/.claude/ side → I15" — which now double-covers with C6, the inverse of the gap the section was written to close
Why it's not a mechanical fix
Correcting the prose requires re-adjudicating the scope boundary between claude-config:audit-instructions (I15) and claude-memory:audit (C6) against C6's current population — deciding who owns user-scope instruction conflicts and re-deriving the two-row routing table. That's an operator/ADR-level call (ADR-0004/0005 ratified the old boundary and are immutable records), hence needs-human.
Scope note
PR #2703 only removed the cross-plugin path cite from conflict-criteria.md (public naming); it deliberately did not touch the stale boundary content — this issue owns that.
What happened
During the 2026-08-15 encapsulation sweep (PR #2703), a fresh-context worker reading
plugins/claude-config/skills/audit-instructions/reference/conflict-criteria.mdagainstclaude-memory:audit's current state found the exact failure the encapsulation classification predicted has already materialized: the sibling widened its check population and the boundary doc never followed.plugins/claude-memory/skills/audit/context/audit.md(~lines 9–17) now discovers surfaces viascripts/discover-instruction-surfaces.sh, emittingprojectanduserscope — its header comment states the motivation ("A barefind .sees project scope only, which left~/.claude/CLAUDE.mdand~/.claude/rules/*.mdaudited by nothing"), and its Step 3 explicitly compares user-scope surfaces against project ones as live C6 conflicts.Against that,
conflict-criteria.md§"Boundary: what C6's population actually is" still asserts (all now false):find . -maxdepth 1 -name "CLAUDE.md"/find .claude/rules~/.claude/side → I15" — which now double-covers with C6, the inverse of the gap the section was written to closeWhy it's not a mechanical fix
Correcting the prose requires re-adjudicating the scope boundary between
claude-config:audit-instructions(I15) andclaude-memory:audit(C6) against C6's current population — deciding who owns user-scope instruction conflicts and re-deriving the two-row routing table. That's an operator/ADR-level call (ADR-0004/0005 ratified the old boundary and are immutable records), henceneeds-human.Scope note
PR #2703 only removed the cross-plugin path cite from
conflict-criteria.md(public naming); it deliberately did not touch the stale boundary content — this issue owns that.