@mmnto/cli 1.104.0 → 1.105.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,87 @@
1
1
  // ─── Constants ──────────────────────────────────────
2
2
  const COMPILED_RULES_FILE = 'compiled-rules.json';
3
+ // ─── Corpus-bearing derivation (mmnto-ai/totem-strategy#971, Prop 309) ─
4
+ /**
5
+ * Count the lesson-corpus files a repo carries on disk: every existing file
6
+ * matched by a lesson-kind ingest target's glob in the loaded totem config,
7
+ * deduplicated across targets.
8
+ *
9
+ * This is the discriminator {@link runCompiledRules} uses when zero compiled
10
+ * rules load. A count > 0 means the repo genuinely HAS lessons, so a
11
+ * zero-rules run has silently disarmed the enforcement gate and must fail loud
12
+ * (mmnto-ai/totem-strategy#971, Prop 309). A count of 0 is a legitimate
13
+ * empty-corpus / early-adoption repo that skips (mmnto-ai/totem#1831).
14
+ *
15
+ * Config-driven — the lesson paths come from `config.targets`, never a
16
+ * hardcoded `.totem/lessons` (`totem describe`'s "Lessons: N" reads the fixed
17
+ * dir; this derivation honors a config that relocates the corpus). Pure
18
+ * filesystem scan with NO git spawn, so it stays Windows-temp-dir safe under
19
+ * test: each target's static path prefix bounds the walk, and candidate paths
20
+ * are matched with the shared glob matcher.
21
+ */
22
+ async function countLessonCorpusFiles(config, projectRoot) {
23
+ const fs = await import('node:fs');
24
+ const path = await import('node:path');
25
+ const { matchesGlob } = await import('@mmnto/totem');
26
+ const WILDCARD = /[*?{}[\]]/;
27
+ // Bound the walk so a broad lesson glob can never blow up on heavy trees. A
28
+ // non-terminal wildcard (e.g. '.totem/*/lessons/*.md') collapses the static
29
+ // prefix to a shallow dir, so the heavy subtrees lessons never live in —
30
+ // embedding stores and build output — are skipped by name alongside the
31
+ // usual suspects.
32
+ const SKIP_DIRS = new Set(['.git', 'node_modules', '.lancedb', 'dist']);
33
+ const toPosix = (p) => p.replace(/\\/g, '/');
34
+ const matched = new Set();
35
+ for (const target of config.targets) {
36
+ if (target.type !== 'lesson')
37
+ continue;
38
+ const glob = target.glob;
39
+ // Concrete path (no wildcard) — a direct existence check (e.g. a single
40
+ // aggregated `.totem/lessons.md`).
41
+ if (!WILDCARD.test(glob)) {
42
+ try {
43
+ if (fs.statSync(path.join(projectRoot, glob)).isFile())
44
+ matched.add(toPosix(glob));
45
+ // totem-context: best-effort — an absent concrete lesson path is simply not counted; ENOENT here is expected, never surfaced.
46
+ }
47
+ catch {
48
+ // path absent — contributes nothing
49
+ }
50
+ continue;
51
+ }
52
+ // Wildcard glob — walk the static prefix directory (segments before the
53
+ // first wildcard segment) and match each candidate against the full config
54
+ // glob. The prefix scopes the walk to the lessons subtree.
55
+ const segments = glob.split('/');
56
+ const firstWildcard = segments.findIndex((s) => WILDCARD.test(s));
57
+ const baseRel = segments.slice(0, firstWildcard).join('/');
58
+ const stack = [baseRel ? path.join(projectRoot, baseRel) : projectRoot];
59
+ while (stack.length > 0) {
60
+ const dir = stack.pop();
61
+ let entries;
62
+ try {
63
+ entries = fs.readdirSync(dir, { withFileTypes: true });
64
+ // totem-context: best-effort — an unreadable/absent lesson subtree contributes nothing rather than throwing; this cold-path scan must never crash lint.
65
+ }
66
+ catch {
67
+ continue;
68
+ }
69
+ for (const entry of entries) {
70
+ const abs = path.join(dir, entry.name);
71
+ if (entry.isDirectory()) {
72
+ if (!SKIP_DIRS.has(entry.name))
73
+ stack.push(abs);
74
+ }
75
+ else if (entry.isFile()) {
76
+ const rel = toPosix(path.relative(projectRoot, abs));
77
+ if (matchesGlob(rel, glob))
78
+ matched.add(rel);
79
+ }
80
+ }
81
+ }
82
+ }
83
+ return matched.size;
84
+ }
3
85
  // ─── Core logic ─────────────────────────────────────
4
86
  /**
5
87
  * Compiled-rules execution engine used by `totem lint`. Loads rules, extracts additions, enriches
@@ -19,17 +101,28 @@ export async function runCompiledRules(options) {
19
101
  state: { hasWarnedShieldContext: false },
20
102
  };
21
103
  const resolvedTotemDir = path.join(options.configRoot ?? cwd, totemDir);
22
- // Load compiled rules
104
+ // Load compiled rules. Thread an `onWarn` that both RECORDS the load-time
105
+ // warning and RENDERS it (log.warn). The lint call site historically omitted
106
+ // onWarn, so a truncated / unreadable manifest dropped even the accounting
107
+ // line and lint passed vacuously (mmnto-ai/totem-strategy#971, Prop 309).
108
+ // Zod-shape errors still THROW from core (a corrupt SCHEMA is never a skip).
23
109
  const rulesPath = path.join(resolvedTotemDir, COMPILED_RULES_FILE);
24
- const rules = loadCompiledRules(rulesPath);
25
- // Empty corpus is a legitimate state for early-adoption / aspirational repos
26
- // (mmnto-ai/totem#1831). Log + skip rather than throwing so CI does not fail
27
- // on repos that have a valid lint configuration but no lessons compiled yet.
28
- // Consumers that need a "rule count > 0" CI guardrail can check
29
- // `compiled-rules.json` length directly in their pipeline.
110
+ let loadWarning;
111
+ const rules = loadCompiledRules(rulesPath, (msg) => {
112
+ loadWarning = msg;
113
+ log.warn(tag, msg);
114
+ });
30
115
  if (rules.length === 0) {
31
- log.info(tag, `No compiled rules at ${totemDir}/${COMPILED_RULES_FILE} skipping (empty-corpus repo). Run 'totem lesson compile' once you have lessons.`);
32
- return {
116
+ // Zero rules can mean two very different things. An empty-corpus /
117
+ // early-adoption repo legitimately skips (mmnto-ai/totem#1831). But a repo
118
+ // that ACTUALLY carries a lesson corpus and still loads zero rules has its
119
+ // entire enforcement gate silently disarmed behind a green exit
120
+ // (mmnto-ai/totem-strategy#971, Prop 309) — a missing manifest, a
121
+ // truncated/unreadable one (onWarn fired above), or a manifest that
122
+ // filtered down to zero ACTIVE rules. Discriminate on corpus-bearing: does
123
+ // the config declare lesson-kind targets that match real files on disk?
124
+ const fs = await import('node:fs');
125
+ const emptyResult = {
33
126
  violations: [],
34
127
  findings: [],
35
128
  rules: [],
@@ -37,6 +130,38 @@ export async function runCompiledRules(options) {
37
130
  regexTimeouts: [],
38
131
  astParseFailures: [],
39
132
  };
133
+ const lessonCount = options.config
134
+ ? await countLessonCorpusFiles(options.config, options.configRoot ?? cwd)
135
+ : 0;
136
+ if (lessonCount > 0) {
137
+ const manifestRel = `${totemDir}/${COMPILED_RULES_FILE}`;
138
+ // This existsSync re-derives what loadCompiledRules saw internally
139
+ // (compiler.ts checks the same path). A manifest CREATED between the two
140
+ // reads would fall through to the zero-active-rules info-skip — an
141
+ // accepted single-shot-CLI race (mmnto-ai/totem#2499 review): the window
142
+ // is microseconds and a concurrent compile implies an imminent re-lint.
143
+ if (!fs.existsSync(rulesPath)) {
144
+ throw new TotemError('LINT_LESSONS_FAILED', `Enforcement disarmed: ${lessonCount} lesson file(s) present but no compiled-rules manifest at ${manifestRel} — 'totem lint' would pass every diff vacuously.`, "Regenerate the manifest with 'totem lesson compile' so the compiled rules are enforced.");
145
+ }
146
+ if (loadWarning) {
147
+ throw new TotemError('LINT_LESSONS_FAILED', `Enforcement disarmed: ${lessonCount} lesson file(s) present but the compiled-rules manifest at ${manifestRel} could not be loaded — ${loadWarning}. 'totem lint' would pass every diff vacuously.`, "Repair or regenerate the manifest with 'totem lesson compile' so the compiled rules are enforced.");
148
+ }
149
+ // Manifest present and loaded validly, but every rule filtered out as
150
+ // inert (archived / pending-verification / untested-against-codebase).
151
+ // Archived-in-place rules preserve telemetry by design — a legitimate
152
+ // lifecycle state, NOT a disarmed gate — so this stays an info-skip, but
153
+ // one that NAMES the zero-active-rules condition instead of masquerading
154
+ // as an empty corpus.
155
+ log.info(tag, `${manifestRel} is present with zero ACTIVE rules (all archived / pending-verification / untested-against-codebase) — skipping. Legitimate lifecycle state, not a disarmed gate.`);
156
+ return emptyResult;
157
+ }
158
+ // Not corpus-bearing — preserve the mmnto-ai/totem#1831 empty-corpus skip
159
+ // exactly (early-adoption / aspirational repos with a valid lint config but
160
+ // no lessons compiled yet). Consumers that need a "rule count > 0" CI
161
+ // guardrail can check `compiled-rules.json` length directly in their
162
+ // pipeline.
163
+ log.info(tag, `No compiled rules at ${totemDir}/${COMPILED_RULES_FILE} — skipping (empty-corpus repo). Run 'totem lesson compile' once you have lessons.`);
164
+ return emptyResult;
40
165
  }
41
166
  log.info(tag, `Running ${rules.length} rules (zero LLM)...`);
42
167
  // Extract additions, exclude compiled rules file, export targets, and binary files
@@ -1 +1 @@
1
- {"version":3,"file":"run-compiled-rules.js","sourceRoot":"","sources":["../../src/commands/run-compiled-rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-compiled-rules.js","sourceRoot":"","sources":["../../src/commands/run-compiled-rules.ts"],"names":[],"mappings":"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"}
@@ -1354,4 +1354,185 @@ describe('--ast-parse-mode lenient', () => {
1354
1354
  expect(result.output).not.toContain('Frozen-lesson');
1355
1355
  });
1356
1356
  });
1357
+ // ─── Corpus-bearing zero-rules hard-error (mmnto-ai/totem-strategy#971, Prop 309) ──
1358
+ //
1359
+ // A repo that carries a lesson corpus but loads ZERO compiled rules has its
1360
+ // entire enforcement gate silently disarmed behind a green exit. `totem lint`
1361
+ // must fail loud in that case (induced-failure triple below), while still
1362
+ // preserving the legitimate empty-corpus skip (mmnto-ai/totem#1831) and the
1363
+ // archived-in-place zero-active-rules lifecycle state (the controls).
1364
+ describe('corpus-bearing zero-rules hard-error (mmnto-ai/totem-strategy#971)', () => {
1365
+ let tmpDir;
1366
+ beforeEach(() => {
1367
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'totem-rcr-corpus-'));
1368
+ fs.mkdirSync(path.join(tmpDir, TOTEM_DIR), { recursive: true });
1369
+ });
1370
+ afterEach(() => {
1371
+ cleanTmpDir(tmpDir);
1372
+ });
1373
+ /** Write a real lesson `.md` under `.totem/lessons/` so the repo is corpus-bearing. */
1374
+ function writeLesson(dir, name = 'baseline.md') {
1375
+ const lessonsDir = path.join(dir, TOTEM_DIR, 'lessons');
1376
+ fs.mkdirSync(lessonsDir, { recursive: true });
1377
+ fs.writeFileSync(path.join(lessonsDir, name), '# A lesson\n\nBody.\n');
1378
+ }
1379
+ /** A config whose only lesson-kind target matches `.totem/lessons/*.md`. */
1380
+ function lessonConfig(glob = '.totem/lessons/*.md') {
1381
+ return { targets: [{ glob, type: 'lesson', strategy: 'markdown-heading' }] };
1382
+ }
1383
+ const cleanDiff = () => makeDiff('src/app.ts', ' const x = 1;');
1384
+ // ── Induced-failure triple ──────────────────────────
1385
+ it('hard-errors when the manifest is missing but the repo carries lessons', async () => {
1386
+ writeLesson(tmpDir); // corpus-bearing; no compiled-rules.json written
1387
+ await expect(runCompiledRules({
1388
+ diff: cleanDiff(),
1389
+ cwd: tmpDir,
1390
+ totemDir: TOTEM_DIR,
1391
+ format: 'text',
1392
+ tag: 'Test',
1393
+ config: lessonConfig(),
1394
+ })).rejects.toThrow(/enforcement disarmed/i);
1395
+ });
1396
+ it('hard-errors on a truncated manifest instead of passing vacuously', async () => {
1397
+ writeLesson(tmpDir);
1398
+ // Truncated mid-array — JSON.parse throws SyntaxError, which core reports via
1399
+ // onWarn and returns []. Unmodified code passes vacuously here; the fix throws.
1400
+ fs.writeFileSync(path.join(tmpDir, TOTEM_DIR, 'compiled-rules.json'), '{"version":1,"rules":[');
1401
+ await expect(runCompiledRules({
1402
+ diff: cleanDiff(),
1403
+ cwd: tmpDir,
1404
+ totemDir: TOTEM_DIR,
1405
+ format: 'text',
1406
+ tag: 'Test',
1407
+ config: lessonConfig(),
1408
+ })).rejects.toThrow(/enforcement disarmed/i);
1409
+ });
1410
+ it('hard-errors on an EISDIR I/O fault and surfaces the load-warning accounting text', async () => {
1411
+ writeLesson(tmpDir);
1412
+ // Replace the manifest with a DIRECTORY at the same path — the portable,
1413
+ // Windows-safe I/O fault (readFileSync throws EISDIR on win32 and posix).
1414
+ fs.mkdirSync(path.join(tmpDir, TOTEM_DIR, 'compiled-rules.json'), { recursive: true });
1415
+ let message = '';
1416
+ try {
1417
+ await runCompiledRules({
1418
+ diff: cleanDiff(),
1419
+ cwd: tmpDir,
1420
+ totemDir: TOTEM_DIR,
1421
+ format: 'text',
1422
+ tag: 'Test',
1423
+ config: lessonConfig(),
1424
+ });
1425
+ }
1426
+ catch (err) {
1427
+ message = err instanceof Error ? err.message : String(err);
1428
+ }
1429
+ expect(message).toMatch(/enforcement disarmed/i);
1430
+ // The onWarn accounting text (dropped before the fix) is surfaced in the throw.
1431
+ expect(message).toContain('Could not load compiled rules');
1432
+ });
1433
+ // ── Controls ────────────────────────────────────────
1434
+ it('control: an empty-corpus repo (no lesson files) with a missing manifest still exits clean (mmnto-ai/totem#1831)', async () => {
1435
+ // Config DECLARES a lesson target, but no lesson files exist on disk, so the
1436
+ // discriminator treats the repo as empty-corpus — the info-skip is preserved.
1437
+ const result = await runCompiledRules({
1438
+ diff: cleanDiff(),
1439
+ cwd: tmpDir,
1440
+ totemDir: TOTEM_DIR,
1441
+ format: 'text',
1442
+ tag: 'Test',
1443
+ config: lessonConfig(),
1444
+ });
1445
+ expect(result.violations).toHaveLength(0);
1446
+ expect(result.rules).toHaveLength(0);
1447
+ expect(result.output).toBe('');
1448
+ });
1449
+ it('control: a corpus-bearing repo whose manifest holds only archived rules exits clean with a zero-active-rules message', async () => {
1450
+ writeLesson(tmpDir);
1451
+ // Valid manifest, present and parseable, but every rule is inert (archived).
1452
+ // loadCompiledRules filters it to [] with no warning — a legitimate lifecycle
1453
+ // state, NOT a disarmed gate.
1454
+ writeRules(tmpDir, [
1455
+ makeRule('console\\.log', 'No console', 'No console', { status: 'archived' }),
1456
+ ]);
1457
+ const stderrSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
1458
+ try {
1459
+ const result = await runCompiledRules({
1460
+ diff: cleanDiff(),
1461
+ cwd: tmpDir,
1462
+ totemDir: TOTEM_DIR,
1463
+ format: 'text',
1464
+ tag: 'Test',
1465
+ config: lessonConfig(),
1466
+ });
1467
+ expect(result.rules).toHaveLength(0);
1468
+ expect(result.violations).toHaveLength(0);
1469
+ // Join ALL args per call — coupling to log.info's internal arity would
1470
+ // silently break this assertion if the tag and message ever split.
1471
+ const messages = stderrSpy.mock.calls.map((c) => c.join(' '));
1472
+ expect(messages.find((m) => m.includes('zero ACTIVE rules'))).toBeDefined();
1473
+ }
1474
+ finally {
1475
+ stderrSpy.mockRestore();
1476
+ }
1477
+ });
1478
+ it('control: a repo with valid active rules is unaffected by the corpus-bearing gate', async () => {
1479
+ writeLesson(tmpDir);
1480
+ writeRules(tmpDir, [makeRule('neverMatchXYZ123', 'no match', 'No match rule')]);
1481
+ const result = await runCompiledRules({
1482
+ diff: cleanDiff(),
1483
+ cwd: tmpDir,
1484
+ totemDir: TOTEM_DIR,
1485
+ format: 'json',
1486
+ tag: 'Test',
1487
+ config: lessonConfig(),
1488
+ });
1489
+ expect(result.rules).toHaveLength(1);
1490
+ expect(result.violations).toHaveLength(0);
1491
+ expect(JSON.parse(result.output).pass).toBe(true);
1492
+ });
1493
+ it('control: a config-less caller with a truncated manifest surfaces the load warning but never hard-errors (the shield-estimate opt-out contract)', async () => {
1494
+ writeLesson(tmpDir);
1495
+ fs.writeFileSync(path.join(tmpDir, TOTEM_DIR, 'compiled-rules.json'), '{"version":1,"rules":[');
1496
+ const stderrSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
1497
+ try {
1498
+ // No `config` option — the caller opts out of the corpus-bearing hard
1499
+ // error (e.g. `shield estimate`). The accounting line must still render:
1500
+ // the opt-out covers the exit code, not the disclosure.
1501
+ const result = await runCompiledRules({
1502
+ diff: cleanDiff(),
1503
+ cwd: tmpDir,
1504
+ totemDir: TOTEM_DIR,
1505
+ format: 'text',
1506
+ tag: 'Test',
1507
+ });
1508
+ expect(result.rules).toHaveLength(0);
1509
+ expect(result.violations).toHaveLength(0);
1510
+ // Join ALL args per call — see the arity note in the archived-rules control.
1511
+ const messages = stderrSpy.mock.calls.map((c) => c.join(' '));
1512
+ expect(messages.find((m) => m.includes('Could not load compiled rules'))).toBeDefined();
1513
+ }
1514
+ finally {
1515
+ stderrSpy.mockRestore();
1516
+ }
1517
+ });
1518
+ it('hard-errors via a concrete (non-wildcard) lesson target — the aggregated .totem/lessons.md shape', async () => {
1519
+ // The production config declares BOTH a wildcard dir target and a concrete
1520
+ // aggregated-file target; this exercises the statSync existence branch (and
1521
+ // mixed-target iteration) that the wildcard-walk tests never reach.
1522
+ fs.writeFileSync(path.join(tmpDir, TOTEM_DIR, 'lessons.md'), '# Lessons\n\n## One\n\nBody.\n');
1523
+ await expect(runCompiledRules({
1524
+ diff: cleanDiff(),
1525
+ cwd: tmpDir,
1526
+ totemDir: TOTEM_DIR,
1527
+ format: 'text',
1528
+ tag: 'Test',
1529
+ config: {
1530
+ targets: [
1531
+ { glob: '.totem/lessons/*.md', type: 'lesson', strategy: 'markdown-heading' },
1532
+ { glob: '.totem/lessons.md', type: 'lesson', strategy: 'markdown-heading' },
1533
+ ],
1534
+ },
1535
+ })).rejects.toThrow(/enforcement disarmed/i);
1536
+ });
1537
+ });
1357
1538
  //# sourceMappingURL=run-compiled-rules.test.js.map