diff --git a/scanners/lib/humanizer-data.mjs b/scanners/lib/humanizer-data.mjs index adf6802..a0e1dcf 100644 --- a/scanners/lib/humanizer-data.mjs +++ b/scanners/lib/humanizer-data.mjs @@ -435,8 +435,8 @@ export const TRANSLATIONS = { recommendation: 'Consider moving team-wide settings to project scope and keeping personal ones at user or local scope.', }, 'CLAUDE.md not modular': { - title: 'Your instructions file is one big block', - description: 'Splitting long instructions into smaller linked files makes them easier to maintain and easier on the loading time.', + title: 'Your instructions all live in one file', + description: 'Splitting your instructions into smaller linked files with `@import` or `.claude/rules/` keeps each part focused and easier to maintain.', recommendation: 'Break out long sections into separate files and link them with `@import`.', }, 'No path-scoped rules': { diff --git a/tests/lib/humanizer-data.test.mjs b/tests/lib/humanizer-data.test.mjs index e0df242..fc4683c 100644 --- a/tests/lib/humanizer-data.test.mjs +++ b/tests/lib/humanizer-data.test.mjs @@ -162,6 +162,23 @@ test('CML, SET, HKV, RUL, MCP, IMP, GAP, TOK, PLH have non-empty static maps', ( } }); +test('GAP "CLAUDE.md not modular" copy is size-neutral (M-BUG-14)', () => { + // The t2_2 check is a pure presence check (no length gate), so a small + // non-modular CLAUDE.md must not be told it is "big"/"long" or that it + // costs "loading time". Title + description must stay size/cost-neutral + // and keep only the honest structural "split into linked files" framing. + const t = TRANSLATIONS.GAP.static['CLAUDE.md not modular']; + assert.ok(t, 'GAP static map missing "CLAUDE.md not modular"'); + const title = t.title.toLowerCase(); + const desc = t.description.toLowerCase(); + assert.ok(!/\bbig\b/.test(title), `title overclaims size: "${t.title}"`); + assert.ok(!/\blong\b/.test(title), `title overclaims size: "${t.title}"`); + assert.ok(!/\bbig\b/.test(desc), `description overclaims size: "${t.description}"`); + assert.ok(!/\blong\b/.test(desc), `description overclaims size: "${t.description}"`); + assert.ok(!/loading time/.test(desc), `description overclaims load cost: "${t.description}"`); + assert.ok(/split/.test(desc), `description should keep structural split framing: "${t.description}"`); +}); + test('CNF, COL, PLH have at least one pattern entry (template-literal titles)', () => { // These scanners use template-literal titles for some findings. for (const prefix of ['CNF', 'COL', 'PLH']) {