@mmnto/cli 1.116.0 → 1.118.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/commands/bootstrap-wiring.test.js +28 -0
- package/dist/commands/bootstrap-wiring.test.js.map +1 -1
- package/dist/commands/init-templates.d.ts +6 -6
- package/dist/commands/init-templates.d.ts.map +1 -1
- package/dist/commands/init-templates.js +11 -8
- package/dist/commands/init-templates.js.map +1 -1
- package/dist/commands/init.test.js +54 -6
- package/dist/commands/init.test.js.map +1 -1
- package/dist/commands/install-hooks.d.ts.map +1 -1
- package/dist/commands/install-hooks.js +12 -1
- package/dist/commands/install-hooks.js.map +1 -1
- package/dist/commands/lint.js +1 -1
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/mail-cli-wiring.test.d.ts +8 -5
- package/dist/commands/mail-cli-wiring.test.d.ts.map +1 -1
- package/dist/commands/mail-cli-wiring.test.js +95 -42
- package/dist/commands/mail-cli-wiring.test.js.map +1 -1
- package/dist/commands/mail-degraded-e4.test.js +46 -13
- package/dist/commands/mail-degraded-e4.test.js.map +1 -1
- package/dist/commands/mail.d.ts +29 -0
- package/dist/commands/mail.d.ts.map +1 -1
- package/dist/commands/mail.js +182 -14
- package/dist/commands/mail.js.map +1 -1
- package/dist/commands/mail.test.js +425 -58
- package/dist/commands/mail.test.js.map +1 -1
- package/dist/commands/pre-push-gate-matrix.test.d.ts +17 -0
- package/dist/commands/pre-push-gate-matrix.test.d.ts.map +1 -0
- package/dist/commands/pre-push-gate-matrix.test.js +135 -0
- package/dist/commands/pre-push-gate-matrix.test.js.map +1 -0
- package/dist/commands/shield-admission.test.d.ts +14 -0
- package/dist/commands/shield-admission.test.d.ts.map +1 -0
- package/dist/commands/shield-admission.test.js +301 -0
- package/dist/commands/shield-admission.test.js.map +1 -0
- package/dist/commands/shield-classify.d.ts +10 -0
- package/dist/commands/shield-classify.d.ts.map +1 -1
- package/dist/commands/shield-classify.js +19 -1
- package/dist/commands/shield-classify.js.map +1 -1
- package/dist/commands/shield-covariate.test.js +3 -0
- package/dist/commands/shield-covariate.test.js.map +1 -1
- package/dist/commands/shield-estimate.js +5 -5
- package/dist/commands/shield-estimate.js.map +1 -1
- package/dist/commands/shield-estimate.test.js +7 -3
- package/dist/commands/shield-estimate.test.js.map +1 -1
- package/dist/commands/shield-nonreview.test.d.ts +12 -14
- package/dist/commands/shield-nonreview.test.d.ts.map +1 -1
- package/dist/commands/shield-nonreview.test.js +228 -42
- package/dist/commands/shield-nonreview.test.js.map +1 -1
- package/dist/commands/shield.d.ts +116 -1
- package/dist/commands/shield.d.ts.map +1 -1
- package/dist/commands/shield.js +439 -116
- package/dist/commands/shield.js.map +1 -1
- package/dist/git.d.ts +20 -2
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +11 -4
- package/dist/git.js.map +1 -1
- package/dist/git.test.js +58 -18
- package/dist/git.test.js.map +1 -1
- package/dist/index.js +17 -3
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CLI-level deterministic-skip
|
|
2
|
+
* CLI-level deterministic-skip tests (mmnto-ai/totem#2466 → #2473).
|
|
3
3
|
*
|
|
4
|
-
* `totem review` has
|
|
5
|
-
* without examining it: all-non-code,
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* `totem review` has four deterministic skip paths that drop the ENTIRE diff
|
|
5
|
+
* without examining it: no-diff, all-non-code, filtered-empty, all-generated.
|
|
6
|
+
* Since #2473 each is an ADMISSION verdict through the single emission path:
|
|
7
|
+
* one machine-readable admission record + ONE calm info-level disposition line
|
|
8
|
+
* — and never a stamp. The no-diff arm is the sharpest regression here: it
|
|
9
|
+
* used to be a "trivial pass" that STAMPED `.reviewed-content-hash`, minting
|
|
10
|
+
* push authorization for a tree no reviewer saw.
|
|
8
11
|
*
|
|
9
|
-
* The danger
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* so the hash is unchanged and the stamp was a no-op. The defect is the
|
|
14
|
-
* dishonest clean-pass surface (Tenets 4/13).
|
|
15
|
-
* - all-generated can drop a TRACKED, HASHED source file, because
|
|
16
|
-
* `.gitattributes linguist-generated` can mark a `.ts` as generated. There the
|
|
17
|
-
* stamp genuinely authorized never-reviewed code — a push-gate bypass.
|
|
12
|
+
* The all-generated danger remains non-uniform (why every path is pinned):
|
|
13
|
+
* `.gitattributes linguist-generated` can mark a `.ts` as generated, so that
|
|
14
|
+
* skip can drop a TRACKED, HASHED source file — the old stamp there genuinely
|
|
15
|
+
* authorized never-reviewed code.
|
|
18
16
|
*
|
|
19
17
|
* Mirrors `shield-covariate.test.ts`: its own file to avoid mock contamination,
|
|
20
18
|
* mocking the heavy seams (config, engine bootstrap, hook installer, git diff) so
|
|
@@ -25,6 +23,7 @@ import * as os from 'node:os';
|
|
|
25
23
|
import * as path from 'node:path';
|
|
26
24
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
27
25
|
import { cleanTmpDir } from '../test-utils.js';
|
|
26
|
+
import { log } from '../ui.js';
|
|
28
27
|
// ── Seams that MUST NOT run once a skip path is taken ──
|
|
29
28
|
const bootstrapEngineSpy = vi.fn(async (..._args) => { });
|
|
30
29
|
const upgradePrePushHookSpy = vi.fn((..._args) => false);
|
|
@@ -33,6 +32,9 @@ const TEST_CONFIG = {
|
|
|
33
32
|
totemDir: '.totem',
|
|
34
33
|
review: { sourceExtensions: ['.ts'] },
|
|
35
34
|
};
|
|
35
|
+
// Per-test config override (the malformed-lanes precedence test); reset in
|
|
36
|
+
// beforeEach. The loadConfig mock closes over this holder.
|
|
37
|
+
let currentConfig = TEST_CONFIG;
|
|
36
38
|
vi.mock('../utils/bootstrap-engine.js', async (importOriginal) => {
|
|
37
39
|
const actual = await importOriginal();
|
|
38
40
|
return { ...actual, bootstrapEngine: bootstrapEngineSpy };
|
|
@@ -47,7 +49,7 @@ vi.mock('../utils.js', async (importOriginal) => {
|
|
|
47
49
|
...actual,
|
|
48
50
|
loadEnv: vi.fn(),
|
|
49
51
|
resolveConfigPath: (cwd) => path.join(cwd, 'totem.config.ts'),
|
|
50
|
-
loadConfig: vi.fn(async () =>
|
|
52
|
+
loadConfig: vi.fn(async () => currentConfig),
|
|
51
53
|
};
|
|
52
54
|
});
|
|
53
55
|
vi.mock('../git.js', async (importOriginal) => {
|
|
@@ -66,22 +68,50 @@ function diffFor(file) {
|
|
|
66
68
|
'+new',
|
|
67
69
|
].join('\n');
|
|
68
70
|
}
|
|
69
|
-
describe('deterministic
|
|
71
|
+
describe('deterministic skips are not-applicable ADMISSIONS: record + calm line, never a stamp (#2473)', () => {
|
|
70
72
|
let tmpDir;
|
|
71
|
-
let
|
|
73
|
+
let output;
|
|
74
|
+
let infoLines;
|
|
75
|
+
let warnLines;
|
|
72
76
|
const stampPath = () => path.join(tmpDir, '.totem', 'cache', '.reviewed-content-hash');
|
|
77
|
+
const admissionsDir = () => path.join(tmpDir, '.totem', 'artifacts', 'admissions');
|
|
78
|
+
/** The store's records, parsed. */
|
|
79
|
+
function admissionRecords() {
|
|
80
|
+
if (!fs.existsSync(admissionsDir()))
|
|
81
|
+
return [];
|
|
82
|
+
return fs
|
|
83
|
+
.readdirSync(admissionsDir())
|
|
84
|
+
.map((f) => JSON.parse(fs.readFileSync(path.join(admissionsDir(), f), 'utf-8')));
|
|
85
|
+
}
|
|
73
86
|
beforeEach(() => {
|
|
74
87
|
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'shield-nonreview-'));
|
|
75
|
-
|
|
88
|
+
output = [];
|
|
89
|
+
infoLines = [];
|
|
90
|
+
warnLines = [];
|
|
76
91
|
vi.spyOn(process, 'cwd').mockReturnValue(tmpDir);
|
|
77
92
|
vi.spyOn(console, 'error').mockImplementation((...args) => {
|
|
78
|
-
|
|
93
|
+
output.push(args.map(String).join(' '));
|
|
79
94
|
});
|
|
80
95
|
vi.spyOn(console, 'log').mockImplementation((...args) => {
|
|
81
|
-
|
|
96
|
+
output.push(args.map(String).join(' '));
|
|
97
|
+
});
|
|
98
|
+
// Level-lock spies (the calm-line invariant): the disposition line is
|
|
99
|
+
// info-level, never WARN-class — it prints on every docs-only run in every
|
|
100
|
+
// consumer repo and must not read as a warning wall (#2473 consumer datum).
|
|
101
|
+
vi.spyOn(log, 'info').mockImplementation((_tag, msg) => {
|
|
102
|
+
infoLines.push(msg);
|
|
103
|
+
});
|
|
104
|
+
vi.spyOn(log, 'warn').mockImplementation((_tag, msg) => {
|
|
105
|
+
warnLines.push(msg);
|
|
82
106
|
});
|
|
83
107
|
bootstrapEngineSpy.mockClear();
|
|
108
|
+
upgradePrePushHookSpy.mockClear();
|
|
84
109
|
getDiffForReviewSpy.mockClear();
|
|
110
|
+
getDiffForReviewSpy.mockReset();
|
|
111
|
+
// The production resolver shape: a no-changes resolution is a discriminated
|
|
112
|
+
// empty carrying the RESOLVED scope (conformance note 1), never null.
|
|
113
|
+
getDiffForReviewSpy.mockResolvedValue({ empty: true, source: 'branch-vs-base', base: 'main' });
|
|
114
|
+
currentConfig = TEST_CONFIG;
|
|
85
115
|
});
|
|
86
116
|
afterEach(() => {
|
|
87
117
|
vi.restoreAllMocks();
|
|
@@ -97,46 +127,119 @@ describe('deterministic skip paths are NON-REVIEWS and never stamp (#2466)', ()
|
|
|
97
127
|
// Best-effort cleanup; the OS reclaims the temp dir.
|
|
98
128
|
}
|
|
99
129
|
});
|
|
130
|
+
/** The single calm disposition line for `reason`, asserted info-level and one-line. */
|
|
131
|
+
function expectCalmLine(reason) {
|
|
132
|
+
const matching = infoLines.filter((l) => l.includes(`not-applicable (${reason})`));
|
|
133
|
+
expect(matching).toHaveLength(1);
|
|
134
|
+
const line = matching[0];
|
|
135
|
+
expect(line).not.toContain('\n');
|
|
136
|
+
expect(line).toMatch(/does not authorize a push/);
|
|
137
|
+
// Never WARN-class — the level lock.
|
|
138
|
+
expect(warnLines.filter((l) => l.includes('not-applicable ('))).toHaveLength(0);
|
|
139
|
+
return line;
|
|
140
|
+
}
|
|
141
|
+
/** The store's single record, asserted against the expected identity fields. */
|
|
142
|
+
function expectSingleRecord(reason, skippedFileCount) {
|
|
143
|
+
const records = admissionRecords();
|
|
144
|
+
expect(records).toHaveLength(1);
|
|
145
|
+
const record = records[0];
|
|
146
|
+
expect(record['disposition']).toBe('not-applicable');
|
|
147
|
+
expect(record['reason']).toBe(reason);
|
|
148
|
+
expect(record['skippedFileCount']).toBe(skippedFileCount);
|
|
149
|
+
expect(record['schemaVersion']).toMatch(/^1\.\d+\.\d+$/);
|
|
150
|
+
expect(record['inputHash']).toMatch(/^[0-9a-f]{64}$/);
|
|
151
|
+
expect(record['projectionPolicyHash']).toMatch(/^[0-9a-f]{64}$/);
|
|
152
|
+
return record;
|
|
153
|
+
}
|
|
100
154
|
/**
|
|
101
155
|
* Drive the real command with a diff whose files are all `files`.
|
|
102
156
|
*
|
|
103
157
|
* A run that does NOT take a skip path continues into the LLM review path and
|
|
104
158
|
* throws on the unmocked embedding config. That throw is expected and is itself
|
|
105
159
|
* evidence the skip did not fire, so it is swallowed here — every assertion
|
|
106
|
-
* below is made on the stamp and the emitted output
|
|
160
|
+
* below is made on the stamp, the store, and the emitted output.
|
|
107
161
|
*/
|
|
108
|
-
async function runWithDiff(files) {
|
|
109
|
-
await runWithDiffRaw(files.map(diffFor).join('\n'), files);
|
|
162
|
+
async function runWithDiff(files, options = {}) {
|
|
163
|
+
await runWithDiffRaw(files.map(diffFor).join('\n'), files, options);
|
|
110
164
|
}
|
|
111
165
|
/**
|
|
112
166
|
* Lower-level driver for cases where the diff BODY and the changed-file LIST
|
|
113
167
|
* must differ — the filtered-empty path needs a code file present in the list
|
|
114
168
|
* whose hunks are absent from the diff (a mode-only change has this shape).
|
|
115
169
|
*/
|
|
116
|
-
async function runWithDiffRaw(diff, changedFiles) {
|
|
117
|
-
getDiffForReviewSpy.
|
|
170
|
+
async function runWithDiffRaw(diff, changedFiles, options = {}) {
|
|
171
|
+
getDiffForReviewSpy.mockResolvedValue({ diff, changedFiles, source: 'uncommitted' });
|
|
118
172
|
const { shieldCommand } = await import('./shield.js');
|
|
119
173
|
try {
|
|
120
|
-
await shieldCommand(
|
|
174
|
+
await shieldCommand(options);
|
|
121
175
|
}
|
|
122
176
|
catch {
|
|
123
177
|
// See doc comment — a non-skip run is expected to fail downstream.
|
|
124
178
|
}
|
|
125
179
|
}
|
|
126
|
-
it('
|
|
180
|
+
it('no-diff: does NOT stamp (the removed trivial-pass), records the RESOLVED empty scope', async () => {
|
|
181
|
+
// getDiffForReview resolves the scoped empty (the beforeEach default) —
|
|
182
|
+
// the arm that used to write `.reviewed-content-hash` as a "trivial pass".
|
|
183
|
+
const { shieldCommand } = await import('./shield.js');
|
|
184
|
+
await shieldCommand({});
|
|
185
|
+
expect(fs.existsSync(stampPath())).toBe(false);
|
|
186
|
+
expectCalmLine('no-diff');
|
|
187
|
+
const record = expectSingleRecord('no-diff', 0);
|
|
188
|
+
// Conformance note 1: the record binds the resolver's RESOLVED terminal
|
|
189
|
+
// scope; the requested selector fills the selector slot.
|
|
190
|
+
expect(record['scope']).toEqual({
|
|
191
|
+
source: 'branch-vs-base',
|
|
192
|
+
base: 'main',
|
|
193
|
+
head: null,
|
|
194
|
+
selectorForm: '(default-chain)',
|
|
195
|
+
});
|
|
196
|
+
// A skip never boots the engine (phase ordering).
|
|
197
|
+
expect(bootstrapEngineSpy).not.toHaveBeenCalled();
|
|
198
|
+
});
|
|
199
|
+
it('a malformed lane config never preempts a not-applicable disposition (conformance note 2)', async () => {
|
|
200
|
+
// Fan configuration is downstream of admission: with a docs-only diff and
|
|
201
|
+
// a lanes value that would hard-error validation, the run still resolves
|
|
202
|
+
// to the calm disposition — the config error is an ADMITTED-branch error.
|
|
203
|
+
currentConfig = {
|
|
204
|
+
...TEST_CONFIG,
|
|
205
|
+
review: { sourceExtensions: ['.ts'], lanes: 12345 },
|
|
206
|
+
};
|
|
207
|
+
getDiffForReviewSpy.mockResolvedValue({
|
|
208
|
+
diff: diffFor('docs/plan.md'),
|
|
209
|
+
changedFiles: ['docs/plan.md'],
|
|
210
|
+
source: 'uncommitted',
|
|
211
|
+
});
|
|
212
|
+
const { shieldCommand } = await import('./shield.js');
|
|
213
|
+
await expect(shieldCommand({})).resolves.toBeUndefined();
|
|
214
|
+
expectCalmLine('all-non-code');
|
|
215
|
+
});
|
|
216
|
+
it('all-non-code: does not stamp, records, and says so calmly', async () => {
|
|
127
217
|
await runWithDiff(['docs/plan.md', 'README.md']);
|
|
128
218
|
// The load-bearing assertion: no push authorization was minted.
|
|
129
219
|
expect(fs.existsSync(stampPath())).toBe(false);
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
220
|
+
const line = expectCalmLine('all-non-code');
|
|
221
|
+
// Exact rendered count (leg MINOR 4): the count measures files in scope
|
|
222
|
+
// after generated-artifact exclusion, and the wording names that scope.
|
|
223
|
+
expect(line).toContain('every file in scope (2) is non-code');
|
|
224
|
+
expectSingleRecord('all-non-code', 2);
|
|
225
|
+
expect(bootstrapEngineSpy).not.toHaveBeenCalled();
|
|
226
|
+
});
|
|
227
|
+
it('mixed generated + prose: the count is the POST-STRIP in-scope total, not the changed-file total (re-arm MINOR 3)', async () => {
|
|
228
|
+
// 3 changed files, 1 generated (stripped), 2 prose in scope: the rendered
|
|
229
|
+
// count must be 2 — a fixture where keptFiles === changedFiles cannot
|
|
230
|
+
// distinguish the two candidate semantics, so this one CAN.
|
|
231
|
+
await runWithDiff(['pnpm-lock.yaml', 'docs/plan.md', 'README.md']);
|
|
232
|
+
expect(fs.existsSync(stampPath())).toBe(false);
|
|
233
|
+
const line = expectCalmLine('all-non-code');
|
|
234
|
+
expect(line).toContain('every file in scope (2) is non-code');
|
|
235
|
+
expectSingleRecord('all-non-code', 2);
|
|
133
236
|
});
|
|
134
237
|
it('all-generated: does not stamp — the path that could authorize real code', async () => {
|
|
135
238
|
// A lockfile is generated by default glob, so the whole diff drops.
|
|
136
239
|
await runWithDiff(['pnpm-lock.yaml']);
|
|
137
240
|
expect(fs.existsSync(stampPath())).toBe(false);
|
|
138
|
-
|
|
139
|
-
|
|
241
|
+
expectCalmLine('all-generated');
|
|
242
|
+
expectSingleRecord('all-generated', 1);
|
|
140
243
|
});
|
|
141
244
|
it('all-generated via .gitattributes on a TRACKED .ts: does not stamp (the bypass case)', async () => {
|
|
142
245
|
// The scenario the default-glob lockfile test does NOT reach, and the only
|
|
@@ -146,11 +249,12 @@ describe('deterministic skip paths are NON-REVIEWS and never stamp (#2466)', ()
|
|
|
146
249
|
fs.writeFileSync(path.join(tmpDir, '.gitattributes'), 'src/generated-client.ts linguist-generated\n');
|
|
147
250
|
await runWithDiff(['src/generated-client.ts']);
|
|
148
251
|
expect(fs.existsSync(stampPath())).toBe(false);
|
|
149
|
-
// Assert the GENERATED-path wording specifically. A bare
|
|
150
|
-
// would also pass if this fell through to the all-non-code branch,
|
|
151
|
-
// would mean the test proves nothing about the bypass it
|
|
152
|
-
|
|
153
|
-
expect(
|
|
252
|
+
// Assert the GENERATED-path wording specifically. A bare not-applicable
|
|
253
|
+
// match would also pass if this fell through to the all-non-code branch,
|
|
254
|
+
// which would mean the test proves nothing about the bypass it covers.
|
|
255
|
+
const line = expectCalmLine('all-generated');
|
|
256
|
+
expect(line).toMatch(/is a generated artifact/);
|
|
257
|
+
expectSingleRecord('all-generated', 1);
|
|
154
258
|
});
|
|
155
259
|
it('filtered-empty: does not stamp when no code hunks survive filtering', async () => {
|
|
156
260
|
// Stage 2 fires when the diff is neither all-code nor all-non-code and the
|
|
@@ -158,16 +262,98 @@ describe('deterministic skip paths are NON-REVIEWS and never stamp (#2466)', ()
|
|
|
158
262
|
// file has exactly this shape: listed as changed, absent from the diff body.
|
|
159
263
|
await runWithDiffRaw(diffFor('docs/plan.md'), ['docs/plan.md', 'src/index.ts']);
|
|
160
264
|
expect(fs.existsSync(stampPath())).toBe(false);
|
|
161
|
-
|
|
162
|
-
//
|
|
163
|
-
|
|
164
|
-
|
|
265
|
+
const line = expectCalmLine('filtered-empty');
|
|
266
|
+
// Stage-2 wording, with the EXACT rendered count (leg MINOR 4): the count
|
|
267
|
+
// is the in-scope file total, and the wording says so — never "N non-code
|
|
268
|
+
// file(s)" for a number that counts something else.
|
|
269
|
+
expect(line).toContain('no code diff remains after filtering non-code files from 2 file(s) in scope');
|
|
270
|
+
expectSingleRecord('filtered-empty', 2);
|
|
271
|
+
});
|
|
272
|
+
it('--fail-on cannot reach an admission skip: docs-only + --fail-on critical resolves clean (regression)', async () => {
|
|
273
|
+
// Codex regression lock: every skip returns before `runReviewFan`, so the
|
|
274
|
+
// fan's `!cacheEligible` arm can never convert a skip into SHIELD_FAILED.
|
|
275
|
+
getDiffForReviewSpy.mockResolvedValue({
|
|
276
|
+
diff: diffFor('docs/plan.md'),
|
|
277
|
+
changedFiles: ['docs/plan.md'],
|
|
278
|
+
source: 'uncommitted',
|
|
279
|
+
});
|
|
280
|
+
const { shieldCommand } = await import('./shield.js');
|
|
281
|
+
await expect(shieldCommand({ failOn: 'critical' })).resolves.toBeUndefined();
|
|
282
|
+
expectCalmLine('all-non-code');
|
|
283
|
+
});
|
|
284
|
+
it('--gate maps a known not-applicable admission to a clean pass (the hook form)', async () => {
|
|
285
|
+
getDiffForReviewSpy.mockResolvedValue({
|
|
286
|
+
diff: diffFor('docs/plan.md'),
|
|
287
|
+
changedFiles: ['docs/plan.md'],
|
|
288
|
+
source: 'uncommitted',
|
|
289
|
+
});
|
|
290
|
+
const { shieldCommand } = await import('./shield.js');
|
|
291
|
+
await expect(shieldCommand({ gate: true })).resolves.toBeUndefined();
|
|
292
|
+
expectCalmLine('all-non-code');
|
|
293
|
+
expect(fs.existsSync(stampPath())).toBe(false);
|
|
294
|
+
});
|
|
295
|
+
it('--gate + --fail-on is CONFIG_INVALID, validated BEFORE the hook-upgrade side effect', async () => {
|
|
296
|
+
const { shieldCommand } = await import('./shield.js');
|
|
297
|
+
await expect(shieldCommand({ gate: true, failOn: 'critical' })).rejects.toMatchObject({ code: 'CONFIG_INVALID' });
|
|
298
|
+
// Codex amendment: an invalid command must not mutate the hook on its way
|
|
299
|
+
// to CONFIG_INVALID.
|
|
300
|
+
expect(upgradePrePushHookSpy).not.toHaveBeenCalled();
|
|
301
|
+
});
|
|
302
|
+
it('a failed record write degrades to a loud warning — the line still prints, exit unchanged', async () => {
|
|
303
|
+
// A FILE at the admissions-dir path makes mkdirSync/writeFileSync fail.
|
|
304
|
+
fs.mkdirSync(path.join(tmpDir, '.totem', 'artifacts'), { recursive: true });
|
|
305
|
+
fs.writeFileSync(path.join(tmpDir, '.totem', 'artifacts', 'admissions'), 'not a dir');
|
|
306
|
+
await runWithDiff(['docs/plan.md']);
|
|
307
|
+
expect(fs.existsSync(stampPath())).toBe(false);
|
|
308
|
+
const line = expectCalmLine('all-non-code');
|
|
309
|
+
expect(line).not.toContain('recorded');
|
|
310
|
+
expect(warnLines.some((l) => l.includes('Admission record write failed'))).toBe(true);
|
|
311
|
+
});
|
|
312
|
+
it('covariate resolves the exact-identity admission record (and warns loud when absent)', async () => {
|
|
313
|
+
const docsDiff = {
|
|
314
|
+
diff: diffFor('docs/plan.md'),
|
|
315
|
+
changedFiles: ['docs/plan.md'],
|
|
316
|
+
source: 'uncommitted',
|
|
317
|
+
};
|
|
318
|
+
getDiffForReviewSpy.mockResolvedValue(docsDiff);
|
|
319
|
+
const { shieldCommand } = await import('./shield.js');
|
|
320
|
+
// Absent: LOUD no-current-record sensor, never a fallback.
|
|
321
|
+
await shieldCommand({ covariate: true });
|
|
322
|
+
expect(warnLines.some((l) => l.includes('no admission record exists'))).toBe(true);
|
|
323
|
+
expect(admissionRecords()).toHaveLength(0);
|
|
324
|
+
// Record it, then resolve it by exact identity.
|
|
325
|
+
await shieldCommand({});
|
|
326
|
+
const record = expectSingleRecord('all-non-code', 1);
|
|
327
|
+
output.length = 0;
|
|
328
|
+
await shieldCommand({ covariate: true });
|
|
329
|
+
const lane = output.find((l) => l.startsWith('local-lane:'));
|
|
330
|
+
expect(lane).toBe(`local-lane: not-applicable (all-non-code) recorded=${String(fs.readdirSync(admissionsDir())[0]).slice(0, 8)} at=${String(record['createdAt'])}`);
|
|
331
|
+
});
|
|
332
|
+
it('covariate falls back LOUD on a corrupt exact-identity record — never a stale line (leg MINOR 7)', async () => {
|
|
333
|
+
getDiffForReviewSpy.mockResolvedValue({
|
|
334
|
+
diff: diffFor('docs/plan.md'),
|
|
335
|
+
changedFiles: ['docs/plan.md'],
|
|
336
|
+
source: 'uncommitted',
|
|
337
|
+
});
|
|
338
|
+
const { shieldCommand } = await import('./shield.js');
|
|
339
|
+
await shieldCommand({}); // record it
|
|
340
|
+
const recordFile = fs.readdirSync(admissionsDir())[0];
|
|
341
|
+
fs.writeFileSync(path.join(admissionsDir(), recordFile), '{ not json', 'utf-8');
|
|
342
|
+
output.length = 0;
|
|
343
|
+
warnLines.length = 0;
|
|
344
|
+
await expect(shieldCommand({ covariate: true })).resolves.toBeUndefined();
|
|
345
|
+
// The corrupt load routed to the sensor AND the loud no-current-record
|
|
346
|
+
// warn fired — and no local-lane line printed (never a stale fallback).
|
|
347
|
+
expect(warnLines.some((l) => l.startsWith('Sensor:'))).toBe(true);
|
|
348
|
+
expect(warnLines.some((l) => l.includes('no admission record exists'))).toBe(true);
|
|
349
|
+
expect(output.some((l) => l.startsWith('local-lane:'))).toBe(false);
|
|
165
350
|
});
|
|
166
351
|
it('mixed code + prose does NOT take a skip path (the skip must not over-fire)', async () => {
|
|
167
352
|
// Guards the inverse error: tightening the skip must not start skipping real
|
|
168
353
|
// code. A surviving `.ts` file means this is a review, not a non-review.
|
|
169
354
|
await runWithDiff(['docs/plan.md', 'src/index.ts']);
|
|
170
|
-
expect(
|
|
355
|
+
expect(infoLines.filter((l) => l.includes('not-applicable ('))).toHaveLength(0);
|
|
356
|
+
expect(admissionRecords()).toHaveLength(0);
|
|
171
357
|
// It also must not stamp here — this run never completed a review either.
|
|
172
358
|
expect(fs.existsSync(stampPath())).toBe(false);
|
|
173
359
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shield-nonreview.test.js","sourceRoot":"","sources":["../../src/commands/shield-nonreview.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shield-nonreview.test.js","sourceRoot":"","sources":["../../src/commands/shield-nonreview.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -242,9 +242,23 @@ export interface ShieldOptions {
|
|
|
242
242
|
* resolves the CURRENT lineage exactly as the review fan does, loads the latest
|
|
243
243
|
* verdict artifact for it, and prints the core-owned covariate line to stdout.
|
|
244
244
|
* No verdict for the lineage ⇒ loud sensor message, exit 0. Short-circuits before
|
|
245
|
-
* any LLM/engine work; nothing is stamped or written.
|
|
245
|
+
* any LLM/engine work; nothing is stamped or written. Admission-aware since
|
|
246
|
+
* mmnto-ai/totem#2473: a not-applicable current state resolves the exact-identity
|
|
247
|
+
* admission record instead of the verdict store.
|
|
246
248
|
*/
|
|
247
249
|
covariate?: boolean;
|
|
250
|
+
/**
|
|
251
|
+
* Declared disposition→exit mapping for gate wiring (mmnto-ai/totem#2473 ruling
|
|
252
|
+
* item 2 — the regenerated managed pre-push hook's form). The flag IS the
|
|
253
|
+
* wiring's declared mapping (ADR-109: the engine states verdicts, the wrapper
|
|
254
|
+
* maps disposition → exit): known not-applicable admissions → 0 (an explicit
|
|
255
|
+
* coverage pass, disclosed), completed rounds → 0 (findings are report-only in
|
|
256
|
+
* hook context, #2551), hard failures → nonzero (unchanged), an UNKNOWN
|
|
257
|
+
* disposition → nonzero fail-closed (the one exit-semantic difference from the
|
|
258
|
+
* bare sensor). Contradictory with `--fail-on` (hook context asserts
|
|
259
|
+
* findings-report-only; a severity gate asserts the opposite).
|
|
260
|
+
*/
|
|
261
|
+
gate?: boolean;
|
|
248
262
|
}
|
|
249
263
|
export declare function learnFromVerdict(verdictContent: string, diff: string, options: ShieldOptions, config: TotemConfig, cwd: string, configRoot?: string): Promise<void>;
|
|
250
264
|
/** @internal — exported for testing */
|
|
@@ -307,5 +321,106 @@ interface IncrementalResult {
|
|
|
307
321
|
linesChanged?: number;
|
|
308
322
|
}
|
|
309
323
|
export declare function evaluateIncrementalEligibility(cwd: string, totemDir: string, configRoot?: string): Promise<IncrementalResult>;
|
|
324
|
+
/** The resolved-diff subset admission consumes (structural — avoids a git.ts type export). */
|
|
325
|
+
interface AdmissionDiffResult {
|
|
326
|
+
diff: string;
|
|
327
|
+
changedFiles: string[];
|
|
328
|
+
source: 'explicit-range' | 'staged' | 'uncommitted' | 'branch-vs-base';
|
|
329
|
+
base?: string;
|
|
330
|
+
head?: string;
|
|
331
|
+
selectorForm?: string;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* The resolver's discriminated no-changes shape (git.ts `DiffForReviewEmpty`):
|
|
335
|
+
* the RESOLVED terminal scope that produced no diff. The `no-diff` record
|
|
336
|
+
* binds THIS scope — never a synthetic `source: 'none'` that discards what the
|
|
337
|
+
* resolver already resolved (codex conformance note 1 on mmnto-ai/totem#2473).
|
|
338
|
+
*/
|
|
339
|
+
interface AdmissionDiffEmpty {
|
|
340
|
+
empty: true;
|
|
341
|
+
source: 'explicit-range' | 'staged' | 'uncommitted' | 'branch-vs-base';
|
|
342
|
+
base?: string;
|
|
343
|
+
head?: string;
|
|
344
|
+
selectorForm?: string;
|
|
345
|
+
}
|
|
346
|
+
export interface AdmissionEvaluationInput {
|
|
347
|
+
/**
|
|
348
|
+
* `null` is the legacy/caller-without-scope shape (records `source: 'none'`);
|
|
349
|
+
* production always passes the resolver's result or its discriminated empty.
|
|
350
|
+
*/
|
|
351
|
+
diffResult: AdmissionDiffResult | AdmissionDiffEmpty | null;
|
|
352
|
+
/** The REQUESTED selector expression — the empty arms' selector fallback identity. */
|
|
353
|
+
requestedSelector: string;
|
|
354
|
+
cwd: string;
|
|
355
|
+
config: TotemConfig;
|
|
356
|
+
/** Suppress payload-prep logging (the read-only `--covariate` re-derivation). */
|
|
357
|
+
quiet: boolean;
|
|
358
|
+
}
|
|
359
|
+
export type AdmissionOutcome = {
|
|
360
|
+
status: 'admitted';
|
|
361
|
+
diff: string;
|
|
362
|
+
changedFiles: string[];
|
|
363
|
+
filteredDiff: string;
|
|
364
|
+
filteredFiles: string[];
|
|
365
|
+
generatedArtifactSummary: string | undefined;
|
|
366
|
+
scope: import('@mmnto/totem').AdmissionScope;
|
|
367
|
+
inputHash: string;
|
|
368
|
+
projectionPolicyHash: string;
|
|
369
|
+
} | {
|
|
370
|
+
status: 'not-applicable';
|
|
371
|
+
reason: import('@mmnto/totem').NotApplicableReason;
|
|
372
|
+
scope: import('@mmnto/totem').AdmissionScope;
|
|
373
|
+
inputHash: string;
|
|
374
|
+
projectionPolicyHash: string;
|
|
375
|
+
skippedFileCount: number;
|
|
376
|
+
/** For the dim stderr listing only — never persisted (count-only record). */
|
|
377
|
+
skippedFiles: string[];
|
|
378
|
+
};
|
|
379
|
+
/** The requested selector expression, recorded as the no-diff arm's scope identity. */
|
|
380
|
+
export declare function requestedSelectorForm(options: ShieldOptions): string;
|
|
381
|
+
/**
|
|
382
|
+
* The closed execution-payload type the review path consumes (codex
|
|
383
|
+
* conformance note 3 on mmnto-ai/totem#2473): payload SELECTION is a
|
|
384
|
+
* post-admission step — a revalidated reviewable delta, or the admitted
|
|
385
|
+
* full-scope payload — and applicability can never change underneath the
|
|
386
|
+
* fan (the admitted verdict stands regardless of which payload is selected).
|
|
387
|
+
*/
|
|
388
|
+
export interface ExecutionPayload {
|
|
389
|
+
diff: string;
|
|
390
|
+
changedFiles: string[];
|
|
391
|
+
filteredDiff: string;
|
|
392
|
+
filteredFiles: string[];
|
|
393
|
+
generatedArtifactSummary: string | undefined;
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Select the execution payload for an ADMITTED run: the incremental delta when
|
|
397
|
+
* it is eligible AND re-projects to something reviewable, else the admitted
|
|
398
|
+
* full-scope payload. A non-reviewable delta (docs-only since the last pass)
|
|
399
|
+
* falls back — it can never demote the run to a skip, because admission
|
|
400
|
+
* already admitted the full scope. Pure selection; the caller owns logging.
|
|
401
|
+
*/
|
|
402
|
+
export declare function selectExecutionPayload(admitted: Extract<AdmissionOutcome, {
|
|
403
|
+
status: 'admitted';
|
|
404
|
+
}>, incremental: IncrementalResult, cwd: string, quiet: boolean): Promise<{
|
|
405
|
+
payload: ExecutionPayload;
|
|
406
|
+
narrowed: boolean;
|
|
407
|
+
deltaFallbackReason?: string;
|
|
408
|
+
}>;
|
|
409
|
+
/** The effective selection policy whose projection produced the admission outcome. */
|
|
410
|
+
export declare function buildProjectionPolicy(config: TotemConfig, cwd: string): Promise<import('@mmnto/totem').ProjectionPolicy>;
|
|
411
|
+
/**
|
|
412
|
+
* The closed admission evaluator (mmnto-ai/totem#2473 ruling item 1). Either
|
|
413
|
+
* an admitted payload (the exact fan inputs) or `not-applicable` with the
|
|
414
|
+
* exact record inputs. Read-only — the caller owns record emission.
|
|
415
|
+
*/
|
|
416
|
+
export declare function evaluateAdmission(input: AdmissionEvaluationInput): Promise<AdmissionOutcome>;
|
|
417
|
+
/**
|
|
418
|
+
* Disposition→exit mapping for the admission phase. Bare review and `--gate`
|
|
419
|
+
* both map every KNOWN not-applicable reason to exit 0 (the ruled
|
|
420
|
+
* no-nonzero-by-default shape). The difference is the unknown arm: `--gate` is
|
|
421
|
+
* a DECLARED mapping, so an unknown disposition fails CLOSED (nonzero via the
|
|
422
|
+
* supplied error ctor) while the bare sensor warns and stays 0.
|
|
423
|
+
*/
|
|
424
|
+
export declare function resolveNotApplicableExit(reason: string, gate: boolean, errCtor: new (code: 'SHIELD_FAILED', message: string, hint: string) => Error): 0;
|
|
310
425
|
export declare function shieldCommand(options: ShieldOptions): Promise<void>;
|
|
311
426
|
//# sourceMappingURL=shield.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shield.d.ts","sourceRoot":"","sources":["../../src/commands/shield.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"shield.d.ts","sourceRoot":"","sources":["../../src/commands/shield.ts"],"names":[],"mappings":"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"}
|