@kernlang/cli 3.3.9 → 3.4.1

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.
@@ -17,7 +17,7 @@
17
17
  * and rewrites it to a proper:
18
18
  *
19
19
  * class name=AudioRecorder [export=true] [extends=X] [implements=Y]
20
- * field name=fd type=T private=true default={{ init }}
20
+ * field name=fd type=T private=true value={{ init }}
21
21
  * constructor params="..."
22
22
  * handler <<< ... >>>
23
23
  * method name=foo params="..." returns=T
@@ -34,6 +34,7 @@
34
34
  * throwaway `any`/`object`/`unknown` — i.e. no existing code relied on the
35
35
  * type of the const, because the const had no useful type to begin with.
36
36
  */
37
+ import { escapeKernString } from '@kernlang/core';
37
38
  import ts from 'typescript';
38
39
  const PLACEHOLDER_TYPES = new Set(['any', 'object', 'unknown']);
39
40
  /**
@@ -153,6 +154,116 @@ function formatParams(params, text) {
153
154
  })
154
155
  .join(',');
155
156
  }
157
+ /**
158
+ * Slice 3c — try to emit fn parameters as structured `param` child lines.
159
+ * Returns the lines on success, or `null` if the signature contains
160
+ * optional `?`, variadic `...`, or destructuring (all-or-nothing per
161
+ * signature; mirrors importer's tryFormatParamChildren).
162
+ */
163
+ function tryFormatParamChildren(parameters, text) {
164
+ if (parameters.length === 0)
165
+ return [];
166
+ for (const p of parameters) {
167
+ // Slice 3c-extension: optional `?`, variadic `...`, and destructured
168
+ // `{a,b}` / `[x,y]` are structurable (gates dropped, mirrors importer.ts).
169
+ if (!ts.isIdentifier(p.name) && !ts.isObjectBindingPattern(p.name) && !ts.isArrayBindingPattern(p.name)) {
170
+ return null;
171
+ }
172
+ // Multi-line types (inline object shapes spread across lines) cannot be
173
+ // round-tripped through a single-line `type="..."` quoted attribute —
174
+ // KERN's tokeniser treats newlines as record separators. Leave the
175
+ // whole signature legacy when any param has a multi-line type.
176
+ if (p.type && /\n/.test(text(p.type)))
177
+ return null;
178
+ }
179
+ const lines = [];
180
+ for (const p of parameters) {
181
+ const isObj = ts.isObjectBindingPattern(p.name);
182
+ const isArr = ts.isArrayBindingPattern(p.name);
183
+ const type = p.type ? text(p.type) : '';
184
+ if (isObj || isArr) {
185
+ // Codex review fix: rest+destructure (`...[first]: T[]`) is valid TS
186
+ // but the structured form has no slot for the outer `...`. Bail to
187
+ // legacy so the rest marker survives the round-trip. Mirrors importer.ts.
188
+ if (p.dotDotDotToken)
189
+ return null;
190
+ const childLines = tryFormatParamBindingPattern(p.name, text);
191
+ if (childLines === null)
192
+ return null;
193
+ const parts = ['param'];
194
+ if (type)
195
+ parts.push(`type="${escapeKernString(type)}"`);
196
+ if (p.questionToken)
197
+ parts.push('optional=true');
198
+ if (p.initializer)
199
+ parts.push(`value={{ ${text(p.initializer)} }}`);
200
+ lines.push(parts.join(' '));
201
+ for (const child of childLines)
202
+ lines.push(` ${child}`);
203
+ continue;
204
+ }
205
+ const name = text(p.name);
206
+ const parts = [`param name=${name}`];
207
+ if (type)
208
+ parts.push(`type="${escapeKernString(type)}"`);
209
+ if (p.questionToken)
210
+ parts.push('optional=true');
211
+ if (p.dotDotDotToken)
212
+ parts.push('variadic=true');
213
+ if (p.initializer) {
214
+ parts.push(`value={{ ${text(p.initializer)} }}`);
215
+ }
216
+ lines.push(parts.join(' '));
217
+ }
218
+ return lines;
219
+ }
220
+ /**
221
+ * Slice 3c-extension #3 — convert a TS `BindingPattern` (object or array) to
222
+ * structured `binding`/`element` lines. Returns null when the pattern uses
223
+ * rest, defaults, or nesting (caller falls back to legacy `params="..."`).
224
+ * Mirrors importer.ts `tryFormatParamBindingPattern`.
225
+ */
226
+ function tryFormatParamBindingPattern(pattern, text) {
227
+ const childLines = [];
228
+ if (ts.isObjectBindingPattern(pattern)) {
229
+ for (const el of pattern.elements) {
230
+ if (el.dotDotDotToken)
231
+ return null;
232
+ if (el.initializer)
233
+ return null;
234
+ if (!ts.isIdentifier(el.name))
235
+ return null;
236
+ const localName = text(el.name);
237
+ let line = `binding name=${localName}`;
238
+ if (el.propertyName) {
239
+ if (!ts.isIdentifier(el.propertyName))
240
+ return null;
241
+ line += ` key=${text(el.propertyName)}`;
242
+ }
243
+ childLines.push(line);
244
+ }
245
+ }
246
+ else {
247
+ let idx = 0;
248
+ for (const el of pattern.elements) {
249
+ if (ts.isOmittedExpression(el)) {
250
+ idx++;
251
+ continue;
252
+ }
253
+ if (el.dotDotDotToken)
254
+ return null;
255
+ if (el.initializer)
256
+ return null;
257
+ if (!ts.isIdentifier(el.name))
258
+ return null;
259
+ childLines.push(`element name=${text(el.name)} index=${idx}`);
260
+ idx++;
261
+ }
262
+ }
263
+ if (childLines.length === 0)
264
+ return null;
265
+ return childLines;
266
+ }
156
267
  function hasModifier(node, kind) {
157
268
  const mods = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined;
158
269
  return mods?.some((m) => m.kind === kind) ?? false;
@@ -225,7 +336,10 @@ function emitMember(member, text, indent) {
225
336
  const priv = hasModifier(member, ts.SyntaxKind.PrivateKeyword) ? ' private=true' : '';
226
337
  const readonly = hasModifier(member, ts.SyntaxKind.ReadonlyKeyword) ? ' readonly=true' : '';
227
338
  const staticStr = hasModifier(member, ts.SyntaxKind.StaticKeyword) ? ' static=true' : '';
228
- const init = rawInit ? ` default={{ ${rawInit} }}` : '';
339
+ // Slice 3b: emit `value={{ <init> }}` (canonical) — see importer.ts for
340
+ // the same migration. The `{{...}}` wrap stays so arbitrary TS initializer
341
+ // expressions pass through ValueIR via emitConstValue's ExprObject branch.
342
+ const init = rawInit ? ` value={{ ${rawInit} }}` : '';
229
343
  return [`${indent}field name=${name}${type ? ` type=${type}` : ''}${priv}${staticStr}${readonly}${init}`];
230
344
  }
231
345
  if (ts.isConstructorDeclaration(member)) {
@@ -264,10 +378,21 @@ function emitMember(member, text, indent) {
264
378
  shortcutFields.push(`${indent}field name=${paramName}${typeStr}${privStr}${readStr}`);
265
379
  assignLines.push(`this.${paramName} = ${paramName};`);
266
380
  }
267
- const params = formatParams(member.parameters, text);
268
- const paramsStr = params ? ` params="${params}"` : '';
381
+ // Slice 3c — try structured `param` children first.
382
+ const ctorParamChildren = tryFormatParamChildren(member.parameters, text);
383
+ const paramsStr = ctorParamChildren !== null
384
+ ? ''
385
+ : (() => {
386
+ const params = formatParams(member.parameters, text);
387
+ return params ? ` params="${params}"` : '';
388
+ })();
269
389
  const lines = [...shortcutFields];
270
390
  lines.push(`${indent}constructor${paramsStr}`);
391
+ if (ctorParamChildren) {
392
+ for (const childLine of ctorParamChildren) {
393
+ lines.push(`${indent} ${childLine}`);
394
+ }
395
+ }
271
396
  const body = member.body;
272
397
  const bodyText = body ? text(body).slice(1, -1) : '';
273
398
  const trimmed = body ? dedentInteriorLines(bodyText) : '';
@@ -291,10 +416,16 @@ function emitMember(member, text, indent) {
291
416
  // silently — bail so the class stays in its handler form for now.
292
417
  if (hasModifier(member, ts.SyntaxKind.AbstractKeyword) || !member.body)
293
418
  return null;
294
- const params = formatParams(member.parameters, text);
419
+ // Slice 3c — try structured `param` children first.
420
+ const methodParamChildren = tryFormatParamChildren(member.parameters, text);
295
421
  const rawReturn = member.type ? text(member.type) : '';
296
422
  const name = text(member.name);
297
- const paramsStr = params ? ` params="${params}"` : '';
423
+ const paramsStr = methodParamChildren !== null
424
+ ? ''
425
+ : (() => {
426
+ const params = formatParams(member.parameters, text);
427
+ return params ? ` params="${params}"` : '';
428
+ })();
298
429
  const returns = rawReturn ? quoteTypeIfNeeded(rawReturn) : '';
299
430
  const returnsStr = returns ? ` returns=${returns}` : '';
300
431
  const isAsync = hasModifier(member, ts.SyntaxKind.AsyncKeyword);
@@ -304,6 +435,11 @@ function emitMember(member, text, indent) {
304
435
  const staticStr = isStatic ? ' static=true' : '';
305
436
  const privStr = isPriv ? ' private=true' : '';
306
437
  const lines = [`${indent}method name=${name}${paramsStr}${returnsStr}${asyncStr}${staticStr}${privStr}`];
438
+ if (methodParamChildren) {
439
+ for (const childLine of methodParamChildren) {
440
+ lines.push(`${indent} ${childLine}`);
441
+ }
442
+ }
307
443
  const body = member.body;
308
444
  if (body) {
309
445
  const bodyText = text(body).slice(1, -1);
@@ -338,14 +474,25 @@ function emitMember(member, text, indent) {
338
474
  if (ts.isSetAccessorDeclaration(member)) {
339
475
  if (!member.body)
340
476
  return null;
341
- const params = formatParams(member.parameters, text);
477
+ // Slice 3c — try structured `param` children first.
478
+ const setterParamChildren = tryFormatParamChildren(member.parameters, text);
342
479
  const name = text(member.name);
343
- const paramsStr = params ? ` params="${params}"` : '';
480
+ const paramsStr = setterParamChildren !== null
481
+ ? ''
482
+ : (() => {
483
+ const params = formatParams(member.parameters, text);
484
+ return params ? ` params="${params}"` : '';
485
+ })();
344
486
  const isStatic = hasModifier(member, ts.SyntaxKind.StaticKeyword);
345
487
  const isPriv = hasModifier(member, ts.SyntaxKind.PrivateKeyword);
346
488
  const staticStr = isStatic ? ' static=true' : '';
347
489
  const privStr = isPriv ? ' private=true' : '';
348
490
  const lines = [`${indent}setter name=${name}${paramsStr}${privStr}${staticStr}`];
491
+ if (setterParamChildren) {
492
+ for (const childLine of setterParamChildren) {
493
+ lines.push(`${indent} ${childLine}`);
494
+ }
495
+ }
349
496
  const bodyText = text(member.body).slice(1, -1);
350
497
  const trimmed = dedentInteriorLines(bodyText);
351
498
  lines.push(`${indent} handler <<<`);
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-class-body.js","sourceRoot":"","sources":["../../src/commands/migrate-class-body.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate-class-body.js","sourceRoot":"","sources":["../../src/commands/migrate-class-body.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { clearTemplates, registerTemplate, VALID_TARGETS } from '@kernlang/core';
2
- import { analyzeTaint, buildLLMPrompt, buildReviewInstructions, checkEnforcement, checkSpecFiles, clearReviewCache, dedup, exportKernIR, formatEnforcement, formatReport, formatSARIF, formatSARIFWithMetadata, formatSummary, getRuleRegistry, isLLMAvailable, linkToNodes, ReviewHealthBuilder, resolveImportGraph, reviewFile, reviewGraph, runESLint, runLLMReview, runTSCDiagnosticsFromPaths, specViolationsToFindings, } from '@kernlang/review';
2
+ import { analyzeTaint, applyReviewPolicyDefaults, buildLLMPrompt, buildReviewInstructions, checkEnforcement, checkSpecFiles, clearReviewCache, dedup, evaluateReviewReports, exportKernIR, formatEnforcement, formatReport, formatReviewEvalSummary, formatReviewTelemetrySummary, formatSARIF, formatSARIFWithMetadata, formatSummary, getRuleQualityProfile, getRuleRegistry, isLLMAvailable, linkToNodes, normalizeReviewEvalManifest, ReviewHealthBuilder, readReviewTelemetrySnapshots, resolveImportGraph, reviewFile, reviewGraph, runESLint, runLLMReview, runTSCDiagnosticsFromPaths, specViolationsToFindings, summarizeReviewEvalResults, summarizeReviewTelemetry, writeReviewTelemetrySnapshot, } from '@kernlang/review';
3
3
  import { execFileSync } from 'child_process';
4
4
  import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from 'fs';
5
5
  import { basename, dirname, relative, resolve } from 'path';
6
+ import { withoutLocalGitEnv } from '../git-env.js';
6
7
  import { withOptionalRemoteRepo } from '../remote-repo.js';
7
8
  import { compareReportsToBaseline, createReviewBaseline, filterReportsToNewFindings, getReviewBaselineKeyForFinding, parseReviewBaseline, } from '../review-baseline.js';
8
9
  import { collectTsFilesFlat, hasFlag, loadConfig, parseAndSurface, parseFlag, parseFlagOrNext } from '../shared.js';
@@ -19,6 +20,7 @@ export function detectAutoDiffBase(cwd = process.cwd()) {
19
20
  try {
20
21
  execFileSync('git', ['rev-parse', '--verify', '--quiet', ref], {
21
22
  cwd,
23
+ env: withoutLocalGitEnv(),
22
24
  stdio: ['ignore', 'ignore', 'ignore'],
23
25
  });
24
26
  return true;
@@ -31,6 +33,7 @@ export function detectAutoDiffBase(cwd = process.cwd()) {
31
33
  try {
32
34
  execFileSync('git', ['rev-parse', '--is-inside-work-tree'], {
33
35
  cwd,
36
+ env: withoutLocalGitEnv(),
34
37
  stdio: ['ignore', 'ignore', 'ignore'],
35
38
  });
36
39
  }
@@ -43,15 +46,25 @@ export function detectAutoDiffBase(cwd = process.cwd()) {
43
46
  }
44
47
  return undefined;
45
48
  }
49
+ function parseOptionalFlagOrNext(args, flag, fallback) {
50
+ const eqArg = args.find((a) => a.startsWith(`${flag}=`));
51
+ if (eqArg)
52
+ return eqArg.slice(flag.length + 1);
53
+ const idx = args.indexOf(flag);
54
+ if (idx !== -1 && args[idx + 1] && !args[idx + 1].startsWith('--'))
55
+ return args[idx + 1];
56
+ return fallback;
57
+ }
46
58
  // ── Review pipeline ──────────────────────────────────────────────────────
47
59
  async function runReviewPipeline(reviewConfig, entryFilePaths, modes) {
60
+ const startedAt = Date.now();
48
61
  const { graphMode, batchMode, llmMode, cloudMode, securityMode, mcpMode, specMode, fixMode, autofixMode, lintMode, skipGenerated, exportKern, enforce, jsonOutput, sarifOutput, maxDepth, batchSize, tsconfigPath, specFile, minCoverageArg, maxComplexityArg, maxErrorsArg, maxWarningsArg, baseline, writeBaselinePath, newOnly, } = modes;
49
62
  let reports = [];
50
63
  if (graphMode && entryFilePaths.length > 0) {
51
64
  const graphOpts = { maxDepth, tsConfigFilePath: tsconfigPath };
52
65
  const graph = resolveImportGraph(entryFilePaths, graphOpts);
53
66
  console.log(` Graph: ${graph.totalFiles} files resolved (${graph.skipped} skipped, depth ${maxDepth})`);
54
- reports = reviewGraph(entryFilePaths, reviewConfig, graphOpts);
67
+ reports = reviewGraph(entryFilePaths, reviewConfig, { ...graphOpts, precomputedGraph: graph });
55
68
  }
56
69
  else if (batchMode && entryFilePaths.length > batchSize) {
57
70
  const totalBatches = Math.ceil(entryFilePaths.length / batchSize);
@@ -633,6 +646,18 @@ async function runReviewPipeline(reviewConfig, entryFilePaths, modes) {
633
646
  console.log(` Baseline written: ${writeBaselinePath}`);
634
647
  }
635
648
  }
649
+ if (reviewConfig.telemetry?.enabled) {
650
+ const written = writeReviewTelemetrySnapshot(reports, {
651
+ policy: reviewConfig.policy,
652
+ outputPath: reviewConfig.telemetry.outputPath,
653
+ append: reviewConfig.telemetry.append,
654
+ includeFindings: reviewConfig.telemetry.includeFindings,
655
+ durationMs: Date.now() - startedAt,
656
+ });
657
+ if (!jsonOutput && !sarifOutput) {
658
+ console.log(` Telemetry written: ${relative(process.cwd(), written.outputPath)}`);
659
+ }
660
+ }
636
661
  // Output
637
662
  if (jsonOutput) {
638
663
  const enriched = reportsForOutput.map((report) => {
@@ -705,11 +730,74 @@ async function runReviewPipeline(reviewConfig, entryFilePaths, modes) {
705
730
  }
706
731
  return { reports, exitCode: 0 };
707
732
  }
733
+ function runReviewEvalManifest(manifestPath, baseConfig) {
734
+ const resolvedManifestPath = resolve(manifestPath);
735
+ const raw = JSON.parse(readFileSync(resolvedManifestPath, 'utf-8'));
736
+ const manifest = normalizeReviewEvalManifest(raw);
737
+ const manifestDir = dirname(resolvedManifestPath);
738
+ const results = [];
739
+ for (const testCase of manifest.cases) {
740
+ const files = testCase.files.map((file) => resolve(manifestDir, file));
741
+ const caseConfig = {
742
+ ...baseConfig,
743
+ ...(testCase.config ?? {}),
744
+ target: testCase.config?.target ?? baseConfig.target,
745
+ };
746
+ const startedAt = Date.now();
747
+ try {
748
+ const reports = testCase.graph
749
+ ? reviewGraph(files, caseConfig, {
750
+ maxDepth: testCase.maxDepth,
751
+ tsConfigFilePath: caseConfig.tsConfigFilePath,
752
+ })
753
+ : files.map((file) => reviewFile(file, caseConfig));
754
+ results.push(evaluateReviewReports({ ...testCase, files }, reports, { durationMs: Date.now() - startedAt }));
755
+ }
756
+ catch (err) {
757
+ results.push({
758
+ name: testCase.name,
759
+ passed: false,
760
+ files,
761
+ findings: 0,
762
+ errors: 0,
763
+ warnings: 0,
764
+ notes: 0,
765
+ durationMs: Date.now() - startedAt,
766
+ failures: [`review failed: ${err.message}`],
767
+ });
768
+ }
769
+ }
770
+ return summarizeReviewEvalResults(results);
771
+ }
708
772
  // ── Review command entry point ───────────────────────────────────────────
709
773
  async function runReviewLocal(args) {
710
774
  const jsonOutput = hasFlag(args, '--json');
711
775
  const sarifOutput = hasFlag(args, '--sarif', '--format=sarif');
712
- const recursive = hasFlag(args, '--recursive', '-r');
776
+ const telemetryReportMode = args.some((arg) => arg === '--telemetry-report' || arg.startsWith('--telemetry-report='));
777
+ const telemetryReportPath = parseOptionalFlagOrNext(args, '--telemetry-report', '.kern/cache/review-telemetry.jsonl');
778
+ if (telemetryReportMode) {
779
+ let summary;
780
+ try {
781
+ const snapshots = readReviewTelemetrySnapshots(resolve(telemetryReportPath));
782
+ summary = summarizeReviewTelemetry(snapshots);
783
+ }
784
+ catch (err) {
785
+ console.error(`Failed to read telemetry report: ${err.message}`);
786
+ process.exit(1);
787
+ }
788
+ console.log(jsonOutput ? JSON.stringify(summary, null, 2) : formatReviewTelemetrySummary(summary));
789
+ process.exit(0);
790
+ }
791
+ // `--full` is the user-facing "thorough" mode (opt out of diff-default,
792
+ // scan the whole project). It MUST imply `--recursive`: otherwise
793
+ // `kern review --full` from a repo root only scans top-level files,
794
+ // which is the opposite of what "full" suggests. This was a documented
795
+ // UX surprise (handoff item #4). The implication transitively activates
796
+ // `--graph` below (line: `graphMode = ... || recursive`), which is the
797
+ // thorough mode for cross-file dead-export / async rules — also what
798
+ // "full" should mean.
799
+ const fullMode = hasFlag(args, '--full');
800
+ const recursive = hasFlag(args, '--recursive', '-r') || fullMode;
713
801
  const enforce = hasFlag(args, '--enforce');
714
802
  const exportKern = hasFlag(args, '--export-kern');
715
803
  const llmMode = hasFlag(args, '--llm');
@@ -774,9 +862,23 @@ async function runReviewLocal(args) {
774
862
  }
775
863
  const minConfidenceArg = parseFlag(args, '--min-confidence');
776
864
  const minConfidence = minConfidenceArg ? Number(minConfidenceArg) : undefined;
865
+ const policyArg = parseFlagOrNext(args, '--policy');
866
+ if (policyArg && policyArg !== 'guard' && policyArg !== 'ci' && policyArg !== 'audit') {
867
+ console.error("--policy must be 'guard', 'ci', or 'audit'");
868
+ process.exit(1);
869
+ }
870
+ if (auditMode && policyArg && policyArg !== 'audit') {
871
+ console.error('--audit cannot be combined with --policy other than audit');
872
+ process.exit(1);
873
+ }
874
+ const telemetryOutputPath = parseFlagOrNext(args, '--telemetry-out');
875
+ const telemetryEnabled = hasFlag(args, '--telemetry') || telemetryOutputPath !== undefined;
876
+ const telemetryIncludeFindings = hasFlag(args, '--telemetry-findings');
877
+ const telemetryReplace = hasFlag(args, '--telemetry-replace');
777
878
  const disableRuleArgs = args.filter((a) => a.startsWith('--disable-rule=')).map((a) => a.split('=')[1]);
778
879
  const baselinePath = parseFlagOrNext(args, '--baseline');
779
880
  const writeBaselinePath = parseFlagOrNext(args, '--write-baseline');
881
+ const evalManifestPath = parseFlagOrNext(args, '--eval-manifest');
780
882
  const newOnly = hasFlag(args, '--new-only');
781
883
  if (newOnly && !baselinePath) {
782
884
  console.error('--new-only requires --baseline=<file.json>');
@@ -801,7 +903,6 @@ async function runReviewLocal(args) {
801
903
  let diffBase = args.some((a) => a === '--diff' || a.startsWith('--diff'))
802
904
  ? parseFlagOrNext(args, '--diff') || 'origin/main'
803
905
  : undefined;
804
- const fullMode = hasFlag(args, '--full');
805
906
  if (fullMode && diffBase) {
806
907
  console.error(' --full and --diff are mutually exclusive.');
807
908
  process.exit(1);
@@ -841,11 +942,17 @@ async function runReviewLocal(args) {
841
942
  layers.get(r.layer).push(r);
842
943
  }
843
944
  console.log(`\n KERN Review Rules (target: ${target}) — ${rules.length} rules active\n`);
945
+ console.log(' Columns: SEV PRECISION LIFECYCLE CI RULE');
946
+ console.log('');
844
947
  for (const [layer, layerRules] of layers) {
845
948
  console.log(` [${layer}] (${layerRules.length} rules)`);
846
949
  for (const r of layerRules) {
847
950
  const sev = r.severity === 'error' ? 'ERR' : r.severity === 'warning' ? 'WRN' : 'INF';
848
- console.log(` ${sev} ${r.id.padEnd(30)} ${r.description}`);
951
+ const profile = getRuleQualityProfile(r.id);
952
+ const precision = (profile?.precision ?? 'medium').toUpperCase().padEnd(12);
953
+ const lifecycle = (profile?.lifecycle ?? 'stable').toUpperCase().padEnd(11);
954
+ const ciDefault = (profile?.ciDefault ?? 'guarded').toUpperCase().padEnd(7);
955
+ console.log(` ${sev} ${precision}${lifecycle}${ciDefault}${r.id.padEnd(30)} ${r.description}`);
849
956
  }
850
957
  console.log();
851
958
  }
@@ -868,6 +975,9 @@ async function runReviewLocal(args) {
868
975
  '--max-warnings',
869
976
  '--min-confidence',
870
977
  '--cross-stack-mode',
978
+ '--policy',
979
+ '--telemetry-out',
980
+ '--eval-manifest',
871
981
  '--baseline',
872
982
  '--write-baseline',
873
983
  ]);
@@ -885,6 +995,9 @@ async function runReviewLocal(args) {
885
995
  reviewInputs.push(arg);
886
996
  }
887
997
  let reviewInput = reviewInputs[0];
998
+ if (!reviewInput && evalManifestPath) {
999
+ reviewInput = '__eval__';
1000
+ }
888
1001
  const remoteUrl = parseFlagOrNext(args, '--git');
889
1002
  if (remoteUrl && !reviewInput && !diffBase) {
890
1003
  reviewInput = '.';
@@ -913,6 +1026,7 @@ async function runReviewLocal(args) {
913
1026
  const sanitizedBase = diffBase.replace(/[^a-zA-Z0-9_./\-~]/g, '');
914
1027
  const diffFiles = execFileSync('git', ['diff', '--name-only', '--diff-filter=ACMR', sanitizedBase], {
915
1028
  encoding: 'utf-8',
1029
+ env: withoutLocalGitEnv(),
916
1030
  })
917
1031
  .trim()
918
1032
  .split('\n')
@@ -935,7 +1049,7 @@ async function runReviewLocal(args) {
935
1049
  try {
936
1050
  const unifiedDiff = execFileSync('git', ['diff', '--unified=0', '--diff-filter=ACMR', sanitizedBase], {
937
1051
  encoding: 'utf-8',
938
- env: { ...process.env, LC_ALL: 'C' },
1052
+ env: { ...withoutLocalGitEnv(), LC_ALL: 'C' },
939
1053
  });
940
1054
  let currentFile = '';
941
1055
  for (const line of unifiedDiff.split('\n')) {
@@ -971,13 +1085,14 @@ async function runReviewLocal(args) {
971
1085
  if (!reviewInput) {
972
1086
  console.error('Usage: kern review [file|dir] [--full] [--diff base] [--git=<url>] [--security] [--mcp] [--llm] [--spec file.kern] [--cloud] [--baseline=file.json] [--new-only]');
973
1087
  console.error(' [--write-baseline=file.json] [--json] [--sarif] [--recursive] [--enforce] [--strict-parse] [--audit] [--cross-stack-mode guard|audit]');
1088
+ console.error(' [--policy guard|ci|audit] [--telemetry] [--telemetry-out file] [--telemetry-report file] [--eval-manifest file]');
974
1089
  console.error(' [--fix] [--autofix] [--require-confidence] [--rules-dir <dir>] [--include-generated]');
975
1090
  console.error('');
976
1091
  console.error(' Default (inside git): reviews changes vs origin/main. Use --full to scan the whole tree.');
977
1092
  console.error(' Default skips generated files (src/generated/, files with @generated stamps). Use --include-generated to audit them.');
978
1093
  process.exit(1);
979
1094
  }
980
- if (reviewInput !== '__diff__') {
1095
+ if (reviewInput !== '__diff__' && reviewInput !== '__eval__') {
981
1096
  const reviewPath = resolve(reviewInput);
982
1097
  const stat = existsSync(reviewPath) ? statSync(reviewPath) : null;
983
1098
  if (!stat) {
@@ -1002,7 +1117,7 @@ async function runReviewLocal(args) {
1002
1117
  }
1003
1118
  const cfgDisabledRules = reviewCfg.review.disabledRules ?? [];
1004
1119
  const mergedDisabledRules = [...new Set([...cfgDisabledRules, ...disableRuleArgs])];
1005
- const reviewConfig = {
1120
+ let reviewConfig = {
1006
1121
  registeredTemplates: [],
1007
1122
  minCoverage: minCoverage ?? 0,
1008
1123
  enforceTemplates: enforce,
@@ -1014,12 +1129,21 @@ async function runReviewLocal(args) {
1014
1129
  crossStackMode: auditMode
1015
1130
  ? 'audit'
1016
1131
  : (crossStackModeArg ?? reviewCfg.review.crossStackMode),
1132
+ policy: policyArg ?? reviewCfg.review.policy ?? (auditMode ? 'audit' : undefined),
1017
1133
  showConfidence: showConfidence || reviewCfg.review.showConfidence,
1018
1134
  minConfidence: minConfidence ?? reviewCfg.review.minConfidence,
1019
1135
  disabledRules: mergedDisabledRules.length > 0 ? mergedDisabledRules : undefined,
1020
1136
  rulesDirs: rulesDirs.length > 0 ? rulesDirs : undefined,
1021
1137
  strict,
1022
1138
  strictParse,
1139
+ telemetry: telemetryEnabled || reviewCfg.review.telemetry.enabled
1140
+ ? {
1141
+ enabled: true,
1142
+ outputPath: telemetryOutputPath ? resolve(telemetryOutputPath) : reviewCfg.review.telemetry.outputPath,
1143
+ append: telemetryReplace ? false : reviewCfg.review.telemetry.append,
1144
+ includeFindings: telemetryIncludeFindings || reviewCfg.review.telemetry.includeFindings,
1145
+ }
1146
+ : undefined,
1023
1147
  requireConfidenceAnnotations: requireConfidenceAnnotations || reviewCfg.review.requireConfidenceAnnotations,
1024
1148
  tsConfigFilePath: tsconfigPath,
1025
1149
  publicApi: reviewCfg.review.publicApi.files.length > 0 || reviewCfg.review.publicApi.symbols.length > 0
@@ -1030,6 +1154,17 @@ async function runReviewLocal(args) {
1030
1154
  }
1031
1155
  : undefined,
1032
1156
  };
1157
+ const explicitPolicy = Boolean(policyArg || reviewCfg.review.policy || auditMode);
1158
+ if (explicitPolicy) {
1159
+ reviewConfig = applyReviewPolicyDefaults(reviewConfig, {
1160
+ crossStackMode: Boolean(crossStackModeArg || auditMode),
1161
+ minConfidence: minConfidenceArg !== undefined || reviewCfg.review.minConfidence !== 0,
1162
+ maxErrors: maxErrorsArg !== undefined,
1163
+ maxWarnings: maxWarningsArg !== undefined,
1164
+ strict: strictArg !== undefined,
1165
+ strictParse,
1166
+ });
1167
+ }
1033
1168
  // Load templates for review
1034
1169
  if (reviewCfg.templates && reviewCfg.templates.length > 0) {
1035
1170
  clearTemplates();
@@ -1069,6 +1204,11 @@ async function runReviewLocal(args) {
1069
1204
  console.log(` Templates loaded: ${reviewConfig.registeredTemplates.join(', ')}`);
1070
1205
  }
1071
1206
  }
1207
+ if (evalManifestPath) {
1208
+ const summary = runReviewEvalManifest(evalManifestPath, reviewConfig);
1209
+ console.log(jsonOutput ? JSON.stringify(summary, null, 2) : formatReviewEvalSummary(summary));
1210
+ process.exit(summary.passed ? 0 : 1);
1211
+ }
1072
1212
  // Collect entry file paths
1073
1213
  let entryFilePaths = [];
1074
1214
  if (reviewInput === '__diff__') {
@@ -1103,10 +1243,10 @@ async function runReviewLocal(args) {
1103
1243
  lintMode,
1104
1244
  skipGenerated,
1105
1245
  exportKern,
1106
- enforce,
1246
+ enforce: enforce || reviewConfig.policy === 'ci',
1107
1247
  jsonOutput,
1108
1248
  sarifOutput,
1109
- strictParse,
1249
+ strictParse: Boolean(reviewConfig.strictParse),
1110
1250
  maxDepth,
1111
1251
  batchSize,
1112
1252
  tsconfigPath,