@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.
Files changed (60) hide show
  1. package/dist/commands/bootstrap-wiring.test.js +28 -0
  2. package/dist/commands/bootstrap-wiring.test.js.map +1 -1
  3. package/dist/commands/init-templates.d.ts +6 -6
  4. package/dist/commands/init-templates.d.ts.map +1 -1
  5. package/dist/commands/init-templates.js +11 -8
  6. package/dist/commands/init-templates.js.map +1 -1
  7. package/dist/commands/init.test.js +54 -6
  8. package/dist/commands/init.test.js.map +1 -1
  9. package/dist/commands/install-hooks.d.ts.map +1 -1
  10. package/dist/commands/install-hooks.js +12 -1
  11. package/dist/commands/install-hooks.js.map +1 -1
  12. package/dist/commands/lint.js +1 -1
  13. package/dist/commands/lint.js.map +1 -1
  14. package/dist/commands/mail-cli-wiring.test.d.ts +8 -5
  15. package/dist/commands/mail-cli-wiring.test.d.ts.map +1 -1
  16. package/dist/commands/mail-cli-wiring.test.js +95 -42
  17. package/dist/commands/mail-cli-wiring.test.js.map +1 -1
  18. package/dist/commands/mail-degraded-e4.test.js +46 -13
  19. package/dist/commands/mail-degraded-e4.test.js.map +1 -1
  20. package/dist/commands/mail.d.ts +29 -0
  21. package/dist/commands/mail.d.ts.map +1 -1
  22. package/dist/commands/mail.js +182 -14
  23. package/dist/commands/mail.js.map +1 -1
  24. package/dist/commands/mail.test.js +425 -58
  25. package/dist/commands/mail.test.js.map +1 -1
  26. package/dist/commands/pre-push-gate-matrix.test.d.ts +17 -0
  27. package/dist/commands/pre-push-gate-matrix.test.d.ts.map +1 -0
  28. package/dist/commands/pre-push-gate-matrix.test.js +135 -0
  29. package/dist/commands/pre-push-gate-matrix.test.js.map +1 -0
  30. package/dist/commands/shield-admission.test.d.ts +14 -0
  31. package/dist/commands/shield-admission.test.d.ts.map +1 -0
  32. package/dist/commands/shield-admission.test.js +301 -0
  33. package/dist/commands/shield-admission.test.js.map +1 -0
  34. package/dist/commands/shield-classify.d.ts +10 -0
  35. package/dist/commands/shield-classify.d.ts.map +1 -1
  36. package/dist/commands/shield-classify.js +19 -1
  37. package/dist/commands/shield-classify.js.map +1 -1
  38. package/dist/commands/shield-covariate.test.js +3 -0
  39. package/dist/commands/shield-covariate.test.js.map +1 -1
  40. package/dist/commands/shield-estimate.js +5 -5
  41. package/dist/commands/shield-estimate.js.map +1 -1
  42. package/dist/commands/shield-estimate.test.js +7 -3
  43. package/dist/commands/shield-estimate.test.js.map +1 -1
  44. package/dist/commands/shield-nonreview.test.d.ts +12 -14
  45. package/dist/commands/shield-nonreview.test.d.ts.map +1 -1
  46. package/dist/commands/shield-nonreview.test.js +228 -42
  47. package/dist/commands/shield-nonreview.test.js.map +1 -1
  48. package/dist/commands/shield.d.ts +116 -1
  49. package/dist/commands/shield.d.ts.map +1 -1
  50. package/dist/commands/shield.js +439 -116
  51. package/dist/commands/shield.js.map +1 -1
  52. package/dist/git.d.ts +20 -2
  53. package/dist/git.d.ts.map +1 -1
  54. package/dist/git.js +11 -4
  55. package/dist/git.js.map +1 -1
  56. package/dist/git.test.js +58 -18
  57. package/dist/git.test.js.map +1 -1
  58. package/dist/index.js +17 -3
  59. package/dist/index.js.map +1 -1
  60. package/package.json +2 -2
@@ -1,20 +1,18 @@
1
1
  /**
2
- * CLI-level deterministic-skip NON-REVIEW tests (mmnto-ai/totem#2466).
2
+ * CLI-level deterministic-skip tests (mmnto-ai/totem#2466 → #2473).
3
3
  *
4
- * `totem review` has three deterministic skip paths that drop the ENTIRE diff
5
- * without examining it: all-non-code, no-code-after-filtering, and all-generated.
6
- * Each used to call `writeReviewedContentHash(...)` before returning, minting the
7
- * `.reviewed-content-hash` push-gate stamp for content nothing reviewed.
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 is not uniform, which is why all three are pinned here rather than
10
- * only the reported one:
11
- *
12
- * - all-non-code / filtered-empty fire only when no code file is in the diff,
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 () => TEST_CONFIG),
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 skip paths are NON-REVIEWS and never stamp (#2466)', () => {
71
+ describe('deterministic skips are not-applicable ADMISSIONS: record + calm line, never a stamp (#2473)', () => {
70
72
  let tmpDir;
71
- let warnings;
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
- warnings = [];
88
+ output = [];
89
+ infoLines = [];
90
+ warnLines = [];
76
91
  vi.spyOn(process, 'cwd').mockReturnValue(tmpDir);
77
92
  vi.spyOn(console, 'error').mockImplementation((...args) => {
78
- warnings.push(args.map(String).join(' '));
93
+ output.push(args.map(String).join(' '));
79
94
  });
80
95
  vi.spyOn(console, 'log').mockImplementation((...args) => {
81
- warnings.push(args.map(String).join(' '));
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, never on resolution.
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.mockResolvedValueOnce({ diff, changedFiles });
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('all-non-code: does not stamp, and says so', async () => {
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
- // And the skip is LOUD — a caller cannot read it as a clean review.
131
- expect(warnings.join('\n')).toMatch(/NON-REVIEW/);
132
- expect(warnings.join('\n')).toMatch(/does not authorize a push/);
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
- expect(warnings.join('\n')).toMatch(/NON-REVIEW/);
139
- expect(warnings.join('\n')).toMatch(/does not authorize a push/);
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 /NON-REVIEW/ match
150
- // would also pass if this fell through to the all-non-code branch, which
151
- // would mean the test proves nothing about the bypass it exists to cover.
152
- expect(warnings.join('\n')).toMatch(/every changed file is a generated artifact/);
153
- expect(warnings.join('\n')).toMatch(/does not authorize a push/);
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
- // Stage-2 wording specifically — distinguishes this from the Stage-1
162
- // all-non-code branch, which a generic NON-REVIEW match would not.
163
- expect(warnings.join('\n')).toMatch(/no code changes remain after filtering/);
164
- expect(warnings.join('\n')).toMatch(/does not authorize a push/);
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(warnings.join('\n')).not.toMatch(/NON-REVIEW/);
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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"}