config-audit/tests/fixtures
Kjell Tore Guttormsen e9921d3c9d feat(optimize): add --subtract, the subtraction axis, behind a deterministic floor
Every command so far asked an addition question — what to add, what to move,
what it costs. Nothing asked what is no longer earning its always-loaded rent.
This adds that axis as a fourth lensCheck on the existing hybrid motor rather
than a new scanner or a 22nd command: the measured payoff (~18% of one file)
justifies a mode, not machinery.

It is the only lens that proposes REMOVING config, so it carries a guarantee
the others don't need: a load-bearing block is never a candidate. Precision is
asymmetric — a missed dead line costs a few tokens per turn, a deleted one
costs a wrong remote or a broken script — so the floor is decided in code
(lib/floor-exclusion.mjs) before the opus judge sees anything, never in prose.

Granularity is the leaf block, with two structural exceptions: a paragraph
ending in ':' merges with the list it introduces, and an ordered list is a
contract whose steps inherit floor from any sibling. Unordered lists
deliberately do not inherit — a load-bearing bullet and a disposable one
routinely share a list, and container-reasoning is the error the hand-built
ground truth exists to catch.

Verified against that ground truth (built before any classifier existed), with
the comparison machine-checked rather than read by eye: zero load-bearing
blocks proposed, 11/18 deletable groups surfaced, ~756 tok ~ 18% of a ~4300
token file — inside the pre-registered band. The first run found five floor
violations the synthesized fixture missed; each got a structural rule and a
fixture shape so it cannot regress.

Three real bugs the dogfood run exposed, all now covered:
- JS \b is ASCII-only, so /\bunngå\b/ never matches — every Norwegian keyword
  ending in æ/ø/å was silently dead.
- A bare word/word is not a path; "pros/cons" vetoed the largest deletable
  block until PATH_RE was tightened to rooted paths and globs.
- "Mid-sentence" must key on a preceding lowercase letter; the loose version
  read **bold labels:** and quoted openers as entities, costing 4 of 11 groups.

BP-SUB-001 is grounded entirely in the Anthropic steering blog already cited by
BP-MECH-001..004 and asserts nothing from the talk that motivated the feature —
no "80%", no ablation figure.

Suite 1365 -> 1382/0. Frozen v5.0.0 snapshots untouched; plain optimize output
byte-identical on identical input (--subtract adds keys only when passed).
knowledge-refresh-cli's reference date moved to 2026-08-01: its premise that
every seed entry was verified 2026-06-20 expired when BP-SUB-001 got a genuine
verification date, and backdating the entry to fit the test would have been a
lie about when its source was checked.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RW2haJXbxZpKivKHseSXNh
2026-07-31 16:24:51 +02:00
..
additional-dirs-many/.claude feat(config-audit): flag additionalDirectories > 2 (v5 M6) [skip-docs] 2026-05-01 06:50:24 +02:00
additional-dirs-ok/.claude feat(config-audit): flag additionalDirectories > 2 (v5 M6) [skip-docs] 2026-05-01 06:50:24 +02:00
automode-nonobject/.claude feat(set): validate autoMode structure + flag it in shared settings (CA-SET) 2026-06-19 22:14:26 +02:00
automode-shared/.claude feat(set): validate autoMode structure + flag it in shared settings (CA-SET) 2026-06-19 22:14:26 +02:00
automode-structure/.claude feat(set): validate autoMode structure + flag it in shared settings (CA-SET) 2026-06-19 22:14:26 +02:00
baseline-all-a fix(mcp-config-validator): remove invented trust field (verify-first) 2026-06-18 14:22:56 +02:00
broken-plugin fix(plh): align required-frontmatter with CC docs (drop optional model/tools/name) 2026-06-20 07:27:44 +02:00
broken-project feat(ultraplan-local): v1.6.0 — /ultraresearch-local deep research command 2026-04-08 08:58:35 +02:00
collision-plugins/fake-home/.claude feat(config-audit): cross-plugin collision scanner COL (v5 N6) [skip-docs] 2026-05-01 07:46:15 +02:00
conflict-project fix(config-audit): complete conflict-project fixture for CNF cross-scope tests 2026-04-19 22:29:46 +02:00
cps-fenced fix(acr): CPS ignores fenced/inline code + CC-stable path vars (M-BUG-7) 2026-06-26 12:45:14 +02:00
cps-inline-code fix(acr): CPS ignores fenced/inline code + CC-stable path vars (M-BUG-7) 2026-06-26 12:45:14 +02:00
cps-stable-vars fix(acr): CPS ignores fenced/inline code + CC-stable path vars (M-BUG-7) 2026-06-26 12:45:14 +02:00
denied-tools-in-schema/.claude feat(config-audit): disabled-in-schema scanner DIS (v5 N4) [skip-docs] 2026-05-01 07:39:58 +02:00
deny-all-glob/.claude feat(dis): flag ineffective allow wildcards; treat Tool(*) as deny-all 2026-06-19 06:31:18 +02:00
duplicate-command-name fix(plh): downgrade cross-plugin command-name overlap to low ambiguity 2026-06-19 15:30:35 +02:00
duplicate-plugin-name fix(plh): downgrade cross-plugin command-name overlap to low ambiguity 2026-06-19 15:30:35 +02:00
fixable-project feat(ultraplan-local): v1.6.0 — /ultraresearch-local deep research command 2026-04-08 08:58:35 +02:00
forbidden-param-permissions/.claude feat(dis): flag forbidden-param permission rules CC silently ignores 2026-06-19 14:04:25 +02:00
healthy-project fix(mcp-config-validator): remove invented trust field (verify-first) 2026-06-18 14:22:56 +02:00
hooks-additional-context/hooks feat(hooks): additionalContext injection advisory + filter-before lever (v5.10 B5) [skip-docs] 2026-06-23 20:28:33 +02:00
hooks-quiet/hooks feat(config-audit): HKV flags verbose hook output (v5 M5) [skip-docs] 2026-05-01 07:05:45 +02:00
hooks-verbose/hooks feat(config-audit): HKV flags verbose hook output (v5 M5) [skip-docs] 2026-05-01 07:05:45 +02:00
import-volatile feat(cps): scan @imported files for volatile cached-prefix content (v5.10 B6) [skip-docs] 2026-06-23 20:45:12 +02:00
ineffective-allow-globs/.claude feat(dis): flag ineffective allow wildcards; treat Tool(*) as deny-all 2026-06-19 06:31:18 +02:00
large-cascade feat(config-audit): TOK flags CLAUDE.md cascade > 10k tokens (v5 M4) [skip-docs] 2026-05-01 06:53:12 +02:00
large-claude-chars feat(cml): context-window-scaled CLAUDE.md char budget (mirrors CC 40.0k warning) 2026-06-19 13:34:40 +02:00
marketplace-large fix(mcp-config-validator): remove invented trust field (verify-first) 2026-06-18 14:22:56 +02:00
marketplace-medium fix(mcp-config-validator): remove invented trust field (verify-first) 2026-06-18 14:22:56 +02:00
marketplace-small test(config-audit): add marketplace-small/medium/large scanner fixtures 2026-04-19 22:36:33 +02:00
mcp-budget feat(config-audit): CA-TOK-005 MCP tool-schema budget (v5 N1) [skip-docs] 2026-05-01 07:29:57 +02:00
mcp-deferral feat(tokens): MCP tool-schema deferral check + CLI-over-MCP lever (v5.10 B4) 2026-06-23 19:59:14 +02:00
mcp-tool-heavy chore(config-audit): allow fake node_modules in tests/fixtures (v5 M1) [skip-docs] 2026-05-01 07:02:54 +02:00
minimal-project feat(ultraplan-local): v1.6.0 — /ultraresearch-local deep research command 2026-04-08 08:58:35 +02:00
opus-47 test(config-audit): add Opus 4.7 pattern fixtures (cache, redundant, imports, sonnet-era) 2026-04-19 22:34:41 +02:00
param-conflict-project/.claude fix(permissions): param-aware DIS dead-allow + CNF conflict matching 2026-06-18 13:06:20 +02:00
param-qualified-permissions/.claude fix(permissions): param-aware DIS dead-allow + CNF conflict matching 2026-06-18 13:06:20 +02:00
plugin-section-coverage fix(plh): require CLAUDE.md commands/agents/hooks section only for shipped components 2026-06-20 09:06:20 +02:00
plugin-shadow-folder feat(plh): flag plugin.json paths that shadow default folders (CA-PLH-015) 2026-06-19 21:46:22 +02:00
plugin-skills-array feat(plh): validate plugin.json skills:-array entries (CA-PLH-016) 2026-06-19 21:56:57 +02:00
readme-desynced feat(config-audit): self-audit --check-readme flag (v5 F6) [skip-docs] 2026-05-01 07:09:26 +02:00
skill-bloated/skills/bloated feat(config-audit): TOK flags skill description > 500 chars (v5 M2) [skip-docs] 2026-05-01 06:58:42 +02:00
skill-tight/skills/tight feat(config-audit): TOK flags skill description > 500 chars (v5 M2) [skip-docs] 2026-05-01 06:58:42 +02:00
small-cascade feat(config-audit): TOK flags CLAUDE.md cascade > 10k tokens (v5 M4) [skip-docs] 2026-05-01 06:53:12 +02:00
subtraction feat(optimize): add --subtract, the subtraction axis, behind a deterministic floor 2026-07-31 16:24:51 +02:00
test-plugin feat(ultraplan-local): v1.6.0 — /ultraresearch-local deep research command 2026-04-08 08:58:35 +02:00
tok-active-config feat(config-audit): TOK consumes readActiveConfig (v5 F1) 2026-05-01 06:27:34 +02:00
volatile-mid-section feat(config-audit): cache-prefix stability scanner CPS (v5 N3) [skip-docs] 2026-05-01 07:37:54 +02:00