assertledger 1.0.0 → 1.1.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.
- package/README.fr.md +3 -3
- package/README.md +3 -3
- package/SECURITY.md +11 -6
- package/conformance/schema-extensions.json +36 -0
- package/dist/build-info.d.ts +16 -0
- package/dist/build-info.d.ts.map +1 -0
- package/dist/build-info.js +18 -0
- package/dist/build-info.js.map +1 -0
- package/dist/build-info.json +7 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +117 -19
- package/dist/cli.js.map +1 -1
- package/dist/contracts/index.d.ts +943 -0
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +561 -21
- package/dist/contracts/index.js.map +1 -1
- package/dist/core/index.d.ts +10 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +484 -8
- package/dist/core/index.js.map +1 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +42 -2
- package/dist/diagnostics.js.map +1 -1
- package/dist/engine/adapters/node-test-runtime.d.ts +17 -0
- package/dist/engine/adapters/node-test-runtime.d.ts.map +1 -1
- package/dist/engine/adapters/node-test-runtime.js +45 -23
- package/dist/engine/adapters/node-test-runtime.js.map +1 -1
- package/dist/engine/container.d.ts +54 -0
- package/dist/engine/container.d.ts.map +1 -0
- package/dist/engine/container.js +464 -0
- package/dist/engine/container.js.map +1 -0
- package/dist/engine/git-regression.d.ts +12 -2
- package/dist/engine/git-regression.d.ts.map +1 -1
- package/dist/engine/git-regression.js +63 -16
- package/dist/engine/git-regression.js.map +1 -1
- package/dist/engine/index.d.ts +7 -1
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +300 -74
- package/dist/engine/index.js.map +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +53 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/proof-planner/carry-over.d.ts +21 -0
- package/dist/proof-planner/carry-over.d.ts.map +1 -0
- package/dist/proof-planner/carry-over.js +212 -0
- package/dist/proof-planner/carry-over.js.map +1 -0
- package/dist/proof-planner/index.d.ts +11 -0
- package/dist/proof-planner/index.d.ts.map +1 -0
- package/dist/proof-planner/index.js +11 -0
- package/dist/proof-planner/index.js.map +1 -0
- package/dist/proof-planner/model.d.ts +272 -0
- package/dist/proof-planner/model.d.ts.map +1 -0
- package/dist/proof-planner/model.js +215 -0
- package/dist/proof-planner/model.js.map +1 -0
- package/dist/proof-planner/plan.d.ts +140 -0
- package/dist/proof-planner/plan.d.ts.map +1 -0
- package/dist/proof-planner/plan.js +1124 -0
- package/dist/proof-planner/plan.js.map +1 -0
- package/dist/proof-planner/policy.d.ts +100 -0
- package/dist/proof-planner/policy.d.ts.map +1 -0
- package/dist/proof-planner/policy.js +407 -0
- package/dist/proof-planner/policy.js.map +1 -0
- package/dist/proof-planner/render.d.ts +4 -0
- package/dist/proof-planner/render.d.ts.map +1 -0
- package/dist/proof-planner/render.js +73 -0
- package/dist/proof-planner/render.js.map +1 -0
- package/dist/sdk/index.d.ts +16 -6
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/index.js +63 -5
- package/dist/sdk/index.js.map +1 -1
- package/docs/agentic-test-profile.md +5 -0
- package/docs/architecture.md +15 -3
- package/docs/ci.md +7 -1
- package/docs/conformance-v1.md +11 -2
- package/docs/container-isolation.md +156 -0
- package/docs/evidence-export.md +146 -0
- package/docs/git-regression.md +7 -3
- package/docs/migration-timeout-discovery-inconclusive.md +126 -0
- package/docs/migration-verification-v2.md +55 -0
- package/docs/project-intent.md +3 -2
- package/docs/proof-model.md +28 -6
- package/docs/proof-planner.md +368 -0
- package/docs/reference.md +59 -12
- package/docs/roadmap.md +12 -4
- package/examples/agentic-profile/profile-manifest.mjs +5 -1
- package/examples/evidence-export/consumer.mjs +35 -0
- package/package.json +5 -5
- package/schemas/evidence-export-replay-result.v1.json +49 -0
- package/schemas/evidence-export-request.v1.json +681 -0
- package/schemas/evidence-export.v1.json +1479 -0
- package/schemas/evidence-manifest.v2.json +886 -0
- package/schemas/evidence-provider-manifest.v1.json +269 -0
- package/schemas/verification-request.v2.json +457 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import * as z from "zod";
|
|
2
|
+
export declare const PROOF_PLANNER_SCHEMA_VERSION: "1.0.0";
|
|
3
|
+
export declare class ProofPlannerError extends Error {
|
|
4
|
+
readonly code: string;
|
|
5
|
+
constructor(code: string, detail?: string);
|
|
6
|
+
}
|
|
7
|
+
export declare const ASSURANCE_LEVELS: readonly ["P0", "P1", "P2", "P3", "P4", "P5"];
|
|
8
|
+
export type AssuranceLevel = (typeof ASSURANCE_LEVELS)[number];
|
|
9
|
+
export declare const SURFACE_ROLES: readonly ["product", "execution-context", "evaluation", "test", "proof-infrastructure", "documentation"];
|
|
10
|
+
export type SurfaceRole = (typeof SURFACE_ROLES)[number];
|
|
11
|
+
export declare const SURFACE_REACHES: readonly ["direct", "transitive"];
|
|
12
|
+
export declare const SURFACE_RUNTIMES: readonly ["none", "build", "offline-analysis", "live"];
|
|
13
|
+
export declare const BOUNDARIES: readonly ["protocol", "persistence", "replay", "analysis", "decision", "admission", "security", "public-api", "benchmark", "holdout"];
|
|
14
|
+
export type Boundary = (typeof BOUNDARIES)[number];
|
|
15
|
+
export declare const BEHAVIOR_CHANGES: readonly ["none", "suspected", "fix", "feature"];
|
|
16
|
+
export declare const COVERAGES: readonly ["tested", "untested", "unknown"];
|
|
17
|
+
export declare const CLAIM_KINDS: readonly ["behavior", "equivalence", "invariant", "compatibility", "empirical", "documentation"];
|
|
18
|
+
export declare const CLAIM_CRITICALITIES: readonly ["low", "standard", "high", "critical"];
|
|
19
|
+
export declare const CLAIM_SCOPES: readonly ["local", "component", "system"];
|
|
20
|
+
export declare const PRODUCT_SIGNALS: readonly ["UNEXPECTED_BEHAVIOR", "UNPLANNED_IMPACT", "UNKNOWN_DEPENDENCY", "LIVE_RUNTIME_TOUCHED", "CORPUS_DIVERGENCE", "WITNESS_NOT_CAUSAL", "REGRESSION"];
|
|
21
|
+
export declare const INFRASTRUCTURE_SIGNALS: readonly ["TIMEOUT", "ENVIRONMENT_FAILURE", "TOOLING_FAILURE"];
|
|
22
|
+
export type ProductSignal = (typeof PRODUCT_SIGNALS)[number];
|
|
23
|
+
export type InfrastructureSignal = (typeof INFRASTRUCTURE_SIGNALS)[number];
|
|
24
|
+
export type SignalName = ProductSignal | InfrastructureSignal;
|
|
25
|
+
export declare const ATTRIBUTION_BASES: readonly ["REPRODUCES_ON_BASELINE", "PASSES_ON_SAME_REVISION", "OUTSIDE_IMPACT", "INFRASTRUCTURE_ERROR_REPORTED", "DECLARED_ENVIRONMENT_FACTOR"];
|
|
26
|
+
export type AttributionBasis = (typeof ATTRIBUTION_BASES)[number];
|
|
27
|
+
/** What a piece of evidence is about. Surface roles map onto these subjects. */
|
|
28
|
+
export declare const EVIDENCE_SUBJECTS: readonly ["product", "evaluation", "proof-infrastructure", "documentation"];
|
|
29
|
+
export type EvidenceSubject = (typeof EVIDENCE_SUBJECTS)[number];
|
|
30
|
+
export declare const EVIDENCE_WEIGHTS: readonly ["targeted", "broad", "ceremony"];
|
|
31
|
+
export type EvidenceWeight = (typeof EVIDENCE_WEIGHTS)[number];
|
|
32
|
+
/**
|
|
33
|
+
* What a piece of evidence stays valid for.
|
|
34
|
+
* - exact-revision: only the revision it was produced on.
|
|
35
|
+
* - surface-content: each scoped surface, while that surface, the test and proof-infrastructure
|
|
36
|
+
* surfaces that exercise it, the baseline and (for every kind that is not documentation-only)
|
|
37
|
+
* the runtime tree keep their digests. Without a scope it is revision-wide: exact-revision.
|
|
38
|
+
* - runtime-tree: any revision with the same baseline and runtime tree digest.
|
|
39
|
+
*/
|
|
40
|
+
export declare const EVIDENCE_BINDINGS: readonly ["exact-revision", "surface-content", "runtime-tree"];
|
|
41
|
+
export type EvidenceBinding = (typeof EVIDENCE_BINDINGS)[number];
|
|
42
|
+
export declare const EVIDENCE_VERIFICATIONS: readonly ["executed", "attested"];
|
|
43
|
+
export declare const EvidenceKindIdSchema: z.ZodString;
|
|
44
|
+
export declare const SurfaceSchema: z.ZodObject<{
|
|
45
|
+
id: z.ZodString;
|
|
46
|
+
role: z.ZodEnum<{
|
|
47
|
+
documentation: "documentation";
|
|
48
|
+
evaluation: "evaluation";
|
|
49
|
+
"execution-context": "execution-context";
|
|
50
|
+
product: "product";
|
|
51
|
+
"proof-infrastructure": "proof-infrastructure";
|
|
52
|
+
test: "test";
|
|
53
|
+
}>;
|
|
54
|
+
reach: z.ZodEnum<{
|
|
55
|
+
direct: "direct";
|
|
56
|
+
transitive: "transitive";
|
|
57
|
+
}>;
|
|
58
|
+
runtime: z.ZodEnum<{
|
|
59
|
+
build: "build";
|
|
60
|
+
live: "live";
|
|
61
|
+
none: "none";
|
|
62
|
+
"offline-analysis": "offline-analysis";
|
|
63
|
+
}>;
|
|
64
|
+
boundaries: z.ZodArray<z.ZodEnum<{
|
|
65
|
+
admission: "admission";
|
|
66
|
+
analysis: "analysis";
|
|
67
|
+
benchmark: "benchmark";
|
|
68
|
+
decision: "decision";
|
|
69
|
+
holdout: "holdout";
|
|
70
|
+
persistence: "persistence";
|
|
71
|
+
protocol: "protocol";
|
|
72
|
+
"public-api": "public-api";
|
|
73
|
+
replay: "replay";
|
|
74
|
+
security: "security";
|
|
75
|
+
}>>;
|
|
76
|
+
behaviorChange: z.ZodEnum<{
|
|
77
|
+
feature: "feature";
|
|
78
|
+
fix: "fix";
|
|
79
|
+
none: "none";
|
|
80
|
+
suspected: "suspected";
|
|
81
|
+
}>;
|
|
82
|
+
coverage: z.ZodEnum<{
|
|
83
|
+
tested: "tested";
|
|
84
|
+
unknown: "unknown";
|
|
85
|
+
untested: "untested";
|
|
86
|
+
}>;
|
|
87
|
+
environmentSensitive: z.ZodBoolean;
|
|
88
|
+
contentDigest: z.ZodOptional<z.ZodString>;
|
|
89
|
+
exercises: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
90
|
+
}, z.core.$strict>;
|
|
91
|
+
export type Surface = z.infer<typeof SurfaceSchema>;
|
|
92
|
+
export declare const ChangeImpactSchema: z.ZodObject<{
|
|
93
|
+
schemaVersion: z.ZodLiteral<"1.0.0">;
|
|
94
|
+
revision: z.ZodObject<{
|
|
95
|
+
id: z.ZodString;
|
|
96
|
+
baseline: z.ZodString;
|
|
97
|
+
runtimeTreeDigest: z.ZodOptional<z.ZodString>;
|
|
98
|
+
}, z.core.$strict>;
|
|
99
|
+
surfaces: z.ZodArray<z.ZodObject<{
|
|
100
|
+
id: z.ZodString;
|
|
101
|
+
role: z.ZodEnum<{
|
|
102
|
+
documentation: "documentation";
|
|
103
|
+
evaluation: "evaluation";
|
|
104
|
+
"execution-context": "execution-context";
|
|
105
|
+
product: "product";
|
|
106
|
+
"proof-infrastructure": "proof-infrastructure";
|
|
107
|
+
test: "test";
|
|
108
|
+
}>;
|
|
109
|
+
reach: z.ZodEnum<{
|
|
110
|
+
direct: "direct";
|
|
111
|
+
transitive: "transitive";
|
|
112
|
+
}>;
|
|
113
|
+
runtime: z.ZodEnum<{
|
|
114
|
+
build: "build";
|
|
115
|
+
live: "live";
|
|
116
|
+
none: "none";
|
|
117
|
+
"offline-analysis": "offline-analysis";
|
|
118
|
+
}>;
|
|
119
|
+
boundaries: z.ZodArray<z.ZodEnum<{
|
|
120
|
+
admission: "admission";
|
|
121
|
+
analysis: "analysis";
|
|
122
|
+
benchmark: "benchmark";
|
|
123
|
+
decision: "decision";
|
|
124
|
+
holdout: "holdout";
|
|
125
|
+
persistence: "persistence";
|
|
126
|
+
protocol: "protocol";
|
|
127
|
+
"public-api": "public-api";
|
|
128
|
+
replay: "replay";
|
|
129
|
+
security: "security";
|
|
130
|
+
}>>;
|
|
131
|
+
behaviorChange: z.ZodEnum<{
|
|
132
|
+
feature: "feature";
|
|
133
|
+
fix: "fix";
|
|
134
|
+
none: "none";
|
|
135
|
+
suspected: "suspected";
|
|
136
|
+
}>;
|
|
137
|
+
coverage: z.ZodEnum<{
|
|
138
|
+
tested: "tested";
|
|
139
|
+
unknown: "unknown";
|
|
140
|
+
untested: "untested";
|
|
141
|
+
}>;
|
|
142
|
+
environmentSensitive: z.ZodBoolean;
|
|
143
|
+
contentDigest: z.ZodOptional<z.ZodString>;
|
|
144
|
+
exercises: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
145
|
+
}, z.core.$strict>>;
|
|
146
|
+
analysis: z.ZodObject<{
|
|
147
|
+
method: z.ZodEnum<{
|
|
148
|
+
declared: "declared";
|
|
149
|
+
"static-graph": "static-graph";
|
|
150
|
+
}>;
|
|
151
|
+
completeness: z.ZodEnum<{
|
|
152
|
+
complete: "complete";
|
|
153
|
+
partial: "partial";
|
|
154
|
+
unknown: "unknown";
|
|
155
|
+
}>;
|
|
156
|
+
uncertainty: z.ZodEnum<{
|
|
157
|
+
high: "high";
|
|
158
|
+
low: "low";
|
|
159
|
+
medium: "medium";
|
|
160
|
+
}>;
|
|
161
|
+
unknowns: z.ZodArray<z.ZodObject<{
|
|
162
|
+
description: z.ZodString;
|
|
163
|
+
surfaces: z.ZodArray<z.ZodString>;
|
|
164
|
+
}, z.core.$strict>>;
|
|
165
|
+
omittedSurfaceCount: z.ZodInt;
|
|
166
|
+
}, z.core.$strict>;
|
|
167
|
+
reversibility: z.ZodEnum<{
|
|
168
|
+
costly: "costly";
|
|
169
|
+
irreversible: "irreversible";
|
|
170
|
+
reversible: "reversible";
|
|
171
|
+
trivial: "trivial";
|
|
172
|
+
}>;
|
|
173
|
+
causalWitness: z.ZodEnum<{
|
|
174
|
+
available: "available";
|
|
175
|
+
feasible: "feasible";
|
|
176
|
+
infeasible: "infeasible";
|
|
177
|
+
"not-applicable": "not-applicable";
|
|
178
|
+
}>;
|
|
179
|
+
}, z.core.$strict>;
|
|
180
|
+
export type ChangeImpact = z.infer<typeof ChangeImpactSchema>;
|
|
181
|
+
export declare const AssuranceClaimSchema: z.ZodObject<{
|
|
182
|
+
id: z.ZodString;
|
|
183
|
+
statement: z.ZodString;
|
|
184
|
+
kind: z.ZodEnum<{
|
|
185
|
+
behavior: "behavior";
|
|
186
|
+
compatibility: "compatibility";
|
|
187
|
+
documentation: "documentation";
|
|
188
|
+
empirical: "empirical";
|
|
189
|
+
equivalence: "equivalence";
|
|
190
|
+
invariant: "invariant";
|
|
191
|
+
}>;
|
|
192
|
+
criticality: z.ZodEnum<{
|
|
193
|
+
critical: "critical";
|
|
194
|
+
high: "high";
|
|
195
|
+
low: "low";
|
|
196
|
+
standard: "standard";
|
|
197
|
+
}>;
|
|
198
|
+
scope: z.ZodEnum<{
|
|
199
|
+
component: "component";
|
|
200
|
+
local: "local";
|
|
201
|
+
system: "system";
|
|
202
|
+
}>;
|
|
203
|
+
surfaces: z.ZodArray<z.ZodString>;
|
|
204
|
+
}, z.core.$strict>;
|
|
205
|
+
export type AssuranceClaim = z.infer<typeof AssuranceClaimSchema>;
|
|
206
|
+
export declare const ProofSignalSchema: z.ZodObject<{
|
|
207
|
+
id: z.ZodString;
|
|
208
|
+
revision: z.ZodString;
|
|
209
|
+
baseline: z.ZodOptional<z.ZodString>;
|
|
210
|
+
runtimeTreeDigest: z.ZodOptional<z.ZodString>;
|
|
211
|
+
signal: z.ZodEnum<{
|
|
212
|
+
CORPUS_DIVERGENCE: "CORPUS_DIVERGENCE";
|
|
213
|
+
ENVIRONMENT_FAILURE: "ENVIRONMENT_FAILURE";
|
|
214
|
+
LIVE_RUNTIME_TOUCHED: "LIVE_RUNTIME_TOUCHED";
|
|
215
|
+
REGRESSION: "REGRESSION";
|
|
216
|
+
TIMEOUT: "TIMEOUT";
|
|
217
|
+
TOOLING_FAILURE: "TOOLING_FAILURE";
|
|
218
|
+
UNEXPECTED_BEHAVIOR: "UNEXPECTED_BEHAVIOR";
|
|
219
|
+
UNKNOWN_DEPENDENCY: "UNKNOWN_DEPENDENCY";
|
|
220
|
+
UNPLANNED_IMPACT: "UNPLANNED_IMPACT";
|
|
221
|
+
WITNESS_NOT_CAUSAL: "WITNESS_NOT_CAUSAL";
|
|
222
|
+
}>;
|
|
223
|
+
surfaces: z.ZodArray<z.ZodString>;
|
|
224
|
+
exercisesImpactedSurfaces: z.ZodEnum<{
|
|
225
|
+
no: "no";
|
|
226
|
+
unknown: "unknown";
|
|
227
|
+
yes: "yes";
|
|
228
|
+
}>;
|
|
229
|
+
attribution: z.ZodArray<z.ZodEnum<{
|
|
230
|
+
DECLARED_ENVIRONMENT_FACTOR: "DECLARED_ENVIRONMENT_FACTOR";
|
|
231
|
+
INFRASTRUCTURE_ERROR_REPORTED: "INFRASTRUCTURE_ERROR_REPORTED";
|
|
232
|
+
OUTSIDE_IMPACT: "OUTSIDE_IMPACT";
|
|
233
|
+
PASSES_ON_SAME_REVISION: "PASSES_ON_SAME_REVISION";
|
|
234
|
+
REPRODUCES_ON_BASELINE: "REPRODUCES_ON_BASELINE";
|
|
235
|
+
}>>;
|
|
236
|
+
detail: z.ZodString;
|
|
237
|
+
}, z.core.$strict>;
|
|
238
|
+
export type ProofSignal = z.infer<typeof ProofSignalSchema>;
|
|
239
|
+
export declare const EvidenceKindSpecSchema: z.ZodObject<{
|
|
240
|
+
id: z.ZodString;
|
|
241
|
+
title: z.ZodString;
|
|
242
|
+
description: z.ZodString;
|
|
243
|
+
weight: z.ZodEnum<{
|
|
244
|
+
broad: "broad";
|
|
245
|
+
ceremony: "ceremony";
|
|
246
|
+
targeted: "targeted";
|
|
247
|
+
}>;
|
|
248
|
+
binding: z.ZodEnum<{
|
|
249
|
+
"exact-revision": "exact-revision";
|
|
250
|
+
"runtime-tree": "runtime-tree";
|
|
251
|
+
"surface-content": "surface-content";
|
|
252
|
+
}>;
|
|
253
|
+
subjects: z.ZodArray<z.ZodEnum<{
|
|
254
|
+
documentation: "documentation";
|
|
255
|
+
evaluation: "evaluation";
|
|
256
|
+
product: "product";
|
|
257
|
+
"proof-infrastructure": "proof-infrastructure";
|
|
258
|
+
}>>;
|
|
259
|
+
verification: z.ZodEnum<{
|
|
260
|
+
attested: "attested";
|
|
261
|
+
executed: "executed";
|
|
262
|
+
}>;
|
|
263
|
+
semanticsVersion: z.ZodInt;
|
|
264
|
+
}, z.core.$strict>;
|
|
265
|
+
export type EvidenceKindSpec = z.infer<typeof EvidenceKindSpecSchema>;
|
|
266
|
+
export declare function subjectOfRole(role: SurfaceRole): EvidenceSubject;
|
|
267
|
+
export declare function levelIndex(level: AssuranceLevel): number;
|
|
268
|
+
export declare function levelAt(index: number): AssuranceLevel;
|
|
269
|
+
/** Ordinal (UTF-16 code unit) comparison; never locale-dependent. */
|
|
270
|
+
export declare function compareOrdinal(left: string, right: string): number;
|
|
271
|
+
export declare function sortedUnique<T extends string>(values: Iterable<T>): T[];
|
|
272
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/proof-planner/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import * as z from "zod";
|
|
2
|
+
export const PROOF_PLANNER_SCHEMA_VERSION = "1.0.0";
|
|
3
|
+
export class ProofPlannerError extends Error {
|
|
4
|
+
code;
|
|
5
|
+
constructor(code, detail) {
|
|
6
|
+
super(detail ? `${code}: ${detail}` : code);
|
|
7
|
+
this.name = "ProofPlannerError";
|
|
8
|
+
this.code = code;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export const ASSURANCE_LEVELS = ["P0", "P1", "P2", "P3", "P4", "P5"];
|
|
12
|
+
export const SURFACE_ROLES = [
|
|
13
|
+
"product",
|
|
14
|
+
"execution-context",
|
|
15
|
+
"evaluation",
|
|
16
|
+
"test",
|
|
17
|
+
"proof-infrastructure",
|
|
18
|
+
"documentation",
|
|
19
|
+
];
|
|
20
|
+
export const SURFACE_REACHES = ["direct", "transitive"];
|
|
21
|
+
export const SURFACE_RUNTIMES = ["none", "build", "offline-analysis", "live"];
|
|
22
|
+
export const BOUNDARIES = [
|
|
23
|
+
"protocol",
|
|
24
|
+
"persistence",
|
|
25
|
+
"replay",
|
|
26
|
+
"analysis",
|
|
27
|
+
"decision",
|
|
28
|
+
"admission",
|
|
29
|
+
"security",
|
|
30
|
+
"public-api",
|
|
31
|
+
"benchmark",
|
|
32
|
+
"holdout",
|
|
33
|
+
];
|
|
34
|
+
export const BEHAVIOR_CHANGES = ["none", "suspected", "fix", "feature"];
|
|
35
|
+
export const COVERAGES = ["tested", "untested", "unknown"];
|
|
36
|
+
export const CLAIM_KINDS = [
|
|
37
|
+
"behavior",
|
|
38
|
+
"equivalence",
|
|
39
|
+
"invariant",
|
|
40
|
+
"compatibility",
|
|
41
|
+
"empirical",
|
|
42
|
+
"documentation",
|
|
43
|
+
];
|
|
44
|
+
export const CLAIM_CRITICALITIES = ["low", "standard", "high", "critical"];
|
|
45
|
+
export const CLAIM_SCOPES = ["local", "component", "system"];
|
|
46
|
+
export const PRODUCT_SIGNALS = [
|
|
47
|
+
"UNEXPECTED_BEHAVIOR",
|
|
48
|
+
"UNPLANNED_IMPACT",
|
|
49
|
+
"UNKNOWN_DEPENDENCY",
|
|
50
|
+
"LIVE_RUNTIME_TOUCHED",
|
|
51
|
+
"CORPUS_DIVERGENCE",
|
|
52
|
+
"WITNESS_NOT_CAUSAL",
|
|
53
|
+
"REGRESSION",
|
|
54
|
+
];
|
|
55
|
+
export const INFRASTRUCTURE_SIGNALS = [
|
|
56
|
+
"TIMEOUT",
|
|
57
|
+
"ENVIRONMENT_FAILURE",
|
|
58
|
+
"TOOLING_FAILURE",
|
|
59
|
+
];
|
|
60
|
+
export const ATTRIBUTION_BASES = [
|
|
61
|
+
"REPRODUCES_ON_BASELINE",
|
|
62
|
+
"PASSES_ON_SAME_REVISION",
|
|
63
|
+
"OUTSIDE_IMPACT",
|
|
64
|
+
"INFRASTRUCTURE_ERROR_REPORTED",
|
|
65
|
+
"DECLARED_ENVIRONMENT_FACTOR",
|
|
66
|
+
];
|
|
67
|
+
/** What a piece of evidence is about. Surface roles map onto these subjects. */
|
|
68
|
+
export const EVIDENCE_SUBJECTS = [
|
|
69
|
+
"product",
|
|
70
|
+
"evaluation",
|
|
71
|
+
"proof-infrastructure",
|
|
72
|
+
"documentation",
|
|
73
|
+
];
|
|
74
|
+
export const EVIDENCE_WEIGHTS = ["targeted", "broad", "ceremony"];
|
|
75
|
+
/**
|
|
76
|
+
* What a piece of evidence stays valid for.
|
|
77
|
+
* - exact-revision: only the revision it was produced on.
|
|
78
|
+
* - surface-content: each scoped surface, while that surface, the test and proof-infrastructure
|
|
79
|
+
* surfaces that exercise it, the baseline and (for every kind that is not documentation-only)
|
|
80
|
+
* the runtime tree keep their digests. Without a scope it is revision-wide: exact-revision.
|
|
81
|
+
* - runtime-tree: any revision with the same baseline and runtime tree digest.
|
|
82
|
+
*/
|
|
83
|
+
export const EVIDENCE_BINDINGS = ["exact-revision", "surface-content", "runtime-tree"];
|
|
84
|
+
export const EVIDENCE_VERIFICATIONS = ["executed", "attested"];
|
|
85
|
+
const IdentifierSchema = z
|
|
86
|
+
.string()
|
|
87
|
+
.min(1)
|
|
88
|
+
.max(160)
|
|
89
|
+
.regex(/^[A-Za-z0-9][A-Za-z0-9._:/@-]*$/);
|
|
90
|
+
const TextSchema = z.string().min(1).max(1_024);
|
|
91
|
+
/** A git commit or tree object id, or a sha256 content digest. */
|
|
92
|
+
const RevisionIdSchema = z.string().regex(/^([a-f0-9]{40}|[a-f0-9]{64}|sha256:[a-f0-9]{64})$/);
|
|
93
|
+
/** An explicitly typed content identity, so that two formats can never compare equal. */
|
|
94
|
+
const ContentDigestSchema = z
|
|
95
|
+
.string()
|
|
96
|
+
.regex(/^(sha256:[a-f0-9]{64}|git:[a-f0-9]{40}|git:[a-f0-9]{64})$/);
|
|
97
|
+
export const EvidenceKindIdSchema = z
|
|
98
|
+
.string()
|
|
99
|
+
.min(1)
|
|
100
|
+
.max(96)
|
|
101
|
+
.regex(/^[A-Z][A-Z0-9_]*$/);
|
|
102
|
+
export const SurfaceSchema = z.strictObject({
|
|
103
|
+
id: IdentifierSchema,
|
|
104
|
+
role: z.enum(SURFACE_ROLES),
|
|
105
|
+
reach: z.enum(SURFACE_REACHES),
|
|
106
|
+
runtime: z.enum(SURFACE_RUNTIMES),
|
|
107
|
+
boundaries: z.array(z.enum(BOUNDARIES)).max(BOUNDARIES.length),
|
|
108
|
+
/**
|
|
109
|
+
* For product, execution-context and evaluation surfaces: the declared behavior change.
|
|
110
|
+
* For test and proof-infrastructure surfaces: "none" means purely additive; any other value
|
|
111
|
+
* means an existing oracle, budget, selection or gate is modified.
|
|
112
|
+
*/
|
|
113
|
+
behaviorChange: z.enum(BEHAVIOR_CHANGES),
|
|
114
|
+
coverage: z.enum(COVERAGES),
|
|
115
|
+
environmentSensitive: z.boolean(),
|
|
116
|
+
contentDigest: ContentDigestSchema.optional(),
|
|
117
|
+
/**
|
|
118
|
+
* Test and proof-infrastructure surfaces: identifiers of the surfaces they exercise. For a
|
|
119
|
+
* test, absent means all; a proof-infrastructure surface only counts where it names them.
|
|
120
|
+
*/
|
|
121
|
+
exercises: z.array(IdentifierSchema).max(512).optional(),
|
|
122
|
+
});
|
|
123
|
+
export const ChangeImpactSchema = z.strictObject({
|
|
124
|
+
schemaVersion: z.literal(PROOF_PLANNER_SCHEMA_VERSION),
|
|
125
|
+
revision: z.strictObject({
|
|
126
|
+
id: RevisionIdSchema,
|
|
127
|
+
/** Merge-base the impact is computed against; the impact is cumulative from it. */
|
|
128
|
+
baseline: RevisionIdSchema,
|
|
129
|
+
/** Digest of every path that is not test, proof infrastructure or documentation. */
|
|
130
|
+
runtimeTreeDigest: ContentDigestSchema.optional(),
|
|
131
|
+
}),
|
|
132
|
+
surfaces: z.array(SurfaceSchema).min(1).max(512),
|
|
133
|
+
analysis: z.strictObject({
|
|
134
|
+
method: z.enum(["static-graph", "declared"]),
|
|
135
|
+
completeness: z.enum(["complete", "partial", "unknown"]),
|
|
136
|
+
uncertainty: z.enum(["low", "medium", "high"]),
|
|
137
|
+
unknowns: z
|
|
138
|
+
.array(z.strictObject({
|
|
139
|
+
description: TextSchema,
|
|
140
|
+
surfaces: z.array(IdentifierSchema).max(64),
|
|
141
|
+
}))
|
|
142
|
+
.max(64),
|
|
143
|
+
omittedSurfaceCount: z.int().min(0).max(1_000_000),
|
|
144
|
+
}),
|
|
145
|
+
reversibility: z.enum(["trivial", "reversible", "costly", "irreversible"]),
|
|
146
|
+
causalWitness: z.enum(["available", "feasible", "infeasible", "not-applicable"]),
|
|
147
|
+
});
|
|
148
|
+
export const AssuranceClaimSchema = z.strictObject({
|
|
149
|
+
id: IdentifierSchema,
|
|
150
|
+
statement: TextSchema,
|
|
151
|
+
kind: z.enum(CLAIM_KINDS),
|
|
152
|
+
criticality: z.enum(CLAIM_CRITICALITIES),
|
|
153
|
+
scope: z.enum(CLAIM_SCOPES),
|
|
154
|
+
surfaces: z.array(IdentifierSchema).min(1).max(512),
|
|
155
|
+
});
|
|
156
|
+
export const ProofSignalSchema = z.strictObject({
|
|
157
|
+
id: IdentifierSchema,
|
|
158
|
+
/**
|
|
159
|
+
* Signals count for the revision they were observed on. An unresolved signal from another
|
|
160
|
+
* revision still counts when it names the same baseline and runtime tree as the planned change:
|
|
161
|
+
* the product it observed is byte-identical.
|
|
162
|
+
*/
|
|
163
|
+
revision: RevisionIdSchema,
|
|
164
|
+
baseline: RevisionIdSchema.optional(),
|
|
165
|
+
runtimeTreeDigest: ContentDigestSchema.optional(),
|
|
166
|
+
signal: z.enum([...PRODUCT_SIGNALS, ...INFRASTRUCTURE_SIGNALS]),
|
|
167
|
+
surfaces: z.array(IdentifierSchema).max(512),
|
|
168
|
+
exercisesImpactedSurfaces: z.enum(["yes", "no", "unknown"]),
|
|
169
|
+
attribution: z.array(z.enum(ATTRIBUTION_BASES)).max(ATTRIBUTION_BASES.length),
|
|
170
|
+
detail: TextSchema,
|
|
171
|
+
});
|
|
172
|
+
export const EvidenceKindSpecSchema = z.strictObject({
|
|
173
|
+
id: EvidenceKindIdSchema,
|
|
174
|
+
title: TextSchema,
|
|
175
|
+
description: TextSchema,
|
|
176
|
+
weight: z.enum(EVIDENCE_WEIGHTS),
|
|
177
|
+
binding: z.enum(EVIDENCE_BINDINGS),
|
|
178
|
+
subjects: z.array(z.enum(EVIDENCE_SUBJECTS)).min(1).max(EVIDENCE_SUBJECTS.length),
|
|
179
|
+
verification: z.enum(EVIDENCE_VERIFICATIONS),
|
|
180
|
+
/** Bump when the meaning of the kind changes; title and description edits do not count. */
|
|
181
|
+
semanticsVersion: z.int().min(1).max(1_000),
|
|
182
|
+
});
|
|
183
|
+
export function subjectOfRole(role) {
|
|
184
|
+
switch (role) {
|
|
185
|
+
case "product":
|
|
186
|
+
case "execution-context":
|
|
187
|
+
return "product";
|
|
188
|
+
case "evaluation":
|
|
189
|
+
return "evaluation";
|
|
190
|
+
case "test":
|
|
191
|
+
case "proof-infrastructure":
|
|
192
|
+
return "proof-infrastructure";
|
|
193
|
+
case "documentation":
|
|
194
|
+
return "documentation";
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
export function levelIndex(level) {
|
|
198
|
+
return ASSURANCE_LEVELS.indexOf(level);
|
|
199
|
+
}
|
|
200
|
+
export function levelAt(index) {
|
|
201
|
+
const bounded = Math.max(0, Math.min(ASSURANCE_LEVELS.length - 1, index));
|
|
202
|
+
return ASSURANCE_LEVELS[bounded] ?? "P0";
|
|
203
|
+
}
|
|
204
|
+
/** Ordinal (UTF-16 code unit) comparison; never locale-dependent. */
|
|
205
|
+
export function compareOrdinal(left, right) {
|
|
206
|
+
if (left < right)
|
|
207
|
+
return -1;
|
|
208
|
+
if (left > right)
|
|
209
|
+
return 1;
|
|
210
|
+
return 0;
|
|
211
|
+
}
|
|
212
|
+
export function sortedUnique(values) {
|
|
213
|
+
return [...new Set(values)].sort(compareOrdinal);
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/proof-planner/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import * as z from "zod";
|
|
2
|
+
import { AssuranceClaimSchema, type AssuranceLevel, type AttributionBasis, ChangeImpactSchema, type EvidenceBinding, type EvidenceKindSpec, type EvidenceSubject, type EvidenceWeight, PROOF_PLANNER_SCHEMA_VERSION, ProofSignalSchema, type SignalName, type Surface, type SurfaceRole } from "./model.js";
|
|
3
|
+
import { type AssurancePolicy, type FactId } from "./policy.js";
|
|
4
|
+
export type ImpactBound = "no-product-runtime" | "bounded-confident" | "bounded-uncertain" | "unbounded";
|
|
5
|
+
export type PlanStatus = "PROVE" | "HOLD" | "BLOCKED";
|
|
6
|
+
export type SignalClassificationName = "product" | "proof-infrastructure" | "unattributed" | "pre-existing" | "absorbed" | "other-revision";
|
|
7
|
+
export interface PlannerFact {
|
|
8
|
+
id: FactId;
|
|
9
|
+
subject: EvidenceSubject;
|
|
10
|
+
surfaces: string[];
|
|
11
|
+
refs: string[];
|
|
12
|
+
detail: string;
|
|
13
|
+
}
|
|
14
|
+
export interface EvidenceRequirement {
|
|
15
|
+
kind: string;
|
|
16
|
+
title: string;
|
|
17
|
+
weight: EvidenceWeight;
|
|
18
|
+
binding: EvidenceBinding;
|
|
19
|
+
verification: EvidenceKindSpec["verification"];
|
|
20
|
+
subjects: EvidenceSubject[];
|
|
21
|
+
semanticDigest: string;
|
|
22
|
+
/** Surfaces the evidence is about; empty for revision-wide evidence. */
|
|
23
|
+
surfaces: string[];
|
|
24
|
+
/** Fact ids or `baseline:<level>:<subject>` entries that made this evidence necessary. */
|
|
25
|
+
because: string[];
|
|
26
|
+
}
|
|
27
|
+
export interface ActivationCondition {
|
|
28
|
+
/** Policy triggers that would have required or recommended the kind. */
|
|
29
|
+
triggers: {
|
|
30
|
+
fact: FactId;
|
|
31
|
+
effect: "require" | "recommend";
|
|
32
|
+
}[];
|
|
33
|
+
/** Level baselines that would have required the kind. */
|
|
34
|
+
baselines: {
|
|
35
|
+
level: AssuranceLevel;
|
|
36
|
+
subjects: {
|
|
37
|
+
subject: EvidenceSubject;
|
|
38
|
+
level: AssuranceLevel | null;
|
|
39
|
+
}[];
|
|
40
|
+
}[];
|
|
41
|
+
}
|
|
42
|
+
export interface NotRequiredEvidence {
|
|
43
|
+
requirement: EvidenceRequirement;
|
|
44
|
+
rationale: string;
|
|
45
|
+
activation: ActivationCondition;
|
|
46
|
+
evaluatedAgainst: "actual-change" | "worst-case";
|
|
47
|
+
}
|
|
48
|
+
export interface UndeterminedEvidence {
|
|
49
|
+
requirement: EvidenceRequirement;
|
|
50
|
+
rationale: string;
|
|
51
|
+
}
|
|
52
|
+
export interface EscalationCondition {
|
|
53
|
+
signal: SignalName;
|
|
54
|
+
variant: "product" | "infrastructure-attributed" | "infrastructure-unattributed";
|
|
55
|
+
classification: SignalClassificationName;
|
|
56
|
+
resultingLevel: AssuranceLevel;
|
|
57
|
+
resultingStatus: PlanStatus;
|
|
58
|
+
addsRequired: string[];
|
|
59
|
+
rationale: string;
|
|
60
|
+
}
|
|
61
|
+
export interface PlannerDecision {
|
|
62
|
+
step: "impact" | "claim" | "signal" | "floor" | "raise" | "level" | "status";
|
|
63
|
+
subject: EvidenceSubject | null;
|
|
64
|
+
fact: FactId | null;
|
|
65
|
+
level: AssuranceLevel | null;
|
|
66
|
+
detail: string;
|
|
67
|
+
}
|
|
68
|
+
export interface Uncertainty {
|
|
69
|
+
id: string;
|
|
70
|
+
statement: string;
|
|
71
|
+
mitigatedBy: string[];
|
|
72
|
+
}
|
|
73
|
+
export interface SignalClassification {
|
|
74
|
+
id: string;
|
|
75
|
+
/** The revision the signal was observed on, which may differ from the planned one. */
|
|
76
|
+
revision: string;
|
|
77
|
+
signal: SignalName;
|
|
78
|
+
classification: SignalClassificationName;
|
|
79
|
+
exercises: "yes" | "no" | "unknown";
|
|
80
|
+
basis: AttributionBasis[];
|
|
81
|
+
surfaces: string[];
|
|
82
|
+
reason: string;
|
|
83
|
+
}
|
|
84
|
+
export interface PlanSurface {
|
|
85
|
+
id: string;
|
|
86
|
+
role: SurfaceRole;
|
|
87
|
+
reach: Surface["reach"];
|
|
88
|
+
contentDigest: string | null;
|
|
89
|
+
exercises: string[] | null;
|
|
90
|
+
}
|
|
91
|
+
export interface AssurancePlan {
|
|
92
|
+
schemaVersion: typeof PROOF_PLANNER_SCHEMA_VERSION;
|
|
93
|
+
status: PlanStatus;
|
|
94
|
+
level: AssuranceLevel;
|
|
95
|
+
levelBySubject: {
|
|
96
|
+
subject: EvidenceSubject;
|
|
97
|
+
level: AssuranceLevel;
|
|
98
|
+
}[];
|
|
99
|
+
impactBound: ImpactBound;
|
|
100
|
+
subject: {
|
|
101
|
+
revision: string;
|
|
102
|
+
baseline: string;
|
|
103
|
+
runtimeTreeDigest: string | null;
|
|
104
|
+
surfaces: PlanSurface[];
|
|
105
|
+
};
|
|
106
|
+
requiredEvidence: EvidenceRequirement[];
|
|
107
|
+
recommendedEvidence: EvidenceRequirement[];
|
|
108
|
+
explicitlyNotRequired: NotRequiredEvidence[];
|
|
109
|
+
undeterminedEvidence: UndeterminedEvidence[];
|
|
110
|
+
escalations: EscalationCondition[];
|
|
111
|
+
rationale: PlannerDecision[];
|
|
112
|
+
facts: PlannerFact[];
|
|
113
|
+
signals: SignalClassification[];
|
|
114
|
+
unaffectedClaims: {
|
|
115
|
+
id: string;
|
|
116
|
+
reason: string;
|
|
117
|
+
}[];
|
|
118
|
+
residualUncertainty: Uncertainty[];
|
|
119
|
+
policy: {
|
|
120
|
+
id: string;
|
|
121
|
+
version: string;
|
|
122
|
+
digest: string;
|
|
123
|
+
};
|
|
124
|
+
inputDigest: string;
|
|
125
|
+
planDigest: string;
|
|
126
|
+
}
|
|
127
|
+
export interface PlanAssuranceInput {
|
|
128
|
+
impact: z.input<typeof ChangeImpactSchema>;
|
|
129
|
+
claims?: z.input<typeof AssuranceClaimSchema>[];
|
|
130
|
+
signals?: z.input<typeof ProofSignalSchema>[];
|
|
131
|
+
policy?: AssurancePolicy;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Decide which evidence is proportionate for a change. Pure and deterministic: no clock, no
|
|
135
|
+
* randomness, no I/O. The plan states requirements; it never claims that evidence exists.
|
|
136
|
+
*/
|
|
137
|
+
export declare function planAssurance(input: PlanAssuranceInput): AssurancePlan;
|
|
138
|
+
/** Evidence about the product, or a failure that may still be about the change. */
|
|
139
|
+
export declare function isUnresolvedSignal(classification: Pick<SignalClassification, "classification" | "exercises">): boolean;
|
|
140
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/proof-planner/plan.ts"],"names":[],"mappings":"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"}
|