@mergesignal/shared 0.16.0 → 0.17.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 (46) hide show
  1. package/dist/deriveScanNarrative.d.ts.map +1 -1
  2. package/dist/deriveScanNarrative.js +2 -3
  3. package/dist/extractRepositoryContextFacts.d.ts.map +1 -1
  4. package/dist/extractRepositoryContextFacts.js +3 -2
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/narrativePresentation.d.ts +6 -2
  9. package/dist/narrativePresentation.d.ts.map +1 -1
  10. package/dist/narrativePresentation.js +10 -5
  11. package/dist/prRiskWire.d.ts +4 -3
  12. package/dist/prRiskWire.d.ts.map +1 -1
  13. package/dist/prRiskWire.js +9 -3
  14. package/dist/presentation/compose/narrativeChannels.d.ts.map +1 -1
  15. package/dist/presentation/compose/narrativeChannels.js +5 -0
  16. package/dist/presentation/compose/narrativeCompose.d.ts.map +1 -1
  17. package/dist/presentation/compose/narrativeCompose.js +3 -0
  18. package/dist/presentation/presenters/presentScanDetails.d.ts.map +1 -1
  19. package/dist/presentation/presenters/presentScanDetails.js +19 -11
  20. package/dist/presentation/profile/assessmentEstablishesCollectionLimitation.d.ts +8 -0
  21. package/dist/presentation/profile/assessmentEstablishesCollectionLimitation.d.ts.map +1 -0
  22. package/dist/presentation/profile/assessmentEstablishesCollectionLimitation.js +20 -0
  23. package/dist/presentation/profile/buildProfileFromAssessment.d.ts.map +1 -1
  24. package/dist/presentation/profile/buildProfileFromAssessment.js +4 -3
  25. package/dist/presentation/reachNarrativeGating.d.ts +12 -0
  26. package/dist/presentation/reachNarrativeGating.d.ts.map +1 -0
  27. package/dist/presentation/reachNarrativeGating.js +12 -0
  28. package/dist/scanAnalysisScope.d.ts +19 -0
  29. package/dist/scanAnalysisScope.d.ts.map +1 -0
  30. package/dist/scanAnalysisScope.js +22 -0
  31. package/dist/scanNarrativeFacts.d.ts +3 -0
  32. package/dist/scanNarrativeFacts.d.ts.map +1 -1
  33. package/dist/scanNarrativeFacts.js +1 -0
  34. package/dist/scanResultSchema.d.ts +167 -20
  35. package/dist/scanResultSchema.d.ts.map +1 -1
  36. package/dist/scanResultSchema.js +116 -28
  37. package/dist/scanSurfaceCopy.d.ts +1 -1
  38. package/dist/scanSurfaceCopy.js +1 -1
  39. package/dist/selectTopAffectedAreas.d.ts.map +1 -1
  40. package/dist/selectTopAffectedAreas.js +5 -4
  41. package/dist/trustedScanGuards.d.ts +2 -1
  42. package/dist/trustedScanGuards.d.ts.map +1 -1
  43. package/dist/trustedScanGuards.js +3 -3
  44. package/dist/types.d.ts +15 -11
  45. package/dist/types.d.ts.map +1 -1
  46. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"deriveScanNarrative.d.ts","sourceRoot":"","sources":["../src/deriveScanNarrative.ts"],"names":[],"mappings":"AAYA,OAAO,EAgBL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAMV,UAAU,EACX,MAAM,YAAY,CAAC;AAwiBpB;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACpC,kBAAkB,CAsIpB"}
1
+ {"version":3,"file":"deriveScanNarrative.d.ts","sourceRoot":"","sources":["../src/deriveScanNarrative.ts"],"names":[],"mappings":"AAYA,OAAO,EAgBL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAMV,UAAU,EACX,MAAM,YAAY,CAAC;AAsiBpB;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACpC,kBAAkB,CAsIpB"}
@@ -408,8 +408,7 @@ function assessmentConfidenceFromResult(result) {
408
408
  }
409
409
  function limitedContextDiagnostic(input) {
410
410
  return (input.corpusGateReason !== "ok" ||
411
- hasPreparationUncertaintyWarnings(input.preparationWarnings) ||
412
- input.assessmentConfidence === "low");
411
+ hasPreparationUncertaintyWarnings(input.preparationWarnings));
413
412
  }
414
413
  /**
415
414
  * Consumer-agnostic scan intelligence — structured facts only (no UI copy).
@@ -463,7 +462,6 @@ export function deriveScanNarrative(result) {
463
462
  limitedContext: limitedContextDiagnostic({
464
463
  corpusGateReason,
465
464
  preparationWarnings,
466
- assessmentConfidence,
467
465
  }),
468
466
  };
469
467
  if (!tier1 && mode === "graph_fallback" && changedPackages.all.length > 0) {
@@ -515,5 +513,6 @@ export function deriveScanNarrative(result) {
515
513
  mergePosture,
516
514
  riskIndex,
517
515
  riskSignals,
516
+ reachVisibility: result.assessment?.presentation?.reachVisibility ?? null,
518
517
  };
519
518
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extractRepositoryContextFacts.d.ts","sourceRoot":"","sources":["../src/extractRepositoryContextFacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,uBAAuB,CAAC;IAChC,MAAM,EAAE,uBAAuB,CAAC;IAChC,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CACrE,CAAC;AAYF;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,UAAU,GACjB,qBAAqB,EAAE,CAiEzB"}
1
+ {"version":3,"file":"extractRepositoryContextFacts.d.ts","sourceRoot":"","sources":["../src/extractRepositoryContextFacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,uBAAuB,CAAC;IAChC,MAAM,EAAE,uBAAuB,CAAC;IAChC,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CACrE,CAAC;AAYF;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,UAAU,GACjB,qBAAqB,EAAE,CAmEzB"}
@@ -34,8 +34,9 @@ export function extractRepositoryContextFacts(result) {
34
34
  });
35
35
  }
36
36
  }
37
- if (Array.isArray(result.explain?.reasons)) {
38
- for (const reason of result.explain.reasons) {
37
+ const explainReasons = result.repositoryHealth?.explain?.reasons ?? result.explain?.reasons;
38
+ if (Array.isArray(explainReasons)) {
39
+ for (const reason of explainReasons) {
39
40
  const mapped = mapExplainReasonToCatalogPhrase(reason);
40
41
  if (!mapped) {
41
42
  const family = matchSignalFamily(`${reason.id} ${reason.title} ${reason.layer}`);
package/dist/index.d.ts CHANGED
@@ -21,6 +21,7 @@ export * from "./narrativePresentation.js";
21
21
  export * from "./normalizeGeneratedText.js";
22
22
  export { presentGitHubPrCommentMarkdownFromResult } from "./presentGitHubPrComment.js";
23
23
  export * from "./scanCardPresentationState.js";
24
+ export * from "./scanAnalysisScope.js";
24
25
  export * from "./scanResultSchema.js";
25
26
  export * from "./scanSurfaceCopy.js";
26
27
  export * from "./resolvePipelineStatus.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,wCAAwC,EAAE,MAAM,6BAA6B,CAAC;AACvF,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,yBAAyB,GAC1B,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,wCAAwC,EAAE,MAAM,6BAA6B,CAAC;AACvF,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,yBAAyB,GAC1B,MAAM,kCAAkC,CAAC"}
package/dist/index.js CHANGED
@@ -21,6 +21,7 @@ export * from "./narrativePresentation.js";
21
21
  export * from "./normalizeGeneratedText.js";
22
22
  export { presentGitHubPrCommentMarkdownFromResult } from "./presentGitHubPrComment.js";
23
23
  export * from "./scanCardPresentationState.js";
24
+ export * from "./scanAnalysisScope.js";
24
25
  export * from "./scanResultSchema.js";
25
26
  export * from "./scanSurfaceCopy.js";
26
27
  export * from "./resolvePipelineStatus.js";
@@ -1,3 +1,4 @@
1
+ import type { ReachVisibility } from "./assessment/types.js";
1
2
  import type { NarrativePackageUsage, ScanNarrativeFacts } from "./scanNarrativeFacts.js";
2
3
  /** Deduplicated union of wire usage path buckets — matches reachability/linkage semantics. */
3
4
  export declare function normalizedPackageUsagePaths(row: NarrativePackageUsage): string[];
@@ -44,9 +45,12 @@ export declare function composeVerificationPrompt(facts: ScanNarrativeFacts): st
44
45
  export declare function formatUsageSummaryLine(facts: ScanNarrativeFacts, maxPaths?: number): string | null;
45
46
  export declare function formatBlastRadiusDetailLine(facts: ScanNarrativeFacts, maxFactors?: number): string | null;
46
47
  export declare function formatFrameworksSummary(facts: ScanNarrativeFacts, max?: number): string | null;
47
- export declare function composeContextLineFromFacts(facts: ScanNarrativeFacts, options?: {
48
+ export type ComposeContextLineFromFactsOptions = {
48
49
  includePathSample?: boolean;
49
50
  maxAreas?: number;
50
- }): string | null;
51
+ /** Overrides Assessment reach policy projected on facts when supplied. */
52
+ reachVisibility?: ReachVisibility;
53
+ };
54
+ export declare function composeContextLineFromFacts(facts: ScanNarrativeFacts, options?: ComposeContextLineFromFactsOptions): string | null;
51
55
  export { labelRuntimeSurface, labelReachabilityKind, labelBlastRadiusLevel };
52
56
  //# sourceMappingURL=narrativePresentation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"narrativePresentation.d.ts","sourceRoot":"","sources":["../src/narrativePresentation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"narrativePresentation.d.ts","sourceRoot":"","sources":["../src/narrativePresentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAIjC,8FAA8F;AAC9F,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,qBAAqB,GACzB,MAAM,EAAE,CASV;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,kBAAkB,GACxB,MAAM,GAAG,IAAI,CAEf;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,kBAAkB,EACzB,QAAQ,SAAI,GACX,MAAM,GAAG,IAAI,CAQf;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,kBAAkB,GACxB,MAAM,EAAE,CAEV;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,4BAAiC,GACzC,mBAAmB,GAAG,IAAI,CA2B5B;AAED,iBAAS,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAIrE;AAED,iBAAS,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAIvE;AAED,iBAAS,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAIvE;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,kBAAkB,EACzB,QAAQ,SAAI,GACX,mBAAmB,CAUrB;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,kBAAkB,EACzB,UAAU,SAAI,GACb,kBAAkB,CAOpB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,kBAAkB,EACzB,GAAG,SAAI,GACN,KAAK,CAAC;IACP,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC,CAMD;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,6BAAkC,GAC1C,kBAAkB,CAAC,kBAAkB,CAAC,CASxC;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,kBAAkB,GACxB,MAAM,GAAG,IAAI,CAYf;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,kBAAkB,EACzB,QAAQ,SAAI,GACX,MAAM,GAAG,IAAI,CAiBf;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,kBAAkB,EACzB,UAAU,SAAI,GACb,MAAM,GAAG,IAAI,CAQf;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,kBAAkB,EACzB,GAAG,SAAI,GACN,MAAM,GAAG,IAAI,CAKf;AAED,MAAM,MAAM,kCAAkC,GAAG;IAC/C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,kCAAuC,GAC/C,MAAM,GAAG,IAAI,CAyCf;AAED,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { shouldSurfaceReachNarrative } from "./presentation/reachNarrativeGating.js";
1
2
  import { scanSurfaceCopy } from "./scanSurfaceCopy.js";
2
3
  /** Deduplicated union of wire usage path buckets — matches reachability/linkage semantics. */
3
4
  export function normalizedPackageUsagePaths(row) {
@@ -158,12 +159,16 @@ export function formatFrameworksSummary(facts, max = 2) {
158
159
  return frameworks.join(", ");
159
160
  }
160
161
  export function composeContextLineFromFacts(facts, options = {}) {
162
+ const reachVisibility = options.reachVisibility ?? facts.reachVisibility;
163
+ if (reachVisibility == null) {
164
+ return null;
165
+ }
166
+ if (!shouldSurfaceReachNarrative({ reachVisibility }, facts.packageSemantics ?? undefined)) {
167
+ return null;
168
+ }
161
169
  const parts = [];
162
- const suppressRuntime = facts.packageSemantics?.suppressRuntimeNarrative === true;
163
- const runtime = suppressRuntime ? null : labelRuntimeSurface(facts);
164
- const reach = suppressRuntime
165
- ? null
166
- : summarizeReachability(facts, options.includePathSample ? 1 : 0);
170
+ const runtime = labelRuntimeSurface(facts);
171
+ const reach = summarizeReachability(facts, options.includePathSample ? 1 : 0);
167
172
  const blast = labelBlastRadiusLevel(facts);
168
173
  if (runtime)
169
174
  parts.push(runtime);
@@ -33,9 +33,10 @@ export type ScanScoreRow = {
33
33
  * 1. abstain outcome → no numeric score (outcome-primary reader semantics)
34
34
  * 2. result.prRisk.availability === 'indeterminate' → no numeric score
35
35
  * 3. result.prRisk.score (scored wire)
36
- * 4. denormalized pr_risk_score (when provided)
37
- * 5. historical scans.total_score column (when provided)
38
- * 6. result.totalScore (historical JSON fallback only)
36
+ * 4. when assessment is present and no scored wire → no numeric score
37
+ * 5. denormalized pr_risk_score (historical rows only no assessment in result)
38
+ * 6. historical scans.total_score column (historical rows only)
39
+ * 7. result.totalScore (historical JSON fallback only)
39
40
  */
40
41
  export declare function resolvePrRiskScore(result: ScanResult | null | undefined, ctx?: PrRiskScoreContext): number | null;
41
42
  /** Layer scores for PR Risk — prRisk.layerScores when present, else legacy layerScores. */
@@ -1 +1 @@
1
- {"version":3,"file":"prRiskWire.d.ts","sourceRoot":"","sources":["../src/prRiskWire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,UAAU,EACV,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,8EAA8E;IAC9E,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAeF;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACrC,GAAG,GAAE,kBAAuB,GAC3B,MAAM,GAAG,IAAI,CA2Bf;AASD,2FAA2F;AAC3F,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACpC,WAAW,GAAG,IAAI,CAWpB;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACpC,KAAK,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAO7C;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACrC,GAAG,GAAE,4BAAiC,GACrC,MAAM,GAAG,IAAI,CAqBf;AAED,8EAA8E;AAC9E,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAK1E;AAED,wFAAwF;AACxF,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,YAAY,GAChB,MAAM,GAAG,IAAI,CAQf"}
1
+ {"version":3,"file":"prRiskWire.d.ts","sourceRoot":"","sources":["../src/prRiskWire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,UAAU,EACV,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,8EAA8E;IAC9E,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAeF;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACrC,GAAG,GAAE,kBAAuB,GAC3B,MAAM,GAAG,IAAI,CA+Bf;AASD,2FAA2F;AAC3F,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACpC,WAAW,GAAG,IAAI,CAYpB;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACpC,KAAK,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAO7C;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACrC,GAAG,GAAE,4BAAiC,GACrC,MAAM,GAAG,IAAI,CAqBf;AAED,8EAA8E;AAC9E,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAK1E;AAED,wFAAwF;AACxF,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,YAAY,GAChB,MAAM,GAAG,IAAI,CAQf"}
@@ -14,9 +14,10 @@ function isIndeterminatePrRisk(prRisk) {
14
14
  * 1. abstain outcome → no numeric score (outcome-primary reader semantics)
15
15
  * 2. result.prRisk.availability === 'indeterminate' → no numeric score
16
16
  * 3. result.prRisk.score (scored wire)
17
- * 4. denormalized pr_risk_score (when provided)
18
- * 5. historical scans.total_score column (when provided)
19
- * 6. result.totalScore (historical JSON fallback only)
17
+ * 4. when assessment is present and no scored wire → no numeric score
18
+ * 5. denormalized pr_risk_score (historical rows only no assessment in result)
19
+ * 6. historical scans.total_score column (historical rows only)
20
+ * 7. result.totalScore (historical JSON fallback only)
20
21
  */
21
22
  export function resolvePrRiskScore(result, ctx = {}) {
22
23
  if (!result && ctx.prRiskScore == null && ctx.legacyTotalScore == null) {
@@ -33,6 +34,9 @@ export function resolvePrRiskScore(result, ctx = {}) {
33
34
  : undefined);
34
35
  if (fromWire != null)
35
36
  return fromWire;
37
+ if (result?.assessment) {
38
+ return null;
39
+ }
36
40
  const fromDenorm = finiteScore(ctx.prRiskScore);
37
41
  if (fromDenorm != null)
38
42
  return fromDenorm;
@@ -60,6 +64,8 @@ export function resolvePrRiskLayerScores(result) {
60
64
  : undefined;
61
65
  if (fromPrRisk)
62
66
  return fromPrRisk;
67
+ if (result.assessment)
68
+ return null;
63
69
  if (result.layerScores)
64
70
  return result.layerScores;
65
71
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"narrativeChannels.d.ts","sourceRoot":"","sources":["../../../src/presentation/compose/narrativeChannels.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAGzF,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAqBF,yFAAyF;AACzF,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,sBAAsB,GAC7B,iBAAiB,CAmBnB;AAED,mGAAmG;AACnG,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,iBAAiB,EAC3B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAyBV"}
1
+ {"version":3,"file":"narrativeChannels.d.ts","sourceRoot":"","sources":["../../../src/presentation/compose/narrativeChannels.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAIzF,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAuBF,yFAAyF;AACzF,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,sBAAsB,GAC7B,iBAAiB,CAmBnB;AAED,mGAAmG;AACnG,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,iBAAiB,EAC3B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAyBV"}
@@ -2,12 +2,17 @@ import { scanSurfaceCopy } from "../../scanSurfaceCopy.js";
2
2
  import { applicationAreaLabels, formatAssessmentHeadline, projectInsightLines, projectVerificationActions, reachVisibilityLabel, } from "../../assessmentProjection.js";
3
3
  import { safeParseRepoIntelligence } from "../../repoIntelligenceSchema.js";
4
4
  import { labelBlastRadiusLevel } from "../../narrativePresentation.js";
5
+ import { shouldSurfaceReachNarrative } from "../reachNarrativeGating.js";
5
6
  function composeScopeAreaLabels(bundle, max) {
7
+ if (!shouldSurfaceReachNarrative(bundle.presentation))
8
+ return [];
6
9
  const parsed = safeParseRepoIntelligence(bundle.result.repoIntelligence);
7
10
  const labels = parsed.ok ? applicationAreaLabels(parsed.value) : [];
8
11
  return labels.slice(0, max);
9
12
  }
10
13
  function composeChannelEvidence(bundle, max) {
14
+ if (!shouldSurfaceReachNarrative(bundle.presentation))
15
+ return [];
11
16
  const blast = labelBlastRadiusLevel(bundle.facts);
12
17
  const rows = [];
13
18
  if (blast)
@@ -1 +1 @@
1
- {"version":3,"file":"narrativeCompose.d.ts","sourceRoot":"","sources":["../../../src/presentation/compose/narrativeCompose.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAMzF,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAShC,wBAAgB,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAEtE;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,sBAAsB,GAC7B,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAEV;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAEV;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAQV;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,sBAAsB,GAC7B,MAAM,EAAE,GAAG,SAAS,CAwBtB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,sBAAsB,GAAG;IAC1E,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAKA"}
1
+ {"version":3,"file":"narrativeCompose.d.ts","sourceRoot":"","sources":["../../../src/presentation/compose/narrativeCompose.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAOzF,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAShC,wBAAgB,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAEtE;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,sBAAsB,GAC7B,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAEV;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAEV;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CASV;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,sBAAsB,GAC7B,MAAM,EAAE,GAAG,SAAS,CAwBtB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,sBAAsB,GAAG;IAC1E,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAKA"}
@@ -1,6 +1,7 @@
1
1
  import { formatCardAreaLabels } from "../../formatCardAreaLabels.js";
2
2
  import { scanSurfaceCopy } from "../../scanSurfaceCopy.js";
3
3
  import { buildNarrativeChannels, projectCompactKeyPoints, } from "./narrativeChannels.js";
4
+ import { shouldSurfaceReachNarrative } from "../reachNarrativeGating.js";
4
5
  export { buildNarrativeChannels, projectCompactKeyPoints, } from "./narrativeChannels.js";
5
6
  function topAreaLabel(bundle) {
6
7
  const area = bundle.facts.affectedAreas[0];
@@ -25,6 +26,8 @@ export function composeVerificationActions(bundle, max) {
25
26
  return buildNarrativeChannels(bundle).verification.slice(0, max);
26
27
  }
27
28
  export function composeAffectedAreaLabels(bundle, max) {
29
+ if (!shouldSurfaceReachNarrative(bundle.presentation))
30
+ return [];
28
31
  const labels = [];
29
32
  for (const area of bundle.facts.affectedAreas) {
30
33
  const formatted = formatCardAreaLabels([area.label], 1);
@@ -1 +1 @@
1
- {"version":3,"file":"presentScanDetails.d.ts","sourceRoot":"","sources":["../../../src/presentation/presenters/presentScanDetails.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAGzF,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AA6FF,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,yBAAyB,GAC7B,uBAAuB,CA6EzB"}
1
+ {"version":3,"file":"presentScanDetails.d.ts","sourceRoot":"","sources":["../../../src/presentation/presenters/presentScanDetails.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAIzF,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AA4GF,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,yBAAyB,GAC7B,uBAAuB,CA6EzB"}
@@ -1,11 +1,13 @@
1
1
  import { MERGE_CONCERN_LABELS } from "../../assessmentLabels.js";
2
2
  import { normalizedPackageUsagePaths } from "../../narrativePresentation.js";
3
+ import { safeParseRepoIntelligence } from "../../repoIntelligenceSchema.js";
3
4
  import { formatPrRiskSummary, prRiskBandToGaugeBand, } from "../../prRiskBand.js";
4
5
  import { MERGE_POSTURE_LABEL } from "../../riskVocabulary.js";
5
6
  import { buildNarrativeChannels, composeSubheadline, composeSupportingContext, evidenceContextFromProfile, projectCompactKeyPoints, } from "../compose/narrativeCompose.js";
6
7
  import { normalizeGeneratedText, normalizeGeneratedTextNullable, } from "../../normalizeGeneratedText.js";
7
8
  import { scanSurfaceCopy } from "../../scanSurfaceCopy.js";
8
9
  import { projectAssessmentFields } from "../projectAssessmentFields.js";
10
+ import { shouldSurfaceReachNarrative } from "../reachNarrativeGating.js";
9
11
  const LAYER_LABEL = {
10
12
  security: "Security",
11
13
  maintainability: "Maintainability",
@@ -42,20 +44,26 @@ function mapSignalSummary(bundle) {
42
44
  };
43
45
  }
44
46
  function mapUsage(bundle) {
45
- const { facts } = bundle;
46
- if (facts.packageUsage.length === 0 && facts.frameworks.length === 0) {
47
+ if (!shouldSurfaceReachNarrative(bundle.presentation)) {
48
+ return undefined;
49
+ }
50
+ const { facts, presentation, result } = bundle;
51
+ const parsedRi = safeParseRepoIntelligence(result.repoIntelligence);
52
+ const parsedPackages = parsedRi.ok ? parsedRi.value.packages : {};
53
+ const items = facts.packageUsage
54
+ .filter((row) => shouldSurfaceReachNarrative(presentation, parsedPackages[row.packageName]))
55
+ .map((row) => ({
56
+ packageName: row.packageName,
57
+ paths: normalizedPackageUsagePaths(row),
58
+ areas: row.areas,
59
+ criticalPaths: row.criticalPaths,
60
+ }));
61
+ if (items.length === 0) {
47
62
  return undefined;
48
63
  }
49
64
  return {
50
- summary: facts.packageUsage[0]
51
- ? `${facts.packageUsage.length} package(s) with usage data`
52
- : undefined,
53
- items: facts.packageUsage.map((row) => ({
54
- packageName: row.packageName,
55
- paths: normalizedPackageUsagePaths(row),
56
- areas: row.areas,
57
- criticalPaths: row.criticalPaths,
58
- })),
65
+ summary: `${items.length} package(s) with usage data`,
66
+ items,
59
67
  frameworks: facts.frameworks,
60
68
  };
61
69
  }
@@ -0,0 +1,8 @@
1
+ import type { Assessment } from "../../assessment/types.js";
2
+ /**
3
+ * Whether sealed Assessment state establishes collection/context limitation for
4
+ * presentation subheadline selection. Answers a presentation question only —
5
+ * does not reinterpret evidence or re-adjudicate sufficiency.
6
+ */
7
+ export declare function assessmentEstablishesCollectionLimitation(assessment: Assessment): boolean;
8
+ //# sourceMappingURL=assessmentEstablishesCollectionLimitation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assessmentEstablishesCollectionLimitation.d.ts","sourceRoot":"","sources":["../../../src/presentation/profile/assessmentEstablishesCollectionLimitation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAEX,MAAM,2BAA2B,CAAC;AAYnC;;;;GAIG;AACH,wBAAgB,yCAAyC,CACvD,UAAU,EAAE,UAAU,GACrB,OAAO,CAYT"}
@@ -0,0 +1,20 @@
1
+ const COLLECTION_LIMITATION_ABSTAIN_REASONS = new Set([
2
+ "insufficient_collection",
3
+ "partial_monorepo_scan",
4
+ ]);
5
+ const COLLECTION_LIMITATION_BLOCKER_KINDS = new Set([
6
+ "repository_coverage_insufficient",
7
+ "package_facts_missing",
8
+ ]);
9
+ /**
10
+ * Whether sealed Assessment state establishes collection/context limitation for
11
+ * presentation subheadline selection. Answers a presentation question only —
12
+ * does not reinterpret evidence or re-adjudicate sufficiency.
13
+ */
14
+ export function assessmentEstablishesCollectionLimitation(assessment) {
15
+ if (assessment.abstainReasons?.some((reason) => COLLECTION_LIMITATION_ABSTAIN_REASONS.has(reason.kind))) {
16
+ return true;
17
+ }
18
+ const blockers = assessment.evidenceSufficiencyVerdict?.blockers ?? [];
19
+ return blockers.some((blocker) => COLLECTION_LIMITATION_BLOCKER_KINDS.has(blocker.kind));
20
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"buildProfileFromAssessment.d.ts","sourceRoot":"","sources":["../../../src/presentation/profile/buildProfileFromAssessment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,4BAA4B,EAC7B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAsDpE,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,4BAA4B,EAC1C,MAAM,EAAE,UAAU,GACjB,mBAAmB,CA+BrB"}
1
+ {"version":3,"file":"buildProfileFromAssessment.d.ts","sourceRoot":"","sources":["../../../src/presentation/profile/buildProfileFromAssessment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,4BAA4B,EAC7B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAuDpE,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,4BAA4B,EAC1C,MAAM,EAAE,UAAU,GACjB,mBAAmB,CAiCrB"}
@@ -4,6 +4,7 @@ import { scanSurfaceCopy } from "../../scanSurfaceCopy.js";
4
4
  import { collectVerificationFocusForPresentation } from "../../assessmentProjection.js";
5
5
  import { hasPreparationUncertaintyWarnings } from "../../lockfileEvidence.js";
6
6
  import { presentationStatusFromAssessment } from "../presentationStatusFromAssessment.js";
7
+ import { assessmentEstablishesCollectionLimitation } from "./assessmentEstablishesCollectionLimitation.js";
7
8
  function focalAnchorPackage(assessment) {
8
9
  const anchors = assessment.reviewFocalPoint.anchors;
9
10
  if (!anchors.length)
@@ -42,7 +43,7 @@ function buildInterpretation(assessment, presentation, result) {
42
43
  anchorPackage,
43
44
  suppressRuntimeNarrative,
44
45
  allowRuntimeNarrative: !suppressRuntimeNarrative,
45
- showLimitedEvidence: assessment.confidence === "low",
46
+ showLimitedEvidence: assessmentEstablishesCollectionLimitation(assessment),
46
47
  expectedImpactKey: null,
47
48
  verificationLabels,
48
49
  runtimeSurfaceLabel: null,
@@ -58,10 +59,10 @@ export function buildProfileFromAssessment(assessment, presentation, result) {
58
59
  const priority = riParse.ok && (result.changedPackages?.length ?? 0) > 0
59
60
  ? "pr_intelligence"
60
61
  : "limited";
62
+ const establishesCollectionLimitation = assessmentEstablishesCollectionLimitation(assessment);
61
63
  const degradedMessage = verifiedNoTransitionSafe
62
64
  ? undefined
63
- : assessment.primaryConcern === "insufficient_evidence" ||
64
- assessment.confidence === "low" ||
65
+ : establishesCollectionLimitation ||
65
66
  hasPreparationUncertaintyWarnings(preparationWarnings)
66
67
  ? scanSurfaceCopy.presentation.limitedContextMessage
67
68
  : priority === "limited"
@@ -0,0 +1,12 @@
1
+ import type { AssessmentPresentationPublic } from "../assessment/types.js";
2
+ type PackageReachGuard = {
3
+ suppressRuntimeNarrative?: boolean;
4
+ };
5
+ /**
6
+ * Whether user-facing presentation may surface reach/runtime evidence derived from
7
+ * canonical Repository Intelligence. Assessment `reachVisibility` is the primary gate;
8
+ * package-level `suppressRuntimeNarrative` is a subordinate per-package guard.
9
+ */
10
+ export declare function shouldSurfaceReachNarrative(presentation: Pick<AssessmentPresentationPublic, "reachVisibility">, packageWireRow?: PackageReachGuard): boolean;
11
+ export {};
12
+ //# sourceMappingURL=reachNarrativeGating.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reachNarrativeGating.d.ts","sourceRoot":"","sources":["../../src/presentation/reachNarrativeGating.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAE3E,KAAK,iBAAiB,GAAG;IACvB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,IAAI,CAAC,4BAA4B,EAAE,iBAAiB,CAAC,EACnE,cAAc,CAAC,EAAE,iBAAiB,GACjC,OAAO,CAIT"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Whether user-facing presentation may surface reach/runtime evidence derived from
3
+ * canonical Repository Intelligence. Assessment `reachVisibility` is the primary gate;
4
+ * package-level `suppressRuntimeNarrative` is a subordinate per-package guard.
5
+ */
6
+ export function shouldSurfaceReachNarrative(presentation, packageWireRow) {
7
+ if (presentation.reachVisibility === "hidden")
8
+ return false;
9
+ if (packageWireRow?.suppressRuntimeNarrative === true)
10
+ return false;
11
+ return true;
12
+ }
@@ -0,0 +1,19 @@
1
+ import type { ScanAnalysisScope, ScanQueueJob, ScanRequest } from "./types.js";
2
+ /** Expected fresh engine-output shape for context-aware ABI-5 validation. */
3
+ export type FreshEngineOutputExpectation = ScanAnalysisScope;
4
+ /**
5
+ * Resolves governed analysis scope from a normalized ScanRequest.
6
+ * Defaults to repository when unset.
7
+ */
8
+ export declare function resolveScanAnalysisScope(request: Pick<ScanRequest, "scanAnalysisScope">): ScanAnalysisScope;
9
+ /**
10
+ * Derives strict fresh-output validation expectation from the same normalized
11
+ * ScanRequest fact used by the engine producer.
12
+ */
13
+ export declare function freshOutputExpectationFromScanRequest(request: Pick<ScanRequest, "scanAnalysisScope">): FreshEngineOutputExpectation;
14
+ /**
15
+ * Normalizes queue job context into engine ingress scope.
16
+ * GitHub PR jobs are change-request scoped; repository/manual jobs are repository scoped.
17
+ */
18
+ export declare function scanAnalysisScopeFromQueueJob(job: Pick<ScanQueueJob, "github">): ScanAnalysisScope;
19
+ //# sourceMappingURL=scanAnalysisScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanAnalysisScope.d.ts","sourceRoot":"","sources":["../src/scanAnalysisScope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE/E,6EAA6E;AAC7E,MAAM,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;AAI7D;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,GAC9C,iBAAiB,CAEnB;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,GAC9C,4BAA4B,CAE9B;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAChC,iBAAiB,CAEnB"}
@@ -0,0 +1,22 @@
1
+ const DEFAULT_SCAN_ANALYSIS_SCOPE = "repository";
2
+ /**
3
+ * Resolves governed analysis scope from a normalized ScanRequest.
4
+ * Defaults to repository when unset.
5
+ */
6
+ export function resolveScanAnalysisScope(request) {
7
+ return request.scanAnalysisScope ?? DEFAULT_SCAN_ANALYSIS_SCOPE;
8
+ }
9
+ /**
10
+ * Derives strict fresh-output validation expectation from the same normalized
11
+ * ScanRequest fact used by the engine producer.
12
+ */
13
+ export function freshOutputExpectationFromScanRequest(request) {
14
+ return resolveScanAnalysisScope(request);
15
+ }
16
+ /**
17
+ * Normalizes queue job context into engine ingress scope.
18
+ * GitHub PR jobs are change-request scoped; repository/manual jobs are repository scoped.
19
+ */
20
+ export function scanAnalysisScopeFromQueueJob(job) {
21
+ return job.github ? "change_request" : "repository";
22
+ }
@@ -1,3 +1,4 @@
1
+ import type { ReachVisibility } from "./assessment/types.js";
1
2
  import type { ObservationSignalFamily } from "./cardObservationCatalog.js";
2
3
  import type { MergePosture } from "./riskVocabulary.js";
3
4
  import type { RiskSignals } from "./riskSignals.js";
@@ -134,6 +135,8 @@ export type ScanNarrativeFacts = {
134
135
  /** @deprecated Use `riskSignals.riskIndex` — kept for frozen surface presenters. */
135
136
  riskIndex: number | null;
136
137
  riskSignals: RiskSignals | null;
138
+ /** Assessment presentation reach policy projected for narrative helpers (not a canonical RI fact). */
139
+ reachVisibility?: ReachVisibility | null;
137
140
  };
138
141
  export declare const EMPTY_SCAN_NARRATIVE_FACTS: ScanNarrativeFacts;
139
142
  /** Derivation caps — presenters apply tighter channel limits. */
@@ -1 +1 @@
1
- {"version":3,"file":"scanNarrativeFacts.d.ts","sourceRoot":"","sources":["../src/scanNarrativeFacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanNarrativeFacts.d.ts","sourceRoot":"","sources":["../src/scanNarrativeFacts.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ export const EMPTY_SCAN_NARRATIVE_FACTS = {
23
23
  mergePosture: null,
24
24
  riskIndex: null,
25
25
  riskSignals: null,
26
+ reachVisibility: null,
26
27
  };
27
28
  /** Derivation caps — presenters apply tighter channel limits. */
28
29
  export const NARRATIVE_FACT_MAX_PATHS = 20;
@@ -1,12 +1,15 @@
1
1
  import { z } from "zod";
2
+ import type { FreshEngineOutputExpectation } from "./scanAnalysisScope.js";
2
3
  import type { EngineEmittedScanResult, ScanResult } from "./types.js";
3
4
  /** Bump when persisted `result` JSON validation rules change materially (relaxed / legacy-tolerant). */
4
5
  export declare const SCAN_RESULT_ABI: "2";
5
6
  /** Bump when strict fresh-engine-output validation rules change materially. */
6
- export declare const ENGINE_OUTPUT_SCAN_ABI: "4";
7
+ export declare const ENGINE_OUTPUT_SCAN_ABI: "5";
7
8
  /**
8
- * Synthesize ABI-4 prRisk/repositoryHealth from legacy totalScore when an engine
9
- * has not yet adopted the dual-score wire (transitional bridge).
9
+ * Legacy ingest helper only. Synthesizes repositoryHealth from legacy root graph
10
+ * scores when repositoryHealth is missing. Never synthesizes prRisk.
11
+ *
12
+ * Not invoked by strict fresh engine-output validation (`safeParseEngineOutputScanResult`).
10
13
  */
11
14
  export declare function normalizeEngineOutputAbi4(raw: unknown): unknown;
12
15
  /**
@@ -15,13 +18,13 @@ export declare function normalizeEngineOutputAbi4(raw: unknown): unknown;
15
18
  * Unknown top-level keys are preserved (forward-compatible with newer engines).
16
19
  */
17
20
  export declare const scanResultSchema: z.ZodObject<{
18
- totalScore: z.ZodNumber;
19
- layerScores: z.ZodObject<{
21
+ totalScore: z.ZodOptional<z.ZodNumber>;
22
+ layerScores: z.ZodOptional<z.ZodObject<{
20
23
  security: z.ZodNumber;
21
24
  maintainability: z.ZodNumber;
22
25
  ecosystem: z.ZodNumber;
23
26
  upgradeImpact: z.ZodNumber;
24
- }, z.core.$strip>;
27
+ }, z.core.$strip>>;
25
28
  prRisk: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
26
29
  availability: z.ZodOptional<z.ZodLiteral<"scored">>;
27
30
  score: z.ZodNumber;
@@ -44,6 +47,32 @@ export declare const scanResultSchema: z.ZodObject<{
44
47
  ecosystem: z.ZodNumber;
45
48
  upgradeImpact: z.ZodNumber;
46
49
  }, z.core.$strip>>;
50
+ explain: z.ZodOptional<z.ZodObject<{
51
+ reasons: z.ZodArray<z.ZodObject<{
52
+ id: z.ZodString;
53
+ layer: z.ZodEnum<{
54
+ security: "security";
55
+ maintainability: "maintainability";
56
+ ecosystem: "ecosystem";
57
+ upgradeImpact: "upgradeImpact";
58
+ }>;
59
+ title: z.ZodString;
60
+ value: z.ZodOptional<z.ZodNumber>;
61
+ scoreImpact: z.ZodNumber;
62
+ evidence: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
63
+ }, z.core.$strip>>;
64
+ }, z.core.$strip>>;
65
+ topContributions: z.ZodOptional<z.ZodArray<z.ZodObject<{
66
+ id: z.ZodString;
67
+ layer: z.ZodEnum<{
68
+ security: "security";
69
+ maintainability: "maintainability";
70
+ ecosystem: "ecosystem";
71
+ upgradeImpact: "upgradeImpact";
72
+ }>;
73
+ scoreImpact: z.ZodNumber;
74
+ evidence: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
75
+ }, z.core.$strip>>>;
47
76
  }, z.core.$strip>>;
48
77
  findings: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodUnknown>, z.ZodNull]>>, z.ZodTransform<unknown[], unknown[] | null | undefined>>;
49
78
  methodologyVersion: z.ZodOptional<z.ZodString>;
@@ -76,18 +105,57 @@ export declare const scanResultSchema: z.ZodObject<{
76
105
  }, z.core.$loose>>;
77
106
  codeAnalysisMetrics: z.ZodOptional<z.ZodUnknown>;
78
107
  }, z.core.$loose>;
79
- /**
80
- * Stricter schema for **fresh** `analyze()` output only. Do not use when hydrating
81
- * historical `scans.result` blobs from the database.
82
- */
83
- export declare const engineOutputScanResultSchema: z.ZodObject<{
84
- totalScore: z.ZodNumber;
85
- layerScores: z.ZodObject<{
86
- security: z.ZodNumber;
87
- maintainability: z.ZodNumber;
88
- ecosystem: z.ZodNumber;
89
- upgradeImpact: z.ZodNumber;
90
- }, z.core.$strip>;
108
+ /** Strict schema for fresh repository-scoped `analyze()` output. */
109
+ export declare const repositoryEngineOutputScanResultSchema: z.ZodObject<{
110
+ prRisk: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
111
+ availability: z.ZodOptional<z.ZodLiteral<"scored">>;
112
+ score: z.ZodNumber;
113
+ layerScores: z.ZodOptional<z.ZodObject<{
114
+ security: z.ZodNumber;
115
+ maintainability: z.ZodNumber;
116
+ ecosystem: z.ZodNumber;
117
+ upgradeImpact: z.ZodNumber;
118
+ }, z.core.$strip>>;
119
+ qualifier: z.ZodOptional<z.ZodLiteral<"limited_evidence">>;
120
+ }, z.core.$strip>, z.ZodObject<{
121
+ availability: z.ZodLiteral<"indeterminate">;
122
+ qualifier: z.ZodOptional<z.ZodLiteral<"limited_evidence">>;
123
+ }, z.core.$strip>]>>;
124
+ repositoryHealth: z.ZodOptional<z.ZodObject<{
125
+ totalScore: z.ZodNumber;
126
+ layerScores: z.ZodOptional<z.ZodObject<{
127
+ security: z.ZodNumber;
128
+ maintainability: z.ZodNumber;
129
+ ecosystem: z.ZodNumber;
130
+ upgradeImpact: z.ZodNumber;
131
+ }, z.core.$strip>>;
132
+ explain: z.ZodOptional<z.ZodObject<{
133
+ reasons: z.ZodArray<z.ZodObject<{
134
+ id: z.ZodString;
135
+ layer: z.ZodEnum<{
136
+ security: "security";
137
+ maintainability: "maintainability";
138
+ ecosystem: "ecosystem";
139
+ upgradeImpact: "upgradeImpact";
140
+ }>;
141
+ title: z.ZodString;
142
+ value: z.ZodOptional<z.ZodNumber>;
143
+ scoreImpact: z.ZodNumber;
144
+ evidence: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
145
+ }, z.core.$strip>>;
146
+ }, z.core.$strip>>;
147
+ topContributions: z.ZodOptional<z.ZodArray<z.ZodObject<{
148
+ id: z.ZodString;
149
+ layer: z.ZodEnum<{
150
+ security: "security";
151
+ maintainability: "maintainability";
152
+ ecosystem: "ecosystem";
153
+ upgradeImpact: "upgradeImpact";
154
+ }>;
155
+ scoreImpact: z.ZodNumber;
156
+ evidence: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
157
+ }, z.core.$strip>>>;
158
+ }, z.core.$strip>>;
91
159
  findings: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodUnknown>, z.ZodNull]>>, z.ZodTransform<unknown[], unknown[] | null | undefined>>;
92
160
  confidence: z.ZodOptional<z.ZodEnum<{
93
161
  low: "low";
@@ -118,6 +186,44 @@ export declare const engineOutputScanResultSchema: z.ZodObject<{
118
186
  codeAnalysisMetrics: z.ZodOptional<z.ZodUnknown>;
119
187
  methodologyVersion: z.ZodString;
120
188
  generatedAt: z.ZodString;
189
+ totalScore: z.ZodNumber;
190
+ layerScores: z.ZodObject<{
191
+ security: z.ZodNumber;
192
+ maintainability: z.ZodNumber;
193
+ ecosystem: z.ZodNumber;
194
+ upgradeImpact: z.ZodNumber;
195
+ }, z.core.$strip>;
196
+ }, z.core.$loose>;
197
+ /**
198
+ * Stricter schema for **fresh** `analyze()` output only. Do not use when hydrating
199
+ * historical `scans.result` blobs from the database.
200
+ *
201
+ * Prefer {@link engineOutputScanResultSchemaFor} with an explicit analysis-scope expectation.
202
+ */
203
+ export declare const engineOutputScanResultSchema: z.ZodObject<{
204
+ totalScore: z.ZodOptional<z.ZodNumber>;
205
+ layerScores: z.ZodOptional<z.ZodObject<{
206
+ security: z.ZodNumber;
207
+ maintainability: z.ZodNumber;
208
+ ecosystem: z.ZodNumber;
209
+ upgradeImpact: z.ZodNumber;
210
+ }, z.core.$strip>>;
211
+ findings: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodUnknown>, z.ZodNull]>>, z.ZodTransform<unknown[], unknown[] | null | undefined>>;
212
+ confidence: z.ZodOptional<z.ZodEnum<{
213
+ low: "low";
214
+ medium: "medium";
215
+ high: "high";
216
+ }>>;
217
+ signals: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
218
+ contributions: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
219
+ recommendations: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
220
+ dataset: z.ZodOptional<z.ZodUnknown>;
221
+ explain: z.ZodOptional<z.ZodUnknown>;
222
+ graphInsights: z.ZodOptional<z.ZodUnknown>;
223
+ insights: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
224
+ codeAnalysisMetrics: z.ZodOptional<z.ZodUnknown>;
225
+ methodologyVersion: z.ZodString;
226
+ generatedAt: z.ZodString;
121
227
  assessment: z.ZodObject<{
122
228
  reviewFocalPoint: z.ZodObject<{
123
229
  episodeShape: z.ZodEnum<{
@@ -414,6 +520,20 @@ export declare const engineOutputScanResultSchema: z.ZodObject<{
414
520
  detail: z.ZodOptional<z.ZodString>;
415
521
  }, z.core.$strip>>>;
416
522
  }, z.core.$strip>;
523
+ decision: z.ZodObject<{
524
+ recommendation: z.ZodEnum<{
525
+ safe: "safe";
526
+ needs_review: "needs_review";
527
+ risky: "risky";
528
+ indeterminate: "indeterminate";
529
+ }>;
530
+ confidence: z.ZodOptional<z.ZodEnum<{
531
+ low: "low";
532
+ medium: "medium";
533
+ high: "high";
534
+ }>>;
535
+ reasoning: z.ZodOptional<z.ZodArray<z.ZodString>>;
536
+ }, z.core.$loose>;
417
537
  prRisk: z.ZodUnion<readonly [z.ZodObject<{
418
538
  availability: z.ZodOptional<z.ZodLiteral<"scored">>;
419
539
  score: z.ZodNumber;
@@ -436,6 +556,32 @@ export declare const engineOutputScanResultSchema: z.ZodObject<{
436
556
  ecosystem: z.ZodNumber;
437
557
  upgradeImpact: z.ZodNumber;
438
558
  }, z.core.$strip>>;
559
+ explain: z.ZodOptional<z.ZodObject<{
560
+ reasons: z.ZodArray<z.ZodObject<{
561
+ id: z.ZodString;
562
+ layer: z.ZodEnum<{
563
+ security: "security";
564
+ maintainability: "maintainability";
565
+ ecosystem: "ecosystem";
566
+ upgradeImpact: "upgradeImpact";
567
+ }>;
568
+ title: z.ZodString;
569
+ value: z.ZodOptional<z.ZodNumber>;
570
+ scoreImpact: z.ZodNumber;
571
+ evidence: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
572
+ }, z.core.$strip>>;
573
+ }, z.core.$strip>>;
574
+ topContributions: z.ZodOptional<z.ZodArray<z.ZodObject<{
575
+ id: z.ZodString;
576
+ layer: z.ZodEnum<{
577
+ security: "security";
578
+ maintainability: "maintainability";
579
+ ecosystem: "ecosystem";
580
+ upgradeImpact: "upgradeImpact";
581
+ }>;
582
+ scoreImpact: z.ZodNumber;
583
+ evidence: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
584
+ }, z.core.$strip>>>;
439
585
  }, z.core.$strip>;
440
586
  }, z.core.$loose>;
441
587
  export type EngineOutputScanResultParseFailure = {
@@ -447,9 +593,10 @@ export type EngineOutputScanResultParseSuccess = {
447
593
  ok: true;
448
594
  result: EngineEmittedScanResult;
449
595
  };
450
- export declare function safeParseEngineOutputScanResult(data: unknown): EngineOutputScanResultParseSuccess | EngineOutputScanResultParseFailure;
596
+ export declare function engineOutputScanResultSchemaFor(expectation: FreshEngineOutputExpectation): z.ZodType;
597
+ export declare function safeParseEngineOutputScanResult(data: unknown, expectation: FreshEngineOutputExpectation): EngineOutputScanResultParseSuccess | EngineOutputScanResultParseFailure;
451
598
  /** Validates fresh engine output; throws on failure. Not for legacy persisted JSON. */
452
- export declare function parseEngineOutputScanResultOrThrow(data: unknown): EngineEmittedScanResult;
599
+ export declare function parseEngineOutputScanResultOrThrow(data: unknown, expectation: FreshEngineOutputExpectation): EngineEmittedScanResult;
453
600
  export type ScanResultParseFailure = {
454
601
  ok: false;
455
602
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"scanResultSchema.d.ts","sourceRoot":"","sources":["../src/scanResultSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE,wGAAwG;AACxG,eAAO,MAAM,eAAe,EAAG,GAAY,CAAC;AAE5C,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,EAAG,GAAY,CAAC;AA4BnD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAc/D;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmCb,CAAC;AAUjB;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMvC,CAAC;AAEH,MAAM,MAAM,kCAAkC,GAAG;IAC/C,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,uBAAuB,CAAC;CACjC,CAAC;AAEF,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,OAAO,GACZ,kCAAkC,GAAG,kCAAkC,CAezE;AAED,uFAAuF;AACvF,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,OAAO,GACZ,uBAAuB,CAMzB;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,GACZ,sBAAsB,GAAG,sBAAsB,CAajD;AAED,yEAAyE;AACzE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAMhE"}
1
+ {"version":3,"file":"scanResultSchema.d.ts","sourceRoot":"","sources":["../src/scanResultSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE,wGAAwG;AACxG,eAAO,MAAM,eAAe,EAAG,GAAY,CAAC;AAE5C,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,EAAG,GAAY,CAAC;AAyHnD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAa/D;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuBb,CAAC;AA2BjB,oEAAoE;AACpE,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAW7C,CAAC;AAEP;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBACE,CAAC;AAE5C,MAAM,MAAM,kCAAkC,GAAG;IAC/C,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,uBAAuB,CAAC;CACjC,CAAC;AAEF,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,4BAA4B,GACxC,CAAC,CAAC,OAAO,CAIX;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,4BAA4B,GACxC,kCAAkC,GAAG,kCAAkC,CAazE;AAED,uFAAuF;AACvF,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,4BAA4B,GACxC,uBAAuB,CAMzB;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,GACZ,sBAAsB,GAAG,sBAAsB,CAajD;AAED,yEAAyE;AACzE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAMhE"}
@@ -3,7 +3,7 @@ import { z } from "zod";
3
3
  /** Bump when persisted `result` JSON validation rules change materially (relaxed / legacy-tolerant). */
4
4
  export const SCAN_RESULT_ABI = "2";
5
5
  /** Bump when strict fresh-engine-output validation rules change materially. */
6
- export const ENGINE_OUTPUT_SCAN_ABI = "4";
6
+ export const ENGINE_OUTPUT_SCAN_ABI = "5";
7
7
  const layerScoresSchema = z.object({
8
8
  security: z.number(),
9
9
  maintainability: z.number(),
@@ -21,13 +21,89 @@ const prRiskIndeterminateSchema = z.object({
21
21
  qualifier: z.literal("limited_evidence").optional(),
22
22
  });
23
23
  const prRiskSchema = z.union([prRiskScoredSchema, prRiskIndeterminateSchema]);
24
+ const explainReasonSchema = z.object({
25
+ id: z.string(),
26
+ layer: z.enum(["security", "maintainability", "ecosystem", "upgradeImpact"]),
27
+ title: z.string(),
28
+ value: z.number().optional(),
29
+ scoreImpact: z.number(),
30
+ evidence: z.record(z.string(), z.unknown()).optional(),
31
+ });
32
+ const explainBlockSchema = z.object({
33
+ reasons: z.array(explainReasonSchema),
34
+ });
35
+ const scoreContributionSchema = z.object({
36
+ id: z.string(),
37
+ layer: z.enum(["security", "maintainability", "ecosystem", "upgradeImpact"]),
38
+ scoreImpact: z.number(),
39
+ evidence: z.record(z.string(), z.unknown()).optional(),
40
+ });
24
41
  const repositoryHealthSchema = z.object({
25
42
  totalScore: z.number().min(0).max(100),
26
43
  layerScores: layerScoresSchema.optional(),
44
+ explain: explainBlockSchema.optional(),
45
+ topContributions: z.array(scoreContributionSchema).optional(),
27
46
  });
47
+ const decisionSchema = z
48
+ .object({
49
+ recommendation: z.enum(["safe", "needs_review", "risky", "indeterminate"]),
50
+ confidence: z.enum(["low", "medium", "high"]).optional(),
51
+ reasoning: z.array(z.string()).optional(),
52
+ })
53
+ .passthrough();
54
+ const MODERN_PR_FORBIDDEN_ROOT_KEYS = [
55
+ "totalScore",
56
+ "layerScores",
57
+ "signals",
58
+ "contributions",
59
+ "explain",
60
+ ];
61
+ function refineChangeRequestForbiddenRoots(obj, ctx) {
62
+ if (obj.prRisk === undefined) {
63
+ return;
64
+ }
65
+ for (const key of MODERN_PR_FORBIDDEN_ROOT_KEYS) {
66
+ if (obj[key] !== undefined) {
67
+ ctx.addIssue({
68
+ code: z.ZodIssueCode.custom,
69
+ message: `Change-request engine output must not emit root \`${key}\``,
70
+ path: [key],
71
+ });
72
+ }
73
+ }
74
+ if (obj.assessment !== undefined && obj.confidence !== undefined) {
75
+ ctx.addIssue({
76
+ code: z.ZodIssueCode.custom,
77
+ message: "Change-request engine output must not emit root `confidence` when assessment is present",
78
+ path: ["confidence"],
79
+ });
80
+ }
81
+ }
82
+ function refineRepositoryForbiddenPrAuthorities(obj, ctx) {
83
+ if (obj.prRisk !== undefined) {
84
+ ctx.addIssue({
85
+ code: z.ZodIssueCode.custom,
86
+ message: "Repository-scoped engine output must not emit `prRisk`",
87
+ path: ["prRisk"],
88
+ });
89
+ }
90
+ if (obj.repositoryHealth !== undefined) {
91
+ ctx.addIssue({
92
+ code: z.ZodIssueCode.custom,
93
+ message: "Repository-scoped engine output must not emit `repositoryHealth`",
94
+ path: ["repositoryHealth"],
95
+ });
96
+ }
97
+ }
98
+ /** @deprecated Use refineChangeRequestForbiddenRoots — kept for transitional reads. */
99
+ function refineModernPrForbiddenRoots(obj, ctx) {
100
+ refineChangeRequestForbiddenRoots(obj, ctx);
101
+ }
28
102
  /**
29
- * Synthesize ABI-4 prRisk/repositoryHealth from legacy totalScore when an engine
30
- * has not yet adopted the dual-score wire (transitional bridge).
103
+ * Legacy ingest helper only. Synthesizes repositoryHealth from legacy root graph
104
+ * scores when repositoryHealth is missing. Never synthesizes prRisk.
105
+ *
106
+ * Not invoked by strict fresh engine-output validation (`safeParseEngineOutputScanResult`).
31
107
  */
32
108
  export function normalizeEngineOutputAbi4(raw) {
33
109
  if (!raw || typeof raw !== "object")
@@ -42,7 +118,6 @@ export function normalizeEngineOutputAbi4(raw) {
42
118
  return raw;
43
119
  return {
44
120
  ...obj,
45
- prRisk: obj.prRisk ?? { score: totalScore, layerScores },
46
121
  repositoryHealth: obj.repositoryHealth ?? { totalScore, layerScores },
47
122
  };
48
123
  }
@@ -53,8 +128,8 @@ export function normalizeEngineOutputAbi4(raw) {
53
128
  */
54
129
  export const scanResultSchema = z
55
130
  .object({
56
- totalScore: z.number().min(0).max(100),
57
- layerScores: layerScoresSchema,
131
+ totalScore: z.number().min(0).max(100).optional(),
132
+ layerScores: layerScoresSchema.optional(),
58
133
  prRisk: prRiskSchema.optional(),
59
134
  repositoryHealth: repositoryHealthSchema.optional(),
60
135
  findings: z
@@ -71,19 +146,7 @@ export const scanResultSchema = z
71
146
  graphInsights: z.unknown().optional(),
72
147
  generatedAt: z.string().min(1),
73
148
  insights: z.array(z.unknown()).optional(),
74
- decision: z
75
- .object({
76
- recommendation: z.enum([
77
- "safe",
78
- "needs_review",
79
- "risky",
80
- "indeterminate",
81
- ]),
82
- confidence: z.enum(["low", "medium", "high"]).optional(),
83
- reasoning: z.array(z.string()).optional(),
84
- })
85
- .passthrough()
86
- .optional(),
149
+ decision: decisionSchema.optional(),
87
150
  codeAnalysisMetrics: z.unknown().optional(),
88
151
  })
89
152
  .passthrough();
@@ -94,19 +157,44 @@ const engineOutputGeneratedAtSchema = z
94
157
  .refine((s) => !Number.isNaN(Date.parse(s)), {
95
158
  error: "generatedAt must be a parseable ISO-8601 timestamp",
96
159
  });
97
- /**
98
- * Stricter schema for **fresh** `analyze()` output only. Do not use when hydrating
99
- * historical `scans.result` blobs from the database.
100
- */
101
- export const engineOutputScanResultSchema = scanResultSchema.extend({
160
+ const freshEngineOutputBaseSchema = scanResultSchema.extend({
102
161
  methodologyVersion: z.string().trim().min(1),
103
162
  generatedAt: engineOutputGeneratedAtSchema,
163
+ });
164
+ /** Strict schema for fresh change-request `analyze()` output. */
165
+ const changeRequestEngineOutputScanResultSchema = freshEngineOutputBaseSchema
166
+ .extend({
104
167
  assessment: assessmentSchema,
168
+ decision: decisionSchema,
105
169
  prRisk: prRiskSchema,
106
170
  repositoryHealth: repositoryHealthSchema,
171
+ })
172
+ .superRefine((obj, ctx) => {
173
+ refineChangeRequestForbiddenRoots(obj, ctx);
174
+ });
175
+ /** Strict schema for fresh repository-scoped `analyze()` output. */
176
+ export const repositoryEngineOutputScanResultSchema = freshEngineOutputBaseSchema
177
+ .extend({
178
+ totalScore: z.number().min(0).max(100),
179
+ layerScores: layerScoresSchema,
180
+ })
181
+ .superRefine((obj, ctx) => {
182
+ refineRepositoryForbiddenPrAuthorities(obj, ctx);
107
183
  });
108
- export function safeParseEngineOutputScanResult(data) {
109
- const parsed = engineOutputScanResultSchema.safeParse(normalizeEngineOutputAbi4(data));
184
+ /**
185
+ * Stricter schema for **fresh** `analyze()` output only. Do not use when hydrating
186
+ * historical `scans.result` blobs from the database.
187
+ *
188
+ * Prefer {@link engineOutputScanResultSchemaFor} with an explicit analysis-scope expectation.
189
+ */
190
+ export const engineOutputScanResultSchema = changeRequestEngineOutputScanResultSchema;
191
+ export function engineOutputScanResultSchemaFor(expectation) {
192
+ return expectation === "change_request"
193
+ ? changeRequestEngineOutputScanResultSchema
194
+ : repositoryEngineOutputScanResultSchema;
195
+ }
196
+ export function safeParseEngineOutputScanResult(data, expectation) {
197
+ const parsed = engineOutputScanResultSchemaFor(expectation).safeParse(data);
110
198
  if (!parsed.success) {
111
199
  const issues = parsed.error.issues.map((i) => `${i.path.join(".") || "(root)"}: ${i.message}`);
112
200
  return {
@@ -118,8 +206,8 @@ export function safeParseEngineOutputScanResult(data) {
118
206
  return { ok: true, result: parsed.data };
119
207
  }
120
208
  /** Validates fresh engine output; throws on failure. Not for legacy persisted JSON. */
121
- export function parseEngineOutputScanResultOrThrow(data) {
122
- const r = safeParseEngineOutputScanResult(data);
209
+ export function parseEngineOutputScanResultOrThrow(data, expectation) {
210
+ const r = safeParseEngineOutputScanResult(data, expectation);
123
211
  if (!r.ok) {
124
212
  throw new Error(`validation: ${r.message}`);
125
213
  }
@@ -307,7 +307,7 @@ export declare const scanSurfaceCopy: {
307
307
  readonly runtimeUpgradeHeadline: "{package} runtime upgrade affects {surface}";
308
308
  readonly unresolvedRuntimeExposureHeadline: "{package} upgrade leaves unresolved exposure on {surface}";
309
309
  readonly safeNeutralHeadline: "{package} dependency upgrade";
310
- readonly indeterminateUpgradeHeadline: "{package} dependency upgrade could not be determined";
310
+ readonly indeterminateUpgradeHeadline: "{package} dependency upgrade: merge safety not established";
311
311
  readonly defaultUpgradeHeadline: "{package} dependency upgrade needs review";
312
312
  readonly changedPackageKeyPoint: "Changed package: {package}";
313
313
  readonly usedInPathsSingle: "Used across application code ({path})";
@@ -310,7 +310,7 @@ export const scanSurfaceCopy = {
310
310
  runtimeUpgradeHeadline: "{package} runtime upgrade affects {surface}",
311
311
  unresolvedRuntimeExposureHeadline: "{package} upgrade leaves unresolved exposure on {surface}",
312
312
  safeNeutralHeadline: "{package} dependency upgrade",
313
- indeterminateUpgradeHeadline: "{package} dependency upgrade could not be determined",
313
+ indeterminateUpgradeHeadline: "{package} dependency upgrade: merge safety not established",
314
314
  defaultUpgradeHeadline: "{package} dependency upgrade needs review",
315
315
  changedPackageKeyPoint: "Changed package: {package}",
316
316
  usedInPathsSingle: "Used across application code ({path})",
@@ -1 +1 @@
1
- {"version":3,"file":"selectTopAffectedAreas.d.ts","sourceRoot":"","sources":["../src/selectTopAffectedAreas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACrC,IAAI,GAAE,eAAoB,GACzB,MAAM,EAAE,CAuEV"}
1
+ {"version":3,"file":"selectTopAffectedAreas.d.ts","sourceRoot":"","sources":["../src/selectTopAffectedAreas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACrC,IAAI,GAAE,eAAoB,GACzB,MAAM,EAAE,CA0EV"}
@@ -32,9 +32,10 @@ export function selectTopAffectedAreas(result, opts = {}) {
32
32
  areas.push(t);
33
33
  return areas.length < max;
34
34
  }
35
- // Priority 1: explain.reasons sorted by absolute scoreImpact
36
- if (Array.isArray(result.explain?.reasons)) {
37
- const sorted = [...result.explain.reasons]
35
+ // Priority 1: repositoryHealth.explain then historical root explain
36
+ const explainReasons = result.repositoryHealth?.explain?.reasons ?? result.explain?.reasons;
37
+ if (Array.isArray(explainReasons)) {
38
+ const sorted = [...explainReasons]
38
39
  .filter((r) => r.title)
39
40
  .sort((a, b) => Math.abs(b.scoreImpact ?? 0) - Math.abs(a.scoreImpact ?? 0));
40
41
  for (const r of sorted) {
@@ -64,7 +65,7 @@ export function selectTopAffectedAreas(result, opts = {}) {
64
65
  ecosystem: "Ecosystem",
65
66
  upgradeImpact: "Upgrade impact",
66
67
  };
67
- const layerScores = result.layerScores;
68
+ const layerScores = result.repositoryHealth?.layerScores ?? result.layerScores;
68
69
  if (!layerScores || typeof layerScores !== "object")
69
70
  return areas;
70
71
  const sorted = Object.entries(layerScores)
@@ -1,3 +1,4 @@
1
+ import type { FreshEngineOutputExpectation } from "./scanAnalysisScope.js";
1
2
  import type { EngineEmittedScanResult, ScanResult } from "./types.js";
2
3
  /** True when methodology is tagged as the OSS stub engine. */
3
4
  export declare function isStubMethodologyVersion(methodologyVersion: string | undefined): boolean;
@@ -19,7 +20,7 @@ export declare function assertTrustedScanResult(result: ScanResult): void;
19
20
  * Strict structural validation for fresh engine JSON + trusted policy.
20
21
  * Do not pass historical `scans.result` rows (may omit methodology).
21
22
  */
22
- export declare function validateTrustedEngineScanResult(raw: unknown): EngineEmittedScanResult;
23
+ export declare function validateTrustedEngineScanResult(raw: unknown, expectation: FreshEngineOutputExpectation): EngineEmittedScanResult;
23
24
  export type TrustedActionsAuditResult = {
24
25
  ok: true;
25
26
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"trustedScanGuards.d.ts","sourceRoot":"","sources":["../src/trustedScanGuards.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKtE,8DAA8D;AAC9D,wBAAgB,wBAAwB,CACtC,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACrC,OAAO,CAKT;AAED;;;GAGG;AACH,wBAAgB,oCAAoC,IAAI,SAAS,MAAM,EAAE,CAOxE;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACrC,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAchE;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,OAAO,GACX,uBAAuB,CAIzB;AAED,MAAM,MAAM,yBAAyB,GACjC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAE7C;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,mGAAmG;IACnG,UAAU,EAAE,OAAO,CAAC;IACpB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,yBAAyB,CAgC5B"}
1
+ {"version":3,"file":"trustedScanGuards.d.ts","sourceRoot":"","sources":["../src/trustedScanGuards.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKtE,8DAA8D;AAC9D,wBAAgB,wBAAwB,CACtC,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACrC,OAAO,CAKT;AAED;;;GAGG;AACH,wBAAgB,oCAAoC,IAAI,SAAS,MAAM,EAAE,CAOxE;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACrC,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAchE;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,4BAA4B,GACxC,uBAAuB,CAIzB;AAED,MAAM,MAAM,yBAAyB,GACjC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAE7C;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,mGAAmG;IACnG,UAAU,EAAE,OAAO,CAAC;IACpB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,yBAAyB,CAgC5B"}
@@ -50,8 +50,8 @@ export function assertTrustedScanResult(result) {
50
50
  * Strict structural validation for fresh engine JSON + trusted policy.
51
51
  * Do not pass historical `scans.result` rows (may omit methodology).
52
52
  */
53
- export function validateTrustedEngineScanResult(raw) {
54
- const result = parseEngineOutputScanResultOrThrow(raw);
53
+ export function validateTrustedEngineScanResult(raw, expectation) {
54
+ const result = parseEngineOutputScanResultOrThrow(raw, expectation);
55
55
  assertTrustedScanResult(result);
56
56
  return result;
57
57
  }
@@ -66,7 +66,7 @@ export function auditTrustedActionsOutput(opts) {
66
66
  }
67
67
  let scanResult;
68
68
  try {
69
- scanResult = validateTrustedEngineScanResult(opts.scanResult);
69
+ scanResult = validateTrustedEngineScanResult(opts.scanResult, "repository");
70
70
  }
71
71
  catch (e) {
72
72
  errors.push(e instanceof Error ? e.message : String(e));
package/dist/types.d.ts CHANGED
@@ -24,6 +24,8 @@ export type PrRiskWire = PrRiskWireScored | PrRiskWireIndeterminate;
24
24
  export type RepositoryHealthWire = {
25
25
  totalScore: number;
26
26
  layerScores?: LayerScores;
27
+ explain?: ExplainBlock;
28
+ topContributions?: ScoreContribution[];
27
29
  };
28
30
  export type FindingSeverity = "low" | "medium" | "high" | "critical";
29
31
  /**
@@ -93,22 +95,20 @@ export type AnalysisPreparation = {
93
95
  warnings: AnalysisContextWarning[];
94
96
  repoIntelligenceValidation?: RepoIntelligenceValidation;
95
97
  };
96
- /** Subset of PR identity passed into analysis (no installation tokens). */
97
- export type ScanRequestGithubContext = {
98
- owner: string;
99
- repo: string;
100
- prNumber: number;
101
- };
102
98
  export type { LockfileEvidenceStatus } from "./lockfileEvidence.js";
99
+ /** Neutral analysis scope — repository-wide vs change-request scoped analysis. */
100
+ export type ScanAnalysisScope = "repository" | "change_request";
103
101
  export type ScanRequest = {
104
102
  repoId: string;
105
103
  dependencyGraph: unknown;
106
104
  lockfile?: ScanLockfileInput;
107
105
  /** Base branch lockfile for PR scans (optional). */
108
106
  baseLockfile?: ScanLockfileInput;
109
- repoSource?: RepoSource;
110
- /** Optional PR context for engine/logging (no installation id). */
111
- github?: ScanRequestGithubContext;
107
+ /**
108
+ * Governs change-request vs repository output semantics at engine ingress.
109
+ * Defaults to `repository` when unset.
110
+ */
111
+ scanAnalysisScope?: ScanAnalysisScope;
112
112
  changedPackages?: string[];
113
113
  /** When both base and head lockfiles were compared in the worker. */
114
114
  lockfilePackageDelta?: LockfilePackageDelta;
@@ -275,8 +275,8 @@ export type EngineeringTrace = {
275
275
  };
276
276
  export type ScanResult = {
277
277
  /** Legacy composite score — historical fallback only; not PR Risk authority on ABI-4 output. */
278
- totalScore: number;
279
- layerScores: LayerScores;
278
+ totalScore?: number;
279
+ layerScores?: LayerScores;
280
280
  /** PR Risk authority on ABI-4 engine output. */
281
281
  prRisk?: PrRiskWire;
282
282
  /** Repository health authority on ABI-4 engine output. */
@@ -285,6 +285,10 @@ export type ScanResult = {
285
285
  methodologyVersion?: string;
286
286
  /** Assessment Contract — sole authority for posture and presentation intensity. */
287
287
  assessment?: Assessment;
288
+ /**
289
+ * Legacy graph-scoring input-coverage confidence — omitted on ABI-4 output when
290
+ * {@link assessment} is present. Use `assessment.confidence` for merge-decision confidence.
291
+ */
288
292
  confidence?: RiskConfidence;
289
293
  signals?: RiskSignal[];
290
294
  contributions?: ScoreContribution[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mergesignal/shared",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "description": "MergeSignal shared scan contract, presentation policy, and trusted validation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",