@mergesignal/shared 0.12.3 → 0.14.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 (178) hide show
  1. package/dist/assessment/authoredCommunication.d.ts +30 -0
  2. package/dist/assessment/authoredCommunication.d.ts.map +1 -0
  3. package/dist/assessment/authoredCommunication.js +18 -0
  4. package/dist/assessment/index.d.ts +6 -0
  5. package/dist/assessment/index.d.ts.map +1 -0
  6. package/dist/assessment/index.js +5 -0
  7. package/dist/assessment/literals.d.ts +44 -0
  8. package/dist/assessment/literals.d.ts.map +1 -0
  9. package/dist/assessment/literals.js +140 -0
  10. package/dist/assessment/schema.d.ts +311 -0
  11. package/dist/assessment/schema.d.ts.map +1 -0
  12. package/dist/assessment/schema.js +162 -0
  13. package/dist/assessment/types.d.ts +197 -0
  14. package/dist/assessment/types.d.ts.map +1 -0
  15. package/dist/assessment/types.js +1 -0
  16. package/dist/assessment/version.d.ts +11 -0
  17. package/dist/assessment/version.d.ts.map +1 -0
  18. package/dist/assessment/version.js +9 -0
  19. package/dist/assessmentLabels.d.ts +1 -1
  20. package/dist/assessmentLabels.d.ts.map +1 -1
  21. package/dist/assessmentLabels.js +2 -2
  22. package/dist/assessmentPresentationUtils.d.ts +1 -1
  23. package/dist/assessmentPresentationUtils.d.ts.map +1 -1
  24. package/dist/assessmentProjection.d.ts +1 -1
  25. package/dist/assessmentProjection.d.ts.map +1 -1
  26. package/dist/assessmentProjection.js +2 -2
  27. package/dist/deriveScanNarrative.d.ts.map +1 -1
  28. package/dist/deriveScanNarrative.js +2 -1
  29. package/dist/fixtures/assessmentFixtures.d.ts +1 -1
  30. package/dist/fixtures/assessmentFixtures.js +12 -12
  31. package/dist/fixtures/assessmentScopeFixtures.d.ts +1 -1
  32. package/dist/index.d.ts +2 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +2 -0
  35. package/dist/lockfileEvidence.d.ts +22 -0
  36. package/dist/lockfileEvidence.d.ts.map +1 -0
  37. package/dist/lockfileEvidence.js +32 -0
  38. package/dist/presentation/dto/assessmentPresentationFields.d.ts +1 -1
  39. package/dist/presentation/dto/assessmentPresentationFields.d.ts.map +1 -1
  40. package/dist/presentation/orchestration/buildScanPresentationBundle.d.ts.map +1 -1
  41. package/dist/presentation/orchestration/buildScanPresentationBundle.js +2 -1
  42. package/dist/presentation/orchestration/scanPresentationBundle.d.ts +2 -1
  43. package/dist/presentation/orchestration/scanPresentationBundle.d.ts.map +1 -1
  44. package/dist/presentation/profile/buildProfileFromAssessment.d.ts +1 -1
  45. package/dist/presentation/profile/buildProfileFromAssessment.d.ts.map +1 -1
  46. package/dist/presentation/profile/buildProfileFromAssessment.js +14 -6
  47. package/dist/repoIntelligenceSchema.d.ts +5 -5
  48. package/dist/scanResultSchema.d.ts +8 -8
  49. package/dist/scanResultSchema.js +1 -1
  50. package/dist/scanSurfaceCopy.d.ts +1 -0
  51. package/dist/scanSurfaceCopy.d.ts.map +1 -1
  52. package/dist/scanSurfaceCopy.js +1 -0
  53. package/dist/types.d.ts +6 -2
  54. package/dist/types.d.ts.map +1 -1
  55. package/package.json +2 -3
  56. package/dist/actionsStepSummary.test.d.ts +0 -2
  57. package/dist/actionsStepSummary.test.d.ts.map +0 -1
  58. package/dist/actionsStepSummary.test.js +0 -53
  59. package/dist/assessmentProjection.verificationChannel.test.d.ts +0 -2
  60. package/dist/assessmentProjection.verificationChannel.test.d.ts.map +0 -1
  61. package/dist/assessmentProjection.verificationChannel.test.js +0 -110
  62. package/dist/deriveScanNarrative.test.d.ts +0 -2
  63. package/dist/deriveScanNarrative.test.d.ts.map +0 -1
  64. package/dist/deriveScanNarrative.test.js +0 -274
  65. package/dist/engineWireRegression.test.d.ts +0 -2
  66. package/dist/engineWireRegression.test.d.ts.map +0 -1
  67. package/dist/engineWireRegression.test.js +0 -77
  68. package/dist/fixtures/engineAbi4Fixtures.d.ts +0 -16
  69. package/dist/fixtures/engineAbi4Fixtures.d.ts.map +0 -1
  70. package/dist/fixtures/engineAbi4Fixtures.js +0 -26
  71. package/dist/fixtures/legacyEngineRepoIntelligence.d.ts +0 -28
  72. package/dist/fixtures/legacyEngineRepoIntelligence.d.ts.map +0 -1
  73. package/dist/fixtures/legacyEngineRepoIntelligence.js +0 -28
  74. package/dist/fixtures/repoIntelligenceFixtures.d.ts +0 -8
  75. package/dist/fixtures/repoIntelligenceFixtures.d.ts.map +0 -1
  76. package/dist/fixtures/repoIntelligenceFixtures.js +0 -123
  77. package/dist/fixtures/repoIntelligenceTestHelpers.d.ts +0 -5
  78. package/dist/fixtures/repoIntelligenceTestHelpers.d.ts.map +0 -1
  79. package/dist/fixtures/repoIntelligenceTestHelpers.js +0 -28
  80. package/dist/formatInsight.test.d.ts +0 -2
  81. package/dist/formatInsight.test.d.ts.map +0 -1
  82. package/dist/formatInsight.test.js +0 -102
  83. package/dist/narrativeParity.test.d.ts +0 -2
  84. package/dist/narrativeParity.test.d.ts.map +0 -1
  85. package/dist/narrativeParity.test.js +0 -35
  86. package/dist/narrativePresentation.test.d.ts +0 -2
  87. package/dist/narrativePresentation.test.d.ts.map +0 -1
  88. package/dist/narrativePresentation.test.js +0 -54
  89. package/dist/normalizeGeneratedText.test.d.ts +0 -2
  90. package/dist/normalizeGeneratedText.test.d.ts.map +0 -1
  91. package/dist/normalizeGeneratedText.test.js +0 -18
  92. package/dist/prRiskBand.test.d.ts +0 -2
  93. package/dist/prRiskBand.test.d.ts.map +0 -1
  94. package/dist/prRiskBand.test.js +0 -68
  95. package/dist/prRiskWire.test.d.ts +0 -2
  96. package/dist/prRiskWire.test.d.ts.map +0 -1
  97. package/dist/prRiskWire.test.js +0 -106
  98. package/dist/prRiskWiringRegression.test.d.ts +0 -2
  99. package/dist/prRiskWiringRegression.test.d.ts.map +0 -1
  100. package/dist/prRiskWiringRegression.test.js +0 -102
  101. package/dist/presentation/abi3Expression.test.d.ts +0 -13
  102. package/dist/presentation/abi3Expression.test.d.ts.map +0 -1
  103. package/dist/presentation/abi3Expression.test.js +0 -392
  104. package/dist/presentation/buildGitHubCheckRunOutput.test.d.ts +0 -2
  105. package/dist/presentation/buildGitHubCheckRunOutput.test.d.ts.map +0 -1
  106. package/dist/presentation/buildGitHubCheckRunOutput.test.js +0 -163
  107. package/dist/presentation/bundleAccessorParity.test.d.ts +0 -9
  108. package/dist/presentation/bundleAccessorParity.test.d.ts.map +0 -1
  109. package/dist/presentation/bundleAccessorParity.test.js +0 -126
  110. package/dist/presentation/cliParity.test.d.ts +0 -2
  111. package/dist/presentation/cliParity.test.d.ts.map +0 -1
  112. package/dist/presentation/cliParity.test.js +0 -49
  113. package/dist/presentation/compose/narrativeChannels.test.d.ts +0 -2
  114. package/dist/presentation/compose/narrativeChannels.test.d.ts.map +0 -1
  115. package/dist/presentation/compose/narrativeChannels.test.js +0 -42
  116. package/dist/presentation/decisionSurface.test.d.ts +0 -2
  117. package/dist/presentation/decisionSurface.test.d.ts.map +0 -1
  118. package/dist/presentation/decisionSurface.test.js +0 -290
  119. package/dist/presentation/fixtures/dashboardCardGolden.test.d.ts +0 -2
  120. package/dist/presentation/fixtures/dashboardCardGolden.test.d.ts.map +0 -1
  121. package/dist/presentation/fixtures/dashboardCardGolden.test.js +0 -38
  122. package/dist/presentation/fixtures/presentationPersonaFixtures.d.ts +0 -11
  123. package/dist/presentation/fixtures/presentationPersonaFixtures.d.ts.map +0 -1
  124. package/dist/presentation/fixtures/presentationPersonaFixtures.js +0 -208
  125. package/dist/presentation/fixtures/scanResultFixtures.d.ts +0 -5
  126. package/dist/presentation/fixtures/scanResultFixtures.d.ts.map +0 -1
  127. package/dist/presentation/fixtures/scanResultFixtures.js +0 -123
  128. package/dist/presentation/intent/postureVocabularyGuard.test.d.ts +0 -2
  129. package/dist/presentation/intent/postureVocabularyGuard.test.d.ts.map +0 -1
  130. package/dist/presentation/intent/postureVocabularyGuard.test.js +0 -23
  131. package/dist/presentation/orchestration/buildScanPresentationBundle.test.d.ts +0 -2
  132. package/dist/presentation/orchestration/buildScanPresentationBundle.test.d.ts.map +0 -1
  133. package/dist/presentation/orchestration/buildScanPresentationBundle.test.js +0 -99
  134. package/dist/presentation/presentation.test.d.ts +0 -2
  135. package/dist/presentation/presentation.test.d.ts.map +0 -1
  136. package/dist/presentation/presentation.test.js +0 -126
  137. package/dist/presentation/presentationPersonas.test.d.ts +0 -2
  138. package/dist/presentation/presentationPersonas.test.d.ts.map +0 -1
  139. package/dist/presentation/presentationPersonas.test.js +0 -164
  140. package/dist/presentation/surfaceParity.test.d.ts +0 -2
  141. package/dist/presentation/surfaceParity.test.d.ts.map +0 -1
  142. package/dist/presentation/surfaceParity.test.js +0 -156
  143. package/dist/presentation/verificationChannelParity.test.d.ts +0 -2
  144. package/dist/presentation/verificationChannelParity.test.d.ts.map +0 -1
  145. package/dist/presentation/verificationChannelParity.test.js +0 -57
  146. package/dist/productMessaging.test.d.ts +0 -2
  147. package/dist/productMessaging.test.d.ts.map +0 -1
  148. package/dist/productMessaging.test.js +0 -97
  149. package/dist/repoIntelligenceSchema.contract.test.d.ts +0 -2
  150. package/dist/repoIntelligenceSchema.contract.test.d.ts.map +0 -1
  151. package/dist/repoIntelligenceSchema.contract.test.js +0 -51
  152. package/dist/repoIntelligenceSemantics.test.d.ts +0 -2
  153. package/dist/repoIntelligenceSemantics.test.d.ts.map +0 -1
  154. package/dist/repoIntelligenceSemantics.test.js +0 -63
  155. package/dist/repoIntelligenceValidation.persist.test.d.ts +0 -2
  156. package/dist/repoIntelligenceValidation.persist.test.d.ts.map +0 -1
  157. package/dist/repoIntelligenceValidation.persist.test.js +0 -44
  158. package/dist/riskSignals.test.d.ts +0 -2
  159. package/dist/riskSignals.test.d.ts.map +0 -1
  160. package/dist/riskSignals.test.js +0 -32
  161. package/dist/riskVocabulary.test.d.ts +0 -2
  162. package/dist/riskVocabulary.test.d.ts.map +0 -1
  163. package/dist/riskVocabulary.test.js +0 -14
  164. package/dist/scanPresentationBundle.golden.test.d.ts +0 -2
  165. package/dist/scanPresentationBundle.golden.test.d.ts.map +0 -1
  166. package/dist/scanPresentationBundle.golden.test.js +0 -78
  167. package/dist/scanResultSchema.test.d.ts +0 -2
  168. package/dist/scanResultSchema.test.d.ts.map +0 -1
  169. package/dist/scanResultSchema.test.js +0 -162
  170. package/dist/scanSurfaceCopy.test.d.ts +0 -2
  171. package/dist/scanSurfaceCopy.test.d.ts.map +0 -1
  172. package/dist/scanSurfaceCopy.test.js +0 -14
  173. package/dist/selectTopAffectedAreas.test.d.ts +0 -2
  174. package/dist/selectTopAffectedAreas.test.d.ts.map +0 -1
  175. package/dist/selectTopAffectedAreas.test.js +0 -179
  176. package/dist/trustedScanGuards.test.d.ts +0 -2
  177. package/dist/trustedScanGuards.test.d.ts.map +0 -1
  178. package/dist/trustedScanGuards.test.js +0 -151
@@ -0,0 +1,162 @@
1
+ import { z } from "zod";
2
+ import { ABSTAIN_REASON_KINDS, ASSESSMENT_CONFIDENCES, ASSESSMENT_OUTCOMES, ASSESSMENT_POSTURES, ASSESSMENT_REPORT_MODES, BOUNDED_VERIFY_TARGET_KINDS, CHANGE_CLASSES, CLEARANCE_BASES, COVERAGE_CLASSES, DELTA_DIMENSION_KINDS, FOCAL_ELECTION_DIMENSIONS, INSIGHT_EMISSION_FLOORS, MERGE_CONCERN_KINDS, NARRATIVE_INTENSITIES, REACH_BUCKETS, REACH_VISIBILITIES, REVIEW_EPISODE_SHAPES, SUFFICIENCY_BLOCKER_KINDS, UNCLEARED_REASONS, VERIFICATION_INTENSITIES, } from "./literals.js";
3
+ const assessmentConcernSchema = z.object({
4
+ kind: z.enum(MERGE_CONCERN_KINDS),
5
+ rank: z.number().int().nonnegative(),
6
+ packages: z.array(z.string()).optional(),
7
+ evidenceRefs: z.array(z.string()),
8
+ context: z.string().optional(),
9
+ });
10
+ const assessmentPresentationWireSchema = z.object({
11
+ narrativeIntensity: z.enum(NARRATIVE_INTENSITIES),
12
+ reachVisibility: z.enum(REACH_VISIBILITIES),
13
+ verificationIntensity: z.enum(VERIFICATION_INTENSITIES),
14
+ insightEmissionFloor: z.enum(INSIGHT_EMISSION_FLOORS),
15
+ reportMode: z.enum(ASSESSMENT_REPORT_MODES),
16
+ });
17
+ const reviewFocalPointSchema = z.object({
18
+ episodeShape: z.enum(REVIEW_EPISODE_SHAPES),
19
+ anchors: z.array(z.string()),
20
+ supportingPackages: z.array(z.string()).optional(),
21
+ election: z.object({
22
+ grounding: z.array(z.object({
23
+ packageName: z.string(),
24
+ reason: z.string(),
25
+ decidedBy: z.enum(FOCAL_ELECTION_DIMENSIONS),
26
+ evidenceRefs: z.array(z.string()),
27
+ })),
28
+ exclusions: z.array(z.object({
29
+ packageName: z.string(),
30
+ reason: z.string(),
31
+ lostOn: z.enum(FOCAL_ELECTION_DIMENSIONS),
32
+ evidenceRefs: z.array(z.string()),
33
+ })),
34
+ }),
35
+ electionSummary: z.string().optional(),
36
+ });
37
+ const reachScopeSchema = z.object({
38
+ packages: z.array(z.string()),
39
+ maxBucket: z.enum(REACH_BUCKETS),
40
+ entryPointFiles: z.array(z.string()).optional(),
41
+ });
42
+ const artifactGroundedVerificationScopeSchema = z.object({
43
+ packages: z.array(z.string()),
44
+ focus: z.array(z.string()),
45
+ artifactPaths: z.array(z.string()),
46
+ });
47
+ const verificationScopeSchema = z.object({
48
+ packages: z.array(z.string()),
49
+ focus: z.array(z.string()),
50
+ guidance: z.array(z.string()).optional(),
51
+ artifactGrounded: artifactGroundedVerificationScopeSchema.optional(),
52
+ });
53
+ // --- ABI 4 outcome model sub-schemas ---
54
+ const abstainReasonSchema = z.object({
55
+ kind: z.enum(ABSTAIN_REASON_KINDS),
56
+ packageName: z.string().optional(),
57
+ detail: z.string().optional(),
58
+ });
59
+ const sufficiencyBlockerSchema = z.object({
60
+ kind: z.enum(SUFFICIENCY_BLOCKER_KINDS),
61
+ packageName: z.string().optional(),
62
+ detail: z.string().optional(),
63
+ });
64
+ const packageSufficiencySchema = z.object({
65
+ packageName: z.string(),
66
+ clearanceEligible: z.boolean(),
67
+ provenBrokenEligible: z.boolean(),
68
+ blockers: z.array(sufficiencyBlockerSchema),
69
+ });
70
+ const evidenceSufficiencyVerdictSchema = z.object({
71
+ sufficient: z.boolean(),
72
+ clearanceEligible: z.boolean(),
73
+ provenBrokenEligible: z.boolean(),
74
+ boundedVerifyEligible: z.boolean(),
75
+ blockers: z.array(sufficiencyBlockerSchema),
76
+ perPackage: z.record(z.string(), packageSufficiencySchema),
77
+ });
78
+ const boundedVerifyTargetSchema = z.object({
79
+ targetId: z.string(),
80
+ packageName: z.string(),
81
+ kind: z.enum(BOUNDED_VERIFY_TARGET_KINDS),
82
+ file: z.string().optional(),
83
+ line: z.number().int().nonnegative().optional(),
84
+ configKey: z.string().optional(),
85
+ scenario: z.string().optional(),
86
+ whatToVerify: z.string(),
87
+ whyAutomationStopped: z.string(),
88
+ whatProofWouldResolveIt: z.string(),
89
+ });
90
+ const clearedDimensionSchema = z.object({
91
+ kind: z.enum(DELTA_DIMENSION_KINDS),
92
+ basis: z.enum(CLEARANCE_BASES),
93
+ proofArtifactRef: z.string().optional(),
94
+ noImpactProofRef: z.string().optional(),
95
+ });
96
+ const unclearedDimensionSchema = z.object({
97
+ kind: z.enum(DELTA_DIMENSION_KINDS),
98
+ reason: z.enum(UNCLEARED_REASONS),
99
+ boundedVerifyTarget: boundedVerifyTargetSchema.optional(),
100
+ });
101
+ const clearanceEnvelopeSchema = z.object({
102
+ packageName: z.string(),
103
+ clearedDimensions: z.array(clearedDimensionSchema),
104
+ unclearedDimensions: z.array(unclearedDimensionSchema),
105
+ coverageClass: z.enum(COVERAGE_CLASSES),
106
+ });
107
+ const packageOutcomeSchema = z.object({
108
+ packageName: z.string(),
109
+ outcome: z.enum(ASSESSMENT_OUTCOMES),
110
+ proofArtifactRefs: z.array(z.string()).optional(),
111
+ clearanceEnvelopeRef: z.string().optional(),
112
+ boundedVerifyTargetRefs: z.array(z.string()).optional(),
113
+ });
114
+ /** Root Assessment wire schema (ABI 4).
115
+ *
116
+ * All ABI 3 required fields are preserved. ABI 4 outcome model fields are optional,
117
+ * so ABI 3 payloads continue to parse successfully. Parsers must tolerate absent ABI 4
118
+ * fields and treat them as "shadow mode not yet active."
119
+ */
120
+ export const assessmentSchema = z.object({
121
+ reviewFocalPoint: reviewFocalPointSchema,
122
+ reachScope: reachScopeSchema,
123
+ verificationScope: verificationScopeSchema,
124
+ posture: z.enum(ASSESSMENT_POSTURES),
125
+ confidence: z.enum(ASSESSMENT_CONFIDENCES),
126
+ primaryConcern: z.enum(MERGE_CONCERN_KINDS).nullable(),
127
+ concerns: z.array(assessmentConcernSchema),
128
+ factors: z.array(z.string()),
129
+ changeClasses: z.array(z.enum(CHANGE_CLASSES)),
130
+ presentation: assessmentPresentationWireSchema,
131
+ reasoning: z.array(z.string()),
132
+ confidenceRationale: z.string(),
133
+ notAffectedLine: z.string().nullable().optional(),
134
+ resolutionLine: z.string().nullable().optional(),
135
+ // ABI 4 optional outcome model fields — absent when shadow mode is inactive
136
+ outcome: z.enum(ASSESSMENT_OUTCOMES).optional(),
137
+ perPackageOutcome: z.record(z.string(), packageOutcomeSchema).optional(),
138
+ clearanceEnvelopes: z.record(z.string(), clearanceEnvelopeSchema).optional(),
139
+ boundedVerifyTargets: z.array(boundedVerifyTargetSchema).optional(),
140
+ evidenceSufficiencyVerdict: evidenceSufficiencyVerdictSchema.optional(),
141
+ abstainReasons: z.array(abstainReasonSchema).optional(),
142
+ });
143
+ export function parseAssessmentOrThrow(data) {
144
+ const parsed = assessmentSchema.safeParse(data);
145
+ if (!parsed.success) {
146
+ const issues = parsed.error.issues
147
+ .map((i) => `${i.path.join(".") || "(root)"}: ${i.message}`)
148
+ .join("; ");
149
+ throw new Error(`assessment validation: ${issues}`);
150
+ }
151
+ return parsed.data;
152
+ }
153
+ export function safeParseAssessment(data) {
154
+ const parsed = assessmentSchema.safeParse(data);
155
+ if (!parsed.success) {
156
+ return {
157
+ ok: false,
158
+ issues: parsed.error.issues.map((i) => `${i.path.join(".") || "(root)"}: ${i.message}`),
159
+ };
160
+ }
161
+ return { ok: true, value: parsed.data };
162
+ }
@@ -0,0 +1,197 @@
1
+ import type { ABSTAIN_REASON_KINDS, ASSESSMENT_CONFIDENCES, ASSESSMENT_OUTCOMES, ASSESSMENT_POSTURES, ASSESSMENT_REPORT_MODES, BOUNDED_VERIFY_TARGET_KINDS, CHANGE_CLASSES, CLEARANCE_BASES, COVERAGE_CLASSES, DELTA_DIMENSION_KINDS, FOCAL_ELECTION_DIMENSIONS, INSIGHT_EMISSION_FLOORS, MERGE_CONCERN_KINDS, NARRATIVE_INTENSITIES, REACH_BUCKETS, REACH_VISIBILITIES, REVIEW_EPISODE_SHAPES, SUFFICIENCY_BLOCKER_KINDS, UNCLEARED_REASONS, VERIFICATION_INTENSITIES } from "./literals.js";
2
+ /**
3
+ * Assessment Contract — canonical public decision and explainability wire types.
4
+ * Assessment is the sole authority for posture and presentation intensity on the wire.
5
+ */
6
+ export type AssessmentPosture = (typeof ASSESSMENT_POSTURES)[number];
7
+ export type AssessmentConfidence = (typeof ASSESSMENT_CONFIDENCES)[number];
8
+ export type ChangeClass = (typeof CHANGE_CLASSES)[number];
9
+ export type MergeConcernKind = (typeof MERGE_CONCERN_KINDS)[number];
10
+ export type NarrativeIntensity = (typeof NARRATIVE_INTENSITIES)[number];
11
+ export type ReachVisibility = (typeof REACH_VISIBILITIES)[number];
12
+ export type VerificationIntensity = (typeof VERIFICATION_INTENSITIES)[number];
13
+ export type InsightEmissionFloor = (typeof INSIGHT_EMISSION_FLOORS)[number];
14
+ export type AssessmentReportMode = (typeof ASSESSMENT_REPORT_MODES)[number];
15
+ export type ReviewEpisodeShape = (typeof REVIEW_EPISODE_SHAPES)[number];
16
+ export type FocalElectionDimension = (typeof FOCAL_ELECTION_DIMENSIONS)[number];
17
+ export type ReachBucket = (typeof REACH_BUCKETS)[number];
18
+ export type DeltaDimensionKind = (typeof DELTA_DIMENSION_KINDS)[number];
19
+ export type AssessmentConcern = {
20
+ kind: MergeConcernKind;
21
+ rank: number;
22
+ packages?: string[];
23
+ evidenceRefs: string[];
24
+ /** One sentence of repository-specific context; absent when no repo-specific content. */
25
+ context?: string;
26
+ };
27
+ export type AssessmentPresentation = {
28
+ narrativeIntensity: NarrativeIntensity;
29
+ reachVisibility: ReachVisibility;
30
+ verificationIntensity: VerificationIntensity;
31
+ insightEmissionFloor: InsightEmissionFloor;
32
+ reportMode: AssessmentReportMode;
33
+ };
34
+ export type FocalElectionGrounding = {
35
+ packageName: string;
36
+ reason: string;
37
+ decidedBy: FocalElectionDimension;
38
+ evidenceRefs: string[];
39
+ };
40
+ export type FocalElectionExclusion = {
41
+ packageName: string;
42
+ reason: string;
43
+ lostOn: FocalElectionDimension;
44
+ evidenceRefs: string[];
45
+ };
46
+ export type ReviewFocalPoint = {
47
+ episodeShape: ReviewEpisodeShape;
48
+ anchors: string[];
49
+ supportingPackages?: string[];
50
+ election: {
51
+ grounding: FocalElectionGrounding[];
52
+ exclusions: FocalElectionExclusion[];
53
+ };
54
+ /** One sentence explaining the anchor election; absent for structural episodes or uncontested elections. */
55
+ electionSummary?: string;
56
+ };
57
+ export type ReachScope = {
58
+ packages: string[];
59
+ maxBucket: ReachBucket;
60
+ /** Repository entry paths grounded by propagation evidence (Phase 3.5). */
61
+ entryPointFiles?: string[];
62
+ };
63
+ export type VerificationScope = {
64
+ packages: string[];
65
+ focus: string[];
66
+ /** Actionable verification sentences; absent when verificationIntensity === 'none'. */
67
+ guidance?: string[];
68
+ /** Advisory artifact-grounded verification (tooling packages only). */
69
+ artifactGrounded?: ArtifactGroundedVerificationScope;
70
+ };
71
+ export type ArtifactGroundedVerificationScope = {
72
+ packages: string[];
73
+ focus: string[];
74
+ artifactPaths: string[];
75
+ };
76
+ /** Assessment wire contract (ABI 4 — adds outcome model fields; ABI 3 expression fields preserved). */
77
+ export type Assessment = {
78
+ reviewFocalPoint: ReviewFocalPoint;
79
+ reachScope: ReachScope;
80
+ verificationScope: VerificationScope;
81
+ posture: AssessmentPosture;
82
+ confidence: AssessmentConfidence;
83
+ primaryConcern: MergeConcernKind | null;
84
+ concerns: AssessmentConcern[];
85
+ factors: string[];
86
+ changeClasses: ChangeClass[];
87
+ presentation: AssessmentPresentation;
88
+ /** Repository-specific reasoning sentences explaining this posture. Always produced. */
89
+ reasoning: string[];
90
+ /** One sentence explaining this confidence level. Always produced. */
91
+ confidenceRationale: string;
92
+ /**
93
+ * Q8 answer: "What is not affected?" — authored for `cleared` outcome when at least one
94
+ * dimension was proven unused. Detail/CLI only; absent when nothing was proven unused.
95
+ */
96
+ notAffectedLine?: string | null;
97
+ /**
98
+ * Q9 answer: "What would make this deterministic?" — authored in Expression for
99
+ * `bounded_verify` and `abstain` outcomes. Absent for `cleared` and `proven_broken`.
100
+ */
101
+ resolutionLine?: string | null;
102
+ /** Primary product outcome surface (ABI 4). Absent until shadow mode is active. */
103
+ outcome?: AssessmentOutcome;
104
+ perPackageOutcome?: Record<string, PackageOutcome>;
105
+ clearanceEnvelopes?: Record<string, ClearanceEnvelope>;
106
+ /** Bounded verify targets, capped at 3 per PR. */
107
+ boundedVerifyTargets?: BoundedVerifyTarget[];
108
+ evidenceSufficiencyVerdict?: EvidenceSufficiencyVerdict;
109
+ abstainReasons?: AbstainReason[];
110
+ };
111
+ /** Wire presentation subset — excludes engine policy fields. */
112
+ export type AssessmentPresentationPublic = Pick<AssessmentPresentation, "narrativeIntensity" | "reachVisibility" | "verificationIntensity" | "reportMode">;
113
+ export type AssessmentPresentationWire = AssessmentPresentation;
114
+ export type AssessmentOutcome = (typeof ASSESSMENT_OUTCOMES)[number];
115
+ export type AbstainReasonKind = (typeof ABSTAIN_REASON_KINDS)[number];
116
+ export type SufficiencyBlockerKind = (typeof SUFFICIENCY_BLOCKER_KINDS)[number];
117
+ export type BoundedVerifyTargetKind = (typeof BOUNDED_VERIFY_TARGET_KINDS)[number];
118
+ export type ClearanceBasis = (typeof CLEARANCE_BASES)[number];
119
+ export type UnclearedReason = (typeof UNCLEARED_REASONS)[number];
120
+ export type CoverageClass = (typeof COVERAGE_CLASSES)[number];
121
+ export type AbstainReason = {
122
+ kind: AbstainReasonKind;
123
+ packageName?: string;
124
+ detail?: string;
125
+ };
126
+ export type SufficiencyBlocker = {
127
+ kind: SufficiencyBlockerKind;
128
+ packageName?: string;
129
+ detail?: string;
130
+ };
131
+ export type PackageSufficiency = {
132
+ packageName: string;
133
+ clearanceEligible: boolean;
134
+ provenBrokenEligible: boolean;
135
+ blockers: SufficiencyBlocker[];
136
+ };
137
+ export type EvidenceSufficiencyVerdict = {
138
+ sufficient: boolean;
139
+ clearanceEligible: boolean;
140
+ provenBrokenEligible: boolean;
141
+ boundedVerifyEligible: boolean;
142
+ blockers: SufficiencyBlocker[];
143
+ perPackage: Record<string, PackageSufficiency>;
144
+ };
145
+ export type BoundedVerifyTarget = {
146
+ targetId: string;
147
+ packageName: string;
148
+ kind: BoundedVerifyTargetKind;
149
+ file?: string;
150
+ line?: number;
151
+ configKey?: string;
152
+ /**
153
+ * Internal engine metadata identifying the scenario type.
154
+ * NEVER rendered directly in developer-facing output — vocabulary firewall.
155
+ * Expression uses `whatToVerify` (noun phrase) to compose the developer sentence.
156
+ */
157
+ scenario?: string;
158
+ /**
159
+ * Noun phrase describing the subject of verification.
160
+ * Expression's BOUNDED_VERIFY_SENTENCE templates compose the full developer sentence.
161
+ *
162
+ * Correct: "constraint ranges for `pkg-a`"
163
+ * Incorrect: "Verify `pkg-a` constraint ranges are satisfied." (complete sentence — causes double-verb)
164
+ */
165
+ whatToVerify: string;
166
+ whyAutomationStopped: string;
167
+ /**
168
+ * Internal proof-kind slug identifying what evidence would close this target.
169
+ * NEVER rendered directly — Expression maps this to resolutionLine prose.
170
+ */
171
+ whatProofWouldResolveIt: string;
172
+ };
173
+ export type ClearedDimension = {
174
+ kind: DeltaDimensionKind;
175
+ basis: ClearanceBasis;
176
+ proofArtifactRef?: string;
177
+ noImpactProofRef?: string;
178
+ };
179
+ export type UnclearedDimension = {
180
+ kind: DeltaDimensionKind;
181
+ reason: UnclearedReason;
182
+ boundedVerifyTarget?: BoundedVerifyTarget;
183
+ };
184
+ export type ClearanceEnvelope = {
185
+ packageName: string;
186
+ clearedDimensions: ClearedDimension[];
187
+ unclearedDimensions: UnclearedDimension[];
188
+ coverageClass: CoverageClass;
189
+ };
190
+ export type PackageOutcome = {
191
+ packageName: string;
192
+ outcome: AssessmentOutcome;
193
+ proofArtifactRefs?: string[];
194
+ clearanceEnvelopeRef?: string;
195
+ boundedVerifyTargetRefs?: string[];
196
+ };
197
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/assessment/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Assessment wire ABI — canonical authority for MergeSignal public Assessment contracts.
3
+ * Bump only on incompatible Assessment wire shape changes.
4
+ *
5
+ * ABI 4: adds optional outcome model fields (outcome, perPackageOutcome,
6
+ * clearanceEnvelopes, boundedVerifyTargets, evidenceSufficiencyVerdict, abstainReasons).
7
+ * Backward-compatible: all new fields are optional; ABI 3 payloads remain valid.
8
+ */
9
+ export declare const ASSESSMENT_ABI: "4";
10
+ export type AssessmentAbi = typeof ASSESSMENT_ABI;
11
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/assessment/version.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAG,GAAY,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,OAAO,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Assessment wire ABI — canonical authority for MergeSignal public Assessment contracts.
3
+ * Bump only on incompatible Assessment wire shape changes.
4
+ *
5
+ * ABI 4: adds optional outcome model fields (outcome, perPackageOutcome,
6
+ * clearanceEnvelopes, boundedVerifyTargets, evidenceSufficiencyVerdict, abstainReasons).
7
+ * Backward-compatible: all new fields are optional; ABI 3 payloads remain valid.
8
+ */
9
+ export const ASSESSMENT_ABI = "4";
@@ -1,4 +1,4 @@
1
- import type { MergeConcernKind } from "@mergesignal/contracts";
1
+ import type { MergeConcernKind } from "./assessment/types.js";
2
2
  /** Display labels for factor tokens (mirrors engine factor-registry labels). */
3
3
  export declare const ASSESSMENT_FACTOR_LABELS: Record<string, string>;
4
4
  export declare const MERGE_CONCERN_LABELS: Record<MergeConcernKind, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"assessmentLabels.d.ts","sourceRoot":"","sources":["../src/assessmentLabels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmB3D,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAcjE,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D"}
1
+ {"version":3,"file":"assessmentLabels.d.ts","sourceRoot":"","sources":["../src/assessmentLabels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmB3D,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAcjE,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D"}
@@ -1,6 +1,6 @@
1
1
  /** Display labels for factor tokens (mirrors engine factor-registry labels). */
2
2
  export const ASSESSMENT_FACTOR_LABELS = {
3
- confirmed_runtime_usage: "Confirmed runtime usage",
3
+ unresolved_runtime_exposure: "Unresolved runtime exposure",
4
4
  queue_infrastructure: "Queue infrastructure",
5
5
  http_framework_infrastructure: "HTTP framework infrastructure",
6
6
  auth_infrastructure: "Authentication infrastructure",
@@ -20,7 +20,7 @@ export const ASSESSMENT_FACTOR_LABELS = {
20
20
  runtime_patch: "Runtime dependency patch",
21
21
  };
22
22
  export const MERGE_CONCERN_LABELS = {
23
- confirmed_runtime_usage: "Changed package has confirmed usage on runtime application paths in this repository.",
23
+ unresolved_runtime_exposure: "Changed package upgrade leaves unresolved runtime exposure that warrants review before merge.",
24
24
  security_finding: "Security advisory or vulnerability finding affects changed dependencies.",
25
25
  breaking_or_major: "Breaking change or major version bump warrants explicit review.",
26
26
  behavioral_change: "Behavioral change risk detected on changed dependencies.",
@@ -1,4 +1,4 @@
1
- import type { AssessmentPresentationPublic, AssessmentPresentationWire, NarrativeIntensity } from "@mergesignal/contracts";
1
+ import type { AssessmentPresentationPublic, AssessmentPresentationWire, NarrativeIntensity } from "./assessment/types.js";
2
2
  /** Public presentation subset — excludes engine policy fields. */
3
3
  export declare function toPublicPresentation(wire: AssessmentPresentationWire): AssessmentPresentationPublic;
4
4
  /** Map engine narrative intensity to presentation density (formatting only). */
@@ -1 +1 @@
1
- {"version":3,"file":"assessmentPresentationUtils.d.ts","sourceRoot":"","sources":["../src/assessmentPresentationUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAEhC,kEAAkE;AAClE,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,0BAA0B,GAC/B,4BAA4B,CAO9B;AAED,gFAAgF;AAChF,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,kBAAkB,GAC5B,SAAS,GAAG,UAAU,GAAG,MAAM,CAIjC"}
1
+ {"version":3,"file":"assessmentPresentationUtils.d.ts","sourceRoot":"","sources":["../src/assessmentPresentationUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAE/B,kEAAkE;AAClE,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,0BAA0B,GAC/B,4BAA4B,CAO9B;AAED,gFAAgF;AAChF,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,kBAAkB,GAC5B,SAAS,GAAG,UAAU,GAAG,MAAM,CAIjC"}
@@ -1,6 +1,6 @@
1
1
  import type { ScanResult } from "./types.js";
2
2
  import { type RepoIntelligence } from "./repoIntelligenceSchema.js";
3
- import type { Assessment, AssessmentPresentationPublic, ReachVisibility, VerificationIntensity } from "@mergesignal/contracts";
3
+ import type { Assessment, AssessmentPresentationPublic, ReachVisibility, VerificationIntensity } from "./assessment/types.js";
4
4
  import type { PresentationStatus } from "./presentation/dto/types.js";
5
5
  export type VerificationChannel = "runtime" | "artifact" | "none";
6
6
  export declare function resolveVerificationChannel(intensity: VerificationIntensity): VerificationChannel;
@@ -1 +1 @@
1
- {"version":3,"file":"assessmentProjection.d.ts","sourceRoot":"","sources":["../src/assessmentProjection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,UAAU,EACV,4BAA4B,EAC5B,eAAe,EACf,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAOhC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAmDlE,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,qBAAqB,GAC/B,mBAAmB,CAIrB;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAQ5E;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAS7E;AAED,wBAAgB,uCAAuC,CACrD,YAAY,EAAE,4BAA4B,EAC1C,MAAM,EAAE,UAAU,GACjB;IAAE,OAAO,EAAE,mBAAmB,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAWnD;AAED,8FAA8F;AAC9F,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAErE;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,eAAe,GAC1B,MAAM,GAAG,SAAS,CAWpB;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,kBAAkB,GACzB,MAAM,CAiDR;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAMlE;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,UAAU,GACjB,MAAM,EAAE,CAaV;AAED,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,4BAA4B,EAC1C,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAWV;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI,GAAG,MAAM,EAAE,CAI3E"}
1
+ {"version":3,"file":"assessmentProjection.d.ts","sourceRoot":"","sources":["../src/assessmentProjection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,UAAU,EACV,4BAA4B,EAC5B,eAAe,EACf,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAmDlE,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,qBAAqB,GAC/B,mBAAmB,CAIrB;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAQ5E;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAS7E;AAED,wBAAgB,uCAAuC,CACrD,YAAY,EAAE,4BAA4B,EAC1C,MAAM,EAAE,UAAU,GACjB;IAAE,OAAO,EAAE,mBAAmB,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAWnD;AAED,8FAA8F;AAC9F,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAErE;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,eAAe,GAC1B,MAAM,GAAG,SAAS,CAWpB;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,kBAAkB,GACzB,MAAM,CAiDR;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAMlE;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,UAAU,GACjB,MAAM,EAAE,CAaV;AAED,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,4BAA4B,EAC1C,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAWV;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI,GAAG,MAAM,EAAE,CAI3E"}
@@ -113,9 +113,9 @@ export function formatAssessmentHeadline(assessment, status) {
113
113
  const headline = copy.toolingPatchHeadline.replace("{package}", primaryPkg);
114
114
  return applyPostureVocabularyGuardHeadline(headline, status, primaryPkg);
115
115
  }
116
- if (assessment.primaryConcern === "confirmed_runtime_usage") {
116
+ if (assessment.primaryConcern === "unresolved_runtime_exposure") {
117
117
  const surface = surfaceHintFromAssessment(assessment);
118
- const headline = copy.runtimeUpgradeHeadline
118
+ const headline = copy.unresolvedRuntimeExposureHeadline
119
119
  .replace("{package}", primaryPkg)
120
120
  .replace("{surface}", surface);
121
121
  return applyPostureVocabularyGuardHeadline(headline, status, primaryPkg);
@@ -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;AAGjC,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;AAwiBpB;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACpC,kBAAkB,CAsIpB"}
@@ -5,6 +5,7 @@ import { isRuntimeNarrativeSafe } from "./repoIntelligenceSemantics.js";
5
5
  import { deriveRiskSignals } from "./riskSignals.js";
6
6
  import { EMPTY_SCAN_NARRATIVE_FACTS, NARRATIVE_FACT_MAX_AREAS, NARRATIVE_FACT_MAX_HOTSPOTS, NARRATIVE_FACT_MAX_PATHS, } from "./scanNarrativeFacts.js";
7
7
  import { mergePostureFromDecision } from "./riskVocabulary.js";
8
+ import { hasPreparationUncertaintyWarnings } from "./lockfileEvidence.js";
8
9
  import { selectTopAffectedAreas } from "./selectTopAffectedAreas.js";
9
10
  function parseChangedPackages(changed) {
10
11
  const all = Array.isArray(changed)
@@ -407,7 +408,7 @@ function assessmentConfidenceFromResult(result) {
407
408
  }
408
409
  function limitedContextDiagnostic(input) {
409
410
  return (input.corpusGateReason !== "ok" ||
410
- input.preparationWarnings.length > 0 ||
411
+ hasPreparationUncertaintyWarnings(input.preparationWarnings) ||
411
412
  input.assessmentConfidence === "low");
412
413
  }
413
414
  /**
@@ -1,4 +1,4 @@
1
- import type { Assessment } from "@mergesignal/contracts";
1
+ import type { Assessment } from "../assessment/types.js";
2
2
  export declare const assessmentTypescriptPatch: Assessment;
3
3
  export declare const assessmentEslint: Assessment;
4
4
  export declare const assessmentPrettier: Assessment;
@@ -57,16 +57,16 @@ export const assessmentVitest = withAssessmentScope({
57
57
  export const assessmentFastifyRuntime = withAssessmentScope({
58
58
  posture: "needs_review",
59
59
  confidence: "medium",
60
- primaryConcern: "confirmed_runtime_usage",
60
+ primaryConcern: "unresolved_runtime_exposure",
61
61
  concerns: [
62
62
  {
63
- kind: "confirmed_runtime_usage",
63
+ kind: "unresolved_runtime_exposure",
64
64
  rank: 1,
65
65
  packages: ["fastify"],
66
66
  evidenceRefs: ["fixture:fastify"],
67
67
  },
68
68
  ],
69
- factors: ["confirmed_runtime_usage", "http_framework_infrastructure"],
69
+ factors: ["unresolved_runtime_exposure", "http_framework_infrastructure"],
70
70
  changeClasses: ["runtime_upgrade"],
71
71
  presentation: runtimeReviewPresentation,
72
72
  }, {
@@ -77,17 +77,17 @@ export const assessmentFastifyRuntime = withAssessmentScope({
77
77
  export const assessmentBullmq = withAssessmentScope({
78
78
  posture: "needs_review",
79
79
  confidence: "medium",
80
- primaryConcern: "confirmed_runtime_usage",
80
+ primaryConcern: "unresolved_runtime_exposure",
81
81
  concerns: [
82
82
  {
83
- kind: "confirmed_runtime_usage",
83
+ kind: "unresolved_runtime_exposure",
84
84
  rank: 1,
85
85
  packages: ["bullmq"],
86
86
  evidenceRefs: ["fixture:bullmq"],
87
87
  },
88
88
  ],
89
89
  factors: [
90
- "confirmed_runtime_usage",
90
+ "unresolved_runtime_exposure",
91
91
  "queue_infrastructure",
92
92
  "verification_required",
93
93
  ],
@@ -101,16 +101,16 @@ export const assessmentBullmq = withAssessmentScope({
101
101
  export const assessmentNextAuth = withAssessmentScope({
102
102
  posture: "needs_review",
103
103
  confidence: "medium",
104
- primaryConcern: "confirmed_runtime_usage",
104
+ primaryConcern: "unresolved_runtime_exposure",
105
105
  concerns: [
106
106
  {
107
- kind: "confirmed_runtime_usage",
107
+ kind: "unresolved_runtime_exposure",
108
108
  rank: 1,
109
109
  packages: ["next-auth"],
110
110
  evidenceRefs: ["fixture:nextauth"],
111
111
  },
112
112
  ],
113
- factors: ["confirmed_runtime_usage", "auth_infrastructure"],
113
+ factors: ["unresolved_runtime_exposure", "auth_infrastructure"],
114
114
  changeClasses: ["runtime_upgrade"],
115
115
  presentation: runtimeReviewPresentation,
116
116
  }, {
@@ -122,17 +122,17 @@ export const assessmentNextAuth = withAssessmentScope({
122
122
  export const assessmentMixedTypescriptFastify = withAssessmentScope({
123
123
  posture: "needs_review",
124
124
  confidence: "medium",
125
- primaryConcern: "confirmed_runtime_usage",
125
+ primaryConcern: "unresolved_runtime_exposure",
126
126
  concerns: [
127
127
  {
128
- kind: "confirmed_runtime_usage",
128
+ kind: "unresolved_runtime_exposure",
129
129
  rank: 1,
130
130
  packages: ["fastify"],
131
131
  evidenceRefs: ["fixture:fastify"],
132
132
  },
133
133
  ],
134
134
  factors: [
135
- "confirmed_runtime_usage",
135
+ "unresolved_runtime_exposure",
136
136
  "queue_infrastructure",
137
137
  "http_framework_infrastructure",
138
138
  ],
@@ -1,4 +1,4 @@
1
- import type { ArtifactGroundedVerificationScope, Assessment, FocalElectionDimension, ReachScope, ReviewEpisodeShape, ReviewFocalPoint, VerificationScope } from "@mergesignal/contracts";
1
+ import type { ArtifactGroundedVerificationScope, Assessment, FocalElectionDimension, ReachScope, ReviewEpisodeShape, ReviewFocalPoint, VerificationScope } from "../assessment/types.js";
2
2
  export declare function minimalReviewFocalPoint(anchors: string[], opts?: {
3
3
  episodeShape?: ReviewEpisodeShape;
4
4
  supportingPackages?: string[];
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export * from "./types.js";
2
+ export * from "./assessment/index.js";
3
+ export * from "./lockfileEvidence.js";
2
4
  export * from "./assessmentLabels.js";
3
5
  export * from "./assessmentProjection.js";
4
6
  export * from "./riskVocabulary.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,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,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
@@ -1,4 +1,6 @@
1
1
  export * from "./types.js";
2
+ export * from "./assessment/index.js";
3
+ export * from "./lockfileEvidence.js";
2
4
  export * from "./assessmentLabels.js";
3
5
  export * from "./assessmentProjection.js";
4
6
  export * from "./riskVocabulary.js";
@@ -0,0 +1,22 @@
1
+ import type { AnalysisContextWarning } from "./types.js";
2
+ /** Authoritative lockfile comparison outcome from Scan Preparation. */
3
+ export type LockfileEvidenceStatus = {
4
+ kind: "not_applicable";
5
+ } | {
6
+ kind: "verified";
7
+ delta: "empty" | "changed";
8
+ } | {
9
+ kind: "unavailable";
10
+ reason: "incomplete_parse" | "missing_head" | "missing_base" | "manager_mismatch" | "comparison_failed";
11
+ };
12
+ /** Lockfile warnings that limit evidence confidence for merge decisions. */
13
+ export declare const LOCKFILE_UNCERTAINTY_WARNING_CODES: readonly ["lockfile_evidence_incomplete", "lockfile_head_missing", "base_lockfile_missing", "lockfile_diff_skipped", "lockfile_diff_failed"];
14
+ export type LockfileUncertaintyWarningCode = (typeof LOCKFILE_UNCERTAINTY_WARNING_CODES)[number];
15
+ /** Preparation warnings that limit scan context confidence (excludes informational events). */
16
+ export declare const PREPARATION_UNCERTAINTY_WARNING_CODES: readonly ["lockfile_evidence_incomplete", "lockfile_head_missing", "base_lockfile_missing", "lockfile_diff_skipped", "lockfile_diff_failed", "code_fetch_failed", "code_fetch_auth_failure", "code_fetch_timeout", "code_fetch_rate_limit", "code_corpus_empty", "repo_intelligence_contract_invalid"];
17
+ export type PreparationUncertaintyWarningCode = (typeof PREPARATION_UNCERTAINTY_WARNING_CODES)[number];
18
+ export declare function isLockfileUncertaintyWarningCode(code: string): code is LockfileUncertaintyWarningCode;
19
+ export declare function isPreparationUncertaintyWarning(warning: AnalysisContextWarning): boolean;
20
+ export declare function hasLockfileUncertaintyWarnings(warnings: readonly AnalysisContextWarning[]): boolean;
21
+ export declare function hasPreparationUncertaintyWarnings(warnings: readonly AnalysisContextWarning[]): boolean;
22
+ //# sourceMappingURL=lockfileEvidence.d.ts.map