@mergesignal/shared 0.8.2 → 0.9.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 (84) hide show
  1. package/dist/deriveScanNarrative.test.js +2 -2
  2. package/dist/fixtures/engineAbi4Fixtures.d.ts +16 -0
  3. package/dist/fixtures/engineAbi4Fixtures.d.ts.map +1 -0
  4. package/dist/fixtures/engineAbi4Fixtures.js +26 -0
  5. package/dist/index.d.ts +2 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -1
  8. package/dist/prRiskBand.d.ts +23 -0
  9. package/dist/prRiskBand.d.ts.map +1 -0
  10. package/dist/prRiskBand.js +66 -0
  11. package/dist/prRiskBand.test.d.ts +2 -0
  12. package/dist/prRiskBand.test.d.ts.map +1 -0
  13. package/dist/prRiskBand.test.js +57 -0
  14. package/dist/prRiskWire.d.ts +57 -0
  15. package/dist/prRiskWire.d.ts.map +1 -0
  16. package/dist/prRiskWire.js +98 -0
  17. package/dist/prRiskWire.test.d.ts +2 -0
  18. package/dist/prRiskWire.test.d.ts.map +1 -0
  19. package/dist/prRiskWire.test.js +106 -0
  20. package/dist/prRiskWiringRegression.test.d.ts +2 -0
  21. package/dist/prRiskWiringRegression.test.d.ts.map +1 -0
  22. package/dist/prRiskWiringRegression.test.js +102 -0
  23. package/dist/presentGitHubPrComment.d.ts.map +1 -1
  24. package/dist/presentGitHubPrComment.js +0 -1
  25. package/dist/presentation/dto/githubAndCliPresentation.d.ts +3 -0
  26. package/dist/presentation/dto/githubAndCliPresentation.d.ts.map +1 -1
  27. package/dist/presentation/dto/scanDetailsPresentation.d.ts +5 -2
  28. package/dist/presentation/dto/scanDetailsPresentation.d.ts.map +1 -1
  29. package/dist/presentation/fixtures/presentationPersonaFixtures.d.ts.map +1 -1
  30. package/dist/presentation/fixtures/presentationPersonaFixtures.js +5 -1
  31. package/dist/presentation/fixtures/scanResultFixtures.d.ts.map +1 -1
  32. package/dist/presentation/fixtures/scanResultFixtures.js +28 -17
  33. package/dist/presentation/orchestration/buildScanCardPresentation.d.ts +2 -1
  34. package/dist/presentation/orchestration/buildScanCardPresentation.d.ts.map +1 -1
  35. package/dist/presentation/orchestration/buildScanCardPresentation.js +7 -6
  36. package/dist/presentation/orchestration/buildScanDetailsPresentation.d.ts +1 -1
  37. package/dist/presentation/orchestration/buildScanDetailsPresentation.d.ts.map +1 -1
  38. package/dist/presentation/orchestration/buildScanDetailsPresentation.js +0 -1
  39. package/dist/presentation/orchestration/buildScanPresentationBundle.d.ts +0 -1
  40. package/dist/presentation/orchestration/buildScanPresentationBundle.d.ts.map +1 -1
  41. package/dist/presentation/presenters/presentCliScanSummary.d.ts.map +1 -1
  42. package/dist/presentation/presenters/presentCliScanSummary.js +9 -4
  43. package/dist/presentation/presenters/presentDashboardCard.d.ts.map +1 -1
  44. package/dist/presentation/presenters/presentDashboardCard.js +3 -2
  45. package/dist/presentation/presenters/presentGitHubCheckRun.d.ts.map +1 -1
  46. package/dist/presentation/presenters/presentGitHubCheckRun.js +10 -0
  47. package/dist/presentation/presenters/presentGitHubPrComment.d.ts.map +1 -1
  48. package/dist/presentation/presenters/presentGitHubPrComment.js +6 -0
  49. package/dist/presentation/presenters/presentScanDetails.d.ts.map +1 -1
  50. package/dist/presentation/presenters/presentScanDetails.js +46 -3
  51. package/dist/presentation/render/renderCliScanSummaryText.d.ts.map +1 -1
  52. package/dist/presentation/render/renderCliScanSummaryText.js +4 -1
  53. package/dist/productMessaging.d.ts +2 -2
  54. package/dist/productMessaging.d.ts.map +1 -1
  55. package/dist/productMessaging.js +3 -3
  56. package/dist/productMessaging.test.js +6 -6
  57. package/dist/resolvePipelineStatus.d.ts +4 -3
  58. package/dist/resolvePipelineStatus.d.ts.map +1 -1
  59. package/dist/resolvePipelineStatus.js +3 -3
  60. package/dist/riskSignals.d.ts +6 -6
  61. package/dist/riskSignals.d.ts.map +1 -1
  62. package/dist/riskSignals.js +9 -10
  63. package/dist/riskSignals.test.d.ts +2 -0
  64. package/dist/riskSignals.test.d.ts.map +1 -0
  65. package/dist/riskSignals.test.js +32 -0
  66. package/dist/riskVocabulary.js +7 -7
  67. package/dist/scanPresentationBundle.golden.test.js +4 -4
  68. package/dist/scanResultSchema.d.ts +42 -1
  69. package/dist/scanResultSchema.d.ts.map +1 -1
  70. package/dist/scanResultSchema.js +35 -2
  71. package/dist/scanResultSchema.test.js +15 -2
  72. package/dist/scanSurfaceCopy.d.ts +4 -2
  73. package/dist/scanSurfaceCopy.d.ts.map +1 -1
  74. package/dist/scanSurfaceCopy.js +4 -2
  75. package/dist/trustedScanGuards.test.js +3 -2
  76. package/dist/types.d.ts +15 -0
  77. package/dist/types.d.ts.map +1 -1
  78. package/package.json +1 -1
  79. package/dist/formatCardExposureDisplay.d.ts +0 -22
  80. package/dist/formatCardExposureDisplay.d.ts.map +0 -1
  81. package/dist/formatCardExposureDisplay.js +0 -63
  82. package/dist/formatCardExposureDisplay.test.d.ts +0 -2
  83. package/dist/formatCardExposureDisplay.test.d.ts.map +0 -1
  84. package/dist/formatCardExposureDisplay.test.js +0 -44
@@ -1,19 +1,19 @@
1
- import { type CardExposureCategory } from "./formatCardExposureDisplay.js";
1
+ import { type PrRiskBand } from "./prRiskBand.js";
2
2
  import type { ScanResult, ScoreLayer } from "./types.js";
3
3
  export type RiskSignalLayer = {
4
4
  layer: ScoreLayer;
5
5
  score: number;
6
- exposure: CardExposureCategory;
6
+ band: PrRiskBand;
7
7
  };
8
- /** Canonical exposure classification for totalScore and layerScores. */
8
+ /** Canonical PR Risk classification for prRisk.score and layer scores. */
9
9
  export type RiskSignals = {
10
10
  riskIndex: number | null;
11
- exposure: CardExposureCategory | null;
11
+ band: PrRiskBand | null;
12
12
  layers: RiskSignalLayer[];
13
13
  };
14
14
  /**
15
- * Single owner for numeric risk index + exposure bucket classification.
16
- * Surfaces must consume `facts.riskSignals` in future phases — do not re-derive bands.
15
+ * Single owner for PR risk index + band classification.
16
+ * Surfaces must consume `facts.riskSignals` — do not re-derive bands.
17
17
  */
18
18
  export declare function deriveRiskSignals(result: ScanResult): RiskSignals | null;
19
19
  //# sourceMappingURL=riskSignals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"riskSignals.d.ts","sourceRoot":"","sources":["../src/riskSignals.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAe,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,oBAAoB,CAAC;CAChC,CAAC;AAEF,wEAAwE;AACxE,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACtC,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AASF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,CAwBxE"}
1
+ {"version":3,"file":"riskSignals.d.ts","sourceRoot":"","sources":["../src/riskSignals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,EAAe,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;CAClB,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AASF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,CAqBxE"}
@@ -1,4 +1,5 @@
1
- import { deriveCardExposureCategory, } from "./formatCardExposureDisplay.js";
1
+ import { scoreToBand } from "./prRiskBand.js";
2
+ import { resolvePrRiskLayerScores, resolvePrRiskScore } from "./prRiskWire.js";
2
3
  const LAYER_ORDER = [
3
4
  "security",
4
5
  "maintainability",
@@ -6,27 +7,25 @@ const LAYER_ORDER = [
6
7
  "upgradeImpact",
7
8
  ];
8
9
  /**
9
- * Single owner for numeric risk index + exposure bucket classification.
10
- * Surfaces must consume `facts.riskSignals` in future phases — do not re-derive bands.
10
+ * Single owner for PR risk index + band classification.
11
+ * Surfaces must consume `facts.riskSignals` — do not re-derive bands.
11
12
  */
12
13
  export function deriveRiskSignals(result) {
13
- const riskIndex = typeof result.totalScore === "number" && Number.isFinite(result.totalScore)
14
- ? result.totalScore
15
- : null;
16
- const layerScores = result.layerScores;
14
+ const riskIndex = resolvePrRiskScore(result);
15
+ const layerScores = resolvePrRiskLayerScores(result);
17
16
  if (riskIndex == null && layerScores == null) {
18
17
  return null;
19
18
  }
20
- const exposure = deriveCardExposureCategory(riskIndex);
19
+ const band = scoreToBand(riskIndex);
21
20
  const layers = layerScores
22
21
  ? LAYER_ORDER.map((layer) => {
23
22
  const score = layerScores[layer];
24
23
  return {
25
24
  layer,
26
25
  score,
27
- exposure: deriveCardExposureCategory(score) ?? "minimal",
26
+ band: scoreToBand(score) ?? "very_low",
28
27
  };
29
28
  })
30
29
  : [];
31
- return { riskIndex, exposure, layers };
30
+ return { riskIndex, band, layers };
32
31
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=riskSignals.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"riskSignals.test.d.ts","sourceRoot":"","sources":["../src/riskSignals.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { deriveRiskSignals } from "./riskSignals.js";
3
+ import { resolveRepositoryHealthScore } from "./prRiskWire.js";
4
+ function baseResult(overrides = {}) {
5
+ return {
6
+ totalScore: 63,
7
+ layerScores: {
8
+ security: 10,
9
+ maintainability: 20,
10
+ ecosystem: 30,
11
+ upgradeImpact: 15,
12
+ },
13
+ findings: [],
14
+ generatedAt: "2026-01-01T00:00:00.000Z",
15
+ ...overrides,
16
+ };
17
+ }
18
+ describe("deriveRiskSignals", () => {
19
+ it("prefers prRisk.score over totalScore and repositoryHealth", () => {
20
+ const result = baseResult({
21
+ prRisk: { score: 55 },
22
+ repositoryHealth: { totalScore: 63 },
23
+ totalScore: 63,
24
+ });
25
+ expect(deriveRiskSignals(result)?.riskIndex).toBe(55);
26
+ expect(resolveRepositoryHealthScore(result)).toBe(63);
27
+ });
28
+ it("falls back to totalScore when prRisk is missing (historical scans)", () => {
29
+ const result = baseResult({ totalScore: 48 });
30
+ expect(deriveRiskSignals(result)?.riskIndex).toBe(48);
31
+ });
32
+ });
@@ -1,4 +1,4 @@
1
- import { exposureAriaFragment } from "./formatCardExposureDisplay.js";
1
+ import { prRiskBandAriaFragment } from "./prRiskBand.js";
2
2
  /** Canonical display strings for merge posture values. */
3
3
  export const MERGE_POSTURE_LABEL = {
4
4
  safe: "Safe",
@@ -44,17 +44,17 @@ export function mergePostureLabel(decision, fallback = "-") {
44
44
  */
45
45
  export function ariaLabelForPosture(decision, score) {
46
46
  const label = mergePostureLabel(decision);
47
- const exposure = exposureAriaFragment(score);
48
- if (exposure)
49
- return `${label}, ${exposure}`;
47
+ const bandFragment = prRiskBandAriaFragment(score);
48
+ if (bandFragment)
49
+ return `${label}, ${bandFragment}`;
50
50
  return label;
51
51
  }
52
52
  /** Accessible label for unified PR card findings block. */
53
53
  export function ariaLabelForCardSummary(postureLabel, riskIndex, observations, supportingLine) {
54
54
  const parts = [postureLabel];
55
- const exposure = exposureAriaFragment(riskIndex);
56
- if (exposure)
57
- parts.push(exposure);
55
+ const bandFragment = prRiskBandAriaFragment(riskIndex);
56
+ if (bandFragment)
57
+ parts.push(bandFragment);
58
58
  for (const obs of observations ?? []) {
59
59
  if (obs?.trim())
60
60
  parts.push(obs.trim());
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { deriveCardExposureCategory } from "./formatCardExposureDisplay.js";
2
+ import { scoreToBand } from "./prRiskBand.js";
3
3
  import { buildScanPresentationBundle } from "./presentation/orchestration/buildScanPresentationBundle.js";
4
4
  import { scanResultBullmq, scanResultEslint, scanResultFastifyRuntime, scanResultLimitedContext, scanResultMixedTypescriptFastify, scanResultPrettier, scanResultTypescriptPatch, scanResultVitest, } from "./presentation/fixtures/presentationPersonaFixtures.js";
5
5
  const validationPersonas = [
@@ -42,7 +42,7 @@ describe("scanPresentationBundle golden — proof model", () => {
42
42
  expect(apiArea?.hotspotPackages).toContain("fastify");
43
43
  expect(apiArea?.verificationFocus.length).toBeGreaterThan(0);
44
44
  expect(facts.riskSignals?.riskIndex).toBe(55);
45
- expect(facts.riskSignals?.exposure).toBe(deriveCardExposureCategory(55));
45
+ expect(facts.riskSignals?.band).toBe(scoreToBand(55));
46
46
  expect(facts.riskIndex).toBe(facts.riskSignals?.riskIndex);
47
47
  });
48
48
  it("limited-context — diagnostics without synthetic confidence", () => {
@@ -58,8 +58,8 @@ describe("scanPresentationBundle golden — proof model", () => {
58
58
  const { facts } = bundle;
59
59
  expect(facts.availability.corpusGateReason).toBe("ok");
60
60
  expect(facts.packageSemantics?.dependencyClass).toBe("tooling");
61
- expect(facts.riskSignals?.riskIndex).toBe(18);
62
- expect(facts.riskSignals?.exposure).toBe(deriveCardExposureCategory(18));
61
+ expect(facts.riskSignals?.riskIndex).toBe(30);
62
+ expect(facts.riskSignals?.band).toBe(scoreToBand(30));
63
63
  });
64
64
  it("affected areas always carry linkage arrays (structure)", () => {
65
65
  for (const { result } of validationPersonas) {
@@ -3,7 +3,12 @@ import type { EngineEmittedScanResult, ScanResult } from "./types.js";
3
3
  /** Bump when persisted `result` JSON validation rules change materially (relaxed / legacy-tolerant). */
4
4
  export declare const SCAN_RESULT_ABI: "2";
5
5
  /** Bump when strict fresh-engine-output validation rules change materially. */
6
- export declare const ENGINE_OUTPUT_SCAN_ABI: "3";
6
+ export declare const ENGINE_OUTPUT_SCAN_ABI: "4";
7
+ /**
8
+ * Synthesize ABI-4 prRisk/repositoryHealth from legacy totalScore when an engine
9
+ * has not yet adopted the dual-score wire (transitional bridge).
10
+ */
11
+ export declare function normalizeEngineOutputAbi4(raw: unknown): unknown;
7
12
  /**
8
13
  * Minimum structural invariants for **persisted** `scans.result` JSON and legacy reads.
9
14
  * `methodologyVersion` stays optional so historical rows without it remain valid.
@@ -17,6 +22,24 @@ export declare const scanResultSchema: z.ZodObject<{
17
22
  ecosystem: z.ZodNumber;
18
23
  upgradeImpact: z.ZodNumber;
19
24
  }, z.core.$strip>;
25
+ prRisk: z.ZodOptional<z.ZodObject<{
26
+ score: z.ZodNumber;
27
+ layerScores: z.ZodOptional<z.ZodObject<{
28
+ security: z.ZodNumber;
29
+ maintainability: z.ZodNumber;
30
+ ecosystem: z.ZodNumber;
31
+ upgradeImpact: z.ZodNumber;
32
+ }, z.core.$strip>>;
33
+ }, z.core.$strip>>;
34
+ repositoryHealth: z.ZodOptional<z.ZodObject<{
35
+ totalScore: z.ZodNumber;
36
+ layerScores: z.ZodOptional<z.ZodObject<{
37
+ security: z.ZodNumber;
38
+ maintainability: z.ZodNumber;
39
+ ecosystem: z.ZodNumber;
40
+ upgradeImpact: z.ZodNumber;
41
+ }, z.core.$strip>>;
42
+ }, z.core.$strip>>;
20
43
  findings: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodUnknown>, z.ZodNull]>>, z.ZodTransform<unknown[], unknown[] | null | undefined>>;
21
44
  methodologyVersion: z.ZodOptional<z.ZodString>;
22
45
  confidence: z.ZodOptional<z.ZodEnum<{
@@ -210,6 +233,24 @@ export declare const engineOutputScanResultSchema: z.ZodObject<{
210
233
  }>;
211
234
  }, z.core.$strip>;
212
235
  }, z.core.$strip>;
236
+ prRisk: z.ZodObject<{
237
+ score: z.ZodNumber;
238
+ layerScores: z.ZodOptional<z.ZodObject<{
239
+ security: z.ZodNumber;
240
+ maintainability: z.ZodNumber;
241
+ ecosystem: z.ZodNumber;
242
+ upgradeImpact: z.ZodNumber;
243
+ }, z.core.$strip>>;
244
+ }, z.core.$strip>;
245
+ repositoryHealth: z.ZodObject<{
246
+ totalScore: z.ZodNumber;
247
+ layerScores: z.ZodOptional<z.ZodObject<{
248
+ security: z.ZodNumber;
249
+ maintainability: z.ZodNumber;
250
+ ecosystem: z.ZodNumber;
251
+ upgradeImpact: z.ZodNumber;
252
+ }, z.core.$strip>>;
253
+ }, z.core.$strip>;
213
254
  }, z.core.$loose>;
214
255
  export type EngineOutputScanResultParseFailure = {
215
256
  ok: false;
@@ -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;AASnD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4Bb,CAAC;AAUjB;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIvC,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,CAazE;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;AAmBnD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAc/D;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8Bb,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"}
@@ -3,13 +3,42 @@ import { z } from "zod";
3
3
  /** Bump when persisted `result` JSON validation rules change materially (relaxed / legacy-tolerant). */
4
4
  export const SCAN_RESULT_ABI = "2";
5
5
  /** Bump when strict fresh-engine-output validation rules change materially. */
6
- export const ENGINE_OUTPUT_SCAN_ABI = "3";
6
+ export const ENGINE_OUTPUT_SCAN_ABI = "4";
7
7
  const layerScoresSchema = z.object({
8
8
  security: z.number(),
9
9
  maintainability: z.number(),
10
10
  ecosystem: z.number(),
11
11
  upgradeImpact: z.number(),
12
12
  });
13
+ const prRiskSchema = z.object({
14
+ score: z.number().min(0).max(100),
15
+ layerScores: layerScoresSchema.optional(),
16
+ });
17
+ const repositoryHealthSchema = z.object({
18
+ totalScore: z.number().min(0).max(100),
19
+ layerScores: layerScoresSchema.optional(),
20
+ });
21
+ /**
22
+ * Synthesize ABI-4 prRisk/repositoryHealth from legacy totalScore when an engine
23
+ * has not yet adopted the dual-score wire (transitional bridge).
24
+ */
25
+ export function normalizeEngineOutputAbi4(raw) {
26
+ if (!raw || typeof raw !== "object")
27
+ return raw;
28
+ const obj = raw;
29
+ const totalScore = obj.totalScore;
30
+ const layerScores = obj.layerScores;
31
+ if (typeof totalScore !== "number" || !Number.isFinite(totalScore)) {
32
+ return raw;
33
+ }
34
+ if (!layerScores || typeof layerScores !== "object")
35
+ return raw;
36
+ return {
37
+ ...obj,
38
+ prRisk: obj.prRisk ?? { score: totalScore, layerScores },
39
+ repositoryHealth: obj.repositoryHealth ?? { totalScore, layerScores },
40
+ };
41
+ }
13
42
  /**
14
43
  * Minimum structural invariants for **persisted** `scans.result` JSON and legacy reads.
15
44
  * `methodologyVersion` stays optional so historical rows without it remain valid.
@@ -19,6 +48,8 @@ export const scanResultSchema = z
19
48
  .object({
20
49
  totalScore: z.number().min(0).max(100),
21
50
  layerScores: layerScoresSchema,
51
+ prRisk: prRiskSchema.optional(),
52
+ repositoryHealth: repositoryHealthSchema.optional(),
22
53
  findings: z
23
54
  .union([z.array(z.unknown()), z.null()])
24
55
  .optional()
@@ -59,9 +90,11 @@ export const engineOutputScanResultSchema = scanResultSchema.extend({
59
90
  methodologyVersion: z.string().trim().min(1),
60
91
  generatedAt: engineOutputGeneratedAtSchema,
61
92
  assessment: assessmentSchema,
93
+ prRisk: prRiskSchema,
94
+ repositoryHealth: repositoryHealthSchema,
62
95
  });
63
96
  export function safeParseEngineOutputScanResult(data) {
64
- const parsed = engineOutputScanResultSchema.safeParse(data);
97
+ const parsed = engineOutputScanResultSchema.safeParse(normalizeEngineOutputAbi4(data));
65
98
  if (!parsed.success) {
66
99
  const issues = parsed.error.issues.map((i) => `${i.path.join(".") || "(root)"}: ${i.message}`);
67
100
  return {
@@ -1,6 +1,7 @@
1
1
  import { describe, it, expect } from "vitest";
2
2
  import { safeParseScanResult, parseScanResultOrThrow, scanResultSchema, safeParseEngineOutputScanResult, parseEngineOutputScanResultOrThrow, } from "./scanResultSchema.js";
3
3
  import { emptyReachScope, emptyVerificationScope, minimalReviewFocalPoint, } from "./fixtures/assessmentScopeFixtures.js";
4
+ import { withAbi4EngineScores } from "./fixtures/engineAbi4Fixtures.js";
4
5
  const minimalValid = {
5
6
  totalScore: 42,
6
7
  layerScores: {
@@ -97,11 +98,11 @@ const minimalAssessment = {
97
98
  },
98
99
  };
99
100
  describe("engineOutputScanResultSchema (strict, fresh engine only)", () => {
100
- const withMethodology = {
101
+ const withMethodology = withAbi4EngineScores({
101
102
  ...minimalValid,
102
103
  methodologyVersion: "engine-test-fixture/v1",
103
104
  assessment: minimalAssessment,
104
- };
105
+ });
105
106
  it("rejects payload that relaxed parser accepts when methodology is missing", () => {
106
107
  const r = safeParseEngineOutputScanResult(minimalValid);
107
108
  expect(r.ok).toBe(false);
@@ -112,6 +113,18 @@ describe("engineOutputScanResultSchema (strict, fresh engine only)", () => {
112
113
  if (r.ok)
113
114
  expect(r.result.methodologyVersion).toBe("engine-test-fixture/v1");
114
115
  });
116
+ it("synthesizes prRisk/repositoryHealth from totalScore for legacy engines", () => {
117
+ const r = safeParseEngineOutputScanResult({
118
+ ...minimalValid,
119
+ methodologyVersion: "acme-prod/v1",
120
+ assessment: minimalAssessment,
121
+ });
122
+ expect(r.ok).toBe(true);
123
+ if (r.ok) {
124
+ expect(r.result.prRisk?.score).toBe(42);
125
+ expect(r.result.repositoryHealth?.totalScore).toBe(42);
126
+ }
127
+ });
115
128
  it("parseEngineOutputScanResultOrThrow throws with validation prefix", () => {
116
129
  expect(() => parseEngineOutputScanResultOrThrow(minimalValid)).toThrow(/^validation:/);
117
130
  });
@@ -39,8 +39,10 @@ export declare const scanSurfaceCopy: {
39
39
  readonly trustedWorkflowCredentialHintBody: "The engine checkout token was not available to this workflow run. Add it under this repository's Actions secrets, or grant this repository access to an organization secret. Secrets that exist only on a GitHub Environment are not available here unless this job declares that environment.";
40
40
  /** Trusted step summary H1 product line (before posture | risk index). */
41
41
  readonly trustedStepSummaryTitlePrefix: "MergeSignal dependency review";
42
- /** GitHub Actions step summary: risk index direction (shared with web/CLI where imported). */
43
- readonly riskIndexDirectionShort: "0 = lowest merge risk, 100 = highest merge risk";
42
+ /** PR Risk score line for CLI / Actions summary. */
43
+ readonly prRiskScoreLabel: "PR Risk score";
44
+ /** GitHub Actions step summary: PR risk score direction (shared with web/CLI where imported). */
45
+ readonly prRiskScoreDirectionShort: "0 = lowest PR risk, 100 = highest PR risk";
44
46
  /** When `decision` is missing on scan JSON (legacy output). */
45
47
  readonly mergePostureUnavailableShort: "Posture unavailable";
46
48
  readonly mergePostureUnavailableDetail: "This scan did not include a merge posture verdict; use the risk index as a coarse signal only.";
@@ -1 +1 @@
1
- {"version":3,"file":"scanSurfaceCopy.d.ts","sourceRoot":"","sources":["../src/scanSurfaceCopy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;QAoBxB,8EAA8E;;QAG9E,6DAA6D;;;;QAO7D,qDAAqD;;;;;QASrD,mEAAmE;;;;QAOnE,yFAAyF;;QAGzF,mFAAmF;;QAGnF,4EAA4E;;QAE5E,8FAA8F;;QAE9F,+DAA+D;;;QAI/D,6EAA6E;;;;;QAK7E,2CAA2C;;;QAK3C,2EAA2E;;QAE3E,4EAA4E;;;QAI5E,sEAAsE;;;IAGxE,2EAA2E;;;;;;;;;;;;;;QAiBzE,oEAAoE;;;IAGtE,wEAAwE;;;;;;QAOtE,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAkCzC,yDAAyD;;YAGzD,mDAAmD;;YAGnD,8BAA8B;;YAE9B,oDAAoD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4CtD,6CAA6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsI/C,uFAAuF;;;;;;;;;;;;;;;;;;;;;;;;IAwBvF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuClF,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;;;;;;;;;;;;;;;;QAoBxB,8EAA8E;;QAG9E,6DAA6D;;;;QAO7D,qDAAqD;;;;;QASrD,mEAAmE;;;;QAOnE,yFAAyF;;QAGzF,mFAAmF;;QAGnF,4EAA4E;;QAE5E,oDAAoD;;QAEpD,iGAAiG;;QAEjG,+DAA+D;;;QAI/D,6EAA6E;;;;;QAK7E,2CAA2C;;;QAK3C,2EAA2E;;QAE3E,4EAA4E;;;QAI5E,sEAAsE;;;IAGxE,2EAA2E;;;;;;;;;;;;;;QAiBzE,oEAAoE;;;IAGtE,wEAAwE;;;;;;QAOtE,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAkCzC,yDAAyD;;YAGzD,mDAAmD;;YAGnD,8BAA8B;;YAE9B,oDAAoD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4CtD,6CAA6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsI/C,uFAAuF;;;;;;;;;;;;;;;;;;;;;;;;IAwBvF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuClF,sEAAsE;;;;;CAO9D,CAAC;AAEX,iEAAiE;AACjE,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAa5D"}
@@ -39,8 +39,10 @@ export const scanSurfaceCopy = {
39
39
  trustedWorkflowCredentialHintBody: "The engine checkout token was not available to this workflow run. Add it under this repository's Actions secrets, or grant this repository access to an organization secret. Secrets that exist only on a GitHub Environment are not available here unless this job declares that environment.",
40
40
  /** Trusted step summary H1 product line (before posture | risk index). */
41
41
  trustedStepSummaryTitlePrefix: "MergeSignal dependency review",
42
- /** GitHub Actions step summary: risk index direction (shared with web/CLI where imported). */
43
- riskIndexDirectionShort: "0 = lowest merge risk, 100 = highest merge risk",
42
+ /** PR Risk score line for CLI / Actions summary. */
43
+ prRiskScoreLabel: "PR Risk score",
44
+ /** GitHub Actions step summary: PR risk score direction (shared with web/CLI where imported). */
45
+ prRiskScoreDirectionShort: "0 = lowest PR risk, 100 = highest PR risk",
44
46
  /** When `decision` is missing on scan JSON (legacy output). */
45
47
  mergePostureUnavailableShort: "Posture unavailable",
46
48
  mergePostureUnavailableDetail: "This scan did not include a merge posture verdict; use the risk index as a coarse signal only.",
@@ -1,8 +1,9 @@
1
1
  import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
2
  import { assertTrustedActionsSummaryAllowed, assertTrustedScanResult, auditTrustedActionsOutput, isStubMethodologyVersion, trustedActionsSummaryDenylistPhrases, validateTrustedEngineScanResult, } from "./trustedScanGuards.js";
3
3
  import { assessmentStub } from "./fixtures/assessmentFixtures.js";
4
+ import { withAbi4EngineScores } from "./fixtures/engineAbi4Fixtures.js";
4
5
  import { scanSurfaceCopy } from "./scanSurfaceCopy.js";
5
- const baseResult = {
6
+ const baseResult = withAbi4EngineScores({
6
7
  totalScore: 10,
7
8
  layerScores: {
8
9
  security: 10,
@@ -20,7 +21,7 @@ const baseResult = {
20
21
  confidence: "low",
21
22
  reasoning: ["Stub engine cannot perform real analysis"],
22
23
  },
23
- };
24
+ });
24
25
  describe("trustedScanGuards", () => {
25
26
  it("detects stub methodology", () => {
26
27
  expect(isStubMethodologyVersion("engine-stub/v2")).toBe(true);
package/dist/types.d.ts CHANGED
@@ -5,6 +5,16 @@ export type LayerScores = {
5
5
  ecosystem: number;
6
6
  upgradeImpact: number;
7
7
  };
8
+ /** Engine-emitted PR-scoped risk score (ABI 4+). */
9
+ export type PrRiskWire = {
10
+ score: number;
11
+ layerScores?: LayerScores;
12
+ };
13
+ /** Engine-emitted repository health score (ABI 4+). */
14
+ export type RepositoryHealthWire = {
15
+ totalScore: number;
16
+ layerScores?: LayerScores;
17
+ };
8
18
  export type FindingSeverity = "low" | "medium" | "high" | "critical";
9
19
  /**
10
20
  * Producer-authored classification for {@link Finding}. Prefer this over inferring from `id` strings.
@@ -251,8 +261,13 @@ export type EngineeringTrace = {
251
261
  analyzerContributions: Readonly<Record<string, number>>;
252
262
  };
253
263
  export type ScanResult = {
264
+ /** Legacy composite score — historical fallback only; not PR Risk authority on ABI-4 output. */
254
265
  totalScore: number;
255
266
  layerScores: LayerScores;
267
+ /** PR Risk authority on ABI-4 engine output. */
268
+ prRisk?: PrRiskWire;
269
+ /** Repository health authority on ABI-4 engine output. */
270
+ repositoryHealth?: RepositoryHealthWire;
256
271
  findings: Finding[];
257
272
  methodologyVersion?: string;
258
273
  /** Assessment Contract — sole authority for posture and presentation intensity. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mergesignal/shared",
3
- "version": "0.8.2",
3
+ "version": "0.9.1",
4
4
  "description": "MergeSignal shared scan contract, presentation policy, and trusted validation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,22 +0,0 @@
1
- /**
2
- * Canonical exposure bucket thresholds for numeric risk scores (0–100).
3
- * Consumed by `deriveRiskSignals` for bundle facts; label formatters remain for aria copy.
4
- */
5
- export type CardExposureCategory = "minimal" | "limited" | "moderate" | "elevated" | "broad";
6
- export type CardExposureDisplay = {
7
- category: CardExposureCategory;
8
- /** User-facing label, e.g. "Moderate exposure". */
9
- label: string;
10
- value: number;
11
- };
12
- /** User-facing exposure labels for docs and UI copy (low → high). */
13
- export declare const CARD_EXPOSURE_CATEGORY_LABELS: readonly string[];
14
- /** Map numeric score to a fixed exposure category (canonical thresholds). */
15
- export declare function deriveCardExposureCategory(score: number | null | undefined): CardExposureCategory | null;
16
- /** Map numeric totalScore to exposure category + display label. */
17
- export declare function deriveCardExposureDisplay(score: number | null | undefined): CardExposureDisplay | null;
18
- /** Compact card line: exposure category label only. */
19
- export declare function formatCardExposureLine(score: number | null | undefined): string | null;
20
- /** Fragment for composite aria labels on PR cards. */
21
- export declare function exposureAriaFragment(score: number | null | undefined): string | null;
22
- //# sourceMappingURL=formatCardExposureDisplay.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatCardExposureDisplay.d.ts","sourceRoot":"","sources":["../src/formatCardExposureDisplay.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,oBAAoB,GAC5B,SAAS,GACT,SAAS,GACT,UAAU,GACV,UAAU,GACV,OAAO,CAAC;AAEZ,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAUF,qEAAqE;AACrE,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAM1D,CAAC;AAkBF,6EAA6E;AAC7E,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,oBAAoB,GAAG,IAAI,CAK7B;AAED,mEAAmE;AACnE,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,mBAAmB,GAAG,IAAI,CAK5B;AAED,uDAAuD;AACvD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,MAAM,GAAG,IAAI,CAIf;AAED,sDAAsD;AACtD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,MAAM,GAAG,IAAI,CAIf"}
@@ -1,63 +0,0 @@
1
- /**
2
- * Canonical exposure bucket thresholds for numeric risk scores (0–100).
3
- * Consumed by `deriveRiskSignals` for bundle facts; label formatters remain for aria copy.
4
- */
5
- const EXPOSURE_LABEL = {
6
- minimal: "Minimal exposure",
7
- limited: "Limited exposure",
8
- moderate: "Moderate exposure",
9
- elevated: "Elevated exposure",
10
- broad: "Broad exposure",
11
- };
12
- /** User-facing exposure labels for docs and UI copy (low → high). */
13
- export const CARD_EXPOSURE_CATEGORY_LABELS = [
14
- EXPOSURE_LABEL.minimal,
15
- EXPOSURE_LABEL.limited,
16
- EXPOSURE_LABEL.moderate,
17
- EXPOSURE_LABEL.elevated,
18
- EXPOSURE_LABEL.broad,
19
- ];
20
- /** Inclusive upper bounds (0–100). Five stable buckets only. */
21
- const EXPOSURE_UPPER_BOUND = [24, 44, 74, 89, 100];
22
- const EXPOSURE_ORDER = [
23
- "minimal",
24
- "limited",
25
- "moderate",
26
- "elevated",
27
- "broad",
28
- ];
29
- function clampScore(score) {
30
- if (!Number.isFinite(score))
31
- return 0;
32
- return Math.min(100, Math.max(0, Math.round(score)));
33
- }
34
- /** Map numeric score to a fixed exposure category (canonical thresholds). */
35
- export function deriveCardExposureCategory(score) {
36
- if (score == null || !Number.isFinite(score))
37
- return null;
38
- const value = clampScore(score);
39
- const idx = EXPOSURE_UPPER_BOUND.findIndex((bound) => value <= bound);
40
- return EXPOSURE_ORDER[idx >= 0 ? idx : EXPOSURE_ORDER.length - 1];
41
- }
42
- /** Map numeric totalScore to exposure category + display label. */
43
- export function deriveCardExposureDisplay(score) {
44
- const category = deriveCardExposureCategory(score);
45
- if (category == null)
46
- return null;
47
- const value = clampScore(score);
48
- return { category, label: EXPOSURE_LABEL[category], value };
49
- }
50
- /** Compact card line: exposure category label only. */
51
- export function formatCardExposureLine(score) {
52
- const display = deriveCardExposureDisplay(score);
53
- if (!display)
54
- return null;
55
- return display.label;
56
- }
57
- /** Fragment for composite aria labels on PR cards. */
58
- export function exposureAriaFragment(score) {
59
- const display = deriveCardExposureDisplay(score);
60
- if (!display)
61
- return null;
62
- return display.label;
63
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=formatCardExposureDisplay.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatCardExposureDisplay.test.d.ts","sourceRoot":"","sources":["../src/formatCardExposureDisplay.test.ts"],"names":[],"mappings":""}