@research-engineering/agentic-proofkit 0.1.136

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 (30) hide show
  1. package/ADOPTION.md +198 -0
  2. package/AGENTS.md +160 -0
  3. package/BACKLOG.md +217 -0
  4. package/CONTRIBUTING.md +70 -0
  5. package/LICENSE +21 -0
  6. package/NON_CLAIMS.md +45 -0
  7. package/README.md +50 -0
  8. package/SECURITY.md +52 -0
  9. package/dist/agentic-proofkit +36 -0
  10. package/dist/platform/darwin-arm64/agentic-proofkit +0 -0
  11. package/dist/platform/darwin-x64/agentic-proofkit +0 -0
  12. package/dist/platform/linux-arm64/agentic-proofkit +0 -0
  13. package/dist/platform/linux-x64/agentic-proofkit +0 -0
  14. package/docs/proofkit-contract-map.md +148 -0
  15. package/docs/release-process.md +228 -0
  16. package/docs/specs/proofkit-consumer-infra-retirement/overview.md +62 -0
  17. package/docs/specs/proofkit-consumer-infra-retirement/requirements.v1.json +283 -0
  18. package/docs/specs/proofkit-package-boundary/overview.md +43 -0
  19. package/docs/specs/proofkit-package-boundary/requirements.v1.json +176 -0
  20. package/docs/specs/proofkit-receipt-authority/overview.md +35 -0
  21. package/docs/specs/proofkit-receipt-authority/requirements.v1.json +121 -0
  22. package/docs/specs/proofkit-spec-proof-core/overview.md +98 -0
  23. package/docs/specs/proofkit-spec-proof-core/requirements.v1.json +448 -0
  24. package/docs/specs/proofkit-supply-chain-quality/overview.md +95 -0
  25. package/docs/specs/proofkit-supply-chain-quality/requirements.v1.json +260 -0
  26. package/package.json +71 -0
  27. package/proofkit/cli-contract.v1.json +1601 -0
  28. package/proofkit/receipt-producer-policy.json +49 -0
  29. package/proofkit/requirement-bindings.json +1914 -0
  30. package/proofkit/witness-plan.json +1226 -0
@@ -0,0 +1,98 @@
1
+ # Proofkit Spec-Proof Core Spec
2
+
3
+ This spec owns Proofkit's reusable spec-to-proof primitives: requirement source
4
+ admission, requirement proof bindings, witness planning, selective proof
5
+ planning, selective evidence admission, rendered proof views, and bounded agent
6
+ envelopes.
7
+
8
+ It is intentionally infrastructure-only. Consumers provide requirement
9
+ sentences, proof bindings, changed-path facts, command policy, native witnesses,
10
+ execution receipts, and merge policy.
11
+
12
+ ## Requirements
13
+
14
+ - `REQ-PROOFKIT-SPEC-001`: requirement source admission validates structured
15
+ `REQ-*` records and source-package shape without owning requirement meaning
16
+ or scanning overview prose as authority.
17
+ - `REQ-PROOFKIT-SPEC-002`: requirement proof binding reports validate
18
+ caller-owned requirement-to-witness mappings, require compact scenarios to be
19
+ admitted `surface_id::stable_anchor` identities, require compact witness
20
+ selectors to use `repo/path::stable_anchor` identities, admit caller-owned
21
+ source-set fragments and selected-source resolver projections, and derive
22
+ typed compact proof contract projections for surfaces, scenarios, witnesses,
23
+ commands, environment classes, conformance facts, and falsification routes
24
+ without executing witnesses or deciding proof freshness.
25
+ - `REQ-PROOFKIT-SPEC-003`: witness planning accepts caller-owned structured
26
+ command metadata, scheduler constraints, and environment classes without
27
+ executing commands or selecting repository policy.
28
+ - `REQ-PROOFKIT-SPEC-004`: selective planning and selective evidence reports
29
+ keep changed-path facts, planned commands, receipts, evidence class,
30
+ producer-admission state, and obligation candidates explicit, keep merge
31
+ approval consumer-owned, and fail closed for unknown or unmatched proof
32
+ inputs.
33
+ - `REQ-PROOFKIT-SPEC-005`: rendered proof views and agent envelopes remain
34
+ bounded, derived presentations over structured source and never become
35
+ canonical proof or requirement authority.
36
+ - `REQ-PROOFKIT-SPEC-006`: test evidence inventory, proof-binding-derived
37
+ inventory projections, normalized inventory projections, coverage-view input
38
+ composition, and requirement coverage views classify or assemble
39
+ caller-owned test-to-requirement, command, witness, owner-invariant,
40
+ quality-finding, and declared-surface routes, preserve source-set entry
41
+ provenance, fail closed on structured selector/sourcePath drift, command-ref
42
+ collisions, missing requirement owners, scope widening, fabricated normalized
43
+ inventory, nonsemantic command evidence, and declared dead zones in
44
+ selected-owner or full-repository scopes, and do not treat proof routes,
45
+ nonsemantic command evidence, normalized projections, composed inputs, or
46
+ rendered views as semantic test coverage.
47
+ - `REQ-PROOFKIT-SPEC-007`: caller-owned inputs are admitted into canonical
48
+ immutable records before any proof, policy, route, rendering, or report
49
+ decision consumes them.
50
+ - `REQ-PROOFKIT-SPEC-008`: requirement spec tree admission validates explicit
51
+ caller-owned spec hierarchy, source-reference modes, digest facts, overlay
52
+ refs, deterministic output, and tree topology without scanning repositories,
53
+ reading sources, rendering views, or owning requirement/proof semantics.
54
+ - `REQ-PROOFKIT-SPEC-009`: requirement spec tree views render admitted
55
+ caller-owned hierarchy through shared safe browser document fragments,
56
+ deterministic CLI JSON, Markdown, HTML, explicit output paths, and loopback
57
+ browser serving without accepting caller-owned raw HTML or making rendered
58
+ output authoritative.
59
+ - `REQ-PROOFKIT-SPEC-010`: requirement impact input composition converts
60
+ caller-owned base/current requirement sources, single-current-binding compact
61
+ proof contracts, changed-path facts, generated-artifact policy, local
62
+ environment policy, and proof-like path policy into a direct `impact` input
63
+ without scanning repositories, executing witnesses, or becoming a second
64
+ impact evaluator.
65
+ - `REQ-PROOFKIT-SPEC-011`: adoption contract envelope admission validates a
66
+ complete caller-owned aggregate adoption envelope, selects one child route
67
+ through orthogonal CLI flags, and delegates to existing child command
68
+ contracts without becoming a second adoption readiness policy.
69
+ - `REQ-PROOFKIT-SPEC-012`: requirement authoring plans package caller-provided
70
+ design, implementation, PR, code, test, and clarification facts into
71
+ candidate-only requirement updates, delegate structural checks to requirement
72
+ source admission and transition, and keep owner review/materialization outside
73
+ Proofkit.
74
+ - `REQ-PROOFKIT-SPEC-013`: repeated cross-command proof vocabulary has one
75
+ private owner for proof and selective-edge state while command-local and
76
+ caller-owned vocabularies stay outside the shared owner.
77
+ - `REQ-PROOFKIT-SPEC-014`: document lifecycle boundary reports classify
78
+ caller-owned document lifecycle metadata so temporary, historical, generated,
79
+ rendered, router, work-ledger, and durable documents cannot silently retain
80
+ the wrong authority role.
81
+ - `REQ-PROOFKIT-SPEC-015`: spec overview claim reports validate
82
+ caller-provided overview claim extraction facts so durable overview claims
83
+ cite known requirement records and non-durable claims remain non-normative.
84
+ - `REQ-PROOFKIT-SPEC-016`: requirement source transition reports validate
85
+ caller-provided previous and next source snapshots so lifecycle changes are
86
+ monotonic, evidence-backed, package-boundary-stable, and repository-neutral.
87
+
88
+ ## Non-Claims
89
+
90
+ - This spec does not claim consumer repository adoption.
91
+ - This spec does not claim native witness execution.
92
+ - This spec does not authenticate receipt producers or compute proof freshness.
93
+ - This spec does not approve merge, release, registry publication, rollout, or
94
+ production readiness.
95
+ - This spec does not approve document deletion or infer document meaning from
96
+ Markdown prose.
97
+ - This spec does not prove overview-claim extractor completeness.
98
+ - This spec does not discover source diffs or approve requirement deletion.
@@ -0,0 +1,448 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "sourceId": "proofkit.spec-proof-core.requirements",
4
+ "specPackagePath": "docs/specs/proofkit-spec-proof-core",
5
+ "overviewPath": "docs/specs/proofkit-spec-proof-core/overview.md",
6
+ "requirementsPath": "docs/specs/proofkit-spec-proof-core/requirements.v1.json",
7
+ "requirements": [
8
+ {
9
+ "requirementId": "REQ-PROOFKIT-SPEC-001",
10
+ "ownerId": "proofkit.spec-proof-core",
11
+ "invariant": "Requirement source admission validates structured REQ-* records and source-package shape without owning requirement meaning or scanning overview prose as authority.",
12
+ "claimLevel": "blocking",
13
+ "riskClass": "high",
14
+ "proofBindingRefs": [
15
+ "proofkit/requirement-bindings.json"
16
+ ],
17
+ "nonClaimRefs": [
18
+ "NC-PROOFKIT-SPEC-001"
19
+ ],
20
+ "nonClaims": [
21
+ "This requirement does not claim product requirement meaning, proof freshness, native witness execution, or overview prose authority."
22
+ ],
23
+ "lifecycle": {
24
+ "state": "active",
25
+ "replacementRequirementIds": [],
26
+ "evidenceRefs": []
27
+ },
28
+ "deferral": null,
29
+ "updatePolicy": {
30
+ "reviewOwnerId": "proofkit.spec-proof-core",
31
+ "requiresImpactDeclaration": true,
32
+ "requiresProofBindingReview": true
33
+ }
34
+ },
35
+ {
36
+ "requirementId": "REQ-PROOFKIT-SPEC-002",
37
+ "ownerId": "proofkit.spec-proof-core",
38
+ "invariant": "Requirement proof binding reports validate caller-owned requirement-to-witness mappings, require compact scenarios to use admitted surface_id::stable_anchor identities, require compact witness selectors to use admitted repo/path::stable_anchor identities, admit caller-owned source-set fragments and selected-source resolver projections, and derive typed compact proof contract projections for surfaces, scenarios, witnesses, commands, environment classes, conformance facts, and falsification routes without executing witnesses or deciding proof freshness.",
39
+ "claimLevel": "blocking",
40
+ "riskClass": "high",
41
+ "proofBindingRefs": [
42
+ "proofkit/requirement-bindings.json"
43
+ ],
44
+ "nonClaimRefs": [
45
+ "NC-PROOFKIT-SPEC-002"
46
+ ],
47
+ "nonClaims": [
48
+ "This requirement does not claim native witness pass evidence, proof freshness, receipt authenticity, or merge approval."
49
+ ],
50
+ "lifecycle": {
51
+ "state": "active",
52
+ "replacementRequirementIds": [],
53
+ "evidenceRefs": []
54
+ },
55
+ "deferral": null,
56
+ "updatePolicy": {
57
+ "reviewOwnerId": "proofkit.spec-proof-core",
58
+ "requiresImpactDeclaration": true,
59
+ "requiresProofBindingReview": true
60
+ }
61
+ },
62
+ {
63
+ "requirementId": "REQ-PROOFKIT-SPEC-003",
64
+ "ownerId": "proofkit.spec-proof-core",
65
+ "invariant": "Witness planning accepts caller-owned structured command metadata, scheduler constraints, and environment classes without executing commands or selecting repository policy.",
66
+ "claimLevel": "blocking",
67
+ "riskClass": "high",
68
+ "proofBindingRefs": [
69
+ "proofkit/requirement-bindings.json"
70
+ ],
71
+ "nonClaimRefs": [
72
+ "NC-PROOFKIT-SPEC-003"
73
+ ],
74
+ "nonClaims": [
75
+ "This requirement does not claim command execution, CI scheduling authority, credential approval, or repository-specific command policy."
76
+ ],
77
+ "lifecycle": {
78
+ "state": "active",
79
+ "replacementRequirementIds": [],
80
+ "evidenceRefs": []
81
+ },
82
+ "deferral": null,
83
+ "updatePolicy": {
84
+ "reviewOwnerId": "proofkit.spec-proof-core",
85
+ "requiresImpactDeclaration": true,
86
+ "requiresProofBindingReview": true
87
+ }
88
+ },
89
+ {
90
+ "requirementId": "REQ-PROOFKIT-SPEC-004",
91
+ "ownerId": "proofkit.spec-proof-core",
92
+ "invariant": "Selective planning and selective evidence reports keep changed-path facts, planned commands, receipts, evidence class, producer-admission state, and obligation candidates explicit, keep merge approval consumer-owned, and fail closed for unknown or unmatched proof inputs.",
93
+ "claimLevel": "blocking",
94
+ "riskClass": "high",
95
+ "proofBindingRefs": [
96
+ "proofkit/requirement-bindings.json"
97
+ ],
98
+ "nonClaimRefs": [
99
+ "NC-PROOFKIT-SPEC-004"
100
+ ],
101
+ "nonClaims": [
102
+ "This requirement does not claim changed-path completeness, command success, receipt authenticity, proof freshness, or approval to skip caller-owned gates."
103
+ ],
104
+ "lifecycle": {
105
+ "state": "active",
106
+ "replacementRequirementIds": [],
107
+ "evidenceRefs": []
108
+ },
109
+ "deferral": null,
110
+ "updatePolicy": {
111
+ "reviewOwnerId": "proofkit.spec-proof-core",
112
+ "requiresImpactDeclaration": true,
113
+ "requiresProofBindingReview": true
114
+ }
115
+ },
116
+ {
117
+ "requirementId": "REQ-PROOFKIT-SPEC-005",
118
+ "ownerId": "proofkit.spec-proof-core",
119
+ "invariant": "Rendered proof views and agent envelopes remain bounded, derived presentations over structured source and never become canonical proof or requirement authority.",
120
+ "claimLevel": "blocking",
121
+ "riskClass": "medium",
122
+ "proofBindingRefs": [
123
+ "proofkit/requirement-bindings.json"
124
+ ],
125
+ "nonClaimRefs": [
126
+ "NC-PROOFKIT-SPEC-005"
127
+ ],
128
+ "nonClaims": [
129
+ "This requirement does not claim generated view authority, full graph context emission, proof freshness, or agent edit approval."
130
+ ],
131
+ "lifecycle": {
132
+ "state": "active",
133
+ "replacementRequirementIds": [],
134
+ "evidenceRefs": []
135
+ },
136
+ "deferral": null,
137
+ "updatePolicy": {
138
+ "reviewOwnerId": "proofkit.spec-proof-core",
139
+ "requiresImpactDeclaration": true,
140
+ "requiresProofBindingReview": true
141
+ }
142
+ },
143
+ {
144
+ "requirementId": "REQ-PROOFKIT-SPEC-006",
145
+ "ownerId": "proofkit.spec-proof-core",
146
+ "invariant": "Test evidence inventory, proof-binding-derived inventory projections, normalized inventory projections, coverage-view input composition, and requirement coverage views classify or assemble caller-owned test-to-requirement, command, witness, owner-invariant, quality-finding, and declared-surface routes with stable machine-readable failure and warning classifications while preserving source-set entry provenance, failing closed on structured selector/sourcePath drift, command-ref collisions, missing requirement owners, scope widening, fabricated normalized inventory, nonsemantic command evidence, and declared dead zones in selected-owner or full-repository scopes, and without treating proof routes, nonsemantic command evidence, normalized projections, composed inputs, or rendered views as semantic test coverage.",
147
+ "claimLevel": "blocking",
148
+ "riskClass": "high",
149
+ "proofBindingRefs": [
150
+ "proofkit/requirement-bindings.json"
151
+ ],
152
+ "nonClaimRefs": [
153
+ "NC-PROOFKIT-SPEC-006"
154
+ ],
155
+ "nonClaims": [
156
+ "This requirement does not claim repository scanning, native test execution, proof freshness, receipt authenticity, merge approval, or global coverage completeness outside the caller-provided universe."
157
+ ],
158
+ "lifecycle": {
159
+ "state": "active",
160
+ "replacementRequirementIds": [],
161
+ "evidenceRefs": []
162
+ },
163
+ "deferral": null,
164
+ "updatePolicy": {
165
+ "reviewOwnerId": "proofkit.spec-proof-core",
166
+ "requiresImpactDeclaration": true,
167
+ "requiresProofBindingReview": true
168
+ }
169
+ },
170
+ {
171
+ "requirementId": "REQ-PROOFKIT-SPEC-007",
172
+ "ownerId": "proofkit.spec-proof-core",
173
+ "invariant": "Proofkit commands admit caller-owned inputs into canonical immutable records before proof, policy, route, rendering, or report decisions consume them.",
174
+ "claimLevel": "blocking",
175
+ "riskClass": "high",
176
+ "proofBindingRefs": [
177
+ "proofkit/requirement-bindings.json"
178
+ ],
179
+ "nonClaimRefs": [
180
+ "NC-PROOFKIT-SPEC-007"
181
+ ],
182
+ "nonClaims": [
183
+ "This requirement does not claim consumer repository input authenticity, producer trust, native witness execution, proof freshness, merge approval, or mutable source control outside caller-provided Proofkit inputs."
184
+ ],
185
+ "lifecycle": {
186
+ "state": "active",
187
+ "replacementRequirementIds": [],
188
+ "evidenceRefs": []
189
+ },
190
+ "deferral": null,
191
+ "updatePolicy": {
192
+ "reviewOwnerId": "proofkit.spec-proof-core",
193
+ "requiresImpactDeclaration": true,
194
+ "requiresProofBindingReview": true
195
+ }
196
+ },
197
+ {
198
+ "requirementId": "REQ-PROOFKIT-SPEC-008",
199
+ "ownerId": "proofkit.spec-proof-core",
200
+ "invariant": "Requirement spec tree admission validates caller-owned meta, module, submodule, and capability spec hierarchy, source-reference modes, digest facts, overlay refs, deterministic output, and tree topology without scanning repositories, reading requirement sources, rendering views, or owning requirement/proof semantics.",
201
+ "claimLevel": "blocking",
202
+ "riskClass": "high",
203
+ "proofBindingRefs": [
204
+ "proofkit/requirement-bindings.json"
205
+ ],
206
+ "nonClaimRefs": [
207
+ "NC-PROOFKIT-SPEC-008"
208
+ ],
209
+ "nonClaims": [
210
+ "This requirement does not claim repository scanning, requirement meaning, source freshness computation, rendered output authority, native witness execution, proof adequacy, merge approval, release approval, rollout approval, or production readiness."
211
+ ],
212
+ "lifecycle": {
213
+ "state": "active",
214
+ "replacementRequirementIds": [],
215
+ "evidenceRefs": []
216
+ },
217
+ "deferral": null,
218
+ "updatePolicy": {
219
+ "reviewOwnerId": "proofkit.spec-proof-core",
220
+ "requiresImpactDeclaration": true,
221
+ "requiresProofBindingReview": true
222
+ }
223
+ },
224
+ {
225
+ "requirementId": "REQ-PROOFKIT-SPEC-009",
226
+ "ownerId": "proofkit.spec-proof-core",
227
+ "invariant": "Requirement spec tree views render admitted caller-owned spec-tree hierarchy through shared safe browser document fragments, deterministic CLI JSON, Markdown, HTML, explicit output paths, and loopback browser serving without accepting caller-owned raw HTML or making rendered output authoritative.",
228
+ "claimLevel": "blocking",
229
+ "riskClass": "high",
230
+ "proofBindingRefs": [
231
+ "proofkit/requirement-bindings.json"
232
+ ],
233
+ "nonClaimRefs": [
234
+ "NC-PROOFKIT-SPEC-009"
235
+ ],
236
+ "nonClaims": [
237
+ "This requirement does not claim repository scanning, source freshness computation from files, requirement meaning, native witness execution, committed generated HTML, merge approval, release approval, rollout approval, or production readiness."
238
+ ],
239
+ "lifecycle": {
240
+ "state": "active",
241
+ "replacementRequirementIds": [],
242
+ "evidenceRefs": []
243
+ },
244
+ "deferral": null,
245
+ "updatePolicy": {
246
+ "reviewOwnerId": "proofkit.spec-proof-core",
247
+ "requiresImpactDeclaration": true,
248
+ "requiresProofBindingReview": true
249
+ }
250
+ },
251
+ {
252
+ "requirementId": "REQ-PROOFKIT-SPEC-010",
253
+ "ownerId": "proofkit.spec-proof-core",
254
+ "invariant": "Requirement impact input composition converts caller-owned base and current requirement sources, single-current-binding compact proof contracts, changed-path facts, generated-artifact policy, local environment policy, and proof-like path policy into a direct impact command input while preserving downstream impact semantics and without scanning repositories, executing witnesses, deciding freshness, or becoming a second impact evaluator.",
255
+ "claimLevel": "blocking",
256
+ "riskClass": "high",
257
+ "proofBindingRefs": [
258
+ "proofkit/requirement-bindings.json"
259
+ ],
260
+ "nonClaimRefs": [
261
+ "NC-PROOFKIT-SPEC-010"
262
+ ],
263
+ "nonClaims": [
264
+ "This requirement does not claim changed-path completeness, generated-artifact verifier completeness, native witness execution, proof freshness, receipt authenticity, merge approval, release approval, rollout approval, or production readiness."
265
+ ],
266
+ "lifecycle": {
267
+ "state": "active",
268
+ "replacementRequirementIds": [],
269
+ "evidenceRefs": []
270
+ },
271
+ "deferral": null,
272
+ "updatePolicy": {
273
+ "reviewOwnerId": "proofkit.spec-proof-core",
274
+ "requiresImpactDeclaration": true,
275
+ "requiresProofBindingReview": true
276
+ }
277
+ },
278
+ {
279
+ "requirementId": "REQ-PROOFKIT-SPEC-011",
280
+ "ownerId": "proofkit.spec-proof-core",
281
+ "invariant": "Adoption contract envelope admission validates a complete caller-owned aggregate adoption envelope, selects one child adoption, bootstrap, guidance, workflow, or pilot route through orthogonal CLI flags, and delegates to existing child command contracts without scanning repositories, writing files, executing witnesses, or creating a second adoption readiness policy.",
282
+ "claimLevel": "blocking",
283
+ "riskClass": "high",
284
+ "proofBindingRefs": [
285
+ "proofkit/requirement-bindings.json"
286
+ ],
287
+ "nonClaimRefs": [
288
+ "NC-PROOFKIT-SPEC-011"
289
+ ],
290
+ "nonClaims": [
291
+ "This requirement does not claim consumer file materialization, native witness execution, proof freshness, receipt authenticity, merge approval, release approval, rollout approval, or production readiness."
292
+ ],
293
+ "lifecycle": {
294
+ "state": "active",
295
+ "replacementRequirementIds": [],
296
+ "evidenceRefs": []
297
+ },
298
+ "deferral": null,
299
+ "updatePolicy": {
300
+ "reviewOwnerId": "proofkit.spec-proof-core",
301
+ "requiresImpactDeclaration": true,
302
+ "requiresProofBindingReview": true
303
+ }
304
+ },
305
+ {
306
+ "requirementId": "REQ-PROOFKIT-SPEC-012",
307
+ "ownerId": "proofkit.spec-proof-core",
308
+ "invariant": "Requirement authoring plans admit caller-provided design, implementation, pull request, code, test, and clarification facts into candidate-only requirement updates, delegate candidate source and lifecycle checks to requirement-source admission and transition, and emit owner-review plans without reading repositories, writing files, inferring requirement meaning, or approving promotion.",
309
+ "claimLevel": "blocking",
310
+ "riskClass": "high",
311
+ "proofBindingRefs": [
312
+ "proofkit/requirement-bindings.json"
313
+ ],
314
+ "nonClaimRefs": [
315
+ "NC-PROOFKIT-SPEC-012"
316
+ ],
317
+ "nonClaims": [
318
+ "This requirement does not claim extraction completeness, requirement meaning, file materialization, proof-binding adequacy, native witness execution, proof freshness, merge approval, release approval, rollout approval, or production readiness."
319
+ ],
320
+ "lifecycle": {
321
+ "state": "active",
322
+ "replacementRequirementIds": [],
323
+ "evidenceRefs": []
324
+ },
325
+ "deferral": null,
326
+ "updatePolicy": {
327
+ "reviewOwnerId": "proofkit.spec-proof-core",
328
+ "requiresImpactDeclaration": true,
329
+ "requiresProofBindingReview": true
330
+ }
331
+ },
332
+ {
333
+ "requirementId": "REQ-PROOFKIT-SPEC-013",
334
+ "ownerId": "proofkit.spec-proof-core",
335
+ "invariant": "Repeated cross-command proof vocabulary has one private owner for receipt statuses, merge-satisfaction classes, obligation classes, obligation decision states, selective unknown-edge classes, and selective unknown-edge coverage states, while command-local and caller-owned vocabularies remain outside the shared owner.",
336
+ "claimLevel": "blocking",
337
+ "riskClass": "medium",
338
+ "proofBindingRefs": [
339
+ "proofkit/requirement-bindings.json"
340
+ ],
341
+ "nonClaimRefs": [
342
+ "NC-PROOFKIT-SPEC-013"
343
+ ],
344
+ "nonClaims": [
345
+ "This requirement does not claim public SDK vocabulary, consumer policy ownership, merge approval, receipt freshness, producer authentication, native witness execution, or ownership of one-command local vocabularies."
346
+ ],
347
+ "lifecycle": {
348
+ "state": "active",
349
+ "replacementRequirementIds": [],
350
+ "evidenceRefs": []
351
+ },
352
+ "deferral": null,
353
+ "updatePolicy": {
354
+ "reviewOwnerId": "proofkit.spec-proof-core",
355
+ "requiresImpactDeclaration": true,
356
+ "requiresProofBindingReview": true
357
+ }
358
+ },
359
+ {
360
+ "requirementId": "REQ-PROOFKIT-SPEC-014",
361
+ "ownerId": "proofkit.spec-proof-core",
362
+ "invariant": "Document lifecycle boundary reports validate caller-owned lifecycle metadata so active PR-local temporary documents, retained temporary documents, archived documents, generated lookup documents, rendered views, primary routers, work ledgers, and current durable documents keep the admitted authority role, routing role, source refs, freshness refs, forbidden payload boundaries, and non-claims for their lifecycle state without reading Markdown, approving deletion, proving generated freshness, or deciding document meaning.",
363
+ "claimLevel": "blocking",
364
+ "riskClass": "medium",
365
+ "proofBindingRefs": [
366
+ "proofkit/requirement-bindings.json"
367
+ ],
368
+ "nonClaimRefs": [
369
+ "NC-PROOFKIT-SPEC-014"
370
+ ],
371
+ "nonClaims": [
372
+ "This requirement does not claim Markdown semantic extraction, generated artifact freshness, document deletion approval, merge approval, release approval, rollout approval, or production readiness."
373
+ ],
374
+ "lifecycle": {
375
+ "state": "active",
376
+ "replacementRequirementIds": [],
377
+ "evidenceRefs": []
378
+ },
379
+ "deferral": null,
380
+ "updatePolicy": {
381
+ "reviewOwnerId": "proofkit.spec-proof-core",
382
+ "requiresImpactDeclaration": true,
383
+ "requiresProofBindingReview": true
384
+ }
385
+ },
386
+ {
387
+ "requirementId": "REQ-PROOFKIT-SPEC-015",
388
+ "ownerId": "proofkit.spec-proof-core",
389
+ "invariant": "Spec overview claim reports validate caller-provided overview claim extraction facts so overviewPath and requirementsPath match the spec package, durable overview claims cite at least one known requirement id, non-durable overview claims carry no requirement citations, and extraction refs, line digests, detected markers, rationale, and non-claims are explicit without reading Markdown, proving extractor completeness, validating requirement source records, deciding semantic support, or approving merge.",
390
+ "claimLevel": "blocking",
391
+ "riskClass": "medium",
392
+ "proofBindingRefs": [
393
+ "proofkit/requirement-bindings.json"
394
+ ],
395
+ "nonClaimRefs": [
396
+ "NC-PROOFKIT-SPEC-015"
397
+ ],
398
+ "nonClaims": [
399
+ "This requirement does not claim Markdown reading, claim extractor completeness, requirement source validity, semantic support between overview prose and cited requirements, merge approval, release approval, rollout approval, or production readiness."
400
+ ],
401
+ "lifecycle": {
402
+ "state": "active",
403
+ "replacementRequirementIds": [],
404
+ "evidenceRefs": []
405
+ },
406
+ "deferral": null,
407
+ "updatePolicy": {
408
+ "reviewOwnerId": "proofkit.spec-proof-core",
409
+ "requiresImpactDeclaration": true,
410
+ "requiresProofBindingReview": true
411
+ }
412
+ },
413
+ {
414
+ "requirementId": "REQ-PROOFKIT-SPEC-016",
415
+ "ownerId": "proofkit.spec-proof-core",
416
+ "invariant": "Requirement source transition reports validate caller-provided previous and next requirement source snapshots so both snapshots pass requirement source admission, both snapshots describe the same sourceId, specPackagePath, overviewPath, and requirementsPath, previous durable requirement records remain present, new requirements start active, terminal removed or superseded states and terminal superseded replacement sets do not change, deprecation, removal, supersession, and reactivation carry new lifecycle evidence, replacement targets are active in the next admitted source, and prior lifecycle evidence and replacement refs are preserved without discovering diffs, proving replacement semantic equivalence, executing witnesses, computing freshness, approving deletion, or approving merge.",
417
+ "claimLevel": "blocking",
418
+ "riskClass": "medium",
419
+ "proofBindingRefs": [
420
+ "proofkit/requirement-bindings.json"
421
+ ],
422
+ "nonClaimRefs": [
423
+ "NC-PROOFKIT-SPEC-016"
424
+ ],
425
+ "nonClaims": [
426
+ "This requirement does not claim git diff discovery, replacement semantic equivalence, native witness execution, receipt freshness, requirement deletion approval, merge approval, release approval, rollout approval, or production readiness."
427
+ ],
428
+ "lifecycle": {
429
+ "state": "active",
430
+ "replacementRequirementIds": [],
431
+ "evidenceRefs": []
432
+ },
433
+ "deferral": null,
434
+ "updatePolicy": {
435
+ "reviewOwnerId": "proofkit.spec-proof-core",
436
+ "requiresImpactDeclaration": true,
437
+ "requiresProofBindingReview": true
438
+ }
439
+ }
440
+ ],
441
+ "nonClaims": [
442
+ "Consumers still own requirement meaning, command policy, native witness execution, receipts, CI admission, and rollout decisions.",
443
+ "Proofkit spec-proof core requirements describe reusable infrastructure primitives only.",
444
+ "Proofkit spec-proof core requirements do not approve document deletion or infer document meaning from Markdown prose.",
445
+ "Proofkit spec-proof core requirements do not discover source diffs or approve requirement deletion.",
446
+ "Proofkit spec-proof core requirements do not prove overview-claim extractor completeness."
447
+ ]
448
+ }
@@ -0,0 +1,95 @@
1
+ # Proofkit Supply-Chain And Quality Spec
2
+
3
+ This spec owns Proofkit's reusable supply-chain, release-provenance, CLI
4
+ contract, property-test, performance-evidence, security-signal, and coverage
5
+ metrics requirements.
6
+
7
+ It is intentionally evidence-focused. Native tests, release workflows, advisory
8
+ security workflows, and generated evidence files are distinct proof classes.
9
+ No single green check proves release readiness, public-source provenance,
10
+ vulnerability absence, or consumer rollout safety by itself.
11
+
12
+ ## Requirements
13
+
14
+ - `REQ-PROOFKIT-QUALITY-001`: release artifacts carry deterministic digest
15
+ inventory and optional GitHub artifact attestations without claiming
16
+ public-source provenance before a public-source tag release exists.
17
+ - `REQ-PROOFKIT-QUALITY-002`: release evidence includes a deterministic SBOM
18
+ for package, wheel, binary, and Go module inventory without claiming
19
+ vulnerability absence or license approval.
20
+ - `REQ-PROOFKIT-QUALITY-003`: pure parser and canonicalization boundaries have
21
+ fuzz/property tests that prove no-panic and round-trip stability without
22
+ fuzzing side-effecting CLI or filesystem flows.
23
+ - `REQ-PROOFKIT-QUALITY-004`: public CLI ABI has a small golden corpus and
24
+ canonical ABI hash covering command topology, exit code, stdout/stderr
25
+ channel discipline, JSON parseability, stable public diagnostics, and
26
+ descriptor/contract/help parity without making private descriptors public API.
27
+ - `REQ-PROOFKIT-QUALITY-005`: CodeQL workflow source is admitted as an
28
+ independent semantic security analysis signal for Go source without replacing
29
+ native Go static gates.
30
+ - `REQ-PROOFKIT-QUALITY-006`: OSV workflow source is admitted as an advisory
31
+ multi-ecosystem dependency signal without replacing `govulncheck`
32
+ reachable-code evidence.
33
+ - `REQ-PROOFKIT-QUALITY-007`: Scorecard workflow source is admitted as an
34
+ advisory repository hygiene signal without claiming branch protection or
35
+ provider settings that the repository cannot prove from source.
36
+ - `REQ-PROOFKIT-QUALITY-008`: GitHub Actions workflow syntax and expression
37
+ semantics are checked by actionlint in the local package gate.
38
+ - `REQ-PROOFKIT-QUALITY-009`: performance-sensitive parser and serializer
39
+ paths expose benchmark entrypoints without making wall-clock budgets a
40
+ required PR gate before stable baselines exist.
41
+ - `REQ-PROOFKIT-QUALITY-010`: coverage metrics report requirement, binding,
42
+ witness, CLI inventory linkage, and descriptor-owned command semantic-route
43
+ coverage from admitted test-evidence-inventory rows, failing closed on
44
+ explicit requirement/proof linkage dead zones, failed command-route
45
+ inventory admission, command semantic routes without owner-declared proof
46
+ identities, route-index-derived semantic proof identities, direct app
47
+ semantic routes outside the command-scoped app test, package-level semantic
48
+ routes outside the descriptor-owned command package, and missing matching
49
+ semantic command evidence without claiming line coverage or exhaustive test
50
+ semantic completeness.
51
+ - `REQ-PROOFKIT-QUALITY-011`: CI separates the OS-independent full
52
+ source/package gate from macOS platform smoke so parallel runners do not
53
+ duplicate proof classes while preserving platform execution evidence.
54
+ - `REQ-PROOFKIT-QUALITY-012`: release and adoption channel identifiers use one
55
+ canonical authority vocabulary that separates durable authority channels from
56
+ display labels, publisher environments, statuses, and candidate evidence.
57
+ - `REQ-PROOFKIT-QUALITY-013`: self-hosting workflow package-gate evidence is
58
+ checked by a typed workflow oracle instead of text search, proving the
59
+ package gate is reachable, exact, advisory, success-gated for always-running
60
+ downstream jobs and required evidence-publication steps, and ordered before
61
+ evidence publication.
62
+ - `REQ-PROOFKIT-QUALITY-014`: release authority consumers compare downstream
63
+ policy against the admitted typed release-authority projection and admitted
64
+ report digest instead of rereading caller-owned raw `releaseAuthorityInput`
65
+ fields after validation.
66
+ - `REQ-PROOFKIT-QUALITY-015`: the package gate includes an admitted release
67
+ closeout completion-criteria report so unit tests alone cannot satisfy
68
+ release closeout.
69
+ - `REQ-PROOFKIT-QUALITY-016`: release platform targets use one private owner
70
+ that projects platform suffixes, Go build targets, npm OS/CPU metadata,
71
+ package tar entries, Python wheel tags, PyPI candidate completeness, and
72
+ SBOM binary subjects without becoming public API.
73
+ - `REQ-PROOFKIT-QUALITY-017`: report-visible secret-shaped JSON traversal
74
+ uses one private kernel owner for deterministic paths and finding kinds while
75
+ command packages only map findings to their local report policy.
76
+ - `REQ-PROOFKIT-QUALITY-018`: release metadata retains a Trusted Publisher
77
+ identity tuple with the exact version-tag workflow ref for workflow-published
78
+ npm and PyPI channels and release closeout rejects publication claims without
79
+ that tuple.
80
+ - `REQ-PROOFKIT-QUALITY-019`: installed package smoke proof verifies one
81
+ successful JSON report command and one failed-report command from the
82
+ package-managed binary, including report identity, state, exit code, stdout,
83
+ stderr discipline, and exact explicit-input counts despite an unlisted
84
+ poison file in the consumer working directory.
85
+
86
+ ## Non-Claims
87
+
88
+ - This spec does not claim public-source provenance until a public-source tag
89
+ release records admitted attestation evidence.
90
+ - This spec does not claim absence of vulnerabilities, license approval,
91
+ branch-protection enforcement, consumer adoption, merge approval, release
92
+ approval, rollout approval, or production readiness.
93
+ - This spec does not make advisory security scans substitute for native tests,
94
+ parser fuzz/property tests, CLI ABI tests, release manifest generation, or
95
+ registry identity evidence.