@mergesignal/shared 0.4.0 → 0.4.2
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.
- package/dist/deriveScanNarrative.d.ts.map +1 -1
- package/dist/deriveScanNarrative.js +52 -2
- package/dist/deriveScanNarrative.test.js +10 -3
- package/dist/fixtures/repoIntelligenceFixtures.d.ts.map +1 -1
- package/dist/fixtures/repoIntelligenceFixtures.js +21 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/narrativePresentation.d.ts.map +1 -1
- package/dist/narrativePresentation.js +6 -3
- package/dist/presentation/compose/narrativeCompose.d.ts.map +1 -1
- package/dist/presentation/compose/narrativeCompose.js +15 -101
- package/dist/presentation/dto/scanCardPresentation.d.ts +2 -0
- package/dist/presentation/dto/scanCardPresentation.d.ts.map +1 -1
- package/dist/presentation/dto/scanDetailsPresentation.d.ts +2 -0
- package/dist/presentation/dto/scanDetailsPresentation.d.ts.map +1 -1
- package/dist/presentation/fixtures/presentationPersonaFixtures.d.ts +11 -0
- package/dist/presentation/fixtures/presentationPersonaFixtures.d.ts.map +1 -0
- package/dist/presentation/fixtures/presentationPersonaFixtures.js +197 -0
- package/dist/presentation/index.d.ts +2 -0
- package/dist/presentation/index.d.ts.map +1 -1
- package/dist/presentation/index.js +1 -0
- package/dist/presentation/intent/applyPostureVocabularyGuard.d.ts +5 -0
- package/dist/presentation/intent/applyPostureVocabularyGuard.d.ts.map +1 -0
- package/dist/presentation/intent/applyPostureVocabularyGuard.js +44 -0
- package/dist/presentation/intent/derivePresentationInterpretation.d.ts +4 -0
- package/dist/presentation/intent/derivePresentationInterpretation.d.ts.map +1 -0
- package/dist/presentation/intent/derivePresentationInterpretation.js +202 -0
- package/dist/presentation/intent/formatPresentationCopy.d.ts +7 -0
- package/dist/presentation/intent/formatPresentationCopy.d.ts.map +1 -0
- package/dist/presentation/intent/formatPresentationCopy.js +153 -0
- package/dist/presentation/intent/packageDisplayName.d.ts +4 -0
- package/dist/presentation/intent/packageDisplayName.d.ts.map +1 -0
- package/dist/presentation/intent/packageDisplayName.js +17 -0
- package/dist/presentation/intent/postureVocabularyGuard.test.d.ts +2 -0
- package/dist/presentation/intent/postureVocabularyGuard.test.d.ts.map +1 -0
- package/dist/presentation/intent/postureVocabularyGuard.test.js +23 -0
- package/dist/presentation/intent/presentationIntent.d.ts +14 -0
- package/dist/presentation/intent/presentationIntent.d.ts.map +1 -0
- package/dist/presentation/intent/presentationIntent.js +1 -0
- package/dist/presentation/intent/presentationIntent.test.d.ts +2 -0
- package/dist/presentation/intent/presentationIntent.test.d.ts.map +1 -0
- package/dist/presentation/intent/presentationIntent.test.js +29 -0
- package/dist/presentation/intent/verificationFocusLabels.d.ts +2 -0
- package/dist/presentation/intent/verificationFocusLabels.d.ts.map +1 -0
- package/dist/presentation/intent/verificationFocusLabels.js +45 -0
- package/dist/presentation/presentation.test.js +3 -0
- package/dist/presentation/presentationPersonas.test.d.ts +2 -0
- package/dist/presentation/presentationPersonas.test.d.ts.map +1 -0
- package/dist/presentation/presentationPersonas.test.js +166 -0
- package/dist/presentation/presenters/presentScanCard.d.ts.map +1 -1
- package/dist/presentation/presenters/presentScanCard.js +1 -0
- package/dist/presentation/presenters/presentScanDetails.d.ts.map +1 -1
- package/dist/presentation/presenters/presentScanDetails.js +7 -1
- package/dist/presentation/profile/derivePresentationProfile.d.ts.map +1 -1
- package/dist/presentation/profile/derivePresentationProfile.js +18 -19
- package/dist/presentation/profile/presentationProfile.d.ts +2 -0
- package/dist/presentation/profile/presentationProfile.d.ts.map +1 -1
- package/dist/repoIntelligenceMappers.d.ts.map +1 -1
- package/dist/repoIntelligenceMappers.js +8 -1
- package/dist/repoIntelligenceSchema.d.ts +75 -1
- package/dist/repoIntelligenceSchema.d.ts.map +1 -1
- package/dist/repoIntelligenceSchema.js +74 -1
- package/dist/repoIntelligenceSemantics.d.ts +29 -0
- package/dist/repoIntelligenceSemantics.d.ts.map +1 -0
- package/dist/repoIntelligenceSemantics.js +146 -0
- package/dist/repoIntelligenceSemantics.test.d.ts +2 -0
- package/dist/repoIntelligenceSemantics.test.d.ts.map +1 -0
- package/dist/repoIntelligenceSemantics.test.js +63 -0
- package/dist/scanNarrativeFacts.d.ts +31 -0
- package/dist/scanNarrativeFacts.d.ts.map +1 -1
- package/dist/scanNarrativeFacts.js +2 -0
- package/dist/scanSurfaceCopy.d.ts +8 -0
- package/dist/scanSurfaceCopy.d.ts.map +1 -1
- package/dist/scanSurfaceCopy.js +8 -0
- package/package.json +1 -1
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
/** Bump when wire schema changes incompatibly. */
|
|
10
|
-
export const REPO_INTELLIGENCE_ABI = "
|
|
10
|
+
export const REPO_INTELLIGENCE_ABI = "2";
|
|
11
11
|
const surfaceKindSchema = z.enum(["runtime", "build", "test", "unknown"]);
|
|
12
12
|
const reachabilityKindSchema = z.enum([
|
|
13
13
|
"on_runtime_paths",
|
|
@@ -24,11 +24,83 @@ const packageUsageWireSchema = z.object({
|
|
|
24
24
|
criticalPaths: z.array(z.string()).optional(),
|
|
25
25
|
areas: z.array(z.string()).optional(),
|
|
26
26
|
});
|
|
27
|
+
const dependencyClassSchema = z.enum([
|
|
28
|
+
"runtime",
|
|
29
|
+
"tooling",
|
|
30
|
+
"test",
|
|
31
|
+
"lint",
|
|
32
|
+
"format",
|
|
33
|
+
"build",
|
|
34
|
+
"ci",
|
|
35
|
+
"unknown",
|
|
36
|
+
]);
|
|
37
|
+
const packageRoleSchema = z.enum([
|
|
38
|
+
"typechecker",
|
|
39
|
+
"compiler",
|
|
40
|
+
"bundler",
|
|
41
|
+
"linter",
|
|
42
|
+
"formatter",
|
|
43
|
+
"test_runner",
|
|
44
|
+
"http_framework",
|
|
45
|
+
"auth",
|
|
46
|
+
"queue",
|
|
47
|
+
"orm",
|
|
48
|
+
"unknown",
|
|
49
|
+
]);
|
|
50
|
+
const lockfileKindSchema = z.enum([
|
|
51
|
+
"production",
|
|
52
|
+
"development",
|
|
53
|
+
"optional",
|
|
54
|
+
"unknown",
|
|
55
|
+
]);
|
|
56
|
+
const runtimeImpactSchema = z.enum([
|
|
57
|
+
"none",
|
|
58
|
+
"possible",
|
|
59
|
+
"confirmed",
|
|
60
|
+
"unknown",
|
|
61
|
+
]);
|
|
62
|
+
const expectedImpactSchema = z.enum([
|
|
63
|
+
"runtime",
|
|
64
|
+
"build_time",
|
|
65
|
+
"typecheck",
|
|
66
|
+
"test_time",
|
|
67
|
+
"development_only",
|
|
68
|
+
"unknown",
|
|
69
|
+
]);
|
|
70
|
+
const evidenceStrengthSchema = z.enum(["high", "medium", "low"]);
|
|
71
|
+
const classificationProvenanceSchema = z.object({
|
|
72
|
+
dependencyClass: z.enum([
|
|
73
|
+
"registry",
|
|
74
|
+
"graph",
|
|
75
|
+
"lockfile",
|
|
76
|
+
"heuristic",
|
|
77
|
+
"unknown",
|
|
78
|
+
]),
|
|
79
|
+
packageRole: z.enum(["registry", "graph", "heuristic", "unknown"]),
|
|
80
|
+
registryEntryId: z.string().optional(),
|
|
81
|
+
});
|
|
82
|
+
const semanticDiagnosticSchema = z.object({
|
|
83
|
+
packageName: z.string().min(1),
|
|
84
|
+
ruleId: z.string().min(1),
|
|
85
|
+
before: z.record(z.string(), z.unknown()),
|
|
86
|
+
after: z.record(z.string(), z.unknown()),
|
|
87
|
+
reason: z.string().min(1),
|
|
88
|
+
});
|
|
27
89
|
const packageIntelWireSchema = z.object({
|
|
28
90
|
runtimeSurface: surfaceKindSchema,
|
|
29
91
|
reachability: reachabilityKindSchema,
|
|
30
92
|
usage: packageUsageWireSchema,
|
|
31
93
|
areas: z.array(z.string()).optional(),
|
|
94
|
+
dependencyClass: dependencyClassSchema.optional(),
|
|
95
|
+
packageRole: packageRoleSchema.optional(),
|
|
96
|
+
lockfileKind: lockfileKindSchema.optional(),
|
|
97
|
+
runtimeImpact: runtimeImpactSchema.optional(),
|
|
98
|
+
expectedImpact: expectedImpactSchema.optional(),
|
|
99
|
+
evidenceStrength: evidenceStrengthSchema.optional(),
|
|
100
|
+
confidenceReason: z.string().optional(),
|
|
101
|
+
verificationFocus: z.array(z.string()).optional(),
|
|
102
|
+
suppressRuntimeNarrative: z.boolean().optional(),
|
|
103
|
+
classificationProvenance: classificationProvenanceSchema.optional(),
|
|
32
104
|
});
|
|
33
105
|
const areaSchema = z.object({
|
|
34
106
|
id: z.string().min(1),
|
|
@@ -54,6 +126,7 @@ export const repoIntelligenceWireSchema = z.object({
|
|
|
54
126
|
affectedAreas: z.array(areaSchema).optional(),
|
|
55
127
|
hotspots: z.array(hotspotWireSchema).optional(),
|
|
56
128
|
frameworks: z.array(z.string().min(1)).optional(),
|
|
129
|
+
semanticDiagnostics: z.array(semanticDiagnosticSchema).optional(),
|
|
57
130
|
});
|
|
58
131
|
function formatZodIssues(error) {
|
|
59
132
|
return error.issues.map((i) => `${i.path.join(".") || "(root)"}: ${i.message}`);
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { RepoIntelligence } from "./repoIntelligenceSchema.js";
|
|
2
|
+
export type DependencyClass = "runtime" | "tooling" | "test" | "lint" | "format" | "build" | "ci" | "unknown";
|
|
3
|
+
export type PackageRole = "typechecker" | "compiler" | "bundler" | "linter" | "formatter" | "test_runner" | "http_framework" | "auth" | "queue" | "orm" | "unknown";
|
|
4
|
+
export type LockfileKind = "production" | "development" | "optional" | "unknown";
|
|
5
|
+
export type RuntimeImpact = "none" | "possible" | "confirmed" | "unknown";
|
|
6
|
+
export type ExpectedImpact = "runtime" | "build_time" | "typecheck" | "test_time" | "development_only" | "unknown";
|
|
7
|
+
export type EvidenceStrength = "high" | "medium" | "low";
|
|
8
|
+
export type ClassificationSource = "registry" | "graph" | "lockfile" | "heuristic" | "unknown";
|
|
9
|
+
export type SemanticDiagnostic = {
|
|
10
|
+
packageName: string;
|
|
11
|
+
ruleId: string;
|
|
12
|
+
before: Record<string, unknown>;
|
|
13
|
+
after: Record<string, unknown>;
|
|
14
|
+
reason: string;
|
|
15
|
+
};
|
|
16
|
+
export type SanitizeRepoIntelligenceResult = {
|
|
17
|
+
wire: RepoIntelligence;
|
|
18
|
+
diagnostics: SemanticDiagnostic[];
|
|
19
|
+
degradedPackages: string[];
|
|
20
|
+
};
|
|
21
|
+
type PackageRow = RepoIntelligence["packages"][string];
|
|
22
|
+
/**
|
|
23
|
+
* Hard gate: normalize contradictory package intelligence before wire emit.
|
|
24
|
+
*/
|
|
25
|
+
export declare function sanitizeRepoIntelligenceSemantics(draft: RepoIntelligence): SanitizeRepoIntelligenceResult;
|
|
26
|
+
/** Returns true when wire is safe for runtime narrative tier1. */
|
|
27
|
+
export declare function isRuntimeNarrativeSafe(row: PackageRow | undefined): boolean;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=repoIntelligenceSemantics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repoIntelligenceSemantics.d.ts","sourceRoot":"","sources":["../src/repoIntelligenceSemantics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,OAAO,GACP,IAAI,GACJ,SAAS,CAAC;AAEd,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,UAAU,GACV,SAAS,GACT,QAAQ,GACR,WAAW,GACX,aAAa,GACb,gBAAgB,GAChB,MAAM,GACN,OAAO,GACP,KAAK,GACL,SAAS,CAAC;AAEd,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,aAAa,GACb,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAE1E,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,YAAY,GACZ,WAAW,GACX,WAAW,GACX,kBAAkB,GAClB,SAAS,CAAC;AAEd,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEzD,MAAM,MAAM,oBAAoB,GAC5B,UAAU,GACV,OAAO,GACP,UAAU,GACV,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAyBF,KAAK,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AA+IvD;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,gBAAgB,GACtB,8BAA8B,CAoBhC;AAED,kEAAkE;AAClE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAa3E"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
const TOOLING_CLASSES = new Set([
|
|
2
|
+
"tooling",
|
|
3
|
+
"test",
|
|
4
|
+
"lint",
|
|
5
|
+
"format",
|
|
6
|
+
"build",
|
|
7
|
+
"ci",
|
|
8
|
+
]);
|
|
9
|
+
const RUNTIME_VERIFICATION = new Set([
|
|
10
|
+
"auth_flow",
|
|
11
|
+
"route_handlers",
|
|
12
|
+
"routes",
|
|
13
|
+
"handlers",
|
|
14
|
+
"serialization",
|
|
15
|
+
"hooks",
|
|
16
|
+
"plugins",
|
|
17
|
+
"session",
|
|
18
|
+
"auth",
|
|
19
|
+
"queue",
|
|
20
|
+
"workers",
|
|
21
|
+
]);
|
|
22
|
+
function cloneWire(wire) {
|
|
23
|
+
return structuredClone(wire);
|
|
24
|
+
}
|
|
25
|
+
function isToolingClass(dc) {
|
|
26
|
+
return dc != null && TOOLING_CLASSES.has(dc);
|
|
27
|
+
}
|
|
28
|
+
function stripRuntimeVerification(focus) {
|
|
29
|
+
if (!focus?.length)
|
|
30
|
+
return [];
|
|
31
|
+
return focus.filter((f) => !RUNTIME_VERIFICATION.has(f));
|
|
32
|
+
}
|
|
33
|
+
function applyS1(row) {
|
|
34
|
+
return row.runtimeSurface === "runtime" && row.reachability === "unreachable";
|
|
35
|
+
}
|
|
36
|
+
function applyS2(row) {
|
|
37
|
+
return (row.runtimeImpact === "none" && row.reachability === "on_runtime_paths");
|
|
38
|
+
}
|
|
39
|
+
function applyS3(row) {
|
|
40
|
+
return (isToolingClass(row.dependencyClass) && row.runtimeImpact === "confirmed");
|
|
41
|
+
}
|
|
42
|
+
function applyS4(row) {
|
|
43
|
+
return (row.runtimeImpact === "confirmed" && (row.usage?.files?.length ?? 0) === 0);
|
|
44
|
+
}
|
|
45
|
+
function applyS5(row) {
|
|
46
|
+
if (!row.suppressRuntimeNarrative)
|
|
47
|
+
return false;
|
|
48
|
+
const focus = row.verificationFocus ?? [];
|
|
49
|
+
return focus.some((f) => RUNTIME_VERIFICATION.has(f));
|
|
50
|
+
}
|
|
51
|
+
function sanitizePackageRow(packageName, row) {
|
|
52
|
+
const diagnostics = [];
|
|
53
|
+
let degraded = false;
|
|
54
|
+
const next = { ...row };
|
|
55
|
+
const record = (ruleId, before, after, reason) => {
|
|
56
|
+
diagnostics.push({ packageName, ruleId, before, after, reason });
|
|
57
|
+
degraded = true;
|
|
58
|
+
};
|
|
59
|
+
if (applyS1(next)) {
|
|
60
|
+
const before = {
|
|
61
|
+
runtimeSurface: next.runtimeSurface,
|
|
62
|
+
reachability: next.reachability,
|
|
63
|
+
};
|
|
64
|
+
next.runtimeSurface = "build";
|
|
65
|
+
next.reachability = "build_only";
|
|
66
|
+
next.runtimeImpact = next.runtimeImpact ?? "none";
|
|
67
|
+
next.suppressRuntimeNarrative = true;
|
|
68
|
+
record("S1", before, { runtimeSurface: next.runtimeSurface, reachability: next.reachability }, "runtime_surface_unreachable");
|
|
69
|
+
}
|
|
70
|
+
if (applyS3(next)) {
|
|
71
|
+
const before = { runtimeImpact: next.runtimeImpact };
|
|
72
|
+
next.runtimeImpact = "none";
|
|
73
|
+
next.suppressRuntimeNarrative = true;
|
|
74
|
+
record("S3", before, { runtimeImpact: next.runtimeImpact }, "tooling_confirmed_without_proof");
|
|
75
|
+
}
|
|
76
|
+
if (applyS4(next)) {
|
|
77
|
+
const before = { runtimeImpact: next.runtimeImpact };
|
|
78
|
+
next.runtimeImpact = "none";
|
|
79
|
+
next.evidenceStrength = "low";
|
|
80
|
+
next.suppressRuntimeNarrative = true;
|
|
81
|
+
record("S4", before, { runtimeImpact: next.runtimeImpact }, "confirmed_without_imports");
|
|
82
|
+
}
|
|
83
|
+
if (applyS2(next)) {
|
|
84
|
+
const before = { reachability: next.reachability };
|
|
85
|
+
next.reachability = "unknown";
|
|
86
|
+
record("S2", before, { reachability: next.reachability }, "none_but_on_runtime_paths");
|
|
87
|
+
}
|
|
88
|
+
if (applyS5(next)) {
|
|
89
|
+
const before = { verificationFocus: next.verificationFocus };
|
|
90
|
+
next.verificationFocus = stripRuntimeVerification(next.verificationFocus);
|
|
91
|
+
record("S5", before, { verificationFocus: next.verificationFocus }, "runtime_focus_while_suppressed");
|
|
92
|
+
}
|
|
93
|
+
if (next.runtimeSurface === "runtime" &&
|
|
94
|
+
next.reachability === "unreachable") {
|
|
95
|
+
next.runtimeSurface = "unknown";
|
|
96
|
+
next.reachability = "unknown";
|
|
97
|
+
next.suppressRuntimeNarrative = true;
|
|
98
|
+
degraded = true;
|
|
99
|
+
}
|
|
100
|
+
if (next.suppressRuntimeNarrative && next.runtimeImpact === "confirmed") {
|
|
101
|
+
next.runtimeImpact = "unknown";
|
|
102
|
+
degraded = true;
|
|
103
|
+
}
|
|
104
|
+
return { row: next, diagnostics, degraded };
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Hard gate: normalize contradictory package intelligence before wire emit.
|
|
108
|
+
*/
|
|
109
|
+
export function sanitizeRepoIntelligenceSemantics(draft) {
|
|
110
|
+
const wire = cloneWire(draft);
|
|
111
|
+
const diagnostics = [];
|
|
112
|
+
const degradedPackages = [];
|
|
113
|
+
for (const [packageName, row] of Object.entries(wire.packages)) {
|
|
114
|
+
const result = sanitizePackageRow(packageName, row);
|
|
115
|
+
wire.packages[packageName] = result.row;
|
|
116
|
+
diagnostics.push(...result.diagnostics);
|
|
117
|
+
if (result.degraded)
|
|
118
|
+
degradedPackages.push(packageName);
|
|
119
|
+
}
|
|
120
|
+
if (diagnostics.length > 0) {
|
|
121
|
+
wire.semanticDiagnostics = [
|
|
122
|
+
...(wire.semanticDiagnostics ?? []),
|
|
123
|
+
...diagnostics,
|
|
124
|
+
];
|
|
125
|
+
}
|
|
126
|
+
return { wire, diagnostics, degradedPackages };
|
|
127
|
+
}
|
|
128
|
+
/** Returns true when wire is safe for runtime narrative tier1. */
|
|
129
|
+
export function isRuntimeNarrativeSafe(row) {
|
|
130
|
+
if (!row)
|
|
131
|
+
return false;
|
|
132
|
+
if (row.suppressRuntimeNarrative === true)
|
|
133
|
+
return false;
|
|
134
|
+
if (row.runtimeImpact === "none")
|
|
135
|
+
return false;
|
|
136
|
+
if (row.runtimeSurface === "runtime" && row.reachability === "unreachable") {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
if (row.runtimeImpact === "confirmed" || row.runtimeImpact === "possible") {
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
if (row.runtimeImpact === "unknown")
|
|
143
|
+
return false;
|
|
144
|
+
// ABI 1 wire without semantic fields: allow non-contradictory surface/reach pairs.
|
|
145
|
+
return row.runtimeSurface != null && row.reachability != null;
|
|
146
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repoIntelligenceSemantics.test.d.ts","sourceRoot":"","sources":["../src/repoIntelligenceSemantics.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { isRuntimeNarrativeSafe, sanitizeRepoIntelligenceSemantics, } from "./repoIntelligenceSemantics.js";
|
|
3
|
+
function basePkg(overrides = {}) {
|
|
4
|
+
return {
|
|
5
|
+
runtimeSurface: "runtime",
|
|
6
|
+
reachability: "unreachable",
|
|
7
|
+
usage: { packageName: "typescript", files: [] },
|
|
8
|
+
...overrides,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
describe("sanitizeRepoIntelligenceSemantics", () => {
|
|
12
|
+
it("S1: neutralizes runtime + unreachable", () => {
|
|
13
|
+
const draft = {
|
|
14
|
+
packages: {
|
|
15
|
+
typescript: basePkg({
|
|
16
|
+
runtimeImpact: "unknown",
|
|
17
|
+
}),
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
const { wire, diagnostics } = sanitizeRepoIntelligenceSemantics(draft);
|
|
21
|
+
expect(wire.packages.typescript?.runtimeSurface).not.toBe("runtime");
|
|
22
|
+
expect(wire.packages.typescript?.reachability).not.toBe("unreachable");
|
|
23
|
+
expect(wire.packages.typescript?.suppressRuntimeNarrative).toBe(true);
|
|
24
|
+
expect(diagnostics.some((d) => d.ruleId === "S1")).toBe(true);
|
|
25
|
+
});
|
|
26
|
+
it("S3: tooling class cannot stay confirmed", () => {
|
|
27
|
+
const draft = {
|
|
28
|
+
packages: {
|
|
29
|
+
typescript: basePkg({
|
|
30
|
+
dependencyClass: "tooling",
|
|
31
|
+
runtimeImpact: "confirmed",
|
|
32
|
+
runtimeSurface: "build",
|
|
33
|
+
reachability: "build_only",
|
|
34
|
+
}),
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
const { wire } = sanitizeRepoIntelligenceSemantics(draft);
|
|
38
|
+
expect(wire.packages.typescript?.runtimeImpact).toBe("none");
|
|
39
|
+
});
|
|
40
|
+
it("S4: confirmed without imports downgrades", () => {
|
|
41
|
+
const draft = {
|
|
42
|
+
packages: {
|
|
43
|
+
fastify: basePkg({
|
|
44
|
+
runtimeImpact: "confirmed",
|
|
45
|
+
usage: { packageName: "fastify", files: [] },
|
|
46
|
+
}),
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
const { wire } = sanitizeRepoIntelligenceSemantics(draft);
|
|
50
|
+
expect(wire.packages.fastify?.runtimeImpact).toBe("none");
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe("isRuntimeNarrativeSafe", () => {
|
|
54
|
+
it("returns false for suppressed runtime narrative", () => {
|
|
55
|
+
expect(isRuntimeNarrativeSafe({
|
|
56
|
+
runtimeSurface: "runtime",
|
|
57
|
+
reachability: "on_runtime_paths",
|
|
58
|
+
usage: { packageName: "x", files: ["src/a.ts"] },
|
|
59
|
+
suppressRuntimeNarrative: true,
|
|
60
|
+
runtimeImpact: "none",
|
|
61
|
+
})).toBe(false);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
@@ -15,6 +15,33 @@ export type NarrativePackageUsage = {
|
|
|
15
15
|
areas: string[];
|
|
16
16
|
};
|
|
17
17
|
export type RepoIntelligenceParseStatus = "ok" | "invalid" | "absent" | "untrusted";
|
|
18
|
+
export type PackageDependencyClass = "runtime" | "tooling" | "test" | "lint" | "format" | "build" | "ci" | "unknown";
|
|
19
|
+
export type PackageRoleKind = "typechecker" | "compiler" | "bundler" | "linter" | "formatter" | "test_runner" | "http_framework" | "auth" | "queue" | "orm" | "unknown";
|
|
20
|
+
export type PackageRuntimeImpact = "none" | "possible" | "confirmed" | "unknown";
|
|
21
|
+
export type PackageExpectedImpact = "runtime" | "build_time" | "typecheck" | "test_time" | "development_only" | "unknown";
|
|
22
|
+
export type PackageEvidenceStrength = "high" | "medium" | "low";
|
|
23
|
+
/** Engine semantic projection for one changed package (wire copy only). */
|
|
24
|
+
export type ChangedPackageSemantics = {
|
|
25
|
+
packageName: string;
|
|
26
|
+
dependencyClass: PackageDependencyClass | null;
|
|
27
|
+
packageRole: PackageRoleKind | null;
|
|
28
|
+
runtimeImpact: PackageRuntimeImpact | null;
|
|
29
|
+
expectedImpact: PackageExpectedImpact | null;
|
|
30
|
+
suppressRuntimeNarrative: boolean;
|
|
31
|
+
evidenceStrength: PackageEvidenceStrength | null;
|
|
32
|
+
verificationFocus: string[];
|
|
33
|
+
usagePathCount: number;
|
|
34
|
+
usageAreaCount: number;
|
|
35
|
+
};
|
|
36
|
+
export type PackageSemanticsSummary = {
|
|
37
|
+
dependencyClass: PackageDependencyClass | null;
|
|
38
|
+
packageRole: PackageRoleKind | null;
|
|
39
|
+
runtimeImpact: PackageRuntimeImpact | null;
|
|
40
|
+
expectedImpact: PackageExpectedImpact | null;
|
|
41
|
+
suppressRuntimeNarrative: boolean;
|
|
42
|
+
evidenceStrength: PackageEvidenceStrength | null;
|
|
43
|
+
verificationFocus: string[];
|
|
44
|
+
};
|
|
18
45
|
export type ScanNarrativeFacts = {
|
|
19
46
|
availability: {
|
|
20
47
|
mode: NarrativeAvailabilityMode;
|
|
@@ -47,6 +74,10 @@ export type ScanNarrativeFacts = {
|
|
|
47
74
|
frameworks: string[];
|
|
48
75
|
};
|
|
49
76
|
} | null;
|
|
77
|
+
/** Primary changed package semantics (ABI 2 wire projection). */
|
|
78
|
+
packageSemantics: PackageSemanticsSummary | null;
|
|
79
|
+
/** Per changed package semantics for mixed-PR precedence (wire projection). */
|
|
80
|
+
changedPackageSemantics: ChangedPackageSemantics[];
|
|
50
81
|
blastRadius: {
|
|
51
82
|
level: BlastRadiusLevel;
|
|
52
83
|
changedPackageCount?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanNarrativeFacts.d.ts","sourceRoot":"","sources":["../src/scanNarrativeFacts.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scanNarrativeFacts.d.ts","sourceRoot":"","sources":["../src/scanNarrativeFacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -297,11 +297,19 @@ export declare const scanSurfaceCopy: {
|
|
|
297
297
|
readonly multiRuntimeHeadline: "Multiple runtime dependency upgrades need review";
|
|
298
298
|
readonly buildOnlyHeadline: "{package} patch upgrade with limited application impact";
|
|
299
299
|
readonly runtimeHeadline: "{package} upgrade affects {surface}";
|
|
300
|
+
readonly toolingPatchHeadline: "{package} patch upgrade";
|
|
301
|
+
readonly toolingUpgradeHeadline: "{package} tooling upgrade";
|
|
302
|
+
readonly runtimeUpgradeHeadline: "{package} runtime upgrade affects {surface}";
|
|
303
|
+
readonly safeNeutralHeadline: "{package} dependency upgrade";
|
|
300
304
|
readonly defaultUpgradeHeadline: "{package} dependency upgrade needs review";
|
|
301
305
|
readonly changedPackageKeyPoint: "Changed package: {package}";
|
|
302
306
|
readonly usedInPathsSingle: "Used across application code ({path})";
|
|
303
307
|
readonly usedInPathsMultiple: "Used across {count} code paths";
|
|
304
308
|
readonly noRuntimePathsKeyPoint: "No runtime usage paths detected";
|
|
309
|
+
readonly expectedImpactLimitedKeyPoint: "Expected impact is limited to {workflows}";
|
|
310
|
+
readonly limitedEvidenceKeyPoint: "Evidence for this upgrade is limited";
|
|
311
|
+
readonly usedInRuntimePathsKeyPoint: "Used in runtime application paths";
|
|
312
|
+
readonly runtimeUsageKeyPoint: "Used in runtime application paths";
|
|
305
313
|
readonly blastRadiusWideKeyPoint: "Blast radius is wide";
|
|
306
314
|
readonly blastRadiusLevelKeyPoint: "Blast radius is {level}";
|
|
307
315
|
readonly noAffectedAreasKeyPoint: "No affected application areas identified";
|
|
@@ -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,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
|
|
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,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"}
|
package/dist/scanSurfaceCopy.js
CHANGED
|
@@ -300,11 +300,19 @@ export const scanSurfaceCopy = {
|
|
|
300
300
|
multiRuntimeHeadline: "Multiple runtime dependency upgrades need review",
|
|
301
301
|
buildOnlyHeadline: "{package} patch upgrade with limited application impact",
|
|
302
302
|
runtimeHeadline: "{package} upgrade affects {surface}",
|
|
303
|
+
toolingPatchHeadline: "{package} patch upgrade",
|
|
304
|
+
toolingUpgradeHeadline: "{package} tooling upgrade",
|
|
305
|
+
runtimeUpgradeHeadline: "{package} runtime upgrade affects {surface}",
|
|
306
|
+
safeNeutralHeadline: "{package} dependency upgrade",
|
|
303
307
|
defaultUpgradeHeadline: "{package} dependency upgrade needs review",
|
|
304
308
|
changedPackageKeyPoint: "Changed package: {package}",
|
|
305
309
|
usedInPathsSingle: "Used across application code ({path})",
|
|
306
310
|
usedInPathsMultiple: "Used across {count} code paths",
|
|
307
311
|
noRuntimePathsKeyPoint: "No runtime usage paths detected",
|
|
312
|
+
expectedImpactLimitedKeyPoint: "Expected impact is limited to {workflows}",
|
|
313
|
+
limitedEvidenceKeyPoint: "Evidence for this upgrade is limited",
|
|
314
|
+
usedInRuntimePathsKeyPoint: "Used in runtime application paths",
|
|
315
|
+
runtimeUsageKeyPoint: "Used in runtime application paths",
|
|
308
316
|
blastRadiusWideKeyPoint: "Blast radius is wide",
|
|
309
317
|
blastRadiusLevelKeyPoint: "Blast radius is {level}",
|
|
310
318
|
noAffectedAreasKeyPoint: "No affected application areas identified",
|