@mmnto/totem 1.118.1 → 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/artifacts/admission.d.ts +12 -12
- package/dist/artifacts/verdict.d.ts +16 -16
- package/dist/compile-manifest.d.ts +89 -0
- package/dist/compile-manifest.d.ts.map +1 -1
- package/dist/compile-manifest.js +180 -31
- package/dist/compile-manifest.js.map +1 -1
- package/dist/compile-manifest.test.js +169 -1
- package/dist/compile-manifest.test.js.map +1 -1
- 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/compiler-schema.d.ts +1067 -0
- package/dist/compiler-schema.d.ts.map +1 -1
- package/dist/compiler-schema.js +204 -1
- package/dist/compiler-schema.js.map +1 -1
- package/dist/compiler-schema.test.js +92 -0
- package/dist/compiler-schema.test.js.map +1 -1
- package/dist/compiler.d.ts +2 -6
- package/dist/compiler.d.ts.map +1 -1
- package/dist/compiler.js +6 -17
- package/dist/compiler.js.map +1 -1
- package/dist/freeze.d.ts +3 -3
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/ledger.d.ts +12 -12
- package/dist/recurrence-stats.d.ts +10 -10
- package/dist/regex-safety/apply-rules-bounded.d.ts +11 -0
- package/dist/regex-safety/apply-rules-bounded.d.ts.map +1 -1
- package/dist/regex-safety/apply-rules-bounded.js +59 -5
- package/dist/regex-safety/apply-rules-bounded.js.map +1 -1
- package/dist/regex-validation.d.ts +7 -0
- package/dist/regex-validation.d.ts.map +1 -0
- package/dist/regex-validation.js +32 -0
- package/dist/regex-validation.js.map +1 -0
- package/dist/rule-engine.d.ts +11 -1
- package/dist/rule-engine.d.ts.map +1 -1
- package/dist/rule-engine.js +125 -18
- package/dist/rule-engine.js.map +1 -1
- package/dist/spine/authored-rule.d.ts +687 -263
- package/dist/spine/authored-rule.d.ts.map +1 -1
- package/dist/spine/authored-rule.js +113 -27
- package/dist/spine/authored-rule.js.map +1 -1
- package/dist/spine/authored-rule.test.js +170 -4
- package/dist/spine/authored-rule.test.js.map +1 -1
- package/dist/spine/authoring-ledger.d.ts +83 -24
- package/dist/spine/authoring-ledger.d.ts.map +1 -1
- package/dist/spine/authoring-ledger.js +46 -25
- package/dist/spine/authoring-ledger.js.map +1 -1
- package/dist/spine/authoring-ledger.test.js +20 -7
- package/dist/spine/authoring-ledger.test.js.map +1 -1
- package/dist/spine/candidate-rule.d.ts +18 -1
- package/dist/spine/candidate-rule.d.ts.map +1 -1
- package/dist/spine/candidate-rule.js.map +1 -1
- package/dist/spine/cert-corpus-seed.d.ts +14 -14
- package/dist/spine/compile.d.ts +4 -1
- package/dist/spine/compile.d.ts.map +1 -1
- package/dist/spine/compile.js +50 -3
- package/dist/spine/compile.js.map +1 -1
- package/dist/spine/compile.test.js +189 -23
- package/dist/spine/compile.test.js.map +1 -1
- package/dist/spine/frozen-split.d.ts +18 -18
- package/dist/spine/ledgers.d.ts +62 -62
- package/dist/spine/lf-normalize.d.ts +9 -0
- package/dist/spine/lf-normalize.d.ts.map +1 -0
- package/dist/spine/lf-normalize.js +38 -0
- package/dist/spine/lf-normalize.js.map +1 -0
- package/dist/spine/preimage-differential.d.ts +3 -1
- package/dist/spine/preimage-differential.d.ts.map +1 -1
- package/dist/spine/preimage-differential.js +9 -6
- package/dist/spine/preimage-differential.js.map +1 -1
- package/dist/spine/preimage-differential.test.js +59 -0
- package/dist/spine/preimage-differential.test.js.map +1 -1
- package/dist/spine/record-exemplars.fixture.d.ts +5 -0
- package/dist/spine/record-exemplars.fixture.d.ts.map +1 -0
- package/dist/spine/record-exemplars.fixture.js +61 -0
- package/dist/spine/record-exemplars.fixture.js.map +1 -0
- package/dist/spine/record-lower.d.ts +90 -0
- package/dist/spine/record-lower.d.ts.map +1 -0
- package/dist/spine/record-lower.js +418 -0
- package/dist/spine/record-lower.js.map +1 -0
- package/dist/spine/record-lower.test.d.ts +2 -0
- package/dist/spine/record-lower.test.d.ts.map +1 -0
- package/dist/spine/record-lower.test.js +562 -0
- package/dist/spine/record-lower.test.js.map +1 -0
- package/dist/spine/record-runtime.d.ts +215 -0
- package/dist/spine/record-runtime.d.ts.map +1 -0
- package/dist/spine/record-runtime.js +330 -0
- package/dist/spine/record-runtime.js.map +1 -0
- package/dist/spine/record-runtime.test.d.ts +2 -0
- package/dist/spine/record-runtime.test.d.ts.map +1 -0
- package/dist/spine/record-runtime.test.js +814 -0
- package/dist/spine/record-runtime.test.js.map +1 -0
- package/dist/spine/rule-record.d.ts +864 -0
- package/dist/spine/rule-record.d.ts.map +1 -0
- package/dist/spine/rule-record.js +781 -0
- package/dist/spine/rule-record.js.map +1 -0
- package/dist/spine/rule-record.test.d.ts +2 -0
- package/dist/spine/rule-record.test.d.ts.map +1 -0
- package/dist/spine/rule-record.test.js +1262 -0
- package/dist/spine/rule-record.test.js.map +1 -0
- package/dist/spine/windtunnel-firing.d.ts.map +1 -1
- package/dist/spine/windtunnel-firing.js +28 -1
- package/dist/spine/windtunnel-firing.js.map +1 -1
- package/dist/spine/windtunnel-lock.d.ts +26 -26
- package/dist/stage4-verifier.d.ts.map +1 -1
- package/dist/stage4-verifier.js +61 -17
- package/dist/stage4-verifier.js.map +1 -1
- package/dist/sys/glob.d.ts +30 -0
- package/dist/sys/glob.d.ts.map +1 -1
- package/dist/sys/glob.js +62 -1
- package/dist/sys/glob.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import * as fs from 'node:fs';
|
|
|
3
3
|
import * as os from 'node:os';
|
|
4
4
|
import * as path from 'node:path';
|
|
5
5
|
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
6
|
-
import { canonicalizeKeys, canonicalStringify, generateInputHash, generateOutputHash, readCompileManifest, writeCompileManifest, } from './compile-manifest.js';
|
|
6
|
+
import { attestRecordsHash, canonicalizeKeys, canonicalStringify, EMPTY_RECORDS_HASH, generateInputHash, generateOutputHash, generateRecordsHash, isRecordsAttestationFresh, listRecordFiles, listRecordFilesUnder, readCompileManifest, RECORDS_DIR_REL, writeCompileManifest, } from './compile-manifest.js';
|
|
7
7
|
import { TotemParseError } from './errors.js';
|
|
8
8
|
import { safeExec } from './sys/exec.js';
|
|
9
9
|
import { cleanTmpDir } from './test-utils.js';
|
|
@@ -75,6 +75,174 @@ describe('generateInputHash', () => {
|
|
|
75
75
|
expect(generateInputHash(tmpDir, tmpDir)).toBe(generateInputHash(tmpDir));
|
|
76
76
|
});
|
|
77
77
|
});
|
|
78
|
+
// ─── Prop 310 § Design 1 — the record file class attestation (slice 3) ───────
|
|
79
|
+
describe('generateRecordsHash / attestRecordsHash', () => {
|
|
80
|
+
let tmpDir;
|
|
81
|
+
let totemDir;
|
|
82
|
+
let rulesDir;
|
|
83
|
+
const RECORD = [
|
|
84
|
+
'schemaVersion: 1',
|
|
85
|
+
'severity: warning',
|
|
86
|
+
'message: no console.log',
|
|
87
|
+
'target:',
|
|
88
|
+
' type: regex',
|
|
89
|
+
" pattern: 'console\\.log'",
|
|
90
|
+
' scope:',
|
|
91
|
+
" fileGlobs: ['**/*.ts']",
|
|
92
|
+
'examples:',
|
|
93
|
+
" - bad: 'console.log(1)'",
|
|
94
|
+
" good: 'logger.info(1)'",
|
|
95
|
+
'',
|
|
96
|
+
].join('\n');
|
|
97
|
+
beforeEach(() => {
|
|
98
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'totem-manifest-records-'));
|
|
99
|
+
totemDir = path.join(tmpDir, '.totem');
|
|
100
|
+
rulesDir = path.join(totemDir, RECORDS_DIR_REL);
|
|
101
|
+
});
|
|
102
|
+
afterEach(() => {
|
|
103
|
+
cleanTmpDir(tmpDir);
|
|
104
|
+
});
|
|
105
|
+
const write = (rel, content = RECORD) => {
|
|
106
|
+
const target = path.join(rulesDir, rel);
|
|
107
|
+
fs.mkdirSync(path.dirname(target), { recursive: true });
|
|
108
|
+
fs.writeFileSync(target, content, 'utf-8');
|
|
109
|
+
};
|
|
110
|
+
it('returns the EMPTY-SET constant when the records directory is absent (OQ-3 “no records”)', () => {
|
|
111
|
+
expect(generateRecordsHash(rulesDir)).toBe(EMPTY_RECORDS_HASH);
|
|
112
|
+
expect(listRecordFiles(rulesDir)).toEqual([]);
|
|
113
|
+
});
|
|
114
|
+
it('returns the EMPTY-SET constant for an existing but record-free directory', () => {
|
|
115
|
+
fs.mkdirSync(rulesDir, { recursive: true });
|
|
116
|
+
fs.writeFileSync(path.join(rulesDir, 'README.md'), 'not a record\n');
|
|
117
|
+
fs.writeFileSync(path.join(rulesDir, 'config.yaml'), 'not a record\n');
|
|
118
|
+
expect(generateRecordsHash(rulesDir)).toBe(EMPTY_RECORDS_HASH);
|
|
119
|
+
expect(listRecordFiles(rulesDir)).toEqual([]);
|
|
120
|
+
});
|
|
121
|
+
it('the empty-set constant is sha256-over-nothing — stable, not a platform artifact', () => {
|
|
122
|
+
// Computed the same way the production constant is, from an independent
|
|
123
|
+
// `crypto` call: a transcribed literal is the mirror this pins against.
|
|
124
|
+
expect(EMPTY_RECORDS_HASH).toBe(crypto.createHash('sha256').digest('hex'));
|
|
125
|
+
expect(EMPTY_RECORDS_HASH).toMatch(/^[a-f0-9]{64}$/);
|
|
126
|
+
});
|
|
127
|
+
it('changes on ONE edited byte', () => {
|
|
128
|
+
write('a.rule.yaml');
|
|
129
|
+
const before = generateRecordsHash(rulesDir);
|
|
130
|
+
write('a.rule.yaml', RECORD.replace('warning', 'error'));
|
|
131
|
+
expect(generateRecordsHash(rulesDir)).not.toBe(before);
|
|
132
|
+
});
|
|
133
|
+
it('changes when a record is ADDED and again when it is REMOVED', () => {
|
|
134
|
+
write('a.rule.yaml');
|
|
135
|
+
const one = generateRecordsHash(rulesDir);
|
|
136
|
+
write('b.rule.yaml');
|
|
137
|
+
const two = generateRecordsHash(rulesDir);
|
|
138
|
+
expect(two).not.toBe(one);
|
|
139
|
+
fs.rmSync(path.join(rulesDir, 'b.rule.yaml'));
|
|
140
|
+
expect(generateRecordsHash(rulesDir)).toBe(one);
|
|
141
|
+
});
|
|
142
|
+
it('changes on a RENAME even with byte-identical content (path is hash material)', () => {
|
|
143
|
+
write('a.rule.yaml');
|
|
144
|
+
const before = generateRecordsHash(rulesDir);
|
|
145
|
+
fs.renameSync(path.join(rulesDir, 'a.rule.yaml'), path.join(rulesDir, 'b.rule.yaml'));
|
|
146
|
+
expect(generateRecordsHash(rulesDir)).not.toBe(before);
|
|
147
|
+
});
|
|
148
|
+
it('is CRLF-blind — a Windows-authored record hashes identically to its LF twin', () => {
|
|
149
|
+
write('a.rule.yaml');
|
|
150
|
+
const lf = generateRecordsHash(rulesDir);
|
|
151
|
+
write('a.rule.yaml', RECORD.replace(/\n/g, '\r\n'));
|
|
152
|
+
expect(generateRecordsHash(rulesDir)).toBe(lf);
|
|
153
|
+
});
|
|
154
|
+
it('is deterministic regardless of readdir order, and walks nested directories', () => {
|
|
155
|
+
write('z.rule.yaml');
|
|
156
|
+
write('a.rule.yaml');
|
|
157
|
+
write(path.join('nested', 'm.rule.yaml'));
|
|
158
|
+
expect(listRecordFiles(rulesDir)).toEqual(['a.rule.yaml', 'nested/m.rule.yaml', 'z.rule.yaml']);
|
|
159
|
+
expect(generateRecordsHash(rulesDir)).toBe(generateRecordsHash(rulesDir));
|
|
160
|
+
expect(generateRecordsHash(rulesDir)).toMatch(/^[a-f0-9]{64}$/);
|
|
161
|
+
});
|
|
162
|
+
it('ignores a non-record `.yaml` sibling — the double extension is the file class', () => {
|
|
163
|
+
write('a.rule.yaml');
|
|
164
|
+
const before = generateRecordsHash(rulesDir);
|
|
165
|
+
fs.writeFileSync(path.join(rulesDir, 'a.yaml'), RECORD, 'utf-8');
|
|
166
|
+
expect(generateRecordsHash(rulesDir)).toBe(before);
|
|
167
|
+
});
|
|
168
|
+
it('hashes git-tracked records only when repoCwd is inside a git repo', () => {
|
|
169
|
+
// Producer/consumer symmetry with `generateInputHash`: an untracked draft
|
|
170
|
+
// record must not diverge the attestation and block an unrelated push.
|
|
171
|
+
safeExec('git', ['init', '-q'], { cwd: tmpDir });
|
|
172
|
+
write('tracked.rule.yaml');
|
|
173
|
+
write('untracked.rule.yaml');
|
|
174
|
+
safeExec('git', ['add', '.totem/rules/tracked.rule.yaml'], { cwd: tmpDir });
|
|
175
|
+
const trackedOnly = generateRecordsHash(rulesDir, tmpDir);
|
|
176
|
+
expect(listRecordFiles(rulesDir, tmpDir)).toEqual(['tracked.rule.yaml']);
|
|
177
|
+
expect(trackedOnly).not.toBe(generateRecordsHash(rulesDir));
|
|
178
|
+
fs.rmSync(path.join(rulesDir, 'untracked.rule.yaml'));
|
|
179
|
+
expect(generateRecordsHash(rulesDir)).toBe(trackedOnly);
|
|
180
|
+
});
|
|
181
|
+
it('listRecordFilesUnder is the READ-side twin of attestRecordsHash over the same tracked set', () => {
|
|
182
|
+
// MIN-1/N-4: the verifier's COUNT and the writer's HASH must describe one set.
|
|
183
|
+
// Exercised in a REAL git repo, because outside one `restrictToTracked`
|
|
184
|
+
// short-circuits and the tracked/untracked distinction never runs at all.
|
|
185
|
+
safeExec('git', ['init', '-q'], { cwd: tmpDir });
|
|
186
|
+
write('tracked.rule.yaml');
|
|
187
|
+
write('untracked.rule.yaml');
|
|
188
|
+
safeExec('git', ['add', '.totem/rules/tracked.rule.yaml'], { cwd: tmpDir });
|
|
189
|
+
// Same directory, same restriction, reached through the `<totemDir>` helpers.
|
|
190
|
+
expect(listRecordFilesUnder(totemDir, tmpDir)).toEqual(['tracked.rule.yaml']);
|
|
191
|
+
expect(listRecordFilesUnder(totemDir, tmpDir)).toEqual(listRecordFiles(rulesDir, tmpDir));
|
|
192
|
+
expect(attestRecordsHash(totemDir, tmpDir)).toBe(generateRecordsHash(rulesDir, tmpDir));
|
|
193
|
+
// …and the tracked answer genuinely DIFFERS from the plain fs walk, so the
|
|
194
|
+
// equality above is not two names for the same unrestricted result.
|
|
195
|
+
expect(attestRecordsHash(totemDir, tmpDir)).not.toBe(attestRecordsHash(totemDir));
|
|
196
|
+
expect(listRecordFilesUnder(totemDir)).toEqual(['tracked.rule.yaml', 'untracked.rule.yaml']);
|
|
197
|
+
});
|
|
198
|
+
it('counts an UNTRACKED record as absent — it is neither attested nor counted', () => {
|
|
199
|
+
// The `records: none` claim rests on this: a working-tree draft must not make
|
|
200
|
+
// the verifier demand an attestation the writer would not have produced.
|
|
201
|
+
safeExec('git', ['init', '-q'], { cwd: tmpDir });
|
|
202
|
+
write('draft.rule.yaml'); // never `git add`ed
|
|
203
|
+
expect(listRecordFilesUnder(totemDir, tmpDir)).toEqual([]);
|
|
204
|
+
expect(attestRecordsHash(totemDir, tmpDir)).toBe(EMPTY_RECORDS_HASH);
|
|
205
|
+
});
|
|
206
|
+
it('isRecordsAttestationFresh answers the OQ-3 question the same way the verifier does', () => {
|
|
207
|
+
// The predicate three writers/readers share (bot round 1, B-1). All four
|
|
208
|
+
// arms, in a REAL repo so the tracked restriction runs.
|
|
209
|
+
safeExec('git', ['init', '-q'], { cwd: tmpDir });
|
|
210
|
+
// absent + ZERO tracked records ⇒ fresh (the pre-Prop-310 state).
|
|
211
|
+
expect(isRecordsAttestationFresh(undefined, totemDir, tmpDir)).toBe(true);
|
|
212
|
+
// …an UNTRACKED draft does not change that: it is not counted.
|
|
213
|
+
write('draft.rule.yaml');
|
|
214
|
+
expect(isRecordsAttestationFresh(undefined, totemDir, tmpDir)).toBe(true);
|
|
215
|
+
// absent + N tracked records ⇒ STALE ("unattested file class").
|
|
216
|
+
write('tracked.rule.yaml');
|
|
217
|
+
safeExec('git', ['add', '.totem/rules/tracked.rule.yaml'], { cwd: tmpDir });
|
|
218
|
+
expect(isRecordsAttestationFresh(undefined, totemDir, tmpDir)).toBe(false);
|
|
219
|
+
// present + EQUAL ⇒ fresh.
|
|
220
|
+
const current = attestRecordsHash(totemDir, tmpDir);
|
|
221
|
+
expect(isRecordsAttestationFresh(current, totemDir, tmpDir)).toBe(true);
|
|
222
|
+
// present + DIFFERENT ⇒ stale ("records hash mismatch").
|
|
223
|
+
expect(isRecordsAttestationFresh('f'.repeat(64), totemDir, tmpDir)).toBe(false);
|
|
224
|
+
// …including the empty-set value once records exist, which is the shape a
|
|
225
|
+
// manifest written before the record landed would carry.
|
|
226
|
+
expect(isRecordsAttestationFresh(EMPTY_RECORDS_HASH, totemDir, tmpDir)).toBe(false);
|
|
227
|
+
});
|
|
228
|
+
it('attestRecordsHash resolves `<totemDir>/rules` — the one writer-side entry point', () => {
|
|
229
|
+
write('a.rule.yaml');
|
|
230
|
+
expect(attestRecordsHash(totemDir)).toBe(generateRecordsHash(rulesDir));
|
|
231
|
+
expect(RECORDS_DIR_REL).toBe('rules');
|
|
232
|
+
});
|
|
233
|
+
it('leaves generateInputHash untouched — the lesson class is hashed exactly as before', () => {
|
|
234
|
+
// The collector was generalised by a suffix parameter; the lesson hash must be
|
|
235
|
+
// byte-identical, which a fixed expected digest over fixed content pins.
|
|
236
|
+
const lessonsDir = path.join(totemDir, 'lessons');
|
|
237
|
+
fs.mkdirSync(lessonsDir, { recursive: true });
|
|
238
|
+
fs.writeFileSync(path.join(lessonsDir, 'l.md'), 'body\n', 'utf-8');
|
|
239
|
+
const expected = crypto.createHash('sha256').update('l.md\nbody\n\n').digest('hex');
|
|
240
|
+
expect(generateInputHash(lessonsDir)).toBe(expected);
|
|
241
|
+
});
|
|
242
|
+
it('still throws when the LESSONS directory is absent — records-absence tolerance is records-only', () => {
|
|
243
|
+
expect(() => generateInputHash(path.join(totemDir, 'lessons'))).toThrow(TotemParseError);
|
|
244
|
+
});
|
|
245
|
+
});
|
|
78
246
|
describe('generateOutputHash', () => {
|
|
79
247
|
let tmpDir;
|
|
80
248
|
beforeEach(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-manifest.test.js","sourceRoot":"","sources":["../src/compile-manifest.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compile-manifest.test.js","sourceRoot":"","sources":["../src/compile-manifest.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,29 @@
|
|
|
14
14
|
* input. Any divergence between "smoke gate happy" and "runtime happy" is a
|
|
15
15
|
* bug in this module, not a rule authoring problem.
|
|
16
16
|
*
|
|
17
|
+
* Prop 310 § Design 8 PASS TWO (mmnto-ai/totem#2678): the match predicate is
|
|
18
|
+
* "the target matched AND the required context is ABSENT", so a gate that ran
|
|
19
|
+
* only pass one WAS that divergence — a `requires:`-bearing record's `good`
|
|
20
|
+
* example keeps the target and adds the companion, so the gate read it as
|
|
21
|
+
* over-matching and no such record could pass `totem rule test` or the ADR-112
|
|
22
|
+
* §4 preimage differential. The gate therefore evaluates the requirement with
|
|
23
|
+
* the RUNTIME'S OWN evaluator (`requiresSuppressesMatch`, `spine/record-runtime.ts`)
|
|
24
|
+
* — the same function `rule-engine.ts` and `regex-safety/apply-rules-bounded.ts`
|
|
25
|
+
* call. One evaluator, never a second implementation of § Design 8 living here
|
|
26
|
+
* (Tenet 20: derive or couple, never mirror). Legacy rules carry no `requires`
|
|
27
|
+
* and are byte-identical by construction — every call site is guarded on
|
|
28
|
+
* `rule.requires !== undefined` so no legacy rule pays a second test.
|
|
29
|
+
*
|
|
30
|
+
* Borrowing the evaluator means borrowing its PRECONDITIONS: `runSmokeGate` runs
|
|
31
|
+
* `assertNoTornRecordRules` on every rule, and adds
|
|
32
|
+
* `assertRequiresPatternsSafe` / `assertNoAstGrepLineScope` for a
|
|
33
|
+
* `requires:`-bearing one, before evaluating it — two of these at each regex
|
|
34
|
+
* dispatcher, all three at the ast dispatcher, in each case at invocation
|
|
35
|
+
* altitude. Without them the gate ACCEPTED rules the runtime refuses — a torn
|
|
36
|
+
* rule, an unsafe-but-compilable `requires.pattern` that backtracks
|
|
37
|
+
* catastrophically, and `ast-grep` + `requires.scope: line` — which is the same
|
|
38
|
+
* gate-vs-runtime divergence this module exists to rule out.
|
|
39
|
+
*
|
|
17
40
|
* Not wired to Pipeline 1 (manual) rules in mmnto/totem#1408 - a dry-run
|
|
18
41
|
* sweep lands in a follow-up ticket before the Pipeline 1 gate flips on.
|
|
19
42
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-smoke-gate.d.ts","sourceRoot":"","sources":["../src/compile-smoke-gate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"compile-smoke-gate.d.ts","sourceRoot":"","sources":["../src/compile-smoke-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAWzD,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAoJD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,CAiEjF"}
|
|
@@ -14,10 +14,35 @@
|
|
|
14
14
|
* input. Any divergence between "smoke gate happy" and "runtime happy" is a
|
|
15
15
|
* bug in this module, not a rule authoring problem.
|
|
16
16
|
*
|
|
17
|
+
* Prop 310 § Design 8 PASS TWO (mmnto-ai/totem#2678): the match predicate is
|
|
18
|
+
* "the target matched AND the required context is ABSENT", so a gate that ran
|
|
19
|
+
* only pass one WAS that divergence — a `requires:`-bearing record's `good`
|
|
20
|
+
* example keeps the target and adds the companion, so the gate read it as
|
|
21
|
+
* over-matching and no such record could pass `totem rule test` or the ADR-112
|
|
22
|
+
* §4 preimage differential. The gate therefore evaluates the requirement with
|
|
23
|
+
* the RUNTIME'S OWN evaluator (`requiresSuppressesMatch`, `spine/record-runtime.ts`)
|
|
24
|
+
* — the same function `rule-engine.ts` and `regex-safety/apply-rules-bounded.ts`
|
|
25
|
+
* call. One evaluator, never a second implementation of § Design 8 living here
|
|
26
|
+
* (Tenet 20: derive or couple, never mirror). Legacy rules carry no `requires`
|
|
27
|
+
* and are byte-identical by construction — every call site is guarded on
|
|
28
|
+
* `rule.requires !== undefined` so no legacy rule pays a second test.
|
|
29
|
+
*
|
|
30
|
+
* Borrowing the evaluator means borrowing its PRECONDITIONS: `runSmokeGate` runs
|
|
31
|
+
* `assertNoTornRecordRules` on every rule, and adds
|
|
32
|
+
* `assertRequiresPatternsSafe` / `assertNoAstGrepLineScope` for a
|
|
33
|
+
* `requires:`-bearing one, before evaluating it — two of these at each regex
|
|
34
|
+
* dispatcher, all three at the ast dispatcher, in each case at invocation
|
|
35
|
+
* altitude. Without them the gate ACCEPTED rules the runtime refuses — a torn
|
|
36
|
+
* rule, an unsafe-but-compilable `requires.pattern` that backtracks
|
|
37
|
+
* catastrophically, and `ast-grep` + `requires.scope: line` — which is the same
|
|
38
|
+
* gate-vs-runtime divergence this module exists to rule out.
|
|
39
|
+
*
|
|
17
40
|
* Not wired to Pipeline 1 (manual) rules in mmnto/totem#1408 - a dry-run
|
|
18
41
|
* sweep lands in a follow-up ticket before the Pipeline 1 gate flips on.
|
|
19
42
|
*/
|
|
20
43
|
import { matchAstGrepPattern, TRAILING_EXT_RE } from './ast-grep-query.js';
|
|
44
|
+
import { TotemParseError } from './errors.js';
|
|
45
|
+
import { assertNoAstGrepLineScope, assertNoTornRecordRules, assertRequiresPatternsSafe, requiresSuppressesMatch, } from './spine/record-runtime.js';
|
|
21
46
|
// ─── Helpers ────────────────────────────────────────
|
|
22
47
|
function firstLine(message) {
|
|
23
48
|
const m = /^[^\n]*/.exec(message);
|
|
@@ -30,11 +55,36 @@ function lineNumbersFor(snippet) {
|
|
|
30
55
|
result.push(i);
|
|
31
56
|
return result;
|
|
32
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Prop 310 § Design 8 pass two at ONE target-match locus, for the gate.
|
|
60
|
+
*
|
|
61
|
+
* The snippet IS the file for a gate run — the exemplar is the whole text the
|
|
62
|
+
* rule is being asked about — so `scope: file` resolves to the entire snippet
|
|
63
|
+
* and `scope: line` to the matched line. The `file` resolver is the snippet
|
|
64
|
+
* itself rather than a read, which is what makes the gate PURE where the runtime
|
|
65
|
+
* dispatchers hand `requiresSuppressesMatch` a lazy disk read.
|
|
66
|
+
*
|
|
67
|
+
* Guarded on `rule.requires !== undefined` so a legacy rule never pays a second
|
|
68
|
+
* `re.test`, and so this is provably a no-op for the frozen 485-rule corpus.
|
|
69
|
+
*
|
|
70
|
+
* `requiresSuppressesMatch` THROWS `TotemParseError` on an uncompilable
|
|
71
|
+
* `requires.pattern`, and nothing here catches it — but that throw is
|
|
72
|
+
* unreachable via `runSmokeGate`, which runs `assertRequiresPatternsSafe`
|
|
73
|
+
* first and whose `validateRegex` compiles the pattern before the safe-regex2
|
|
74
|
+
* check, so an uncompilable one is reported as a precondition failure before any
|
|
75
|
+
* evaluation. The uncaught path remains as a BACKSTOP for a caller that reaches
|
|
76
|
+
* this helper another way; `runSmokeGate` handles it once, for both engines.
|
|
77
|
+
*/
|
|
78
|
+
function suppressedByRequires(rule, line, snippet) {
|
|
79
|
+
if (rule.requires === undefined)
|
|
80
|
+
return false;
|
|
81
|
+
return requiresSuppressesMatch(rule, { line, file: () => snippet });
|
|
82
|
+
}
|
|
33
83
|
// ─── Engine runners ─────────────────────────────────
|
|
34
|
-
function runRegexGate(
|
|
84
|
+
function runRegexGate(rule, snippet) {
|
|
35
85
|
let re;
|
|
36
86
|
try {
|
|
37
|
-
re = new RegExp(pattern);
|
|
87
|
+
re = new RegExp(rule.pattern);
|
|
38
88
|
}
|
|
39
89
|
catch (err) {
|
|
40
90
|
return {
|
|
@@ -45,7 +95,11 @@ function runRegexGate(pattern, snippet) {
|
|
|
45
95
|
}
|
|
46
96
|
let matchCount = 0;
|
|
47
97
|
for (const line of snippet.split('\n')) {
|
|
48
|
-
|
|
98
|
+
// The FULL match predicate, exactly as `rule-engine.ts`'s regex dispatcher
|
|
99
|
+
// states it: target hit AND required context absent. A line whose
|
|
100
|
+
// requirement is satisfied is not a match at all, so it never reaches the
|
|
101
|
+
// count.
|
|
102
|
+
if (re.test(line) && !suppressedByRequires(rule, line, snippet))
|
|
49
103
|
matchCount++;
|
|
50
104
|
}
|
|
51
105
|
return matchCount > 0 ? { matched: true, matchCount } : { matched: false, matchCount: 0 };
|
|
@@ -97,15 +151,29 @@ function runAstGrepGate(pattern, snippet, rule) {
|
|
|
97
151
|
const lineNumbers = lineNumbersFor(snippet);
|
|
98
152
|
let lastReason;
|
|
99
153
|
for (const ext of inferBadExampleExts(rule)) {
|
|
154
|
+
// Seeded EMPTY so a throwing extension needs no statement inside the catch:
|
|
155
|
+
// the filter below yields nothing, the loop moves to the next extension, and
|
|
156
|
+
// the shipped degrade-to-`lastReason` behaviour is unchanged.
|
|
157
|
+
let matches = [];
|
|
100
158
|
try {
|
|
101
|
-
|
|
102
|
-
if (matches.length > 0) {
|
|
103
|
-
return { matched: true, matchCount: matches.length };
|
|
104
|
-
}
|
|
159
|
+
matches = matchAstGrepPattern(snippet, ext, pattern, lineNumbers);
|
|
105
160
|
}
|
|
106
161
|
catch (err) {
|
|
107
162
|
lastReason = `ast-grep runtime error: ${firstLine(err instanceof Error ? err.message : String(err))}`;
|
|
108
163
|
}
|
|
164
|
+
// § Design 8 pass two, OUTSIDE the engine try/catch on purpose: a
|
|
165
|
+
// `requires.pattern` defect is not an ast-grep runtime error and must not be
|
|
166
|
+
// reported as one. Via `runSmokeGate` such a pattern is already refused by
|
|
167
|
+
// `assertRequiresPatternsSafe` before this line runs; keeping the filter out
|
|
168
|
+
// of the catch means that even a throw from the evaluator itself reaches
|
|
169
|
+
// `runSmokeGate`'s single handler rather than being mislabelled here.
|
|
170
|
+
const unsuppressed = matches.filter((match) => !suppressedByRequires(rule, match.lineText, snippet));
|
|
171
|
+
// Zero UNSUPPRESSED matches under this extension is a miss like any other:
|
|
172
|
+
// fall through to the next extension, because the gate still passes on ANY
|
|
173
|
+
// extension (runtime scans the same surface).
|
|
174
|
+
if (unsuppressed.length > 0) {
|
|
175
|
+
return { matched: true, matchCount: unsuppressed.length };
|
|
176
|
+
}
|
|
109
177
|
}
|
|
110
178
|
return lastReason
|
|
111
179
|
? { matched: false, matchCount: 0, reason: lastReason }
|
|
@@ -126,8 +194,71 @@ export function runSmokeGate(rule, snippet) {
|
|
|
126
194
|
if (!snippet || snippet.trim().length === 0) {
|
|
127
195
|
return { matched: false, matchCount: 0 };
|
|
128
196
|
}
|
|
197
|
+
try {
|
|
198
|
+
// § Design 12 — UNCONDITIONAL, because tornness is not a property of
|
|
199
|
+
// `requires`. The assert fires on ANY of the seven
|
|
200
|
+
// `RECORD_COMPILED_HOME_KEYS` without `examples`, and the runtime refuses
|
|
201
|
+
// such a rule because it is UNCLASSIFIABLE — neither record nor legacy —
|
|
202
|
+
// not to protect an evaluator. Scoping this to `requires` left
|
|
203
|
+
// `{fileGlobs, excludeGlobs}` with no `examples` passing the gate while
|
|
204
|
+
// `applyRulesToAdditions` threw on it. Legacy rules stay byte-identical for
|
|
205
|
+
// free: the assert early-returns for a rule carrying no § Design 12 home,
|
|
206
|
+
// and the byte-identity guard pins that none of the frozen 485 carries one.
|
|
207
|
+
assertNoTornRecordRules([rule]);
|
|
208
|
+
if (rule.requires !== undefined) {
|
|
209
|
+
// The evaluator's PRECONDITIONS, taken with the evaluator (Tenet 20: a
|
|
210
|
+
// borrowed function borrows its contract too). Each regex dispatcher runs
|
|
211
|
+
// TWO of these at invocation altitude before any `requiresSuppressesMatch`
|
|
212
|
+
// (`rule-engine.ts:596-597`, `regex-safety/apply-rules-bounded.ts:92-93`);
|
|
213
|
+
// the ast dispatcher runs all three (`rule-engine.ts:791-793`). A gate that
|
|
214
|
+
// skipped them accepted rules the runtime REFUSES:
|
|
215
|
+
// - an unsafe-but-compilable `requires.pattern` (`(a+)+$`) that runs to
|
|
216
|
+
// catastrophic backtracking here, unbounded, against whole-snippet
|
|
217
|
+
// text — `totem rule test` reaches this with no safe-regex2 pass of
|
|
218
|
+
// its own;
|
|
219
|
+
// - `ast-grep` + `requires.scope: line`, which the lowering rejects and
|
|
220
|
+
// `assertNoAstGrepLineScope` refuses at runtime.
|
|
221
|
+
// The ast dispatcher also carries a tree-sitter `requires` backstop this
|
|
222
|
+
// gate does not need: an `ast`-engine rule never reaches an evaluator here
|
|
223
|
+
// because `dispatchEngineGate` already returns
|
|
224
|
+
// `smoke gate does not yet cover engine: ast` — a neutral skip the callers
|
|
225
|
+
// read toward flagging.
|
|
226
|
+
assertRequiresPatternsSafe([rule]);
|
|
227
|
+
assertNoAstGrepLineScope([rule]);
|
|
228
|
+
}
|
|
229
|
+
return dispatchEngineGate(rule, snippet);
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
// The ONE handler for § Design 8's fail-loud arm, shared by all three
|
|
233
|
+
// preconditions. It also still catches `requiresSuppressesMatch`'s own throw
|
|
234
|
+
// on an uncompilable pattern, but only as a BACKSTOP: `validateRegex`
|
|
235
|
+
// compiles the pattern first, so `assertRequiresPatternsSafe` reports that
|
|
236
|
+
// defect ("unusable `requires.pattern` (invalid syntax)") and the evaluator's
|
|
237
|
+
// throw is unreachable from this function. It stays handled for a caller
|
|
238
|
+
// that reaches the evaluator by another route. A gate that propagated any of
|
|
239
|
+
// these would crash `totem rule test` instead of reporting the rule as
|
|
240
|
+
// unusable; each message already names the construct at fault
|
|
241
|
+
// (`requires.pattern` / `requires.scope: line` / `examples`), so the prefix
|
|
242
|
+
// names no construct of its own. That is load-bearing, not stylistic:
|
|
243
|
+
// `assertNoTornRecordRules` runs on EVERY rule, so this handler also fronts
|
|
244
|
+
// rules carrying no `requires` block at all, and a `requires`-specific prefix
|
|
245
|
+
// would misname exactly that case (CodeRabbit, bot round 1). Mirrors the
|
|
246
|
+
// `invalid regex:` shape the target pattern already gets. Anything else is a
|
|
247
|
+
// real bug: rethrow.
|
|
248
|
+
if (err instanceof TotemParseError) {
|
|
249
|
+
return {
|
|
250
|
+
matched: false,
|
|
251
|
+
matchCount: 0,
|
|
252
|
+
reason: `rule precondition failed: ${firstLine(err.message)}`,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
throw err;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/** Engine dispatch for `runSmokeGate`, split out so the § Design 8 catch wraps both engines exactly once. */
|
|
259
|
+
function dispatchEngineGate(rule, snippet) {
|
|
129
260
|
if (rule.engine === 'regex') {
|
|
130
|
-
return runRegexGate(rule
|
|
261
|
+
return runRegexGate(rule, snippet);
|
|
131
262
|
}
|
|
132
263
|
if (rule.engine === 'ast-grep') {
|
|
133
264
|
const source = rule.astGrepPattern ?? rule.astGrepYamlRule;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-smoke-gate.js","sourceRoot":"","sources":["../src/compile-smoke-gate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"compile-smoke-gate.js","sourceRoot":"","sources":["../src/compile-smoke-gate.ts"],"names":[],"mappings":"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"}
|