@kernlang/review 3.2.3 → 3.3.5

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 (92) hide show
  1. package/dist/cache.js +140 -3
  2. package/dist/cache.js.map +1 -1
  3. package/dist/call-graph.d.ts +4 -1
  4. package/dist/call-graph.js +290 -25
  5. package/dist/call-graph.js.map +1 -1
  6. package/dist/concept-rules/contract-drift.d.ts +21 -0
  7. package/dist/concept-rules/contract-drift.js +66 -0
  8. package/dist/concept-rules/contract-drift.js.map +1 -0
  9. package/dist/concept-rules/cross-stack-utils.d.ts +50 -0
  10. package/dist/concept-rules/cross-stack-utils.js +98 -0
  11. package/dist/concept-rules/cross-stack-utils.js.map +1 -0
  12. package/dist/concept-rules/index.js +12 -1
  13. package/dist/concept-rules/index.js.map +1 -1
  14. package/dist/concept-rules/tainted-across-wire.d.ts +33 -0
  15. package/dist/concept-rules/tainted-across-wire.js +98 -0
  16. package/dist/concept-rules/tainted-across-wire.js.map +1 -0
  17. package/dist/concept-rules/untyped-api-response.d.ts +30 -0
  18. package/dist/concept-rules/untyped-api-response.js +71 -0
  19. package/dist/concept-rules/untyped-api-response.js.map +1 -0
  20. package/dist/external-tools.d.ts +36 -4
  21. package/dist/external-tools.js +79 -12
  22. package/dist/external-tools.js.map +1 -1
  23. package/dist/graph.js +149 -39
  24. package/dist/graph.js.map +1 -1
  25. package/dist/index.d.ts +29 -4
  26. package/dist/index.js +329 -47
  27. package/dist/index.js.map +1 -1
  28. package/dist/inferrer.d.ts +5 -0
  29. package/dist/inferrer.js +1 -1
  30. package/dist/inferrer.js.map +1 -1
  31. package/dist/llm-bridge.d.ts +26 -1
  32. package/dist/llm-bridge.js +42 -6
  33. package/dist/llm-bridge.js.map +1 -1
  34. package/dist/llm-review.js +29 -11
  35. package/dist/llm-review.js.map +1 -1
  36. package/dist/mappers/ts-concepts.js +278 -7
  37. package/dist/mappers/ts-concepts.js.map +1 -1
  38. package/dist/public-api.d.ts +73 -0
  39. package/dist/public-api.js +351 -0
  40. package/dist/public-api.js.map +1 -0
  41. package/dist/reporter.d.ts +5 -0
  42. package/dist/reporter.js +119 -84
  43. package/dist/reporter.js.map +1 -1
  44. package/dist/review-health.d.ts +38 -0
  45. package/dist/review-health.js +60 -0
  46. package/dist/review-health.js.map +1 -0
  47. package/dist/rules/async.js +4 -16
  48. package/dist/rules/async.js.map +1 -1
  49. package/dist/rules/base.js +112 -87
  50. package/dist/rules/base.js.map +1 -1
  51. package/dist/rules/confidence.d.ts +2 -2
  52. package/dist/rules/confidence.js +32 -15
  53. package/dist/rules/confidence.js.map +1 -1
  54. package/dist/rules/dead-code.d.ts +2 -1
  55. package/dist/rules/dead-code.js +49 -3
  56. package/dist/rules/dead-code.js.map +1 -1
  57. package/dist/rules/index.js +131 -0
  58. package/dist/rules/index.js.map +1 -1
  59. package/dist/rules/kern-source-cross-file.d.ts +2 -0
  60. package/dist/rules/kern-source-cross-file.js +102 -0
  61. package/dist/rules/kern-source-cross-file.js.map +1 -0
  62. package/dist/rules/kern-source.js +86 -9
  63. package/dist/rules/kern-source.js.map +1 -1
  64. package/dist/rules/nextjs-app-router.js +936 -31
  65. package/dist/rules/nextjs-app-router.js.map +1 -1
  66. package/dist/rules/nextjs.js +193 -10
  67. package/dist/rules/nextjs.js.map +1 -1
  68. package/dist/rules/react-composition.js +442 -61
  69. package/dist/rules/react-composition.js.map +1 -1
  70. package/dist/rules/react-hooks.js +51 -2
  71. package/dist/rules/react-hooks.js.map +1 -1
  72. package/dist/rules/react.js +265 -49
  73. package/dist/rules/react.js.map +1 -1
  74. package/dist/rules/utils.d.ts +37 -2
  75. package/dist/rules/utils.js +113 -0
  76. package/dist/rules/utils.js.map +1 -1
  77. package/dist/semantic-diff.js +1 -1
  78. package/dist/semantic-diff.js.map +1 -1
  79. package/dist/taint-ast.js +228 -4
  80. package/dist/taint-ast.js.map +1 -1
  81. package/dist/taint-crossfile.d.ts +30 -2
  82. package/dist/taint-crossfile.js +280 -59
  83. package/dist/taint-crossfile.js.map +1 -1
  84. package/dist/taint-types.d.ts +2 -1
  85. package/dist/taint-types.js +32 -2
  86. package/dist/taint-types.js.map +1 -1
  87. package/dist/taint.d.ts +1 -1
  88. package/dist/taint.js +1 -1
  89. package/dist/taint.js.map +1 -1
  90. package/dist/types.d.ts +80 -0
  91. package/dist/types.js.map +1 -1
  92. package/package.json +3 -3
@@ -421,6 +421,13 @@ const REGISTRY = [
421
421
  description: 'Non-stable key prop (index, random, Date.now)',
422
422
  precision: 'high',
423
423
  },
424
+ {
425
+ id: 'mapped-fragment-key',
426
+ layer: 'react',
427
+ severity: 'warning',
428
+ description: 'Fragment returned from .map() cannot carry a key in shorthand form',
429
+ precision: 'high',
430
+ },
424
431
  {
425
432
  id: 'stale-closure',
426
433
  layer: 'react',
@@ -510,6 +517,14 @@ const REGISTRY = [
510
517
  precision: 'high',
511
518
  rolloutPhase: 2,
512
519
  },
520
+ {
521
+ id: 'usecallback-no-benefit',
522
+ layer: 'react-hooks',
523
+ severity: 'info',
524
+ description: 'useCallback value is only used as a host-element event handler and has no memoized consumer in the current file',
525
+ precision: 'high',
526
+ rolloutPhase: 2,
527
+ },
513
528
  // Async — Wave 2 net-new rules
514
529
  {
515
530
  id: 'promise-all-error-swallow',
@@ -544,6 +559,30 @@ const REGISTRY = [
544
559
  precision: 'medium',
545
560
  rolloutPhase: 4,
546
561
  },
562
+ {
563
+ id: 'prop-drill-chain',
564
+ layer: 'react-composition',
565
+ severity: 'warning',
566
+ description: 'Component passes props into an imported wrapper that also passes them through — multi-hop prop drilling across files',
567
+ precision: 'high',
568
+ rolloutPhase: 4,
569
+ },
570
+ {
571
+ id: 'memoized-child-inline-prop',
572
+ layer: 'react-composition',
573
+ severity: 'warning',
574
+ description: 'React.memo child receives inline object/array/function props that change identity every render and defeat memoization',
575
+ precision: 'high',
576
+ rolloutPhase: 4,
577
+ },
578
+ {
579
+ id: 'memoized-child-inline-children',
580
+ layer: 'react-composition',
581
+ severity: 'warning',
582
+ description: 'React.memo child receives inline JSX children that create new element identities every render and defeat memoization',
583
+ precision: 'high',
584
+ rolloutPhase: 4,
585
+ },
547
586
  {
548
587
  id: 'parent-rerender-via-state',
549
588
  layer: 'react-composition',
@@ -763,6 +802,13 @@ const REGISTRY = [
763
802
  description: 'Nondeterministic expression causes SSR/client mismatch',
764
803
  precision: 'high',
765
804
  },
805
+ {
806
+ id: 'next-client-api-in-server',
807
+ layer: 'nextjs',
808
+ severity: 'error',
809
+ description: 'Client-only next/navigation hook used in a Server Component',
810
+ precision: 'high',
811
+ },
766
812
  {
767
813
  id: 'missing-use-client',
768
814
  layer: 'nextjs',
@@ -770,6 +816,42 @@ const REGISTRY = [
770
816
  description: 'Event handler in Server Component — needs use client',
771
817
  precision: 'high',
772
818
  },
819
+ {
820
+ id: 'undefined-reference',
821
+ layer: 'kern-source',
822
+ severity: 'error',
823
+ description: 'Handler references names not declared in visible KERN scope',
824
+ },
825
+ {
826
+ id: 'type-model-mismatch',
827
+ layer: 'kern-source',
828
+ severity: 'warning',
829
+ description: 'Literal-union type used like an object in handler code',
830
+ },
831
+ {
832
+ id: 'unused-state',
833
+ layer: 'kern-source',
834
+ severity: 'warning',
835
+ description: 'State declared but never referenced within its KERN scope',
836
+ },
837
+ {
838
+ id: 'handler-heavy',
839
+ layer: 'kern-source',
840
+ severity: 'info',
841
+ description: 'Inline handler JS dominates the .kern file',
842
+ },
843
+ {
844
+ id: 'missing-confidence',
845
+ layer: 'kern-source',
846
+ severity: 'info',
847
+ description: 'No confidence annotations found on external or uncertain logic',
848
+ },
849
+ {
850
+ id: 'kern-duplicate-symbol',
851
+ layer: 'kern-source',
852
+ severity: 'error',
853
+ description: 'Top-level named KERN declaration defined in multiple files',
854
+ },
773
855
  // Next.js App Router (Wave 1)
774
856
  {
775
857
  id: 'use-client-drilled-too-high',
@@ -787,6 +869,54 @@ const REGISTRY = [
787
869
  precision: 'high',
788
870
  rolloutPhase: 1,
789
871
  },
872
+ {
873
+ id: 'browser-api-in-server',
874
+ layer: 'nextjs-app-router',
875
+ severity: 'error',
876
+ description: 'Browser globals like window/document/localStorage used in a Server Component or server boundary',
877
+ precision: 'high',
878
+ rolloutPhase: 1,
879
+ },
880
+ {
881
+ id: 'use-action-state-missing-pending',
882
+ layer: 'nextjs-app-router',
883
+ severity: 'warning',
884
+ description: 'useActionState is wired to a form action but the pending tuple value is not captured',
885
+ precision: 'medium',
886
+ rolloutPhase: 1,
887
+ },
888
+ {
889
+ id: 'use-action-state-missing-feedback',
890
+ layer: 'nextjs-app-router',
891
+ severity: 'warning',
892
+ description: 'useActionState is wired to a form action but its returned state is never read for success/error feedback',
893
+ precision: 'medium',
894
+ rolloutPhase: 1,
895
+ },
896
+ {
897
+ id: 'server-action-form-missing-pending',
898
+ layer: 'nextjs-app-router',
899
+ severity: 'warning',
900
+ description: 'Native submit control posts directly to a same-file Server Action but no pending-state UX substrate was detected',
901
+ precision: 'medium',
902
+ rolloutPhase: 1,
903
+ },
904
+ {
905
+ id: 'server-action-form-return-value-ignored',
906
+ layer: 'nextjs-app-router',
907
+ severity: 'warning',
908
+ description: 'Direct form action points at a same-file Server Action that returns data no plain form can observe',
909
+ precision: 'high',
910
+ rolloutPhase: 1,
911
+ },
912
+ {
913
+ id: 'server-action-form-mutation-missing-invalidation',
914
+ layer: 'nextjs-app-router',
915
+ severity: 'warning',
916
+ description: 'Direct form action points at a mutating Server Action that neither revalidates cache nor redirects after submit',
917
+ precision: 'medium',
918
+ rolloutPhase: 1,
919
+ },
790
920
  {
791
921
  id: 'server-action-unvalidated-input',
792
922
  layer: 'nextjs-app-router',
@@ -946,6 +1076,7 @@ const LAYER_TARGET_MAP = {
946
1076
  cli: ['cli'],
947
1077
  vue: ['vue', 'nuxt'],
948
1078
  ink: ['ink'],
1079
+ 'kern-source': null,
949
1080
  terminal: ['terminal'],
950
1081
  nextjs: ['nextjs'],
951
1082
  'nextjs-app-router': ['nextjs'],
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ReviewFinding, ReviewReport } from '../types.js';
2
+ export declare function lintKernSourceCrossFile(reports: ReviewReport[]): ReviewFinding[];
@@ -0,0 +1,102 @@
1
+ import { createFingerprint } from '../types.js';
2
+ const DUPLICATE_SYMBOL_NODE_TYPES = new Set([
3
+ 'screen',
4
+ 'hook',
5
+ 'provider',
6
+ 'fn',
7
+ 'derive',
8
+ 'context',
9
+ 'type',
10
+ 'interface',
11
+ 'union',
12
+ 'service',
13
+ 'machine',
14
+ 'singleton',
15
+ 'signal',
16
+ 'middleware',
17
+ 'route',
18
+ 'server',
19
+ 'cli',
20
+ 'command',
21
+ ]);
22
+ function props(node) {
23
+ return node.props || {};
24
+ }
25
+ function loc(node) {
26
+ return {
27
+ line: node.loc?.line || 1,
28
+ col: node.loc?.col || 1,
29
+ };
30
+ }
31
+ function topLevelNamedNodes(nodes) {
32
+ const childSet = new Set();
33
+ for (const node of nodes) {
34
+ for (const child of node.children || []) {
35
+ childSet.add(child);
36
+ }
37
+ }
38
+ const result = [];
39
+ for (const node of nodes) {
40
+ if (childSet.has(node))
41
+ continue;
42
+ if (!DUPLICATE_SYMBOL_NODE_TYPES.has(node.type))
43
+ continue;
44
+ const name = props(node).name;
45
+ if (typeof name !== 'string' || name.trim() === '')
46
+ continue;
47
+ result.push({ node, name: name.trim(), type: node.type });
48
+ }
49
+ return result;
50
+ }
51
+ export function lintKernSourceCrossFile(reports) {
52
+ const groups = new Map();
53
+ for (const report of reports) {
54
+ if (!report.filePath.endsWith('.kern'))
55
+ continue;
56
+ for (const entry of topLevelNamedNodes(report.inferred.map((r) => r.node))) {
57
+ const key = `${entry.type}:${entry.name}`;
58
+ if (!groups.has(key))
59
+ groups.set(key, []);
60
+ groups.get(key).push({ ...entry, filePath: report.filePath });
61
+ }
62
+ }
63
+ const findings = [];
64
+ for (const entries of groups.values()) {
65
+ if (entries.length < 2)
66
+ continue;
67
+ for (const entry of entries) {
68
+ const { line, col } = loc(entry.node);
69
+ const relatedSpans = entries
70
+ .filter((other) => other !== entry)
71
+ .map((other) => {
72
+ const otherLoc = loc(other.node);
73
+ return {
74
+ file: other.filePath,
75
+ startLine: otherLoc.line,
76
+ startCol: otherLoc.col,
77
+ endLine: otherLoc.line,
78
+ endCol: otherLoc.col,
79
+ };
80
+ });
81
+ findings.push({
82
+ source: 'kern',
83
+ ruleId: 'kern-duplicate-symbol',
84
+ severity: 'error',
85
+ category: 'structure',
86
+ message: `Top-level ${entry.type} '${entry.name}' is defined in multiple .kern files`,
87
+ primarySpan: {
88
+ file: entry.filePath,
89
+ startLine: line,
90
+ startCol: col,
91
+ endLine: line,
92
+ endCol: col,
93
+ },
94
+ relatedSpans,
95
+ suggestion: `Rename '${entry.name}' or consolidate the ${entry.type} into a single source of truth.`,
96
+ fingerprint: createFingerprint(`kern-duplicate-symbol:${entry.type}:${entry.name}`, line, col),
97
+ });
98
+ }
99
+ }
100
+ return findings;
101
+ }
102
+ //# sourceMappingURL=kern-source-cross-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kern-source-cross-file.js","sourceRoot":"","sources":["../../src/rules/kern-source-cross-file.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ import { createInMemoryProject } from '../inferrer.js';
10
10
  import { createFingerprint } from '../types.js';
11
11
  const SCOPE_NODE_TYPES = new Set([
12
12
  'screen',
13
+ 'surface',
13
14
  'hook',
14
15
  'provider',
15
16
  'fn',
@@ -53,6 +54,7 @@ const DIRECT_BINDING_NODE_TYPES = new Set([
53
54
  'method',
54
55
  'arg',
55
56
  'flag',
57
+ 'prop',
56
58
  // Top-level declaration types (visible to all handlers in the file)
57
59
  'screen',
58
60
  'type',
@@ -61,6 +63,7 @@ const DIRECT_BINDING_NODE_TYPES = new Set([
61
63
  'service',
62
64
  'machine',
63
65
  'singleton',
66
+ 'signal',
64
67
  // Template node types that declare a name binding
65
68
  'arrow-fn',
66
69
  'swr-hook',
@@ -159,6 +162,8 @@ const AMBIENT_NAMES = new Set([
159
162
  'location',
160
163
  'navigator',
161
164
  'process',
165
+ 'setImmediate',
166
+ 'clearImmediate',
162
167
  'setInterval',
163
168
  'setTimeout',
164
169
  'window',
@@ -254,8 +259,17 @@ const AMBIENT_NAMES = new Set([
254
259
  'mutate',
255
260
  'isValidating',
256
261
  ]);
257
- const EXTERNAL_SIGNAL_RE = /\b(fetch|axios|db|redis|stripe|openai|supabase|client|api|provider|registry|http|https)\b|await\s+[A-Za-z_$]/;
258
- const UNCERTAIN_SIGNAL_RE = /\b(guess|heuristic|fallback|bestEffort|approx|uncertain|unknown|maybe)\b|Math\.random|Date\.now/;
262
+ // Specific external services / IO entry points. Generic words like 'client',
263
+ // 'api', 'provider', 'http' previously matched every codebase identifier and
264
+ // drove missing-confidence to 96% saturation — those are removed. Coverage
265
+ // for awaited service calls (e.g. `await client.query(...)`, `await ctx.api.get(...)`)
266
+ // is preserved via the awaited-method-call pattern, which requires an actual
267
+ // `.method(` invocation rather than a bare identifier substring.
268
+ const EXTERNAL_SIGNAL_RE = /\b(fetch|axios|db|redis|stripe|openai|anthropic|supabase|XMLHttpRequest)\b|\bawait\s+[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)+\s*\(/;
269
+ // Date.now is a deterministic clock read used in routine time formatting and is
270
+ // not an uncertainty signal. Dropped to eliminate false positives on utilities
271
+ // like formatRelativeTime.
272
+ const UNCERTAIN_SIGNAL_RE = /\b(guess|heuristic|fallback|bestEffort|approx|uncertain|unknown|maybe)\b|Math\.random/;
259
273
  function props(node) {
260
274
  return node.props || {};
261
275
  }
@@ -354,7 +368,8 @@ function parseParamBindings(raw) {
354
368
  for (const part of splitTopLevel(raw, ',')) {
355
369
  const colonIdx = findTopLevelChar(part, ':');
356
370
  const eqIdx = findTopLevelChar(part, '=');
357
- const rawName = colonIdx >= 0 ? part.slice(0, colonIdx).trim() : eqIdx >= 0 ? part.slice(0, eqIdx).trim() : part.trim();
371
+ const rawNameRaw = colonIdx >= 0 ? part.slice(0, colonIdx).trim() : eqIdx >= 0 ? part.slice(0, eqIdx).trim() : part.trim();
372
+ const rawName = rawNameRaw.endsWith('?') ? rawNameRaw.slice(0, -1) : rawNameRaw;
358
373
  if (!/^[A-Za-z_$][\w$]*$/.test(rawName))
359
374
  continue;
360
375
  let typeName;
@@ -495,8 +510,43 @@ function addBindingsFromScopeNode(scopeNode, target) {
495
510
  }
496
511
  }
497
512
  }
498
- function collectVisibleBindings(node, parentMap) {
513
+ function addTopLevelBindingsFrom(rootNode, target) {
514
+ const p = props(rootNode);
515
+ // Root-level import: register its imported names without descending further
516
+ if (rootNode.type === 'import') {
517
+ if (typeof p.names === 'string') {
518
+ for (const importedName of p.names
519
+ .split(',')
520
+ .map((s) => s.trim())
521
+ .filter(Boolean)) {
522
+ addBinding(target, importedName, { kind: 'import', node: rootNode });
523
+ }
524
+ }
525
+ if (typeof p.default === 'string' && p.default) {
526
+ addBinding(target, p.default, { kind: 'import', node: rootNode });
527
+ }
528
+ if (typeof p.namespace === 'string' && p.namespace) {
529
+ addBinding(target, p.namespace, { kind: 'import', node: rootNode });
530
+ }
531
+ return;
532
+ }
533
+ // Only the root node's own name — NOT its nested children. Recursing here would
534
+ // leak e.g. a top-level `fn a`'s inner `const x` into sibling `fn b`'s scope.
535
+ if (DIRECT_BINDING_NODE_TYPES.has(rootNode.type) && typeof p.name === 'string') {
536
+ addBinding(target, p.name, {
537
+ kind: rootNode.type,
538
+ node: rootNode,
539
+ typeName: typeof p.type === 'string' ? getDirectTypeAlias(p.type) : undefined,
540
+ });
541
+ if (rootNode.type === 'state') {
542
+ addBinding(target, `set${capitalize(p.name)}`, { kind: 'state-setter', node: rootNode });
543
+ }
544
+ }
545
+ }
546
+ function collectVisibleBindings(node, parentMap, rootNodes) {
499
547
  const bindings = new Map();
548
+ // Walk innermost → outermost first. `addBinding` is first-write-wins, so nearer
549
+ // scopes take precedence over file-level declarations seeded afterwards.
500
550
  let current = parentMap.get(node);
501
551
  while (current) {
502
552
  if (isScopeNode(current) || parentMap.get(current) === undefined) {
@@ -504,11 +554,34 @@ function collectVisibleBindings(node, parentMap) {
504
554
  }
505
555
  current = parentMap.get(current);
506
556
  }
557
+ // Seed file-level bindings LAST so local params/state/consts can shadow them.
558
+ // Use the narrow helper so nested declarations of one top-level scope don't
559
+ // leak into siblings.
560
+ for (const root of rootNodes) {
561
+ addTopLevelBindingsFrom(root, bindings);
562
+ }
507
563
  return bindings;
508
564
  }
509
565
  function createSnippetAnalysis(project, code, key, mode) {
510
566
  const filePath = `__kern_${key.replace(/[^A-Za-z0-9_]/g, '_')}_${Math.random().toString(36).slice(2)}.tsx`;
511
- const wrapped = mode === 'expr' ? `async function __kern__() { return (${code}); }\n` : `async function __kern__() {\n${code}\n}\n`;
567
+ // Auto-detect object-literal-only handler bodies. TS parses `{ a: 1, b: 2 }`
568
+ // inside a function body as a Block containing LabeledStatement + comma
569
+ // expressions, which makes `b` etc. look like undefined identifier references
570
+ // even though they're property keys. Reparsing as expression preserves the
571
+ // object literal meaning.
572
+ let effectiveMode = mode;
573
+ if (mode === 'block') {
574
+ const trimmed = code.trim();
575
+ if (trimmed.startsWith('{') &&
576
+ trimmed.endsWith('}') &&
577
+ trimmed.includes(':') &&
578
+ !/[;]|^\s*(return|const|let|var|if|for|while|throw|try)\b/m.test(trimmed.slice(1, -1))) {
579
+ effectiveMode = 'expr';
580
+ }
581
+ }
582
+ const wrapped = effectiveMode === 'expr'
583
+ ? `async function __kern__() { return (${code}); }\n`
584
+ : `async function __kern__() {\n${code}\n}\n`;
512
585
  const sourceFile = project.createSourceFile(filePath, wrapped, { overwrite: true });
513
586
  const localBindings = collectLocalBindings(sourceFile);
514
587
  const referenceNames = new Set();
@@ -717,6 +790,7 @@ function describeNode(node, parentMap) {
717
790
  export const undefinedReference = (nodes, filePath) => {
718
791
  const findings = [];
719
792
  const parentMap = buildParentMap(nodes);
793
+ const rootNodes = nodes.filter((n) => parentMap.get(n) === undefined);
720
794
  const project = createInMemoryProject();
721
795
  // Iterate ALL nodes in the tree (not just top-level) to find deeply nested handlers
722
796
  for (const node of parentMap.keys()) {
@@ -725,7 +799,7 @@ export const undefinedReference = (nodes, filePath) => {
725
799
  const code = getCodeProp(node);
726
800
  if (!code)
727
801
  continue;
728
- const visibleBindings = collectVisibleBindings(node, parentMap);
802
+ const visibleBindings = collectVisibleBindings(node, parentMap, rootNodes);
729
803
  const analysis = createSnippetAnalysis(project, code, `undef_${loc(node).line}`, 'block');
730
804
  const unresolved = [...analysis.referenceNames]
731
805
  .filter((name) => !analysis.localBindings.has(name))
@@ -743,6 +817,7 @@ export const undefinedReference = (nodes, filePath) => {
743
817
  export const typeModelMismatch = (nodes, filePath) => {
744
818
  const findings = [];
745
819
  const parentMap = buildParentMap(nodes);
820
+ const rootNodes = nodes.filter((n) => parentMap.get(n) === undefined);
746
821
  const unionAliases = buildUnionAliasMap(nodes);
747
822
  if (unionAliases.size === 0)
748
823
  return findings;
@@ -753,7 +828,7 @@ export const typeModelMismatch = (nodes, filePath) => {
753
828
  const code = getCodeProp(node);
754
829
  if (!code)
755
830
  continue;
756
- const visibleBindings = collectVisibleBindings(node, parentMap);
831
+ const visibleBindings = collectVisibleBindings(node, parentMap, rootNodes);
757
832
  const unionBindings = new Map();
758
833
  for (const [name, binding] of visibleBindings) {
759
834
  if (!binding.typeName)
@@ -902,7 +977,7 @@ export const handlerHeavy = (nodes, filePath) => {
902
977
  return [];
903
978
  const anchor = handlers[0];
904
979
  return [
905
- finding('handler-heavy', 'warning', 'structure', `Embedded handler code accounts for ${(ratio * 100).toFixed(0)}% of file tokens (${handlerTokens}/${totalTokens}); this file is mostly inline JS with a thin KERN wrapper`, filePath, anchor, {
980
+ finding('handler-heavy', 'info', 'structure', `Embedded handler code accounts for ${(ratio * 100).toFixed(0)}% of file tokens (${handlerTokens}/${totalTokens}); this file is mostly inline JS with a thin KERN wrapper`, filePath, anchor, {
906
981
  suggestion: 'Promote repeated handler logic into native KERN nodes such as derive, guard, collect, respond, or named fn blocks.',
907
982
  }),
908
983
  ];
@@ -924,8 +999,10 @@ export const missingConfidence = (nodes, filePath) => {
924
999
  if (candidates.size >= 3)
925
1000
  break;
926
1001
  }
1002
+ if (candidates.size === 0)
1003
+ return [];
927
1004
  const anchor = nodes[0];
928
- const suffix = candidates.size > 0 ? ` Candidate nodes: ${[...candidates].join(', ')}.` : '';
1005
+ const suffix = ` Candidate nodes: ${[...candidates].join(', ')}.`;
929
1006
  return [
930
1007
  finding('missing-confidence', 'info', 'pattern', `No confidence annotations found in this .kern file. Add confidence props to external-service calls or uncertain logic.${suffix}`, filePath, anchor, {
931
1008
  suggestion: 'Annotate critical nodes with confidence=0.x, confidence=from:name, or confidence=min:a,b to make trust levels explicit.',