Skip to content

claude-config / claude-memory: the C6/I15 audit-scope boundary has drifted — C6 now audits user-scope surfaces, conflict-criteria.md still routes them exclusively to I15 (double-coverage) #2705

Description

@kyle-sexton

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: needs-triageDefault until a priority tier is assigned.

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions