docs(config-audit): CC 2.1.114-181 coverage gap analysis (Fase 0-2)

Systematic review of Claude Code config-surface changes from the plugin's last-verified baseline (v2.1.114) to installed v2.1.181, against current scanner coverage. 12/12 surfaces, 162 verified gap rows via two background gap-analysis workflows (search-first, per-surface changelog verification).

Key finding: a cluster of ACTIVE FALSE POSITIVES - config-audit flags valid v2.1.181 config as wrong (effortLevel xhigh; ~12 settings keys incl. sandbox/fallbackModel/enforceAvailableModels/disableBundledSkills/agent; MCP ${CLAUDE_PROJECT_DIR} and POSIX expansions; param-qualified permission rules; MessageDisplay/post-session hooks). Recommended release v5.2.0 (byte-stable; fixes remove false findings). Voyage escalation: no.

- docs/cc-2.1.x-gap-review-plan.md - ratified plan (method A, floor v2.1.114)
- docs/cc-2.1.x-gap-matrix.md      - full gap matrix + buckets + release call
- docs/cc-2.1.x-changelog-delta.md - changelog corpus (superseded by matrix)

STATE.md updated (gitignored) - next session resumes at Batch 1.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ter3E2JSi1Khgmuf2kady8
This commit is contained in:
Kjell Tore Guttormsen 2026-06-18 11:31:48 +02:00
commit 315ea2259f
3 changed files with 344 additions and 0 deletions

View file

@ -0,0 +1,111 @@
# Claude Code config-surface delta — v2.1.114 → v2.1.181 (DRAFT)
> **Status: DRAFT.** Produced by claude-code-guide research agent 2026-06-18 from the official
> changelog. Treated as a checklist — **each row is independently re-verified per-surface in Fase 2**
> (workflow `config-audit-cc-gap`) against https://raw.githubusercontent.com/anthropics/claude-code/main/CHANGELOG.md
> before any action. Items below the 2.1.114 floor (e.g. 2.1.105) are kept for the token-management
> thread (Fase 4) but are out of the primary window.
**Current latest:** v2.1.181 · **Window:** 2.1.114 → 2.1.181
## 1. settings.json / settings.local.json
- 2.1.181 `sandbox.allowAppleEvents` (macOS opt-in) — HIGH
- 2.1.181 env `CLAUDE_CLIENT_PRESENCE_FILE` (suppress mobile notifications) — HIGH
- 2.1.175 `enforceAvailableModels` (managed, constrains default model) — HIGH
- 2.1.176 `footerLinksRegexes` (footer badges) — MED
- 2.1.174 `wheelScrollAccelerationEnabled` — LOW
- 2.1.169 `disableBundledSkills` — HIGH
- 2.1.166 `fallbackModel` (chain up to 3) — HIGH
- 2.1.163 managed `requiredMinimumVersion`, `requiredMaximumVersion` — HIGH
- 2.1.161 env `OTEL_RESOURCE_ATTRIBUTES` — MED
- 2.1.154 `agent` (run main thread as named subagent) — HIGH
- 2.1.154 `fastModePerSessionOptIn` — HIGH
- 2.1.153 `skipLfs` (Git plugin sources) — MED
- 2.1.149 managed `allowAllClaudeAiMcps` — HIGH
- 2.1.143 `worktree.bgIsolation: 'none'` — HIGH
- 2.1.141 env `CLAUDE_CODE_PLUGIN_PREFER_HTTPS`, `ANTHROPIC_WORKSPACE_ID` — MED/HIGH
- 2.1.133 managed `parentSettingsBehavior`, `policyHelper` — HIGH
- 2.1.129 `skillOverrides` (per-skill visibility) — HIGH
## 2. CLAUDE.md / memory
- 2.1.169 `--safe-mode` disables customizations (CLAUDE.md not loaded) — MED
- 2.1.157 plugins in `.claude/skills` auto-load; "closest .claude/ wins" precedence — HIGH
- 2.1.178 nested `.claude/skills` directory loading — MED
## 3. Hooks
- 2.1.178 new matcher syntax `Tool(param:value)` — HIGH
- 2.1.172 OTEL `model` attribute in hook output context — MED
- 2.1.169 new event `post-session` (self-hosted runners) — HIGH
- 2.1.163 `SubagentStop` supports `additionalContext` return — HIGH
- 2.1.157 hook "args: string[]" exec form (no shell wrap) — HIGH
- 2.1.152 new event `MessageDisplay` — HIGH
- 2.1.145 hook input fields `background_tasks`, `session_crons` — HIGH
- 2.1.141 hook output field `terminalSequence` — HIGH
- 2.1.139 hook condition "if" syntax — HIGH
## 4. MCP (.mcp.json)
- 2.1.153 `skipLfs` for Git-based sources — MED
- 2.1.149 managed `allowAllClaudeAiMcps` (auto-approve claude.ai connectors) — HIGH
- 2.1.141 env `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` (transport) — MED
- (format stdio/SSE/HTTP, scopes local/project/user, OAuth: stable in window)
## 5. Plugins & marketplace
- 2.1.178 "closest .claude/" precedence; nested `.claude/skills` — HIGH
- 2.1.157 plugins auto-load from `.claude/skills/`; `claude plugin init` — HIGH/MED
- 2.1.154 plugin `defaultEnabled: false` manifest field — HIGH
- 2.1.149 managed `pluginSuggestionMarketplaces` — MED
- 2.1.143 plugin dependency enforcement (disable/enable) — MED
- 2.1.142 root-level `SKILL.md` plugin surfacing — MED
- 2.1.128 `--plugin-dir ./x.zip` + `--plugin-url` (below window but note) — HIGH
## 6. Skills
- 2.1.178 nested `.claude/skills` directory loading — HIGH
- 2.1.163 `\$` escape for literal `$` in descriptions — MED
- 2.1.152 frontmatter `Skill` type indicator + `disallowed-tools`; `/reload-skills` — HIGH
- 2.1.142 root-level `SKILL.md` — MED
- (below window, Fase 4) 2.1.105 `skillListingBudgetFraction`, `maxSkillDescriptionChars`
## 7. Subagents / agents
- 2.1.178 "closest .claude/" precedence for agent conflicts — HIGH
- 2.1.172 nested sub-agents (5-level depth limit) — HIGH
- 2.1.157 `subagent_type` case/separator-insensitive; `/agents` discovery — MED
- 2.1.154 settings `agent` key; plugin `defaultEnabled` applies to agents — HIGH
- 2.1.143 agent spawning in auto mode — MED
## 8. Slash commands
- 2.1.147 `/simplify``/code-review` rename — LOW
- 2.1.152 `/code-review --fix` — LOW
- 2.1.139 `/goal`, `/scroll-speed` new commands — LOW
- (frontmatter argument-hint/allowed-tools/model + namespacing: stable)
## 9. Permissions
- 2.1.178 `Tool(param:value)` parameter-level matching — HIGH
- 2.1.166 glob pattern support in deny rule tool-name position — HIGH
- 2.1.154 auto mode hard-deny rules — HIGH
- 2.1.162 WebFetch precedence fixes — MED
- 2.1.160 single-file grep satisfies read-before-edit — MED
- (allow/deny/ask arrays: stable)
## 10. Model lineup
- 2.1.154 **Opus 4.8** new default; `/effort xhigh` new effort level — HIGH
- 2.1.158 auto mode on Bedrock/Vertex/Foundry for Opus 4.7/4.8 — HIGH
- 2.1.170 **Fable 5** (Mythos-class) introduced — HIGH
- 2.1.173 Fable 5 name normalization (`[1m]` suffix) — HIGH
- 2.1.142 fast mode default Opus 4.6 → 4.7 — HIGH
- settings model keys: `model`, `availableModels`, `enforceAvailableModels`, `fallbackModel`, `effortLevel` (now incl. `xhigh`)
## 11. Output styles / statusline / background / managed / sandbox
- 2.1.181 `sandbox.allowAppleEvents` — HIGH
- 2.1.176 `footerLinksRegexes`; `language` key — MED
- 2.1.169 `--safe-mode`; env `CLAUDE_CLIENT_PRESENCE_FILE` — HIGH
- 2.1.166 env `MAX_THINKING_TOKENS=0` — MED
- 2.1.153 statusline env `COLUMNS`, `LINES` — MED
- 2.1.143 `worktree.bgIsolation` — HIGH
- 2.1.141 hook `terminalSequence`; background agent permission-mode preservation — HIGH/MED
- 2.1.140 settings symlink hot-reload — MED
- 2.1.133 managed `parentSettingsBehavior`, `policyHelper` — HIGH
- 2.1.128 env `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` — MED
## Sources
- Official changelog: https://raw.githubusercontent.com/anthropics/claude-code/main/CHANGELOG.md
- What's new: https://code.claude.com/docs/en/whats-new · Settings: https://code.claude.com/docs/en/settings · Plugins: https://code.claude.com/docs/en/plugins

188
docs/cc-2.1.x-gap-matrix.md Normal file
View file

@ -0,0 +1,188 @@
# Gap-matrise — Claude Code 2.1.114→181 vs config-audit-dekning
**Generert:** 2026-06-18 · **Metode:** workflow `config-audit-cc-gap` (12 surface-verifikatorer + syntese) · **Scope:** kun `config-audit/`
> **Dekningsstatus:** 12/12 surfaces verifisert (130 + 32 = 162 rader). Re-run `config-audit-cc-gap-rerun`
> (task `wyk5istx7`) fullførte subagents/agents, token management, slash commands. Se «Surfaces 1012» nederst.
> Re-run fanget også versjonsfeil i draft-korpuset — se «Draft-korreksjoner».
> **Verifiseringsplikt:** Rader merket UNVERIFIED, og **særlig MCP `trust`-feltet**, må verifiseres mot offisiell
> `.mcp.json`-dokumentasjon FØR endring — agenten kan ta feil i begge retninger. Manuelt forhåndsverifisert av
> hovedkontekst: `xhigh` (settings-validator.mjs:66), manglende hook-events, 4.7-hardkoding, feature-evolution v2.1.111.
## Executive summary
config-audits kunnskapsbase og scanner-kjent-sett er frosset ved ~v2.1.111; CC har shippet til v2.1.181 (Opus 4.8-æra). Av 130 verifiserte rader er det mest akutte en **klynge aktive false positives** — gyldig, dokumentert konfig flagges som feil i dag:
- **`settings-validator.mjs`** avviser `xhigh` og flagger `sandbox`, `fallbackModel`, `enforceAvailableModels`, `disableBundledSkills`, `pluginSuggestionMarketplaces` + 5 til som «unknown».
- **`mcp-config-validator.mjs`** flagger `${CLAUDE_PROJECT_DIR}` og POSIX `${var%pattern}` (CC fikset dette i 2.1.142). Dessuten: `trust`-feltet ser ut til å være **oppfunnet/uverifisert** — gir en medium på hver normal `.mcp.json`.
- **`disabled-in-schema-scanner.mjs`** kollapser param-kvalifiserte permission-regler (`Agent(model:opus)` deny + `Agent(model:sonnet)` allow) → feil «dead config».
- **`claude-md-linter.mjs`** gir HIGH ved 500 linjer med «significantly reduce adherence» — motsagt av CC (2.1.169 skalerer terskel etter kontekstvindu) og av pluginens egen knowledge.
- **`hook-validator.mjs`** mangler `MessageDisplay` (2.1.152) + `post-session` (2.1.169) → flagger gyldige hooks som ukjente.
Resten er stort sett L-prioritets knowledge-oppdateringer (env vars, modell-lineup inkl. Fable 5, doc-nyanser) uten scanner-impact. De fleste fiksene er S-effort kjent-sett/terskel-edits; en håndfull (DIS param-bevissthet, nye PLH/permissions-checks) er M.
## Anbefalt release
**v5.2.0** — endringssettet domineres av additive kjent-sett-utvidelser, terskel/ordlyd-fikser og knowledge-oppdateringer. `--json` og `--raw` forblir byte-stabile; false-positive-fiksene *fjerner* funn, endrer ikke envelope-skjemaet. Kun MCP `trust`-demoteringen endrer eksisterende output materielt (ikke-breaking kvalitetsfiks). v6.0.0 reserveres for fremtidig humanizer/envelope-skjemaendring.
## Voyage-eskalering: **NEI**
Netto-nytt scanner-arbeid (DIS param-bevissthet, PLH shadow-folder-check, permissions deny-all/glob, disableBundledSkills-anbefaling) er en håndfull uavhengige M-poster med klare specs og eksisterende fixture-mønstre — ikke en stor/usikker greenfield-build. Vanlig TDD per scanner holder. Eskalér kun hvis permissions-param-matchingen viser seg å trenge et delt rule-parsing-refactor på tvers av conflict-detector + DIS + settings-validator.
## False positives (dagens bugs — verdict = now-wrong)
| Tittel | Fil | Fiks (kort) |
|---|---|---|
| `effortLevel: xhigh` avvist | `settings-validator.mjs` | Legg `xhigh` i `VALID_EFFORT_LEVELS`. IKKE legg til `ultracode` (slash-alias, ikke settings-verdi) |
| `sandbox`-blokk «unknown» | `settings-validator.mjs` | Legg `sandbox` i `KNOWN_KEYS` (top-level er triggeren) |
| `fallbackModel` «unknown» | `settings-validator.mjs` | Legg i `KNOWN_KEYS`; verdi er string ELLER array(≤3) — ikke single-type TYPE_CHECK |
| `enforceAvailableModels` «unknown» | `settings-validator.mjs` | Legg i `KNOWN_KEYS` (managed) |
| `disableBundledSkills` «unknown» | `settings-validator.mjs` | `KNOWN_KEYS` + boolean TYPE_CHECK |
| `pluginSuggestionMarketplaces` «unknown» | `settings-validator.mjs` | `KNOWN_KEYS` (managed, array) |
| `requiredMin/MaximumVersion` «unknown» | `settings-validator.mjs` | `KNOWN_KEYS` (managed) |
| `allowAllClaudeAiMcps` «unknown» | `settings-validator.mjs` | `KNOWN_KEYS` (managed, boolean) |
| `footerLinksRegexes` «unknown» | `settings-validator.mjs` | `KNOWN_KEYS` (array) |
| `wheelScrollAccelerationEnabled` «unknown» | `settings-validator.mjs` | `KNOWN_KEYS` + boolean |
| `parentSettingsBehavior` «unknown» | `settings-validator.mjs` | `KNOWN_KEYS` (enum first-wins\|merge) |
| MCP `${CLAUDE_PROJECT_DIR}` «unreferenced» | `mcp-config-validator.mjs` | Allowlist auto-injiserte runtime-env-vars |
| MCP POSIX `${var%pattern}` «missing env» | `mcp-config-validator.mjs` | Begrens env-sjekk til bart `${IDENTIFIER}`; skip POSIX-operatorer |
| DIS kollapser `Agent(model:…)` deny/allow | `disabled-in-schema-scanner.mjs` | Gjør identitet param-bevisst (`bareTool()` :29-33) |
| DIS kollapser `WebFetch(domain:…)` | `disabled-in-schema-scanner.mjs` | Samme rotårsak — behandle domain:/param: som distinkt |
| `claude-md-linter` HIGH@500 + «reduce adherence» | `claude-md-linter.mjs` | Skaler terskel etter kontekstvindu / fjern absolutt HIGH; reframe til cache-prefix (CPS) |
| hook `MessageDisplay` «unknown event» | `hook-validator.mjs` | Legg i `VALID_EVENTS` + knowledge |
| hook `post-session` «unknown» | `hook-validator.mjs` | Legg i `VALID_EVENTS` (kebab, ≠ SessionEnd) |
| stale «26 total» hook-count | `hook-validator.mjs:137` + `hook-events-reference.md:3` | 26 → 28 i takt med de to nye |
| MCP `trust` oppfunnet/enforced (**VERIFISER FØRST**) | `mcp-config-validator.mjs` | Hvis feltet ikke finnes i offisiell schema: demote/fjern CA-MCP-001 + koordiner på tvers av 5 knowledge/humanizer-filer |
| `feature-evolution.md`/`capabilities.md` frosset v2.1.111 | `knowledge/*` | Opus 4.8 default + Fable 5; `/simplify``/code-review` |
## Quick wins (S-effort, høy verdi)
1. **`settings-validator.mjs`:** +11 gyldige nøkler i `KNOWN_KEYS` + `xhigh` i `VALID_EFFORT_LEVELS` (fix-false-positive).
2. **`hook-validator.mjs`:** +`MessageDisplay` +`post-session` til `VALID_EVENTS`; 26→28.
3. **`mcp-config-validator.mjs`:** begrens env-sjekk til bart `${IDENTIFIER}`; allowlist `CLAUDE_PROJECT_DIR`.
4. **knowledge-refresh:** `feature-evolution.md`/`capabilities.md` → Opus 4.8 default, Fable 5, `/effort xhigh`, `/simplify``/code-review`, lean system prompt.
5. **`hook-events-reference.md`:** dokumenter `additionalContext`, `reloadSkills`/`sessionTitle`, `args[]`-exec, `terminalSequence`, `CLAUDE_CODE_SESSION_ID`.
6. **skills:** +`disallowed-tools` i frontmatter-kjent-sett.
7. **plugins:** +`defaultEnabled`, `.claude/skills` auto-load, `claude plugin init`, root-SKILL.md, `allowAllClaudeAiMcps` i knowledge.
8. **env:** +window-env-vars i `configuration-best-practices.md`.
9. **rett draft-feil** i `docs/cc-2.1.x-changelog-delta.md` (skipLfs/HTTPS mis-filed under MCP; `Tool(param:value)` er permissions, ikke hooks).
## Større poster (M-effort)
| Tittel | Surface | Begrunnelse |
|---|---|---|
| DIS (+conflict-detector) param/domain-bevisst regel-identitet | permissions | `bareTool()`-kollaps gir ekte false positives nå som CC har param-matching (2.1.178) + domain-regler (2.1.172). conflict-detector.mjs:156 deler blindsonen |
| Skaler CLAUDE.md-lengdeterskel etter kontekstvindu | CLAUDE.md/memory | CC sluttet å flagge lange filer på 1M-modeller (2.1.169); krever modell-kontekst-deteksjon + tekst-rework + snapshot-tester |
| Ny PLH: advarsel når plugin.json-nøkkel skygger default-mappe | plugins | Speiler CCs egen 2.1.139/140-advarsel; ekte config-fallgruve |
| Nye permissions-checks: `*`-deny = deny-all; ikke-MCP-glob i allow / ukjent tool i deny | permissions | CC avviser/varsler ved startup (2.1.166) |
| feature-gap/posture: `disableBundledSkills` som token-effektivitets-lever | skills/tokens | Skjuler bundled-skill-descriptions fra system-prompt — ekte token-saver tokens-scanneren kan anbefale |
| PLH-paritet med `claude plugin validate`: valider `skills:`-array | plugins | Lav prioritet; PLH parser ikke `skills:`-arrays i dag |
## Full matrise (9/12 surfaces)
| surface | cc change | versions | verdict | action | target file | priority | effort |
|---|---|---|---|---|---|---|---|
| settings.json | effortLevel gains 'xhigh' tier | 2.1.154 | now-wrong | fix-false-positive | scanners/settings-validator.mjs | H | S |
| settings.json | sandbox.* block (+ allowAppleEvents) valid top-level key | ~2.1.77-83; 2.1.181 | now-wrong | fix-false-positive | scanners/settings-validator.mjs | H | S |
| settings.json | enforceAvailableModels managed setting | 2.1.175 | now-wrong | extend-scanner-known-set | scanners/settings-validator.mjs | H | S |
| settings.json | fallbackModel (string or up-to-3 array) | 2.1.166 | now-wrong | extend-scanner-known-set | scanners/settings-validator.mjs | H | S |
| settings.json | disableBundledSkills setting | 2.1.169 | now-wrong | extend-scanner-known-set | scanners/settings-validator.mjs | H | S |
| settings.json | requiredMinimumVersion / requiredMaximumVersion | 2.1.163 | now-wrong | extend-scanner-known-set | scanners/settings-validator.mjs | M | S |
| settings.json | allowAllClaudeAiMcps managed setting | 2.1.149 | now-wrong | extend-scanner-known-set | scanners/settings-validator.mjs | M | S |
| settings.json | footerLinksRegexes setting | 2.1.181 | now-wrong | extend-scanner-known-set | scanners/settings-validator.mjs | M | S |
| settings.json | wheelScrollAccelerationEnabled setting | 2.1.174 | now-wrong | extend-scanner-known-set | scanners/settings-validator.mjs | L | S |
| settings.json | pluginSuggestionMarketplaces managed setting | 2.1.152 | now-wrong | extend-scanner-known-set | scanners/settings-validator.mjs | M | S |
| settings.json | worktree.bgIsolation nested value | 2.1.154 | partial | update-knowledge | knowledge/claude-code-capabilities.md | L | S |
| settings.json | env CLAUDE_CLIENT_PRESENCE_FILE | 2.1.181 | missing | update-knowledge | knowledge/claude-code-capabilities.md | L | S |
| settings.json | env OTEL_RESOURCE_ATTRIBUTES labels | 2.1.161 | missing | update-knowledge | knowledge/claude-code-capabilities.md | L | S |
| settings.json | env CLAUDE_CODE_PLUGIN_PREFER_HTTPS | 2.1.141 | missing | update-knowledge | knowledge/claude-code-capabilities.md | L | S |
| settings.json | env ANTHROPIC_WORKSPACE_ID | 2.1.141 | missing | update-knowledge | knowledge/claude-code-capabilities.md | L | S |
| settings.json | env MAX_THINKING_TOKENS=0 disables thinking | 2.1.166 | missing | update-knowledge | knowledge/claude-code-capabilities.md | L | S |
| settings.json | parentSettingsBehavior / policyHelper (UNVERIFIED) | 2.1.133 | missing | new-feature-gap-check | scanners/settings-validator.mjs | L | S |
| settings.json | skillOverrides (UNVERIFIED, below floor) | 2.1.129 | missing | new-feature-gap-check | scanners/settings-validator.mjs | L | S |
| settings.json | skillListingBudgetFraction / maxSkillDescriptionChars (UNVERIFIED, below floor) | 2.1.105 | missing | new-feature-gap-check | scanners/settings-validator.mjs | L | S |
| CLAUDE.md / memory | 'too long' threshold now scales with context window | 2.1.169 | now-wrong | fix-false-positive | scanners/claude-md-linter.mjs | H | M |
| CLAUDE.md / memory | --safe-mode / CLAUDE_CODE_SAFE_MODE disables customizations | 2.1.169 | missing | update-knowledge | knowledge/configuration-best-practices.md | L | S |
| CLAUDE.md / memory | plugins in .claude/skills auto-load (cascade/token accounting) | 2.1.157 | partial | new-feature-gap-check | knowledge/configuration-best-practices.md | M | M |
| CLAUDE.md / memory | nested .claude closest-wins precedence + <dir>:<name> | 2.1.178, 2.1.161 | partial | new-feature-gap-check | knowledge/configuration-best-practices.md | M | M |
| CLAUDE.md / memory | CLAUDE_MEMORY_STORES team-memory env var | 2.1.172 | missing | update-knowledge | knowledge/configuration-best-practices.md | L | S |
| hooks | MessageDisplay hook event | 2.1.152 | now-wrong | fix-false-positive | scanners/hook-validator.mjs | H | S |
| hooks | post-session lifecycle hook | 2.1.169 | now-wrong | fix-false-positive | scanners/hook-validator.mjs | M | S |
| hooks | stale '26 total' hook-event count (scanner+knowledge) | derived | now-wrong | update-knowledge | knowledge/hook-events-reference.md | M | S |
| hooks | Stop/SubagentStop return additionalContext | 2.1.163 | partial | update-knowledge | knowledge/hook-events-reference.md | M | S |
| hooks | terminalSequence hook output field | 2.1.141 | partial | update-knowledge | knowledge/hook-events-reference.md | L | S |
| hooks | Stop/SubagentStop input background_tasks/session_crons | 2.1.145 | missing | update-knowledge | knowledge/hook-events-reference.md | L | S |
| hooks | SessionStart reloadSkills / sessionTitle output | 2.1.152 | partial | update-knowledge | knowledge/hook-events-reference.md | L | S |
| hooks | hook args: string[] exec form | 2.1.139 | partial | update-knowledge | knowledge/hook-events-reference.md | M | S |
| hooks | CLAUDE_CODE_SESSION_ID hook env var | 2.1.163 | missing | update-knowledge | knowledge/hook-events-reference.md | L | S |
| mcp | ${CLAUDE_PROJECT_DIR} auto-injected, flagged unreferenced | 2.1.139 | now-wrong | fix-false-positive | scanners/mcp-config-validator.mjs | H | S |
| mcp | POSIX ${var%pattern} expansions flagged as missing env (CC fixed) | 2.1.142 | now-wrong | fix-false-positive | scanners/mcp-config-validator.mjs | H | S |
| mcp | ${VAR} resolves from shell env, not just env block | 2.1.161 | now-wrong | fix-false-positive | scanners/mcp-config-validator.mjs | M | S |
| mcp | 'trust' field invented/enforced; unverified in docs/schema | n/a | now-wrong | fix-false-positive | scanners/mcp-config-validator.mjs | M | M |
| mcp | allowAllClaudeAiMcps managed key (knowledge) | 2.1.174/2.1.149 | missing | update-knowledge | knowledge/claude-code-capabilities.md | M | S |
| mcp | managed allowed/deniedMcpServers ${VAR} predicate support | 2.1.162, 2.1.169 | partial | update-knowledge | knowledge/claude-code-capabilities.md | L | S |
| mcp | agent-frontmatter mcpServers + --strict-mcp-config/--mcp-config flags | 2.1.154, 2.1.169 | partial | update-knowledge | knowledge/claude-code-capabilities.md | L | S |
| plugins & marketplace | plugin.json defaultEnabled: false | 2.1.154 | missing | update-knowledge | knowledge/claude-code-capabilities.md | M | S |
| plugins & marketplace | plugins auto-load from .claude/skills (no marketplace) | 2.1.157, 2.1.161 | partial | update-knowledge | knowledge/claude-code-capabilities.md | M | S |
| plugins & marketplace | claude plugin init scaffolding | 2.1.157, 2.1.161 | missing | update-knowledge | knowledge/claude-code-capabilities.md | L | S |
| plugins & marketplace | pluginSuggestionMarketplaces managed key flagged unknown | 2.1.152 | now-wrong | fix-false-positive | scanners/settings-validator.mjs | H | S |
| plugins & marketplace | disableBundledSkills setting flagged unknown | 2.1.169 | now-wrong | fix-false-positive | scanners/settings-validator.mjs | H | S |
| plugins & marketplace | plugin dependency enforcement (manifest deps) | 2.1.143-145 | missing | update-knowledge | knowledge/claude-code-capabilities.md | L | S |
| plugins & marketplace | root-level SKILL.md (no skills/) surfaced as skill | 2.1.142-143 | partial | update-knowledge | knowledge/claude-code-capabilities.md | M | S |
| plugins & marketplace | warn when plugin.json key shadows default component folder | 2.1.139-140 | missing | new-feature-gap-check | scanners/plugin-health-scanner.mjs | M | M |
| plugins & marketplace | validate skills: array entries are dirs within plugin | 2.1.145 | missing | new-feature-gap-check | scanners/plugin-health-scanner.mjs | L | M |
| plugins & marketplace | nested .claude closest-wins + <dir>:<name> vs flat conflict detection | 2.1.178 | partial | update-knowledge | knowledge/claude-code-capabilities.md | M | M |
| skills | disallowed-tools skill/command frontmatter | 2.1.152 | partial | update-knowledge | knowledge/claude-code-capabilities.md | M | S |
| skills | disableBundledSkills token-efficiency lever | 2.1.169 | missing | update-knowledge | knowledge/claude-code-capabilities.md | M | S |
| skills | nested .claude/skills load + <dir>:<name> disambiguation | 2.1.178, 2.1.181 | partial | update-knowledge | knowledge/claude-code-capabilities.md | M | M |
| skills | \$ escape syntax in command bodies | 2.1.178 | missing | update-knowledge | knowledge/claude-code-capabilities.md | L | S |
| skills | skillListingBudgetFraction / maxSkillDescriptionChars (below floor) | 2.1.105 | missing | update-knowledge | knowledge/claude-code-capabilities.md | L | M |
| permissions | Tool(param:value) rules — DIS collapses to bare tool | 2.1.178 | now-wrong | fix-false-positive | scanners/disabled-in-schema-scanner.mjs | H | M |
| permissions | glob in deny tool-name; '*' deny-all; allow non-MCP glob rejected | 2.1.166 | missing | new-feature-gap-check | scanners/conflict-detector.mjs | M | M |
| permissions | WebFetch(domain:*) / mid-pattern wildcards — DIS false positive | 2.1.172 | now-wrong | fix-false-positive | scanners/disabled-in-schema-scanner.mjs | H | M |
| permissions | Read deny hides Glob/Grep; Windows backslash/case path rules | 2.1.162 | missing | new-feature-gap-check | scanners/settings-validator.mjs | L | M |
| permissions | acceptEdits prompts on shell-startup/build-tool config writes | 2.1.160 | missing | new-feature-gap-check | scanners/settings-validator.mjs | M | M |
| permissions | sandbox.allowAppleEvents — sandbox block flagged unknown | 2.1.181 | now-wrong | fix-false-positive | scanners/settings-validator.mjs | H | S |
| permissions | parentSettingsBehavior admin-tier key flagged unknown | 2.1.133 | now-wrong | extend-scanner-known-set | scanners/settings-validator.mjs | M | S |
| permissions | autoMode.hard_deny sub-key (no structure validation) | 2.1.136 | partial | extend-scanner-known-set | scanners/settings-validator.mjs | M | M |
| model lineup | effortLevel missing 'xhigh' (Opus 4.8) | 2.1.154 | now-wrong | fix-false-positive | scanners/settings-validator.mjs | H | S |
| model lineup | Claude Fable 5 introduced (Mythos-class) | 2.1.170 | partial | update-knowledge | knowledge/configuration-best-practices.md | M | M |
| model lineup | auto mode on Bedrock/Vertex/Foundry for Opus 4.7/4.8 | 2.1.158 | partial | new-feature-gap-check | knowledge/configuration-best-practices.md | L | M |
| model lineup | enforceAvailableModels flagged unknown | 2.1.175 | now-wrong | extend-scanner-known-set | scanners/settings-validator.mjs | H | S |
| model lineup | fallbackModel flagged unknown | 2.1.166 | now-wrong | extend-scanner-known-set | scanners/settings-validator.mjs | H | S |
| feature evolution / staleness | Opus 4.8 new default (timeline frozen v2.1.111) | 2.1.154 | missing | update-knowledge | knowledge/feature-evolution.md | H | S |
| feature evolution / staleness | /effort xhigh new top tier | 2.1.154 | missing | update-knowledge | knowledge/feature-evolution.md | M | S |
| feature evolution / staleness | Claude Fable 5 new model family | 2.1.170 | missing | update-knowledge | knowledge/feature-evolution.md | H | S |
| feature evolution / staleness | lean system prompt now default for 4.8+ | 2.1.154 | partial | update-knowledge | knowledge/claude-code-capabilities.md | M | S |
| feature evolution / staleness | /simplify renamed to /code-review (stale bundled-skill list) | 2.1.147, 2.1.152 | now-wrong | update-knowledge | knowledge/claude-code-capabilities.md | M | S |
| feature evolution / staleness | window settings keys absent from capability register | 2.1.143-181 | missing | update-knowledge | knowledge/claude-code-capabilities.md | M | M |
| feature evolution / staleness | window hook events absent from timeline | 2.1.139-178 | missing | update-knowledge | knowledge/feature-evolution.md | M | M |
_(L-prioritets «covered/none» runtime/UI-rader utelatt for lesbarhet; full liste i workflow-output `tasks/wgxug2xfs.output`.)_
## Surfaces 1012 (re-run `wyk5istx7`, 12/12 komplett)
Mest actionable nye funn:
| surface | cc change | versions | verdict | action | target file | priority | effort |
|---|---|---|---|---|---|---|---|
| token management | `disableBundledSkills` flagges «unknown» + er uutnyttet token-lever | 2.1.169 | now-wrong | fix-false-positive | scanners/settings-validator.mjs | H | S |
| token management | `disableBundledSkills` kan ANBEFALES (skjuler bundled-skill-desc fra system-prompt) | 2.1.169 | missing | new-feature-gap-check | knowledge/opus-4.7-patterns.md | M | S |
| token management | `opus-4.7-patterns.md` rammet rundt 4.7; lean system prompt-default (2.1.154) senker baseline | 2.1.154, 2.1.170 | now-wrong | update-knowledge | knowledge/opus-4.7-patterns.md | H | M |
| token management | CC truncerer skill-listing ved budsjett-overflow; config-audit kan varsle før | 2.1.178 | partial | new-scanner | knowledge/opus-4.7-patterns.md | M | M |
| token management | `skillListingBudgetFraction`/`maxSkillDescriptionChars` (UVERIFISERT, under gulv) | ~2.1.105 | missing | update-knowledge | knowledge/claude-code-capabilities.md | L | S |
| slash commands | **`/config key=value`** — in-session-anvendelse av settings-anbefalinger (kan refereres i fix/feature-gap-tekst) | 2.1.181 | missing | update-knowledge | knowledge/claude-code-capabilities.md | M | S |
| slash commands | `/simplify``/code-review` (stale bundled-skill-liste) | 2.1.147 | now-wrong | update-knowledge | knowledge/claude-code-capabilities.md | M | S |
| slash commands | `/goal`, `/reload-skills` ikke i bundled-command-inventar | 2.1.139, 2.1.152 | missing | update-knowledge | knowledge/claude-code-capabilities.md | L | S |
| subagents/agents | settings `agent`-felt (kjør main-thread som named subagent) ikke i kjent-sett | 2.1.157 | missing | extend-scanner-known-set | knowledge/claude-code-capabilities.md | M | S |
| subagents/agents | nested subagents (5-nivå), closest-`.claude`-precedence | 2.1.172, 2.1.178 | missing | update-knowledge | knowledge/claude-code-capabilities.md | M | S |
| subagents/agents | `availableModels`/`enforceAvailableModels` begrenser agent-`model:` | 2.1.172 | partial | update-knowledge | knowledge/claude-code-capabilities.md | M | M |
| subagents/agents | `defaultEnabled: false` i plugin.json (gater bundled agents/skills/commands) | 2.1.154 | missing | extend-scanner-known-set | knowledge/claude-code-capabilities.md | M | S |
_(Resten av de 32 radene er `none`/`covered` CLI/UI-runtime uten config-surface — full liste i `tasks/wyk5istx7.output`.)_
## Draft-korreksjoner (re-run fanget versjonsfeil i `cc-2.1.x-changelog-delta.md`)
Draftet (og dermed noen rader i første kjøring) hadde feil versjon på fire punkter — matrisen over er korrekt kilde:
- settings `agent`-felt: **2.1.157** (ikke 2.1.154)
- agent-spawn i auto-mode: **2.1.178** (ikke 2.1.143)
- `subagent_type` case/separator-insensitiv: **2.1.140** (ikke 2.1.157)
- `SubagentStop` `additionalContext`: **2.1.165** (ikke 2.1.163)
Disse korrigeres når knowledge-filene oppdateres (Batch 3). `docs/cc-2.1.x-changelog-delta.md` er nå superseded av denne matrisen.

View file

@ -0,0 +1,45 @@
# Plan — Claude Code 2.1.114→181 dekningsgjennomgang
**Ratifisert:** 2026-06-18 · **Scope:** kun `config-audit/` · **Metode:** A (orkestrert gap-matrise + verifikasjon per surface)
## Mål
Gå systematisk gjennom hver konfigurasjons-relevante Claude Code-endring i vinduet **v2.1.114 → v2.1.181** (~67 releaser), avgjøre om config-audit må endre hva den skanner/anbefaler, og produsere en prioritert tiltaksplan. Deretter (egen fase) token-optimalisering.
## Bakgrunn / hvorfor nå
Pluginens kunnskapsbase ble sist verifisert ved **v2.1.114** (`knowledge/claude-code-capabilities.md:4`). Installert CC er **2.1.181**. Verifisert staleness ved oppstart:
- `settings-validator.mjs:66` `VALID_EFFORT_LEVELS` mangler `xhigh` (CC 2.1.154) → **false positive** på gyldig konfig.
- Hook-events `post-session`, `MessageDisplay` udokumentert i `knowledge/hook-events-reference.md`.
- «Opus 4.7» hardkodet i `token-hotspots.mjs`, `opus-4.7-patterns.md`, `configuration-best-practices.md` — 4.8 er default, Fable 5 finnes.
- `feature-evolution.md` (staleness-tracker) stopper ved v2.1.111.
- Nyere settings-nøkler ukjente for validatoren (`fallbackModel`, `enforceAvailableModels`, `disableBundledSkills`, `skillOverrides`, `sandbox.allowAppleEvents` …).
## Versjonsgulv
**2.1.114** (pluginens faktiske sist-verifiserte punkt), ikke 2.1.130 — ellers mistes 2.1.115129.
## Metode (ratifisert: A)
Hovedkontekst orkestrerer; én verifikasjons-agent per config-surface, mekanisert som dynamisk workflow `config-audit-cc-gap`. Eskalering til Voyage (`/trekbrief→/trekplan`) **kun hvis** Fase 2 avdekker netto-nye scannere store nok til å forsvare det.
## Faser
- **Fase 0 — Lås changelog-korpus.** Re-verifiser mot offisiell `CHANGELOG.md` for hele vinduet, per surface, med kildelenker. *Leveranse:* `docs/cc-2.1.x-changelog-delta.md` (draft → verifisert i Fase 2).
- **Fase 1 — Dekningsbaseline.** Map hver scanner + knowledge-fil til surface + kjent-sett (settings-nøkler, hook-events, 25 feature-checks, mcp-felter, token-mønstre).
- **Fase 2 — Gap-matrise (kjernen).** Kryss delta × dekning. Hver rad: `surface → CC-endring → dekket/delvis/mangler/nå-feil → tiltakstype → mål-fil → prioritet H/M/L`. *Leveranse:* `docs/cc-2.1.x-gap-matrix.md`.
- **Fase 3 — Prioritert tiltaksplan + release-skisse.** Quick wins (xhigh, kjent-nøkler, hook-events, 4.7→4.8) vs større (sandbox/managed-settings, `Tool(param:value)`-permissions, plugin `defaultEnabled`). Avgjør v5.2 vs 6.0. Ratifiseres FØR kode.
- **Fase 4 (etter, egen tråd) — Token-optimalisering.** Refresh `opus-4.7-patterns` → 4.8/Fable 5; nye token-styrings-settings som TOK/feature-gap-checks.
## Tiltakstyper (klassifisering i matrisen)
`update-knowledge` · `extend-scanner-known-set` · `new-feature-gap-check` · `new-scanner` · `fix-false-positive` · `none`.
## Verifisering (testbare kriterier)
- Hver HIGH-impact-endring i vinduet har **én rad** i gap-matrisen med verdikt + kildelenke (#HIGH = #rader).
- Regresjonstest: fixture med `effortLevel: "xhigh"` flagges **ikke** (beviser false-positive fikset).
- `node --test 'tests/**/*.test.mjs'` grønn (baseline 792) etter hver scanner-endring.
- `node scanners/self-audit.mjs` ren på pluginen selv.
- `feature-evolution.md` siste rad = v2.1.181.
- Ny changelog-scout finner **0** netto-nye uoppdagede surfaces (completeness-sjekk).
## Scope-gjerde
Kun `config-audit/`. Fase 03 = analyse/planlegging. INGEN produksjonskode-endring uten ratifisert tiltaksplan + failing test først (Iron Law). Fase 4 startes ikke før 03 er ratifisert.
## Risiko
- Agent-draft kan inneholde feil/items under gulvet → Fase 2 re-verifiserer hver rad mot offisiell kilde.
- Web-fetch utilgjengelig i headless workflow-agenter → graceful fallback til draft, rader merkes `web_verified:false`.