@mergesignal/shared 0.15.1 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/assessment/literals.d.ts +9 -2
  2. package/dist/assessment/literals.d.ts.map +1 -1
  3. package/dist/assessment/literals.js +9 -1
  4. package/dist/assessment/schema.d.ts +2 -0
  5. package/dist/assessment/schema.d.ts.map +1 -1
  6. package/dist/deriveScanNarrative.d.ts.map +1 -1
  7. package/dist/deriveScanNarrative.js +2 -3
  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/presentation/compose/narrativeChannels.d.ts.map +1 -1
  12. package/dist/presentation/compose/narrativeChannels.js +5 -0
  13. package/dist/presentation/compose/narrativeCompose.d.ts.map +1 -1
  14. package/dist/presentation/compose/narrativeCompose.js +3 -0
  15. package/dist/presentation/presenters/presentScanDetails.d.ts.map +1 -1
  16. package/dist/presentation/presenters/presentScanDetails.js +19 -11
  17. package/dist/presentation/profile/assessmentEstablishesCollectionLimitation.d.ts +8 -0
  18. package/dist/presentation/profile/assessmentEstablishesCollectionLimitation.d.ts.map +1 -0
  19. package/dist/presentation/profile/assessmentEstablishesCollectionLimitation.js +20 -0
  20. package/dist/presentation/profile/buildProfileFromAssessment.d.ts.map +1 -1
  21. package/dist/presentation/profile/buildProfileFromAssessment.js +4 -3
  22. package/dist/presentation/reachNarrativeGating.d.ts +12 -0
  23. package/dist/presentation/reachNarrativeGating.d.ts.map +1 -0
  24. package/dist/presentation/reachNarrativeGating.js +12 -0
  25. package/dist/scanNarrativeFacts.d.ts +3 -0
  26. package/dist/scanNarrativeFacts.d.ts.map +1 -1
  27. package/dist/scanNarrativeFacts.js +1 -0
  28. package/dist/scanResultSchema.d.ts +2 -0
  29. package/dist/scanResultSchema.d.ts.map +1 -1
  30. package/dist/scanSurfaceCopy.d.ts +1 -1
  31. package/dist/scanSurfaceCopy.js +1 -1
  32. package/package.json +1 -1
@@ -31,8 +31,15 @@ export declare const DELTA_DIMENSION_KINDS: readonly ["manifest", "exports", "en
31
31
  export declare const ASSESSMENT_OUTCOMES: readonly ["cleared", "proven_broken", "bounded_verify", "abstain"];
32
32
  /** Reasons for an Abstain outcome. */
33
33
  export declare const ABSTAIN_REASON_KINDS: readonly ["private_package", "opaque_mutation", "unsupported_ecosystem", "partial_monorepo_scan", "no_honest_bounded_target", "insufficient_collection"];
34
- /** Blocker kinds for EvidenceSufficiencyVerdict. */
35
- export declare const SUFFICIENCY_BLOCKER_KINDS: readonly ["repository_coverage_insufficient", "package_facts_missing", "opaque_mutation", "private_package", "correlation_abstained", "proof_coverage_insufficient", "proof_execution_failed", "unsupported_ecosystem", "partial_monorepo_scan", "hypothesized_breaking_unresolved", "advisory_blocking", "conflicting_proof_results"];
34
+ /**
35
+ * Blocker kinds for EvidenceSufficiencyVerdict.
36
+ *
37
+ * Taxonomy separation:
38
+ * - Collection / acquisition incompleteness: repository_coverage_insufficient, package_facts_missing, …
39
+ * - Routable proof missing: proof_coverage_insufficient
40
+ * - Governed proof-capability ceiling: proof_capability_ceiling
41
+ */
42
+ export declare const SUFFICIENCY_BLOCKER_KINDS: readonly ["repository_coverage_insufficient", "package_facts_missing", "opaque_mutation", "private_package", "correlation_abstained", "proof_coverage_insufficient", "proof_capability_ceiling", "proof_execution_failed", "unsupported_ecosystem", "partial_monorepo_scan", "hypothesized_breaking_unresolved", "advisory_blocking", "conflicting_proof_results"];
36
43
  /** Target kinds for BoundedVerifyTarget. */
37
44
  export declare const BOUNDED_VERIFY_TARGET_KINDS: readonly ["file_location", "config_path", "behavioral_scenario"];
38
45
  /** Basis for a cleared delta dimension in ClearanceEnvelope. */
@@ -1 +1 @@
1
- {"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../../src/assessment/literals.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,eAAO,MAAM,mBAAmB,6DAKtB,CAAC;AAEX,2CAA2C;AAC3C,eAAO,MAAM,sBAAsB,oCAAqC,CAAC;AAEzE,gDAAgD;AAChD,eAAO,MAAM,cAAc,0KAUjB,CAAC;AAEX,sCAAsC;AACtC,eAAO,MAAM,mBAAmB,0KAQtB,CAAC;AAEX,wCAAwC;AACxC,eAAO,MAAM,qBAAqB,8CAIxB,CAAC;AAEX,qCAAqC;AACrC,eAAO,MAAM,kBAAkB,gDAIrB,CAAC;AAEX,2CAA2C;AAC3C,eAAO,MAAM,wBAAwB,2CAI3B,CAAC;AAEX,2CAA2C;AAC3C,eAAO,MAAM,uBAAuB,2CAI1B,CAAC;AAEX,wCAAwC;AACxC,eAAO,MAAM,uBAAuB,8DAG1B,CAAC;AAEX,yDAAyD;AACzD,eAAO,MAAM,qBAAqB,iHAOxB,CAAC;AAEX,yCAAyC;AACzC,eAAO,MAAM,yBAAyB,oGAM5B,CAAC;AAEX,8DAA8D;AAC9D,eAAO,MAAM,aAAa,kDAAmD,CAAC;AAE9E;;;GAGG;AACH,eAAO,MAAM,qBAAqB,kJASxB,CAAC;AAIX,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,oEAKtB,CAAC;AAEX,sCAAsC;AACtC,eAAO,MAAM,oBAAoB,0JAOvB,CAAC;AAEX,oDAAoD;AACpD,eAAO,MAAM,yBAAyB,wUAa5B,CAAC;AAEX,4CAA4C;AAC5C,eAAO,MAAM,2BAA2B,kEAI9B,CAAC;AAEX,gEAAgE;AAChE,eAAO,MAAM,eAAe,6CAA8C,CAAC;AAE3E,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,oLAQpB,CAAC;AAEX,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,6CAA8C,CAAC"}
1
+ {"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../../src/assessment/literals.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,eAAO,MAAM,mBAAmB,6DAKtB,CAAC;AAEX,2CAA2C;AAC3C,eAAO,MAAM,sBAAsB,oCAAqC,CAAC;AAEzE,gDAAgD;AAChD,eAAO,MAAM,cAAc,0KAUjB,CAAC;AAEX,sCAAsC;AACtC,eAAO,MAAM,mBAAmB,0KAQtB,CAAC;AAEX,wCAAwC;AACxC,eAAO,MAAM,qBAAqB,8CAIxB,CAAC;AAEX,qCAAqC;AACrC,eAAO,MAAM,kBAAkB,gDAIrB,CAAC;AAEX,2CAA2C;AAC3C,eAAO,MAAM,wBAAwB,2CAI3B,CAAC;AAEX,2CAA2C;AAC3C,eAAO,MAAM,uBAAuB,2CAI1B,CAAC;AAEX,wCAAwC;AACxC,eAAO,MAAM,uBAAuB,8DAG1B,CAAC;AAEX,yDAAyD;AACzD,eAAO,MAAM,qBAAqB,iHAOxB,CAAC;AAEX,yCAAyC;AACzC,eAAO,MAAM,yBAAyB,oGAM5B,CAAC;AAEX,8DAA8D;AAC9D,eAAO,MAAM,aAAa,kDAAmD,CAAC;AAE9E;;;GAGG;AACH,eAAO,MAAM,qBAAqB,kJASxB,CAAC;AAIX,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,oEAKtB,CAAC;AAEX,sCAAsC;AACtC,eAAO,MAAM,oBAAoB,0JAOvB,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,oWAc5B,CAAC;AAEX,4CAA4C;AAC5C,eAAO,MAAM,2BAA2B,kEAI9B,CAAC;AAEX,gEAAgE;AAChE,eAAO,MAAM,eAAe,6CAA8C,CAAC;AAE3E,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,oLAQpB,CAAC;AAEX,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,6CAA8C,CAAC"}
@@ -108,7 +108,14 @@ export const ABSTAIN_REASON_KINDS = [
108
108
  "no_honest_bounded_target",
109
109
  "insufficient_collection",
110
110
  ];
111
- /** Blocker kinds for EvidenceSufficiencyVerdict. */
111
+ /**
112
+ * Blocker kinds for EvidenceSufficiencyVerdict.
113
+ *
114
+ * Taxonomy separation:
115
+ * - Collection / acquisition incompleteness: repository_coverage_insufficient, package_facts_missing, …
116
+ * - Routable proof missing: proof_coverage_insufficient
117
+ * - Governed proof-capability ceiling: proof_capability_ceiling
118
+ */
112
119
  export const SUFFICIENCY_BLOCKER_KINDS = [
113
120
  "repository_coverage_insufficient",
114
121
  "package_facts_missing",
@@ -116,6 +123,7 @@ export const SUFFICIENCY_BLOCKER_KINDS = [
116
123
  "private_package",
117
124
  "correlation_abstained",
118
125
  "proof_coverage_insufficient",
126
+ "proof_capability_ceiling",
119
127
  "proof_execution_failed",
120
128
  "unsupported_ecosystem",
121
129
  "partial_monorepo_scan",
@@ -255,6 +255,7 @@ export declare const assessmentSchema: z.ZodObject<{
255
255
  package_facts_missing: "package_facts_missing";
256
256
  correlation_abstained: "correlation_abstained";
257
257
  proof_coverage_insufficient: "proof_coverage_insufficient";
258
+ proof_capability_ceiling: "proof_capability_ceiling";
258
259
  proof_execution_failed: "proof_execution_failed";
259
260
  hypothesized_breaking_unresolved: "hypothesized_breaking_unresolved";
260
261
  advisory_blocking: "advisory_blocking";
@@ -277,6 +278,7 @@ export declare const assessmentSchema: z.ZodObject<{
277
278
  package_facts_missing: "package_facts_missing";
278
279
  correlation_abstained: "correlation_abstained";
279
280
  proof_coverage_insufficient: "proof_coverage_insufficient";
281
+ proof_capability_ceiling: "proof_capability_ceiling";
280
282
  proof_execution_failed: "proof_execution_failed";
281
283
  hypothesized_breaking_unresolved: "hypothesized_breaking_unresolved";
282
284
  advisory_blocking: "advisory_blocking";
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/assessment/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwBxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAqI7C;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsB3B,CAAC;AAEH,MAAM,MAAM,yBAAyB,GACjC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GAC/B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEpC,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAShE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,yBAAyB,CAW5E"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/assessment/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwBxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAqI7C;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsB3B,CAAC;AAEH,MAAM,MAAM,yBAAyB,GACjC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GAC/B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEpC,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAShE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,yBAAyB,CAW5E"}
@@ -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,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);
@@ -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
+ }
@@ -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":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,MAAM,yBAAyB,GACjC,iBAAiB,GACjB,UAAU,GACV,gBAAgB,GAChB,cAAc,CAAC;AAEnB,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1E,MAAM,MAAM,gBAAgB,GACxB,kBAAkB,GAClB,YAAY,GACZ,WAAW,GACX,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAE5E,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;AAElE,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9E,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GACnC,IAAI,GACJ,SAAS,GACT,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,OAAO,GACP,IAAI,GACJ,SAAS,CAAC;AAEd,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,UAAU,GACV,SAAS,GACT,QAAQ,GACR,WAAW,GACX,aAAa,GACb,gBAAgB,GAChB,MAAM,GACN,OAAO,GACP,KAAK,GACL,SAAS,CAAC;AAEd,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,UAAU,GACV,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,MAAM,qBAAqB,GAC7B,SAAS,GACT,YAAY,GACZ,WAAW,GACX,WAAW,GACX,kBAAkB,GAClB,SAAS,CAAC;AAEd,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEhE,MAAM,MAAM,gBAAgB,GACxB,IAAI,GACJ,sBAAsB,GACtB,2BAA2B,GAC3B,0BAA0B,CAAC;AAE/B,iEAAiE;AACjE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gBAAgB,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACjD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3C,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7C,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC/C,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,aAAa,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC3C,cAAc,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC7C,wBAAwB,EAAE,OAAO,CAAC;IAClC,gBAAgB,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACjD,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,eAAe,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC/C,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,aAAa,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC3C,cAAc,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC7C,wBAAwB,EAAE,OAAO,CAAC;IAClC,gBAAgB,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACjD,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE;QACZ,IAAI,EAAE,yBAAyB,CAAC;QAChC,yBAAyB,EAAE,OAAO,CAAC;QACnC,YAAY,EAAE;YAAE,KAAK,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAE,CAAC;QACjE,qBAAqB,EAAE,2BAA2B,CAAC;QACnD,mBAAmB,EAAE,sBAAsB,EAAE,CAAC;QAC9C,gBAAgB,EAAE,gBAAgB,CAAC;KACpC,CAAC;IAEF,eAAe,EAAE;QACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,GAAG,EAAE,MAAM,EAAE,CAAC;KACf,CAAC;IAEF,YAAY,EAAE,qBAAqB,EAAE,CAAC;IAEtC,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,cAAc,EAAE;QACd,IAAI,EAAE,kBAAkB,CAAC;QACzB,QAAQ,EAAE;YAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YAAC,KAAK,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KACnD,GAAG,IAAI,CAAC;IAET,YAAY,EAAE;QACZ,IAAI,EAAE,gBAAgB,CAAC;QACvB,QAAQ,EAAE;YAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAAC,UAAU,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KACrD,GAAG,IAAI,CAAC;IAET,iEAAiE;IACjE,gBAAgB,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAEjD,+EAA+E;IAC/E,uBAAuB,EAAE,uBAAuB,EAAE,CAAC;IAEnD,WAAW,EAAE;QACX,KAAK,EAAE,gBAAgB,CAAC;QACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,GAAG,IAAI,CAAC;IAET,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAElC,QAAQ,EAAE,KAAK,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC,CAAC;IAEH,gBAAgB,EAAE,KAAK,CAAC;QACtB,IAAI,EAAE,oBAAoB,CAAC;QAC3B,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,qBAAqB,CAAC;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC,CAAC;IAEH,UAAU,EAAE,4BAA4B,CAAC;IAEzC,iBAAiB,EAAE,KAAK,CAAC;QACvB,MAAM,EAAE,uBAAuB,CAAC;QAChC,MAAM,EAAE,uBAAuB,CAAC;QAChC,IAAI,CAAC,EAAE;YAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAAE,CAAC;KACrE,CAAC,CAAC;IAEH,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,oFAAoF;IACpF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,sGAAsG;IACtG,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBA0BxC,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,2BAA2B,KAAK,CAAC"}
@@ -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;
@@ -367,6 +367,7 @@ export declare const engineOutputScanResultSchema: z.ZodObject<{
367
367
  package_facts_missing: "package_facts_missing";
368
368
  correlation_abstained: "correlation_abstained";
369
369
  proof_coverage_insufficient: "proof_coverage_insufficient";
370
+ proof_capability_ceiling: "proof_capability_ceiling";
370
371
  proof_execution_failed: "proof_execution_failed";
371
372
  hypothesized_breaking_unresolved: "hypothesized_breaking_unresolved";
372
373
  advisory_blocking: "advisory_blocking";
@@ -389,6 +390,7 @@ export declare const engineOutputScanResultSchema: z.ZodObject<{
389
390
  package_facts_missing: "package_facts_missing";
390
391
  correlation_abstained: "correlation_abstained";
391
392
  proof_coverage_insufficient: "proof_coverage_insufficient";
393
+ proof_capability_ceiling: "proof_capability_ceiling";
392
394
  proof_execution_failed: "proof_execution_failed";
393
395
  hypothesized_breaking_unresolved: "hypothesized_breaking_unresolved";
394
396
  advisory_blocking: "advisory_blocking";
@@ -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,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"}
@@ -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})",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mergesignal/shared",
3
- "version": "0.15.1",
3
+ "version": "0.16.1",
4
4
  "description": "MergeSignal shared scan contract, presentation policy, and trusted validation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",