@mmnto/totem 1.119.0 → 1.120.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.
- package/dist/compile-smoke-gate.d.ts +23 -0
- package/dist/compile-smoke-gate.d.ts.map +1 -1
- package/dist/compile-smoke-gate.js +139 -8
- package/dist/compile-smoke-gate.js.map +1 -1
- package/dist/compile-smoke-gate.test.js +431 -0
- package/dist/compile-smoke-gate.test.js.map +1 -1
- package/dist/recurrence-stats.d.ts +10 -10
- package/dist/spine/authored-rule.d.ts +18 -18
- package/dist/spine/authoring-ledger.d.ts +14 -14
- package/dist/spine/cert-corpus-seed.d.ts +6 -6
- package/dist/spine/ledgers.d.ts +62 -62
- package/dist/spine/windtunnel-lock.d.ts +16 -16
- package/package.json +1 -1
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { stringify as yamlStringify } from 'yaml';
|
|
2
3
|
import { matchAstGrepPattern } from './ast-grep-query.js';
|
|
3
4
|
import { runSmokeGate } from './compile-smoke-gate.js';
|
|
5
|
+
import { applyRulesToAdditionsBounded } from './regex-safety/apply-rules-bounded.js';
|
|
6
|
+
import { RegexEvaluator } from './regex-safety/evaluator.js';
|
|
7
|
+
import { applyAstRulesToAdditions, applyRulesToAdditions } from './rule-engine.js';
|
|
8
|
+
import { design8ExemplarRecord } from './spine/record-exemplars.fixture.js';
|
|
9
|
+
import { compileRuleRecord } from './spine/record-lower.js';
|
|
10
|
+
import { parseRuleRecord } from './spine/rule-record.js';
|
|
4
11
|
// ─── Helpers ────────────────────────────────────────
|
|
5
12
|
function makeRegexRule(overrides = {}) {
|
|
6
13
|
return {
|
|
@@ -56,6 +63,23 @@ function makeCompoundRule(overrides = {}) {
|
|
|
56
63
|
...overrides,
|
|
57
64
|
};
|
|
58
65
|
}
|
|
66
|
+
// ─── Prop 310 § Design 8 fixtures ────────────────────
|
|
67
|
+
/** § Design 8's exemplar target: the git verbs whose output must be locale-pinned. */
|
|
68
|
+
const GIT_TARGET = '\\bgit\\s+(log|diff|status)\\b';
|
|
69
|
+
/**
|
|
70
|
+
* The exemplar's snippets, named ONCE.
|
|
71
|
+
*
|
|
72
|
+
* Each is inert fixture TEXT handed to `runSmokeGate` as rule INPUT — neither
|
|
73
|
+
* this suite nor the dispatcher drive below runs a git command. The shipped
|
|
74
|
+
* git-hygiene lessons that fire on the bare forms are ADVISORY here (regex
|
|
75
|
+
* engine, no `ruleClass` ⇒ not hard-tier ⇒ excluded from the lint exit code), so
|
|
76
|
+
* they are left to report rather than overridden; hoisting keeps them to one
|
|
77
|
+
* finding per distinct literal.
|
|
78
|
+
*/
|
|
79
|
+
const BARE_LOG = 'git log --oneline';
|
|
80
|
+
const PINNED_DIFF = 'LC_ALL=C git diff HEAD';
|
|
81
|
+
/** The § Design 8 good example: the same target with the companion on the SAME line. */
|
|
82
|
+
const PINNED_LOG = `LC_ALL=C ${BARE_LOG}`;
|
|
59
83
|
// ─── runSmokeGate: regex rules ───────────────────────
|
|
60
84
|
describe('runSmokeGate — regex engine', () => {
|
|
61
85
|
it('matches when the badExample contains the pattern', () => {
|
|
@@ -263,6 +287,293 @@ describe('runSmokeGate over-matching check', () => {
|
|
|
263
287
|
expect(result.matchCount).toBe(0);
|
|
264
288
|
});
|
|
265
289
|
});
|
|
290
|
+
// ─── Prop 310 § Design 8 — `requires:` pass two ──────
|
|
291
|
+
describe('runSmokeGate — Prop 310 § Design 8 requires (mmnto-ai/totem#2678)', () => {
|
|
292
|
+
/** § Design 8's own exemplar, as a hand-built compiled rule. */
|
|
293
|
+
function makeRequiresRegexRule(requires, overrides = {}) {
|
|
294
|
+
return makeRegexRule({
|
|
295
|
+
lessonHeading: 'git output-consuming commands must pin LC_ALL=C',
|
|
296
|
+
pattern: GIT_TARGET,
|
|
297
|
+
message: 'git output-consuming commands must pin LC_ALL=C on the same line.',
|
|
298
|
+
requires,
|
|
299
|
+
examples: [{ bad: BARE_LOG, good: PINNED_LOG }],
|
|
300
|
+
...overrides,
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
describe('regex engine, scope: line', () => {
|
|
304
|
+
const rule = makeRequiresRegexRule({ pattern: 'LC_ALL=C', scope: 'line' });
|
|
305
|
+
it('FIRES on the bad example — target present, requirement absent', () => {
|
|
306
|
+
const result = runSmokeGate(rule, BARE_LOG);
|
|
307
|
+
expect(result.matched).toBe(true);
|
|
308
|
+
expect(result.matchCount).toBe(1);
|
|
309
|
+
});
|
|
310
|
+
it('stays SILENT on the good example — the defect #2678 fixed', () => {
|
|
311
|
+
// Pre-fix the gate ran pass ONE only, so the good example (which keeps the
|
|
312
|
+
// target and adds the companion) read as over-matching and no
|
|
313
|
+
// `requires:`-bearing record could pass `totem rule test`.
|
|
314
|
+
const result = runSmokeGate(rule, PINNED_LOG);
|
|
315
|
+
expect(result.matched).toBe(false);
|
|
316
|
+
expect(result.matchCount).toBe(0);
|
|
317
|
+
// Silence for the RIGHT reason: "the snippet simply contains nothing the
|
|
318
|
+
// rule fires on", which callers read as good-silent, not as a gate refusal.
|
|
319
|
+
expect(result.reason).toBeUndefined();
|
|
320
|
+
});
|
|
321
|
+
it('counts only the unsatisfied loci in a mixed snippet', () => {
|
|
322
|
+
const result = runSmokeGate(rule, `${BARE_LOG}\n${PINNED_DIFF}`);
|
|
323
|
+
expect(result.matched).toBe(true);
|
|
324
|
+
expect(result.matchCount).toBe(1);
|
|
325
|
+
});
|
|
326
|
+
});
|
|
327
|
+
describe('regex engine, scope: file', () => {
|
|
328
|
+
const fileScoped = makeRequiresRegexRule({ pattern: 'LC_ALL=C', scope: 'file' });
|
|
329
|
+
/** Target on one line, companion on ANOTHER — satisfied at file scope only. */
|
|
330
|
+
const SPLIT_SNIPPET = `export LC_ALL=C\n${BARE_LOG}`;
|
|
331
|
+
it('stays SILENT when the companion sits on a different line', () => {
|
|
332
|
+
const result = runSmokeGate(fileScoped, SPLIT_SNIPPET);
|
|
333
|
+
expect(result.matched).toBe(false);
|
|
334
|
+
expect(result.matchCount).toBe(0);
|
|
335
|
+
expect(result.reason).toBeUndefined();
|
|
336
|
+
});
|
|
337
|
+
it('FIRES when the companion is nowhere in the snippet', () => {
|
|
338
|
+
const result = runSmokeGate(fileScoped, BARE_LOG);
|
|
339
|
+
expect(result.matched).toBe(true);
|
|
340
|
+
expect(result.matchCount).toBe(1);
|
|
341
|
+
});
|
|
342
|
+
it('still FIRES on the same snippet at scope: line — the scope distinction is real', () => {
|
|
343
|
+
const lineScoped = makeRequiresRegexRule({ pattern: 'LC_ALL=C', scope: 'line' });
|
|
344
|
+
const result = runSmokeGate(lineScoped, SPLIT_SNIPPET);
|
|
345
|
+
expect(result.matched).toBe(true);
|
|
346
|
+
expect(result.matchCount).toBe(1);
|
|
347
|
+
});
|
|
348
|
+
});
|
|
349
|
+
describe('ast-grep flat pattern, scope: file', () => {
|
|
350
|
+
const rule = makeAstGrepStringRule({
|
|
351
|
+
requires: { pattern: '// debug-ok', scope: 'file' },
|
|
352
|
+
examples: [{ bad: 'debugger;\n', good: '// debug-ok\ndebugger;\n' }],
|
|
353
|
+
});
|
|
354
|
+
it('FIRES on the bad example', () => {
|
|
355
|
+
const result = runSmokeGate(rule, 'debugger;\n');
|
|
356
|
+
expect(result.matched).toBe(true);
|
|
357
|
+
expect(result.matchCount).toBe(1);
|
|
358
|
+
});
|
|
359
|
+
it('stays SILENT on the good example', () => {
|
|
360
|
+
const result = runSmokeGate(rule, '// debug-ok\ndebugger;\n');
|
|
361
|
+
expect(result.matched).toBe(false);
|
|
362
|
+
expect(result.matchCount).toBe(0);
|
|
363
|
+
expect(result.reason).toBeUndefined();
|
|
364
|
+
});
|
|
365
|
+
});
|
|
366
|
+
describe('ast-grep compound (astGrepYamlRule), scope: file', () => {
|
|
367
|
+
const BAD = 'try {\n work();\n} catch (err) {\n}\n';
|
|
368
|
+
const GOOD = '// catch is intentionally empty — see the ticket\n' + BAD;
|
|
369
|
+
const rule = makeCompoundRule({
|
|
370
|
+
requires: { pattern: 'intentionally empty', scope: 'file' },
|
|
371
|
+
// `examples` is non-optional for a `requires:` rule: without it the rule is
|
|
372
|
+
// TORN (a § Design 12 home with no discriminator) and the gate's
|
|
373
|
+
// `assertNoTornRecordRules` precondition refuses it, as the runtime does.
|
|
374
|
+
examples: [{ bad: BAD, good: GOOD }],
|
|
375
|
+
});
|
|
376
|
+
it('FIRES on the bad example', () => {
|
|
377
|
+
const result = runSmokeGate(rule, BAD);
|
|
378
|
+
expect(result.matched).toBe(true);
|
|
379
|
+
expect(result.matchCount).toBe(1);
|
|
380
|
+
});
|
|
381
|
+
it('stays SILENT on the good example', () => {
|
|
382
|
+
const result = runSmokeGate(rule, GOOD);
|
|
383
|
+
expect(result.matched).toBe(false);
|
|
384
|
+
expect(result.matchCount).toBe(0);
|
|
385
|
+
expect(result.reason).toBeUndefined();
|
|
386
|
+
});
|
|
387
|
+
});
|
|
388
|
+
// ── `lastReason` fall-through under the requires filter (bot round 1) ──
|
|
389
|
+
//
|
|
390
|
+
// CodeRabbit asked whether one extension can THROW while another returns
|
|
391
|
+
// matches that the requirement then SUPPRESSES, and noted the PR's evidence
|
|
392
|
+
// did not establish such an input. It does exist, and this is it: the pattern
|
|
393
|
+
// below is MULTI-ROOT under the TypeScript grammar (which has no JSX) and
|
|
394
|
+
// single-root under TSX, so `.ts` throws "Multiple AST nodes are detected"
|
|
395
|
+
// while `.tsx` parses it and matches the JSX snippet.
|
|
396
|
+
//
|
|
397
|
+
// Two constraints shape the construction, and are worth stating so the next
|
|
398
|
+
// reader does not re-derive them:
|
|
399
|
+
// - `requires.scope` must be `file` here — `assertNoAstGrepLineScope`
|
|
400
|
+
// refuses `line` on an ast-grep rule, so a per-locus companion is not
|
|
401
|
+
// expressible;
|
|
402
|
+
// - at `file` scope suppression is a property of the SNIPPET, not of the
|
|
403
|
+
// match, so the companion silences every extension's matches at once. A
|
|
404
|
+
// variant where ext A is suppressed and ext B is not is therefore NOT
|
|
405
|
+
// constructible for ast-grep at all.
|
|
406
|
+
describe('lastReason fall-through under the requires filter (mmnto-ai/totem#2681)', () => {
|
|
407
|
+
const JSX_PATTERN = '<div>{console.log($$$)}</div>';
|
|
408
|
+
const JSX_SNIPPET = 'const el = <div>{console.log("hi")}</div>;\n';
|
|
409
|
+
const COMPANION = '// debug-ok\n';
|
|
410
|
+
/** `.ts` first, `.tsx` second — the throwing grammar is tried first. */
|
|
411
|
+
function jsxRule(overrides = {}) {
|
|
412
|
+
return makeAstGrepStringRule({
|
|
413
|
+
astGrepPattern: JSX_PATTERN,
|
|
414
|
+
fileGlobs: ['**/*.ts', '**/*.tsx'],
|
|
415
|
+
requires: { pattern: '// debug-ok', scope: 'file' },
|
|
416
|
+
examples: [{ bad: JSX_SNIPPET, good: COMPANION + JSX_SNIPPET }],
|
|
417
|
+
...overrides,
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
it('keeps a throwing extension reason when a LATER extension matches but is fully suppressed', () => {
|
|
421
|
+
const result = runSmokeGate(jsxRule(), COMPANION + JSX_SNIPPET);
|
|
422
|
+
expect(result.matched).toBe(false);
|
|
423
|
+
expect(result.matchCount).toBe(0);
|
|
424
|
+
// PINNED as current behaviour, not asserted as ideal: `.tsx` did evaluate,
|
|
425
|
+
// and the requirement WAS satisfied, yet the reason reported is `.ts`'s
|
|
426
|
+
// engine throw. The gate keeps `lastReason` because a pattern that cannot
|
|
427
|
+
// compile under a DECLARED extension is a real defect worth surfacing —
|
|
428
|
+
// the requires filter neither masks it nor replaces it. Callers read the
|
|
429
|
+
// good-example leg off `matched` alone, so this reason only ever appears
|
|
430
|
+
// in the `bad did not fire (...)` line, where it is the useful fact.
|
|
431
|
+
expect(result.reason).toMatch(/ast-grep runtime error/);
|
|
432
|
+
expect(result.reason).toMatch(/Multiple AST nodes/);
|
|
433
|
+
});
|
|
434
|
+
it('FIRES on the same rule and snippet with the companion removed', () => {
|
|
435
|
+
// The falsifier for the test above: without this, that one could pass
|
|
436
|
+
// because EVERY extension threw and nothing was ever suppressed. Here the
|
|
437
|
+
// `.tsx` leg demonstrably matches, so the fall-through above really is the
|
|
438
|
+
// requires filter emptying a non-empty match set.
|
|
439
|
+
const result = runSmokeGate(jsxRule(), JSX_SNIPPET);
|
|
440
|
+
expect(result.matched).toBe(true);
|
|
441
|
+
expect(result.matchCount).toBe(1);
|
|
442
|
+
expect(result.reason).toBeUndefined();
|
|
443
|
+
});
|
|
444
|
+
it('keeps the reason when EVERY extension throws and `requires` is present', () => {
|
|
445
|
+
// The degenerate arm: a bare `catch` clause is multi-root under every
|
|
446
|
+
// grammar in the set, so no extension ever produces a match to filter.
|
|
447
|
+
const rule = jsxRule({ astGrepPattern: 'catch ($E) { $$$ }' });
|
|
448
|
+
const result = runSmokeGate(rule, COMPANION + 'try { work() } catch (err) {}\n');
|
|
449
|
+
expect(result.matched).toBe(false);
|
|
450
|
+
expect(result.matchCount).toBe(0);
|
|
451
|
+
expect(result.reason).toMatch(/ast-grep runtime error/);
|
|
452
|
+
});
|
|
453
|
+
});
|
|
454
|
+
describe('the evaluator’s PRECONDITIONS are enforced, never propagated', () => {
|
|
455
|
+
// Each of these is refused by a runtime dispatcher before any
|
|
456
|
+
// `requiresSuppressesMatch` runs. A gate that skipped them would ACCEPT a
|
|
457
|
+
// rule the runtime rejects — the exact divergence this module rules out.
|
|
458
|
+
// All are unreachable from a compiled record (the lowering gates them) and
|
|
459
|
+
// reachable from a hand-built `CompiledRule` or a hand-edited manifest.
|
|
460
|
+
it('assertRequiresPatternsSafe refuses an UNCOMPILABLE pattern (regex engine)', () => {
|
|
461
|
+
// `validateRegex` COMPILES before it runs safe-regex2, so an uncompilable
|
|
462
|
+
// pattern is a precondition failure — reported as `invalid syntax` — and
|
|
463
|
+
// never reaches `requiresContextPresent`'s own throw.
|
|
464
|
+
const rule = makeRequiresRegexRule({ pattern: '(', scope: 'line' });
|
|
465
|
+
const result = runSmokeGate(rule, BARE_LOG);
|
|
466
|
+
expect(result.matched).toBe(false);
|
|
467
|
+
expect(result.matchCount).toBe(0);
|
|
468
|
+
expect(result.reason).toMatch(/requires\.pattern/);
|
|
469
|
+
expect(result.reason).toMatch(/invalid syntax/);
|
|
470
|
+
});
|
|
471
|
+
it('assertRequiresPatternsSafe refuses it on the ast-grep engine too — one handler, both engines', () => {
|
|
472
|
+
const rule = makeAstGrepStringRule({
|
|
473
|
+
requires: { pattern: '(', scope: 'file' },
|
|
474
|
+
examples: [{ bad: 'debugger;\n', good: 'const x = 1;\n' }],
|
|
475
|
+
});
|
|
476
|
+
const result = runSmokeGate(rule, 'debugger;\n');
|
|
477
|
+
expect(result.matched).toBe(false);
|
|
478
|
+
expect(result.matchCount).toBe(0);
|
|
479
|
+
expect(result.reason).toMatch(/requires\.pattern/);
|
|
480
|
+
expect(result.reason).toMatch(/invalid syntax/);
|
|
481
|
+
// NOT mislabelled as an engine throw: the requirement is not ast-grep's.
|
|
482
|
+
expect(result.reason).not.toMatch(/ast-grep runtime error/);
|
|
483
|
+
});
|
|
484
|
+
it('assertRequiresPatternsSafe refuses an UNSAFE-but-compilable pattern instead of backtracking on it', () => {
|
|
485
|
+
// `(a+)+$` compiles fine and is a catastrophic backtracker. Measured before
|
|
486
|
+
// the precondition landed: 86 SECONDS inside `runSmokeGate` on this input,
|
|
487
|
+
// reachable straight from `totem rule test` (`loadRulesOrExit` runs no
|
|
488
|
+
// safe-regex2 pass of its own). This is the safe-regex2 arm of the same
|
|
489
|
+
// check, so the reason names ReDoS rather than a syntax defect.
|
|
490
|
+
const rule = makeRegexRule({
|
|
491
|
+
requires: { pattern: '(a+)+$', scope: 'line' },
|
|
492
|
+
examples: [{ bad: 'console.log(1)', good: 'logger.info(1)' }],
|
|
493
|
+
});
|
|
494
|
+
const snippet = 'console.log(1) ' + 'a'.repeat(34) + '!';
|
|
495
|
+
const startedAt = Date.now();
|
|
496
|
+
const result = runSmokeGate(rule, snippet);
|
|
497
|
+
const elapsedMs = Date.now() - startedAt;
|
|
498
|
+
expect(result.matched).toBe(false);
|
|
499
|
+
expect(result.matchCount).toBe(0);
|
|
500
|
+
expect(result.reason).toMatch(/requires\.pattern/);
|
|
501
|
+
expect(result.reason).toMatch(/ReDoS/);
|
|
502
|
+
// A gate that evaluated this pattern would still be running.
|
|
503
|
+
expect(elapsedMs).toBeLessThan(2000);
|
|
504
|
+
});
|
|
505
|
+
it('assertNoAstGrepLineScope refuses ast-grep + requires.scope: line, as the ast dispatcher does', () => {
|
|
506
|
+
// An ast-grep match is a SPAN; reading it as its start line makes the
|
|
507
|
+
// verdict depend on how the author wrapped their source. The lowering
|
|
508
|
+
// rejects the combination and `assertNoAstGrepLineScope` backstops it at
|
|
509
|
+
// the ast dispatcher — pre-cure this rule PASSED the gate.
|
|
510
|
+
const rule = makeAstGrepStringRule({
|
|
511
|
+
requires: { pattern: '// debug-ok', scope: 'line' },
|
|
512
|
+
examples: [{ bad: 'debugger;\n', good: 'debugger; // debug-ok\n' }],
|
|
513
|
+
});
|
|
514
|
+
const result = runSmokeGate(rule, 'debugger;\n');
|
|
515
|
+
expect(result.matched).toBe(false);
|
|
516
|
+
expect(result.matchCount).toBe(0);
|
|
517
|
+
expect(result.reason).toMatch(/requires\.scope: line/);
|
|
518
|
+
});
|
|
519
|
+
it('assertNoTornRecordRules refuses a TORN rule — `requires` present, `examples` absent', () => {
|
|
520
|
+
// `isRecordPathRule` keys on `examples`, so this rule would read as LEGACY
|
|
521
|
+
// and have its requirement silently unevaluated. § Design 12 bans the
|
|
522
|
+
// silence, not just the unsafe direction.
|
|
523
|
+
const torn = makeRegexRule({ requires: { pattern: 'LC_ALL=C', scope: 'line' } });
|
|
524
|
+
expect(torn.examples).toBeUndefined();
|
|
525
|
+
const result = runSmokeGate(torn, 'console.log(1)');
|
|
526
|
+
expect(result.matched).toBe(false);
|
|
527
|
+
expect(result.matchCount).toBe(0);
|
|
528
|
+
expect(result.reason).toMatch(/examples/);
|
|
529
|
+
});
|
|
530
|
+
it('assertNoTornRecordRules refuses a torn rule carrying NO `requires` — `excludeGlobs` alone', () => {
|
|
531
|
+
// Tornness is not a property of `requires`: the assert fires on ANY of the
|
|
532
|
+
// seven `RECORD_COMPILED_HOME_KEYS` without `examples`, because such a rule
|
|
533
|
+
// is UNCLASSIFIABLE, not because an evaluator needs protecting. With the
|
|
534
|
+
// torn check scoped to `requires` this rule reported `{matched: true}` from
|
|
535
|
+
// the gate while `applyRulesToAdditions` threw on it.
|
|
536
|
+
const torn = makeRegexRule({ fileGlobs: ['**/*.ts'], excludeGlobs: ['**/*.spec.ts'] });
|
|
537
|
+
expect(torn.requires).toBeUndefined();
|
|
538
|
+
expect(torn.examples).toBeUndefined();
|
|
539
|
+
const result = runSmokeGate(torn, 'console.log(1)');
|
|
540
|
+
expect(result.matched).toBe(false);
|
|
541
|
+
expect(result.matchCount).toBe(0);
|
|
542
|
+
expect(result.reason).toMatch(/examples/);
|
|
543
|
+
});
|
|
544
|
+
});
|
|
545
|
+
it('leaves a LEGACY rule untouched — the companion text is not magic', () => {
|
|
546
|
+
// No `requires` block ⇒ pass two never runs, so a snippet carrying the
|
|
547
|
+
// would-be companion still fires exactly as it did before #2678.
|
|
548
|
+
const legacy = makeRegexRule({ pattern: GIT_TARGET });
|
|
549
|
+
expect(legacy.requires).toBeUndefined();
|
|
550
|
+
const result = runSmokeGate(legacy, PINNED_LOG);
|
|
551
|
+
expect(result.matched).toBe(true);
|
|
552
|
+
expect(result.matchCount).toBe(1);
|
|
553
|
+
});
|
|
554
|
+
it('passes § Design 8’s exemplar END-TO-END through the real lowering', () => {
|
|
555
|
+
// The whole point of the ticket: parse → lower → gate, with no hand-built
|
|
556
|
+
// rule anywhere, so the gate is proved against the shape the record path
|
|
557
|
+
// actually emits.
|
|
558
|
+
const parsed = parseRuleRecord(yamlStringify(design8ExemplarRecord()), '.totem/rules/lc-all-c.rule.yaml');
|
|
559
|
+
const outcome = compileRuleRecord(parsed, {
|
|
560
|
+
ruleId: '0123456789abcdef',
|
|
561
|
+
now: '2026-08-24T00:00:00.000Z',
|
|
562
|
+
});
|
|
563
|
+
if (outcome.kind !== 'compiled') {
|
|
564
|
+
throw new Error(`expected the § Design 8 exemplar to lower, got: ${outcome.reason}`);
|
|
565
|
+
}
|
|
566
|
+
const compiled = outcome.rule;
|
|
567
|
+
expect(compiled.requires).toEqual({ pattern: 'LC_ALL=C', scope: 'line' });
|
|
568
|
+
const pair = compiled.examples?.[0];
|
|
569
|
+
expect(pair).toBeDefined();
|
|
570
|
+
const bad = runSmokeGate(compiled, pair.bad);
|
|
571
|
+
const good = runSmokeGate(compiled, pair.good);
|
|
572
|
+
expect(bad.matched).toBe(true);
|
|
573
|
+
expect(good.matched).toBe(false);
|
|
574
|
+
expect(good.reason).toBeUndefined();
|
|
575
|
+
});
|
|
576
|
+
});
|
|
266
577
|
// ─── runtime-parity invariant ────────────────────────
|
|
267
578
|
describe('runSmokeGate runtime parity invariant', () => {
|
|
268
579
|
it('uses the same engine entry points as the runtime — gate-pass implies runtime-match', () => {
|
|
@@ -279,5 +590,125 @@ describe('runSmokeGate runtime parity invariant', () => {
|
|
|
279
590
|
const matches = matchAstGrepPattern(snippet, '.ts', 'debugger', snippet.split('\n').map((_, i) => i + 1));
|
|
280
591
|
expect(matches.length).toBeGreaterThanOrEqual(1);
|
|
281
592
|
});
|
|
593
|
+
// ── § Design 8 parity, driven through the REAL dispatchers ──
|
|
594
|
+
//
|
|
595
|
+
// The parity claim for `requires:` (mmnto-ai/totem#2678) is that the gate's
|
|
596
|
+
// verdict equals `totem lint`'s. Recomputing the predicate in the test body
|
|
597
|
+
// with `requiresSuppressesMatch` could not establish that: it re-implemented
|
|
598
|
+
// `runRegexGate` and agreed with the gate whether or not the gate agreed with
|
|
599
|
+
// the dispatcher — it passed green while the gate was accepting rules the
|
|
600
|
+
// dispatchers refuse. So these drive all THREE shipped dispatchers themselves
|
|
601
|
+
// and compare COUNTS: `applyRulesToAdditions` (the sync regex one),
|
|
602
|
+
// `applyRulesToAdditionsBounded` (the regex one `totem lint` actually runs —
|
|
603
|
+
// `run-compiled-rules.ts:668` — and a structurally different § Design 8 path,
|
|
604
|
+
// eagerly awaiting whole-file text at `scope: file` rather than resolving it
|
|
605
|
+
// lazily), and `applyAstRulesToAdditions`.
|
|
606
|
+
//
|
|
607
|
+
// All three take an injected reader, so no snippet is ever written to disk:
|
|
608
|
+
// the `scope: file` resolver sees exactly the bytes the gate saw.
|
|
609
|
+
/** One `DiffAddition` per snippet line, as a diff of a wholly-new file produces. */
|
|
610
|
+
function additionsFor(snippet, file) {
|
|
611
|
+
const lines = snippet.split('\n');
|
|
612
|
+
return lines.map((line, i) => ({
|
|
613
|
+
file,
|
|
614
|
+
line,
|
|
615
|
+
lineNumber: i + 1,
|
|
616
|
+
precedingLine: i === 0 ? null : lines[i - 1],
|
|
617
|
+
}));
|
|
618
|
+
}
|
|
619
|
+
function engineCtx() {
|
|
620
|
+
return { logger: { warn: () => { } }, state: { hasWarnedShieldContext: false } };
|
|
621
|
+
}
|
|
622
|
+
const SH_FILE = 'tools/lint.sh';
|
|
623
|
+
const MIXED = `${BARE_LOG}\n${PINNED_DIFF}`;
|
|
624
|
+
// `expected` is PINNED, not derived from either side: an agreement of two
|
|
625
|
+
// zeroes would otherwise satisfy the equality without exercising anything.
|
|
626
|
+
// The two scopes disagree on MIXED — at `line` the bare locus still fires,
|
|
627
|
+
// at `file` the companion anywhere in the snippet silences both — so this
|
|
628
|
+
// also pins that the scope distinction survives each dispatcher.
|
|
629
|
+
const REGEX_CASES = [
|
|
630
|
+
{ name: 'bad — target only', snippet: BARE_LOG, line: 1, file: 1 },
|
|
631
|
+
{ name: 'good — companion on the SAME line', snippet: PINNED_LOG, line: 0, file: 0 },
|
|
632
|
+
{ name: 'mixed — one bare locus, one companioned', snippet: MIXED, line: 1, file: 0 },
|
|
633
|
+
];
|
|
634
|
+
/** The § Design 8 exemplar as a record-path rule scoped to the shell fixture. */
|
|
635
|
+
function parityRegexRule(scope) {
|
|
636
|
+
return makeRegexRule({
|
|
637
|
+
lessonHeading: 'git output-consuming commands must pin LC_ALL=C',
|
|
638
|
+
pattern: GIT_TARGET,
|
|
639
|
+
requires: { pattern: 'LC_ALL=C', scope },
|
|
640
|
+
fileGlobs: ['**/*.sh'],
|
|
641
|
+
examples: [{ bad: BARE_LOG, good: PINNED_LOG }],
|
|
642
|
+
});
|
|
643
|
+
}
|
|
644
|
+
it('gate matchCount equals the SYNC REGEX dispatcher’s violation count, at both scopes', () => {
|
|
645
|
+
for (const scope of ['line', 'file']) {
|
|
646
|
+
const rule = parityRegexRule(scope);
|
|
647
|
+
for (const c of REGEX_CASES) {
|
|
648
|
+
const where = `${scope} / ${c.name}`;
|
|
649
|
+
const expected = c[scope];
|
|
650
|
+
const gate = runSmokeGate(rule, c.snippet);
|
|
651
|
+
const violations = applyRulesToAdditions(engineCtx(), [rule], additionsFor(c.snippet, SH_FILE), undefined, process.cwd(),
|
|
652
|
+
// The § Design 8 `scope: file` resolver, fed the snippet instead of a
|
|
653
|
+
// disk read — the same seam `totem lint --staged` uses for the index.
|
|
654
|
+
() => c.snippet);
|
|
655
|
+
expect(gate.matchCount, where).toBe(expected);
|
|
656
|
+
expect(violations.length, where).toBe(expected);
|
|
657
|
+
expect(gate.matched, where).toBe(violations.length > 0);
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
});
|
|
661
|
+
it('gate matchCount equals the BOUNDED regex dispatcher’s violation count, at both scopes', async () => {
|
|
662
|
+
// The leg that matters most: `applyRulesToAdditionsBounded` is the dispatcher
|
|
663
|
+
// `totem lint` runs regex rules through (`rule-engine.ts:576-578`,
|
|
664
|
+
// `run-compiled-rules.ts:668`), and it reaches § Design 8 by a structurally
|
|
665
|
+
// different route — an EAGER `await getFileText(file)` at `scope: file`,
|
|
666
|
+
// where the sync dispatcher and the gate both resolve the text lazily. Parity
|
|
667
|
+
// measured only on the sync path would leave the shipping path unmeasured.
|
|
668
|
+
const evaluator = new RegexEvaluator();
|
|
669
|
+
try {
|
|
670
|
+
for (const scope of ['line', 'file']) {
|
|
671
|
+
const rule = parityRegexRule(scope);
|
|
672
|
+
for (const c of REGEX_CASES) {
|
|
673
|
+
const where = `bounded / ${scope} / ${c.name}`;
|
|
674
|
+
const expected = c[scope];
|
|
675
|
+
const gate = runSmokeGate(rule, c.snippet);
|
|
676
|
+
const { violations } = await applyRulesToAdditionsBounded(engineCtx(), [rule], additionsFor(c.snippet, SH_FILE), {
|
|
677
|
+
evaluator,
|
|
678
|
+
timeoutMode: 'strict',
|
|
679
|
+
repoRoot: process.cwd(),
|
|
680
|
+
// Same seam as the other two legs — staged mode's
|
|
681
|
+
// `git show :<file>` reader threads in here.
|
|
682
|
+
readStrategy: () => Promise.resolve(c.snippet),
|
|
683
|
+
});
|
|
684
|
+
expect(gate.matchCount, where).toBe(expected);
|
|
685
|
+
expect(violations.length, where).toBe(expected);
|
|
686
|
+
expect(gate.matched, where).toBe(violations.length > 0);
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
finally {
|
|
691
|
+
await evaluator.dispose();
|
|
692
|
+
}
|
|
693
|
+
});
|
|
694
|
+
it('gate matchCount equals the AST-GREP dispatcher’s violation count', async () => {
|
|
695
|
+
const TS_FILE = 'src/fixture.ts';
|
|
696
|
+
const rule = makeAstGrepStringRule({
|
|
697
|
+
requires: { pattern: '// debug-ok', scope: 'file' },
|
|
698
|
+
fileGlobs: ['**/*.ts'],
|
|
699
|
+
examples: [{ bad: 'debugger;\n', good: '// debug-ok\ndebugger;\n' }],
|
|
700
|
+
});
|
|
701
|
+
const cases = [
|
|
702
|
+
{ snippet: 'debugger;\n', expected: 1 },
|
|
703
|
+
{ snippet: '// debug-ok\ndebugger;\n', expected: 0 },
|
|
704
|
+
];
|
|
705
|
+
for (const { snippet, expected } of cases) {
|
|
706
|
+
const gate = runSmokeGate(rule, snippet);
|
|
707
|
+
const violations = await applyAstRulesToAdditions(engineCtx(), [rule], additionsFor(snippet, TS_FILE), process.cwd(), undefined, undefined, () => Promise.resolve(snippet));
|
|
708
|
+
expect(gate.matchCount, snippet).toBe(expected);
|
|
709
|
+
expect(violations.length, snippet).toBe(expected);
|
|
710
|
+
expect(gate.matched, snippet).toBe(violations.length > 0);
|
|
711
|
+
}
|
|
712
|
+
});
|
|
282
713
|
});
|
|
283
714
|
//# sourceMappingURL=compile-smoke-gate.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-smoke-gate.test.js","sourceRoot":"","sources":["../src/compile-smoke-gate.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compile-smoke-gate.test.js","sourceRoot":"","sources":["../src/compile-smoke-gate.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,7 +64,7 @@ export declare const RecurrencePatternSchema: z.ZodObject<{
|
|
|
64
64
|
}, "strip", z.ZodTypeAny, {
|
|
65
65
|
paths: string[];
|
|
66
66
|
signature: string;
|
|
67
|
-
tool: "unknown" | "override" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif"
|
|
67
|
+
tool: "unknown" | "override" | "mixed" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif";
|
|
68
68
|
severityBucket: "high" | "critical" | "medium" | "low" | "nit";
|
|
69
69
|
occurrences: number;
|
|
70
70
|
prs: string[];
|
|
@@ -75,7 +75,7 @@ export declare const RecurrencePatternSchema: z.ZodObject<{
|
|
|
75
75
|
}, {
|
|
76
76
|
paths: string[];
|
|
77
77
|
signature: string;
|
|
78
|
-
tool: "unknown" | "override" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif"
|
|
78
|
+
tool: "unknown" | "override" | "mixed" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif";
|
|
79
79
|
severityBucket: "high" | "critical" | "medium" | "low" | "nit";
|
|
80
80
|
occurrences: number;
|
|
81
81
|
prs: string[];
|
|
@@ -122,7 +122,7 @@ export declare const RecurrenceStatsSchema: z.ZodObject<{
|
|
|
122
122
|
}, "strip", z.ZodTypeAny, {
|
|
123
123
|
paths: string[];
|
|
124
124
|
signature: string;
|
|
125
|
-
tool: "unknown" | "override" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif"
|
|
125
|
+
tool: "unknown" | "override" | "mixed" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif";
|
|
126
126
|
severityBucket: "high" | "critical" | "medium" | "low" | "nit";
|
|
127
127
|
occurrences: number;
|
|
128
128
|
prs: string[];
|
|
@@ -133,7 +133,7 @@ export declare const RecurrenceStatsSchema: z.ZodObject<{
|
|
|
133
133
|
}, {
|
|
134
134
|
paths: string[];
|
|
135
135
|
signature: string;
|
|
136
|
-
tool: "unknown" | "override" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif"
|
|
136
|
+
tool: "unknown" | "override" | "mixed" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif";
|
|
137
137
|
severityBucket: "high" | "critical" | "medium" | "low" | "nit";
|
|
138
138
|
occurrences: number;
|
|
139
139
|
prs: string[];
|
|
@@ -167,7 +167,7 @@ export declare const RecurrenceStatsSchema: z.ZodObject<{
|
|
|
167
167
|
}, "strip", z.ZodTypeAny, {
|
|
168
168
|
paths: string[];
|
|
169
169
|
signature: string;
|
|
170
|
-
tool: "unknown" | "override" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif"
|
|
170
|
+
tool: "unknown" | "override" | "mixed" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif";
|
|
171
171
|
severityBucket: "high" | "critical" | "medium" | "low" | "nit";
|
|
172
172
|
occurrences: number;
|
|
173
173
|
prs: string[];
|
|
@@ -178,7 +178,7 @@ export declare const RecurrenceStatsSchema: z.ZodObject<{
|
|
|
178
178
|
}, {
|
|
179
179
|
paths: string[];
|
|
180
180
|
signature: string;
|
|
181
|
-
tool: "unknown" | "override" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif"
|
|
181
|
+
tool: "unknown" | "override" | "mixed" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif";
|
|
182
182
|
severityBucket: "high" | "critical" | "medium" | "low" | "nit";
|
|
183
183
|
occurrences: number;
|
|
184
184
|
prs: string[];
|
|
@@ -192,7 +192,7 @@ export declare const RecurrenceStatsSchema: z.ZodObject<{
|
|
|
192
192
|
patterns: {
|
|
193
193
|
paths: string[];
|
|
194
194
|
signature: string;
|
|
195
|
-
tool: "unknown" | "override" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif"
|
|
195
|
+
tool: "unknown" | "override" | "mixed" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif";
|
|
196
196
|
severityBucket: "high" | "critical" | "medium" | "low" | "nit";
|
|
197
197
|
occurrences: number;
|
|
198
198
|
prs: string[];
|
|
@@ -208,7 +208,7 @@ export declare const RecurrenceStatsSchema: z.ZodObject<{
|
|
|
208
208
|
coveredPatterns: {
|
|
209
209
|
paths: string[];
|
|
210
210
|
signature: string;
|
|
211
|
-
tool: "unknown" | "override" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif"
|
|
211
|
+
tool: "unknown" | "override" | "mixed" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif";
|
|
212
212
|
severityBucket: "high" | "critical" | "medium" | "low" | "nit";
|
|
213
213
|
occurrences: number;
|
|
214
214
|
prs: string[];
|
|
@@ -222,7 +222,7 @@ export declare const RecurrenceStatsSchema: z.ZodObject<{
|
|
|
222
222
|
patterns: {
|
|
223
223
|
paths: string[];
|
|
224
224
|
signature: string;
|
|
225
|
-
tool: "unknown" | "override" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif"
|
|
225
|
+
tool: "unknown" | "override" | "mixed" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif";
|
|
226
226
|
severityBucket: "high" | "critical" | "medium" | "low" | "nit";
|
|
227
227
|
occurrences: number;
|
|
228
228
|
prs: string[];
|
|
@@ -238,7 +238,7 @@ export declare const RecurrenceStatsSchema: z.ZodObject<{
|
|
|
238
238
|
coveredPatterns: {
|
|
239
239
|
paths: string[];
|
|
240
240
|
signature: string;
|
|
241
|
-
tool: "unknown" | "override" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif"
|
|
241
|
+
tool: "unknown" | "override" | "mixed" | "coderabbit" | "gca" | "greptile" | "ghcq" | "sarif";
|
|
242
242
|
severityBucket: "high" | "critical" | "medium" | "low" | "nit";
|
|
243
243
|
occurrences: number;
|
|
244
244
|
prs: string[];
|