From d624ea19c137de02c4c0203d1874fe65a3795fa5 Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Tue, 29 Sep 2026 13:57:35 -0400 Subject: [PATCH 1/2] docs(claude-config): state that I15 excludes standing instructions against plausible user requests Refs #3565 Co-Authored-By: Claude Opus 5.5 --- .../reference/conflict-criteria.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/plugins/claude-config/skills/audit-instructions/reference/conflict-criteria.md b/plugins/claude-config/skills/audit-instructions/reference/conflict-criteria.md index b41f157072..78c7be2c01 100644 --- a/plugins/claude-config/skills/audit-instructions/reference/conflict-criteria.md +++ b/plugins/claude-config/skills/audit-instructions/reference/conflict-criteria.md @@ -16,8 +16,8 @@ - [Worked examples](#worked-examples) - [Output format](#output-format) -Version: 1.6.1 -Last updated: 2026-09-28 +Version: 1.6.2 +Last updated: 2026-09-29 **The adjudication procedure for check I15.** [criteria.md](criteria.md)'s I15 entry owns the definition: what a cross-surface conflict *is*, its comparison set, its import and symlink @@ -113,6 +113,21 @@ The rule remains **route on the population a check actually enumerates, never on layer**: a boundary drawn from a label rather than from the incumbent's discovery script leaves whole pair classes audited by neither skill. When that script's population moves, this table moves with it. +**A standing instruction against plausible user requests is not a member.** I15 does not detect +conflict between a standing instruction and a hypothetical or plausible user request. Its population +is the set of surfaces the tree can enumerate, and such requests are not in it. The reason is the +[co-residency prerequisite](#prerequisite-co-residency): both directives must be in the same context +window, and a hypothetical request has no residency, no enumerability and no liveness the tree can +determine. Admitting the axis would either drop that gate and reintroduce the noise it suppresses, or +need a parallel liveness notion for imagined inputs. The population is also unbounded, so the +false-negative rate cannot be measured. The owner adjudicated this in #3565 and rejected the reopen. A +corpus of realistic prompts to test instruction surfaces against is a different artifact and would be +filed separately, not as an I15 extension. +**Claim:** I15 does not adjudicate standing instructions against plausible user requests. +**Basis:** this file's Prerequisite: co-residency section and the owner decision on #3565. +**As of:** 2026-09-29. **Recheck:** when the co-residency prerequisite changes or a bounded, +enumerable request corpus is filed as its own artifact. + ## Prerequisite: co-residency A conflict requires both directives to be in the same context window at the same time. Matching text From b25fe29c40b749c935ff6bf785268959ad955d2c Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Tue, 29 Sep 2026 13:58:37 -0400 Subject: [PATCH 2/2] chore(claude-config): bump to 0.52.1 and record the I15 non-member axis Co-Authored-By: Claude Opus 5.5 --- plugins/claude-config/.claude-plugin/plugin.json | 2 +- plugins/claude-config/CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/claude-config/.claude-plugin/plugin.json b/plugins/claude-config/.claude-plugin/plugin.json index bf74a0c307..ed64cb65cc 100644 --- a/plugins/claude-config/.claude-plugin/plugin.json +++ b/plugins/claude-config/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "claude-config", - "version": "0.52.0", + "version": "0.52.1", "description": "Nine configuration-health skills (plus setup) for a repo's Claude Code configuration: audit (settings.json / .mcp.json / hooks / plugins / permissions drift), audit-automation-gaps (evidence-gated verdicts on automation gaps), audit-permission-grants (allow-rule / allowed-tools grants for auto-mode durability and portability), audit-permission-state (the permission rules actually in effect: every settings scope merged with per-rule provenance, what auto mode drops on entry, config written where nothing reads it, and which managed intents are enforced versus loosenable), draft-auto-mode-rules (interview and draft a paste-ready autoMode classifier block; prints only, never writes), audit-instructions (locally-owned instruction surfaces vs current model capability, proposing removals/rewrites of instructions the model no longer needs, and detecting cross-surface instruction conflicts), audit-prompting-postures (the additive lane: posture guidance the prompting guide says a component's purpose needs but the component does not carry), audit-pass (one coordinated, ordered, resumable pass over a named target: three-scope inventory, run-time-derived exclusion set, stable finding identity, suppression memory, resume, one human gate, delegating every check to the plugin that owns it), and unhobble (the empirical bare-baseline experiment: reversibly strip a repo's standing instructions, log real stumbles against the current model, re-add only what evidence earns).", "author": { "name": "Melodic Software", diff --git a/plugins/claude-config/CHANGELOG.md b/plugins/claude-config/CHANGELOG.md index 034b0cae0d..ce70af2645 100644 --- a/plugins/claude-config/CHANGELOG.md +++ b/plugins/claude-config/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to the `claude-config` plugin are documented here. Format fo Versions 0.51.8 to 0.51.9 and 0.51.11 to 0.51.14 were reserved by parallel branches and never released. +## [0.52.1] - 2026-09-29 + +### Changed + +- **`audit-instructions` / I15:** record the user-request-conflict axis as a non-member in the + Boundary section, with the co-residency reason; `conflict-criteria.md` 1.6.2 + ([#3565](https://github.com/melodic-software/claude-code-plugins/issues/3565)). + ## [0.52.0] - 2026-09-29 ### Added