@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.
@@ -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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,uDAAuD;AAEvD,SAAS,aAAa,CAAC,YAAmC,EAAE;IAC1D,OAAO;QACL,UAAU,EAAE,cAAc;QAC1B,aAAa,EAAE,gBAAgB;QAC/B,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,wBAAwB;QACjC,MAAM,EAAE,OAAO;QACf,UAAU,EAAE,sBAAsB;QAClC,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAmC,EAAE;IAClE,OAAO;QACL,UAAU,EAAE,cAAc;QAC1B,aAAa,EAAE,aAAa;QAC5B,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,mCAAmC;QAC5C,MAAM,EAAE,UAAU;QAClB,cAAc,EAAE,UAAU;QAC1B,UAAU,EAAE,sBAAsB;QAClC,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,YAAmC,EAAE;IAC7D,OAAO;QACL,UAAU,EAAE,cAAc;QAC1B,aAAa,EAAE,aAAa;QAC5B,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,6BAA6B;QACtC,MAAM,EAAE,UAAU;QAClB,eAAe,EAAE;YACf,IAAI,EAAE;gBACJ,IAAI,EAAE,cAAc;gBACpB,GAAG,EAAE;oBACH,GAAG,EAAE;wBACH,IAAI,EAAE,iBAAiB;wBACvB,GAAG,EAAE;4BACH,GAAG,EAAE;gCACH,EAAE,IAAI,EAAE,sBAAsB,EAAE;gCAChC,EAAE,IAAI,EAAE,sBAAsB,EAAE;gCAChC,EAAE,IAAI,EAAE,cAAc,EAAE;gCACxB,EAAE,IAAI,EAAE,kBAAkB,EAAE;gCAC5B,EAAE,IAAI,EAAE,iBAAiB,EAAE;6BAC5B;4BACD,MAAM,EAAE,KAAK;yBACd;qBACF;iBACF;aACF;SACF;QACD,UAAU,EAAE,sBAAsB;QAClC,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,wDAAwD;AAExD,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,wDAAwD;AAExD,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,mEAAmE;QACnE,6DAA6D;QAC7D,MAAM,IAAI,GAAG,qBAAqB,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAChF,qDAAqD;QACrD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAC;QACtE,iEAAiE;QACjE,yDAAyD;QACzD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,iBAAiB;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,wDAAwD;AAExD,QAAQ,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAClE,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,wCAAwC,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,qDAAqD,CAAC,CAAC;QACzF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,IAAI,GAAG,gBAAgB,CAAC;YAC5B,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE;SAC1D,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,wDAAwD;AAExD,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;IAC3D,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,IAAI,GAAG,qBAAqB,CAAC;YACjC,cAAc,EAAE,kBAAkB;SACnC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,gDAAgD,CAAC;QACpE,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,IAAI,GAAG,qBAAqB,CAAC;YACjC,SAAS,EAAE,CAAC,SAAS,CAAC;YACtB,cAAc,EAAE,UAAU;SAC3B,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,aAAa,CAAC;QAChC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,oEAAoE;IACpE,uEAAuE;IACvE,mEAAmE;IACnE,mDAAmD;IACnD,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,IAAI,GAAG,qBAAqB,CAAC;YACjC,SAAS,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;YAClC,cAAc,EAAE,kBAAkB;SACnC,CAAC,CAAC;QACH,uEAAuE;QACvE,gEAAgE;QAChE,MAAM,UAAU,GAAG,8CAA8C,CAAC;QAClE,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,oEAAoE;IACpE,wEAAwE;IACxE,sEAAsE;IACtE,wEAAwE;IACxE,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,IAAI,GAAG,qBAAqB,CAAC;YACjC,SAAS,EAAE,SAAS,EAAE,WAAW;YACjC,cAAc,EAAE,cAAc;SAC/B,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,uBAAuB,CAAC;QAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,wDAAwD;IAExD,uEAAuE;IACvE,uEAAuE;IACvE,wEAAwE;IACxE,uEAAuE;IACvE,8CAA8C;IAC9C,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,oEAAoE;QACpE,+DAA+D;QAC/D,oEAAoE;QACpE,mEAAmE;QACnE,mEAAmE;QACnE,gEAAgE;QAChE,2EAA2E;QAC3E,MAAM,IAAI,GAAG,qBAAqB,CAAC;YACjC,SAAS,EAAE,CAAC,kCAAkC,CAAC;YAC/C,cAAc,EAAE,YAAY;SAC7B,CAAC,CAAC;QACH,kEAAkE;QAClE,kEAAkE;QAClE,iEAAiE;QACjE,+DAA+D;QAC/D,sCAAsC;QACtC,MAAM,WAAW,GAAG,8CAA8C,CAAC;QACnE,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,+DAA+D;QAC/D,+DAA+D;QAC/D,qDAAqD;QACrD,MAAM,IAAI,GAAG,qBAAqB,CAAC;YACjC,SAAS,EAAE,CAAC,iBAAiB,CAAC;YAC9B,cAAc,EAAE,kBAAkB;SACnC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,sBAAsB,CAAC;QACzC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,wDAAwD;AAExD,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,yFAAyF,EAAE,GAAG,EAAE;QACjG,kEAAkE;QAClE,oEAAoE;QACpE,2DAA2D;QAC3D,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,wDAAwD,CAAC;QAC5E,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,gCAAgC,CAAC;QACrD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,2BAA2B,CAAC;QAC/C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,gBAAgB,CAAC;QACrC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,mEAAmE;QACnE,uEAAuE;QACvE,mEAAmE;QACnE,2CAA2C;QAC3C,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,wDAAwD;AAExD,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC5F,uEAAuE;QACvE,oEAAoE;QACpE,mEAAmE;QACnE,8DAA8D;QAC9D,6DAA6D;QAC7D,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,2BAA2B,CAAC;QAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,8DAA8D;QAC9D,MAAM,OAAO,GAAG,mBAAmB,CACjC,OAAO,EACP,KAAK,EACL,UAAU,EACV,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CACzC,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
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" | "mixed";
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" | "mixed";
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" | "mixed";
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" | "mixed";
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" | "mixed";
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" | "mixed";
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" | "mixed";
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" | "mixed";
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" | "mixed";
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" | "mixed";
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[];