@mergesignal/shared 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -75,6 +75,193 @@ export declare const scanSurfaceCopy: {
75
75
  /** Single line for UI/CLI/Actions parity (risk index semantics). */
76
76
  readonly riskIndexDirectionShort: "0 is best · 100 is worst";
77
77
  };
78
+ /** Scan detail page (`/scan/[id]`) — show-don't-teach reviewer copy. */
79
+ readonly scanDetail: {
80
+ readonly recommendedActionsHeading: "Recommended actions";
81
+ readonly signalSummaryHeading: "Signal summary";
82
+ /** @deprecated Use signalSummaryHeading */
83
+ readonly riskSummaryHeading: "Signal summary";
84
+ readonly operationalImpactHeading: "What this upgrade may affect";
85
+ readonly whyVerdictHeading: "Why this verdict";
86
+ readonly proofHeading: "Proof";
87
+ readonly nextStepsHeading: "Recommended next steps";
88
+ readonly topologySummary: "Dependency topology";
89
+ readonly topologyCollapsedHint: "Supporting detail — graph paths and depth";
90
+ readonly whereLabel: "Where";
91
+ readonly verifyLabel: "Verify";
92
+ readonly moreImpactsSummary: "More impacts";
93
+ readonly moreRecommendationsSummary: "More recommendations";
94
+ readonly moreFindingsSummary: "More findings";
95
+ readonly reachChip: {
96
+ readonly focused: "Focused reach";
97
+ readonly limited: "Limited reach";
98
+ readonly moderate: "Moderate reach";
99
+ readonly wide: "Wide reach";
100
+ };
101
+ readonly verdictLine: {
102
+ readonly safeNoBlockersNarrow: "No merge blockers · narrow footprint";
103
+ readonly safeNoBlockersModerate: "No merge blockers · moderate dependency footprint";
104
+ readonly safeNoBlockersWide: "No merge blockers · wide upgrade footprint";
105
+ readonly reviewBeforeMergeNarrow: "Review before merge · narrow footprint";
106
+ readonly reviewBeforeMergeModerate: "Review before merge · moderate dependency footprint";
107
+ readonly reviewBeforeMergeWide: "Review before merge · wide dependency footprint";
108
+ readonly riskyResolveNarrow: "Resolve blockers before merge · focused footprint";
109
+ readonly riskyResolveModerate: "Resolve blockers before merge · moderate dependency footprint";
110
+ readonly riskyResolveWide: "Resolve blockers before merge · wide transitive tree";
111
+ };
112
+ readonly tier1Fallback: {
113
+ /** Graph-only / lightweight PR baseline (pattern F3). */
114
+ readonly lightweightPr: "This PR has limited code-change signal. MergeSignal reviewed dependency structure; no runtime-impact indicators detected.";
115
+ /** Actionable structural redirect (pattern F4). */
116
+ readonly structuralProofBelow: "No runtime-impact indicators detected. Dependency risks, if any, are listed in proof below.";
117
+ /** Quiet safe (pattern Q). */
118
+ readonly quietSafe: "No application-level impact identified.";
119
+ /** Structural assessment completed (pattern F1). */
120
+ readonly structuralComplete: "Dependency structure assessed. No application-specific behavior changes identified for this PR.";
121
+ };
122
+ readonly confidenceCaveat: {
123
+ readonly medium: "Based on partial dependency signal";
124
+ readonly low: "Limited signal — treat this as directional";
125
+ };
126
+ readonly codeAnalysisTimeout: "Code analysis timed out — runtime impact may be incomplete";
127
+ readonly scanPipelineNote: "This page updates automatically.";
128
+ readonly recommendationDetail: {
129
+ readonly selectPrompt: "Select a recommendation to understand it";
130
+ readonly whyLabel: "Why";
131
+ readonly whyNowLabel: "Why now";
132
+ readonly signalsLabel: "Signals behind this recommendation";
133
+ readonly affectedPackagesLabel: "Affected packages";
134
+ readonly expectedBenefitLabel: "Expected benefit";
135
+ readonly defaultWhy: "This recommendation addresses a structural dependency pattern detected in this scan.";
136
+ readonly defaultWhyNow: "This scan surfaced dependency patterns worth addressing before or after merge.";
137
+ readonly defaultBenefit: "Reduced merge risk and easier dependency management.";
138
+ readonly insightBenefit: "Restores predictable runtime behavior and prevents regressions after merge.";
139
+ readonly securityFindingBenefit: "Reduced vulnerability exposure before code reaches production.";
140
+ readonly coveredByRecommendation: "Covered in recommended action";
141
+ };
142
+ readonly recommendationScanContext: {
143
+ readonly quietSafe: "MergeSignal reviewed this upgrade. No merge blockers or runtime-impact indicators detected.";
144
+ readonly needsReview: "MergeSignal reviewed dependency structure for this upgrade. Review the items below before merging.";
145
+ readonly risky: "MergeSignal detected blockers in this upgrade. Resolve the priorities below before merging.";
146
+ readonly lightweightGraph: "This PR has limited code-change signal. MergeSignal reviewed dependency structure for structural risks.";
147
+ };
148
+ readonly recommendationPriority: {
149
+ readonly high: "High Priority";
150
+ readonly medium: "Medium Priority";
151
+ readonly low: "Low Priority";
152
+ };
153
+ /** @deprecated Use recommendationPriority */
154
+ readonly guidanceUrgency: {
155
+ readonly beforeMerge: "High Priority";
156
+ readonly recommended: "Medium Priority";
157
+ readonly monitor: "Low Priority";
158
+ };
159
+ readonly guidancePlaybook: {
160
+ readonly mergeNormally: "Merge normally";
161
+ readonly scheduleCleanup: "Schedule routine dependency cleanup";
162
+ readonly continueMonitoring: "Continue monitoring dependency health";
163
+ readonly mergeAfterVerification: "Merge after verifying affected paths";
164
+ readonly reviewBeforeMerge: "Review dependency risks before merging";
165
+ readonly reviewDependencyStructure: "Review dependency structure before merging";
166
+ readonly reviewAffectedPaths: "Review affected dependency paths";
167
+ readonly monitorTransitiveChanges: "Monitor transitive changes after merge";
168
+ readonly riskyResolveBeforeMerge: "Resolve blockers before merging";
169
+ readonly riskyReviewVulnerable: "Review vulnerable transitive packages";
170
+ readonly riskyRerunAfterFixes: "Re-run scan after fixes";
171
+ readonly resolveCriticalBeforeMerge: "Resolve critical findings before merge";
172
+ };
173
+ readonly recommendationPlaybookDetail: {
174
+ readonly mergeNormally: {
175
+ readonly why: "Dependency structure looks stable for this upgrade scope.";
176
+ readonly whyNow: "No merge blockers or runtime-impact indicators were detected for this PR.";
177
+ readonly expectedBenefit: "Low-friction merge with minimal follow-up work.";
178
+ readonly signals: readonly ["No merge blockers detected", "Dependency structure reviewed"];
179
+ };
180
+ readonly scheduleCleanup: {
181
+ readonly why: "Even quiet upgrades accumulate semver drift over time.";
182
+ readonly whyNow: "Proactive cleanup keeps future upgrades cheaper as the tree evolves.";
183
+ readonly expectedBenefit: "Easier dependency management on the next upgrade cycle.";
184
+ readonly signals: readonly ["Routine maintenance opportunity"];
185
+ };
186
+ readonly continueMonitoring: {
187
+ readonly why: "Dependency health is stable now but benefits from ongoing observation.";
188
+ readonly whyNow: "Monitoring catches regressions that appear only after merge.";
189
+ readonly expectedBenefit: "Earlier detection of dependency regressions in production.";
190
+ readonly signals: readonly ["No immediate blockers — monitor after merge"];
191
+ };
192
+ readonly mergeAfterVerification: {
193
+ readonly why: "Wide upgrade footprints warrant a quick sanity check before merge.";
194
+ readonly whyNow: "This upgrade touches enough packages to validate affected paths once.";
195
+ readonly expectedBenefit: "More predictable merges with fewer surprise runtime interactions.";
196
+ readonly signals: readonly ["Wide upgrade footprint detected"];
197
+ };
198
+ readonly reviewBeforeMerge: {
199
+ readonly why: "Structural dependency signals warrant a focused review before merge.";
200
+ readonly whyNow: "This scan surfaced dependency risks that deserve a pre-merge pass.";
201
+ readonly expectedBenefit: "Lower chance of shipping hidden dependency regressions.";
202
+ readonly signals: readonly ["Elevated dependency review recommended"];
203
+ };
204
+ readonly reviewDependencyStructure: {
205
+ readonly why: "Limited code-change signal means dependency structure carries most of the review burden.";
206
+ readonly whyNow: "MergeSignal reviewed the lockfile graph because PR code signal was lightweight.";
207
+ readonly expectedBenefit: "Confidence that structural changes are understood before merge.";
208
+ readonly signals: readonly ["Graph-based structural review completed"];
209
+ };
210
+ readonly reviewAffectedPaths: {
211
+ readonly why: "Transitive paths can hide behavior changes behind a small direct diff.";
212
+ readonly whyNow: "Affected dependency paths in this scan exceed a narrow footprint.";
213
+ readonly expectedBenefit: "Clearer understanding of what this upgrade actually touches.";
214
+ readonly signals: readonly ["Multiple affected dependency paths"];
215
+ };
216
+ readonly monitorTransitiveChanges: {
217
+ readonly why: "Transitive changes can surface only after merge in integrated environments.";
218
+ readonly whyNow: "This upgrade shifts transitive dependencies that are worth watching post-merge.";
219
+ readonly expectedBenefit: "Earlier detection if transitive changes cause regressions.";
220
+ readonly signals: readonly ["Transitive dependency shift detected"];
221
+ };
222
+ readonly riskyResolveBeforeMerge: {
223
+ readonly why: "Blockers must be resolved before this upgrade is safe to merge.";
224
+ readonly whyNow: "This scan flagged issues that exceed acceptable merge risk.";
225
+ readonly expectedBenefit: "Safer merge with blockers addressed before release.";
226
+ readonly signals: readonly ["Merge blockers detected"];
227
+ };
228
+ readonly riskyReviewVulnerable: {
229
+ readonly why: "Known vulnerabilities in the dependency tree can reach production through this upgrade.";
230
+ readonly whyNow: "Vulnerable packages are reachable from packages changed in this PR.";
231
+ readonly expectedBenefit: "Reduced vulnerability exposure before code reaches production.";
232
+ readonly signals: readonly ["Vulnerable transitive packages detected"];
233
+ };
234
+ readonly riskyRerunAfterFixes: {
235
+ readonly why: "Fixes can change the dependency graph and scan conclusions.";
236
+ readonly whyNow: "Re-run after addressing blockers to confirm the upgrade is safe.";
237
+ readonly expectedBenefit: "Verified merge posture after remediation.";
238
+ readonly signals: readonly ["Re-scan recommended after fixes"];
239
+ };
240
+ readonly resolveCriticalBeforeMerge: {
241
+ readonly why: "Critical or high-severity findings block a safe merge posture.";
242
+ readonly whyNow: "This scan flagged findings that must be addressed before merge.";
243
+ readonly expectedBenefit: "Safer merge with critical issues resolved first.";
244
+ readonly signals: readonly ["High-severity findings detected"];
245
+ };
246
+ };
247
+ readonly signalSummary: {
248
+ readonly scoreCaption: "Dependency signal score";
249
+ readonly layersHeading: "Layer signals";
250
+ readonly gaugeAriaLabel: "Dependency signal score {score} — {band}";
251
+ readonly followUpImprovementIdentified: "1 follow-up improvement was identified";
252
+ readonly followUpImprovementsIdentified: "{count} follow-up improvements were identified";
253
+ readonly bandLabel: {
254
+ readonly low: "Low";
255
+ readonly moderate: "Moderate";
256
+ readonly high: "Elevated";
257
+ };
258
+ readonly signalLabel: {
259
+ readonly low: "Low";
260
+ readonly medium: "Moderate";
261
+ readonly high: "Elevated";
262
+ };
263
+ };
264
+ };
78
265
  readonly cli: {
79
266
  readonly stderrAnalysisIncomplete: "Analysis could not be completed.";
80
267
  readonly stderrOutputNotVerified: "These results could not be verified.";
@@ -1 +1 @@
1
- {"version":3,"file":"scanSurfaceCopy.d.ts","sourceRoot":"","sources":["../src/scanSurfaceCopy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;QAgBxB,8EAA8E;;QAG9E,6DAA6D;;;;QAO7D,qDAAqD;;;;;QASrD,mEAAmE;;;;QAOnE,yFAAyF;;QAGzF,mFAAmF;;QAGnF,0EAA0E;;QAE1E,8FAA8F;;QAE9F,+DAA+D;;;QAI/D,6EAA6E;;;;;QAK7E,2CAA2C;;;QAK3C,2EAA2E;;QAE3E,4EAA4E;;;QAI5E,sEAAsE;;;IAGxE,2EAA2E;;;;;;;;;;;;;;QAiBzE,oEAAoE;;;;;;;IAOtE,sEAAsE;;;;;CAO9D,CAAC;AAEX,iEAAiE;AACjE,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAa5D"}
1
+ {"version":3,"file":"scanSurfaceCopy.d.ts","sourceRoot":"","sources":["../src/scanSurfaceCopy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;QAgBxB,8EAA8E;;QAG9E,6DAA6D;;;;QAO7D,qDAAqD;;;;;QASrD,mEAAmE;;;;QAOnE,yFAAyF;;QAGzF,mFAAmF;;QAGnF,0EAA0E;;QAE1E,8FAA8F;;QAE9F,+DAA+D;;;QAI/D,6EAA6E;;;;;QAK7E,2CAA2C;;;QAK3C,2EAA2E;;QAE3E,4EAA4E;;;QAI5E,sEAAsE;;;IAGxE,2EAA2E;;;;;;;;;;;;;;QAiBzE,oEAAoE;;;IAGtE,wEAAwE;;;;QAItE,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAkCzC,yDAAyD;;YAGzD,mDAAmD;;YAGnD,8BAA8B;;YAE9B,oDAAoD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4CtD,6CAA6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0I/C,sEAAsE;;;;;CAO9D,CAAC;AAEX,iEAAiE;AACjE,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAa5D"}
@@ -75,6 +75,196 @@ export const scanSurfaceCopy = {
75
75
  /** Single line for UI/CLI/Actions parity (risk index semantics). */
76
76
  riskIndexDirectionShort: "0 is best · 100 is worst",
77
77
  },
78
+ /** Scan detail page (`/scan/[id]`) — show-don't-teach reviewer copy. */
79
+ scanDetail: {
80
+ recommendedActionsHeading: "Recommended actions",
81
+ signalSummaryHeading: "Signal summary",
82
+ /** @deprecated Use signalSummaryHeading */
83
+ riskSummaryHeading: "Signal summary",
84
+ operationalImpactHeading: "What this upgrade may affect",
85
+ whyVerdictHeading: "Why this verdict",
86
+ proofHeading: "Proof",
87
+ nextStepsHeading: "Recommended next steps",
88
+ topologySummary: "Dependency topology",
89
+ topologyCollapsedHint: "Supporting detail — graph paths and depth",
90
+ whereLabel: "Where",
91
+ verifyLabel: "Verify",
92
+ moreImpactsSummary: "More impacts",
93
+ moreRecommendationsSummary: "More recommendations",
94
+ moreFindingsSummary: "More findings",
95
+ reachChip: {
96
+ focused: "Focused reach",
97
+ limited: "Limited reach",
98
+ moderate: "Moderate reach",
99
+ wide: "Wide reach",
100
+ },
101
+ verdictLine: {
102
+ safeNoBlockersNarrow: "No merge blockers · narrow footprint",
103
+ safeNoBlockersModerate: "No merge blockers · moderate dependency footprint",
104
+ safeNoBlockersWide: "No merge blockers · wide upgrade footprint",
105
+ reviewBeforeMergeNarrow: "Review before merge · narrow footprint",
106
+ reviewBeforeMergeModerate: "Review before merge · moderate dependency footprint",
107
+ reviewBeforeMergeWide: "Review before merge · wide dependency footprint",
108
+ riskyResolveNarrow: "Resolve blockers before merge · focused footprint",
109
+ riskyResolveModerate: "Resolve blockers before merge · moderate dependency footprint",
110
+ riskyResolveWide: "Resolve blockers before merge · wide transitive tree",
111
+ },
112
+ tier1Fallback: {
113
+ /** Graph-only / lightweight PR baseline (pattern F3). */
114
+ lightweightPr: "This PR has limited code-change signal. MergeSignal reviewed dependency structure; no runtime-impact indicators detected.",
115
+ /** Actionable structural redirect (pattern F4). */
116
+ structuralProofBelow: "No runtime-impact indicators detected. Dependency risks, if any, are listed in proof below.",
117
+ /** Quiet safe (pattern Q). */
118
+ quietSafe: "No application-level impact identified.",
119
+ /** Structural assessment completed (pattern F1). */
120
+ structuralComplete: "Dependency structure assessed. No application-specific behavior changes identified for this PR.",
121
+ },
122
+ confidenceCaveat: {
123
+ medium: "Based on partial dependency signal",
124
+ low: "Limited signal — treat this as directional",
125
+ },
126
+ codeAnalysisTimeout: "Code analysis timed out — runtime impact may be incomplete",
127
+ scanPipelineNote: "This page updates automatically.",
128
+ recommendationDetail: {
129
+ selectPrompt: "Select a recommendation to understand it",
130
+ whyLabel: "Why",
131
+ whyNowLabel: "Why now",
132
+ signalsLabel: "Signals behind this recommendation",
133
+ affectedPackagesLabel: "Affected packages",
134
+ expectedBenefitLabel: "Expected benefit",
135
+ defaultWhy: "This recommendation addresses a structural dependency pattern detected in this scan.",
136
+ defaultWhyNow: "This scan surfaced dependency patterns worth addressing before or after merge.",
137
+ defaultBenefit: "Reduced merge risk and easier dependency management.",
138
+ insightBenefit: "Restores predictable runtime behavior and prevents regressions after merge.",
139
+ securityFindingBenefit: "Reduced vulnerability exposure before code reaches production.",
140
+ coveredByRecommendation: "Covered in recommended action",
141
+ },
142
+ recommendationScanContext: {
143
+ quietSafe: "MergeSignal reviewed this upgrade. No merge blockers or runtime-impact indicators detected.",
144
+ needsReview: "MergeSignal reviewed dependency structure for this upgrade. Review the items below before merging.",
145
+ risky: "MergeSignal detected blockers in this upgrade. Resolve the priorities below before merging.",
146
+ lightweightGraph: "This PR has limited code-change signal. MergeSignal reviewed dependency structure for structural risks.",
147
+ },
148
+ recommendationPriority: {
149
+ high: "High Priority",
150
+ medium: "Medium Priority",
151
+ low: "Low Priority",
152
+ },
153
+ /** @deprecated Use recommendationPriority */
154
+ guidanceUrgency: {
155
+ beforeMerge: "High Priority",
156
+ recommended: "Medium Priority",
157
+ monitor: "Low Priority",
158
+ },
159
+ guidancePlaybook: {
160
+ mergeNormally: "Merge normally",
161
+ scheduleCleanup: "Schedule routine dependency cleanup",
162
+ continueMonitoring: "Continue monitoring dependency health",
163
+ mergeAfterVerification: "Merge after verifying affected paths",
164
+ reviewBeforeMerge: "Review dependency risks before merging",
165
+ reviewDependencyStructure: "Review dependency structure before merging",
166
+ reviewAffectedPaths: "Review affected dependency paths",
167
+ monitorTransitiveChanges: "Monitor transitive changes after merge",
168
+ riskyResolveBeforeMerge: "Resolve blockers before merging",
169
+ riskyReviewVulnerable: "Review vulnerable transitive packages",
170
+ riskyRerunAfterFixes: "Re-run scan after fixes",
171
+ resolveCriticalBeforeMerge: "Resolve critical findings before merge",
172
+ },
173
+ recommendationPlaybookDetail: {
174
+ mergeNormally: {
175
+ why: "Dependency structure looks stable for this upgrade scope.",
176
+ whyNow: "No merge blockers or runtime-impact indicators were detected for this PR.",
177
+ expectedBenefit: "Low-friction merge with minimal follow-up work.",
178
+ signals: [
179
+ "No merge blockers detected",
180
+ "Dependency structure reviewed",
181
+ ],
182
+ },
183
+ scheduleCleanup: {
184
+ why: "Even quiet upgrades accumulate semver drift over time.",
185
+ whyNow: "Proactive cleanup keeps future upgrades cheaper as the tree evolves.",
186
+ expectedBenefit: "Easier dependency management on the next upgrade cycle.",
187
+ signals: ["Routine maintenance opportunity"],
188
+ },
189
+ continueMonitoring: {
190
+ why: "Dependency health is stable now but benefits from ongoing observation.",
191
+ whyNow: "Monitoring catches regressions that appear only after merge.",
192
+ expectedBenefit: "Earlier detection of dependency regressions in production.",
193
+ signals: ["No immediate blockers — monitor after merge"],
194
+ },
195
+ mergeAfterVerification: {
196
+ why: "Wide upgrade footprints warrant a quick sanity check before merge.",
197
+ whyNow: "This upgrade touches enough packages to validate affected paths once.",
198
+ expectedBenefit: "More predictable merges with fewer surprise runtime interactions.",
199
+ signals: ["Wide upgrade footprint detected"],
200
+ },
201
+ reviewBeforeMerge: {
202
+ why: "Structural dependency signals warrant a focused review before merge.",
203
+ whyNow: "This scan surfaced dependency risks that deserve a pre-merge pass.",
204
+ expectedBenefit: "Lower chance of shipping hidden dependency regressions.",
205
+ signals: ["Elevated dependency review recommended"],
206
+ },
207
+ reviewDependencyStructure: {
208
+ why: "Limited code-change signal means dependency structure carries most of the review burden.",
209
+ whyNow: "MergeSignal reviewed the lockfile graph because PR code signal was lightweight.",
210
+ expectedBenefit: "Confidence that structural changes are understood before merge.",
211
+ signals: ["Graph-based structural review completed"],
212
+ },
213
+ reviewAffectedPaths: {
214
+ why: "Transitive paths can hide behavior changes behind a small direct diff.",
215
+ whyNow: "Affected dependency paths in this scan exceed a narrow footprint.",
216
+ expectedBenefit: "Clearer understanding of what this upgrade actually touches.",
217
+ signals: ["Multiple affected dependency paths"],
218
+ },
219
+ monitorTransitiveChanges: {
220
+ why: "Transitive changes can surface only after merge in integrated environments.",
221
+ whyNow: "This upgrade shifts transitive dependencies that are worth watching post-merge.",
222
+ expectedBenefit: "Earlier detection if transitive changes cause regressions.",
223
+ signals: ["Transitive dependency shift detected"],
224
+ },
225
+ riskyResolveBeforeMerge: {
226
+ why: "Blockers must be resolved before this upgrade is safe to merge.",
227
+ whyNow: "This scan flagged issues that exceed acceptable merge risk.",
228
+ expectedBenefit: "Safer merge with blockers addressed before release.",
229
+ signals: ["Merge blockers detected"],
230
+ },
231
+ riskyReviewVulnerable: {
232
+ why: "Known vulnerabilities in the dependency tree can reach production through this upgrade.",
233
+ whyNow: "Vulnerable packages are reachable from packages changed in this PR.",
234
+ expectedBenefit: "Reduced vulnerability exposure before code reaches production.",
235
+ signals: ["Vulnerable transitive packages detected"],
236
+ },
237
+ riskyRerunAfterFixes: {
238
+ why: "Fixes can change the dependency graph and scan conclusions.",
239
+ whyNow: "Re-run after addressing blockers to confirm the upgrade is safe.",
240
+ expectedBenefit: "Verified merge posture after remediation.",
241
+ signals: ["Re-scan recommended after fixes"],
242
+ },
243
+ resolveCriticalBeforeMerge: {
244
+ why: "Critical or high-severity findings block a safe merge posture.",
245
+ whyNow: "This scan flagged findings that must be addressed before merge.",
246
+ expectedBenefit: "Safer merge with critical issues resolved first.",
247
+ signals: ["High-severity findings detected"],
248
+ },
249
+ },
250
+ signalSummary: {
251
+ scoreCaption: "Dependency signal score",
252
+ layersHeading: "Layer signals",
253
+ gaugeAriaLabel: "Dependency signal score {score} — {band}",
254
+ followUpImprovementIdentified: "1 follow-up improvement was identified",
255
+ followUpImprovementsIdentified: "{count} follow-up improvements were identified",
256
+ bandLabel: {
257
+ low: "Low",
258
+ moderate: "Moderate",
259
+ high: "Elevated",
260
+ },
261
+ signalLabel: {
262
+ low: "Low",
263
+ medium: "Moderate",
264
+ high: "Elevated",
265
+ },
266
+ },
267
+ },
78
268
  cli: {
79
269
  stderrAnalysisIncomplete: "Analysis could not be completed.",
80
270
  stderrOutputNotVerified: "These results could not be verified.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mergesignal/shared",
3
- "version": "0.2.3",
3
+ "version": "0.2.5",
4
4
  "description": "MergeSignal shared scan contract, presentation policy, and trusted validation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",