@research-engineering/agentic-proofkit 0.7.0 → 0.8.0

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.
@@ -40,7 +40,7 @@ owner boundaries. It is not a second command-family inventory.
40
40
  | Family | Main commands | Caller provides | Proofkit owns | Consumer owns | Output authority |
41
41
  |---|---|---|---|---|---|
42
42
  | Agent workflow planning | `change-workflow-plan`, `native-evidence-guidance` | explicit checkpoint, completed stage ids, bounded context refs, governing authority ref, and required context ref ids | optional built-in `proofkit.reviewed-change.v1` checkpoint relation, reference-closed next-stage context, deterministic agent prompts, bounded text/JSON/envelope projections, and repository-neutral native-evidence guidance with closed applicability classes | custom workflow topology, repository state discovery, stage execution, native witness semantics, evidence collection, review conclusions, merge, release, deployment, and rollout authority | next-action plan, terminal workflow report, bounded agent envelope, or guidance catalog |
43
- | Adoption and scaffolding | `adopt plan`, `repository-inventory`, `adoption-contract-envelope`, `adoption-workflow-plan`, `adoption-checklist`, `adoption-doctor`, `gradual-adoption`, `gradual-adoption-bootstrap`, `gradual-adoption-guidance`, `capability-map-admission`, `pilot-admission`, `scaffold-profile-plan`, `scaffold-project-structure`, `stack-preset` | explicit repository root, explicit fresh/code-baseline/audit-from-code intent, optional stack hint, aggregate adoption contract envelope, checklist facts, target paths, owner routes, caller-extracted stale authority vocabulary facts, explicit pre-spec capability observations, and pilot records | bounded fixed-catalog root inventory, candidate-only front-door tasks, aggregate contract-envelope admission, deterministic starter plans, checklist/report admission, bounded guidance envelopes, dry-run manifests, pre-spec trust-mode admission, adoption gap and stale-authority classification, and pilot shape admission | stack selection, arbitrary source inspection, final files, final requirements, rollout policy, text extraction, code observation extraction, and pilot truth | inventory, candidate-only plan, selected child output, report, seed packet, or agent envelope |
43
+ | Adoption and scaffolding | `adopt plan`, `adopt materialize plan`, `adopt materialize apply`, `adopt materialize recover`, `repository-inventory`, `adoption-contract-envelope`, `adoption-workflow-plan`, `adoption-checklist`, `adoption-doctor`, `gradual-adoption`, `gradual-adoption-bootstrap`, `gradual-adoption-guidance`, `capability-map-admission`, `pilot-admission`, `scaffold-profile-plan`, `scaffold-project-structure`, `stack-preset` | explicit repository root, explicit fresh/code-baseline/audit-from-code intent, optional stack hint, owner-reviewed candidate packet, expected transaction and desired-state identities, recovery action, aggregate adoption contract envelope, checklist facts, target paths, owner routes, caller-extracted stale authority vocabulary facts, explicit pre-spec capability observations, and pilot records | bounded fixed-catalog root inventory, candidate-only front-door tasks, owner-closed read-only materialization plans, confined transactional apply and recovery receipts, aggregate contract-envelope admission, deterministic starter plans, checklist/report admission, bounded guidance envelopes, dry-run manifests, pre-spec trust-mode admission, adoption gap and stale-authority classification, and pilot shape admission | stack selection, arbitrary source inspection, candidate review, final requirement meaning, proof adequacy, rollout policy, text extraction, code observation extraction, and pilot truth | inventory, candidate-only plan, transaction-bound materialization plan or receipt, selected child output, report, seed packet, or agent envelope |
44
44
  | Requirement source | `capability-map-admission`, `requirement-authoring-plan`, `requirement-source-admission`, `requirement-source-transition`, `spec-overview-claims`, `requirement-spec-tree`, `requirement-spec-tree-view`, `requirement-source-view`, `requirement-browser-server` | `requirements.v1.json`, caller-owned capability maps, caller-owned authoring facts, overview claim extraction, explicit spec hierarchy, view options | candidate seed admission, candidate-only authoring packets, source-shape admission, lifecycle checks, explicit tree topology/source-ref admission, shared safe renderer fragments, presentation-only views | requirement meaning, extraction completeness, Markdown extraction completeness, hierarchy ownership, proof adequacy, file materialization | capability map report, authoring packet, source report, spec-tree report, rendered view, or browser presentation |
45
45
  | Requirement proof binding | `requirement-bindings`, `binding-partition`, `proof-slice`, `evidence-graph`, `requirement-proof-resolver`, `requirement-proof-source-set`, `requirement-proof-view`, `spec-proof-bundle-admission` | requirement records, bindings, witness commands, source-set facts, receipt reports, partition policy | graph validation, binding partition projection, compact slices, declaration-only compact route projection with full binding identity and role-qualified witness routes, resolver projection, bundle linkage checks | selector resolution, oracle quality, witness execution, mutation adequacy, finding completeness, proof freshness, trust, assurance, merge policy | proof report, partition report, slice, declaration lookup graph, or view |
46
46
  | Test inventory and coverage | `test-evidence-inventory`, `test-evidence-inventory --projection discovery-draft`, `test-evidence-inventory --normalized-inventory`, `requirement-coverage-input-compose`, `requirement-coverage-view`, `requirement-browser-server --view coverage` | caller-owned direct or source-set test inventory, caller-owned explicit test discovery facts, declared quality findings, requirement source, proof binding or compact proof contract, coverage universe, optional owner-invariant registry, aggregate coverage compose input | strict inventory/source-set admission, candidate-only discovery draft projection, fail-closed normalized inventory projection, deterministic coverage-view input composition from explicit facts, missing declared assertion-signal and declared-quality classification, bounded agent action guidance, requirement/test/command/owner-invariant joins, nonsemantic command-evidence classification, stable coverage failure/warning classifications, presentation-only coverage view | inventory completeness, oracle quality, test quality, test discovery extraction, native test execution, receipt freshness, producer trust, merge policy | candidate inventory guidance, inventory report, normalized inventory data product, coverage-view input, coverage view, or browser presentation |
@@ -132,6 +132,7 @@ Semantic context routes are `requirement-context-compose`,
132
132
  | An agent needs a bounded, deterministic stage transition for an engineering change. | `change-workflow-plan` selects the optional built-in `proofkit.reviewed-change.v1` profile; use `--agent-envelope` for the compact work packet and `native-evidence-guidance` when the consuming repository has not yet materialized repository-specific evidence instructions. | Supply only explicit current checkpoint, completed stages, and admitted context references. Apply conditional guidance slots only when their applicability class matches a declared consumer mechanism. Stop before treating the profile, plan, or guidance as repository policy or as proof that a stage ran, evidence exists, review passed, or merge/release is authorized. |
133
133
  | No admitted spec/profile exists and the caller has explicit capability observations. | `capability-map-admission`; use `trustMode: "code_baseline"` only when maintainers intentionally freeze current code, otherwise use `trustMode: "audit_from_code"`. | Stop before treating seeds as stable requirements. The consumer owns observation extraction, materialization, requirement meaning, and proof adequacy. |
134
134
  | No admitted spec/profile exists and no capability observations exist. | Start with `adopt plan --mode fresh --repo-root <caller-selected-root>`; use `scaffold-project-structure`, `adoption-workflow-plan`, or `stack-preset` only as later specialist routes when an owner has selected them. | Treat front-door tasks as candidate-only. Stop before writing files; the consumer owns materialization, overwrite policy, and final requirement text. |
135
+ | Owner-reviewed candidate requirement sources, proof bindings, and test inventory are ready for repository materialization. | Use command ID `adopt-materialize-plan` through route `adopt materialize plan --input <candidate-packet> --repo-root <caller-selected-root>`, review the exact transaction and desired-state identities, then use command ID `adopt-materialize-apply` through route `adopt materialize apply` with both expected identities. Use `adopt materialize recover` only for the exact observed transaction and state-compatible `resume` or `rollback` action. | Stop on stale state, unknown ownership, path-role collision, pending transaction, identity mismatch, or recovery-required output. A plan or receipt does not prove requirement meaning, witness truth, proof adequacy, merge approval, rollout, or production readiness. |
135
136
  | Candidate boundary is uncertain. | `adoption-doctor` or `gradual-adoption-guidance --agent-envelope` | Escalate to owner review when the boundary is advisory, ambiguous, or missing native witnesses. |
136
137
  | Temporary external design, implementation-plan, PR, code, or test observations may contain durable requirements. | `requirement-authoring-plan` | Treat output as candidate-only; stop before writing `requirements.v1.json`, retaining temporary documents, or claiming requirement meaning. |
137
138
  | Requirement records exist. | `requirement-source-admission`; use `requirement-source-transition` for lifecycle changes. | Escalate when blocking requirements lack proof routes or lifecycle replacement ids are incomplete. |
@@ -190,6 +190,16 @@ execution receipts, and merge policy.
190
190
  - `REQ-PROOFKIT-SPEC-031`: the adoption version edge binds exact ABI, command,
191
191
  contract, generated-artifact, and release-change inventories while proving
192
192
  that the retired `init` route has no remaining public owner.
193
+ - `REQ-PROOFKIT-SPEC-032`: adoption materialization admits candidate artifacts
194
+ through their existing owners, proves cross-record closure, and binds a
195
+ read-only plan plus apply and recovery receipts to complete state identities.
196
+ - `REQ-PROOFKIT-SPEC-033`: repository transactions confine bounded immutable
197
+ plans, private journals, atomic target replacement, exact rollback, and
198
+ action-stable replay recovery without claiming repository-wide atomicity.
199
+ - `REQ-PROOFKIT-SPEC-034`: the pre-materialization-to-transactional-
200
+ materialization public version edge binds all three transactional
201
+ materialization routes and their exact public contracts to a compatible
202
+ release record without reinterpreting the frozen prior edge.
193
203
 
194
204
  ## Non-Claims
195
205
 
@@ -650,7 +650,7 @@
650
650
  {
651
651
  "requirementId": "REQ-PROOFKIT-SPEC-031",
652
652
  "ownerId": "proofkit.spec-proof-core",
653
- "invariant": "The adoption-front-door public version edge binds the exact previous and current public ABI digests, the exact removal of init, the exact addition of adopt plan and repository-inventory, one explicit selection policy covering every command whose declared input-contract identifier changed while leaving source-bound digest churn to the enclosing ABI digests, the live current input-contract identifier and wire schema of every selected command, every changed generated artifact identity, and the ordered breaking and additive change inventories to one digest-bound release change record; the superseded init route has no active descriptor, dispatcher, CLI contract, command family, or package owner.",
653
+ "invariant": "The frozen 0.6.0-to-0.7.0 adoption-front-door public version edge binds the exact previous and released public ABI digests, the exact removal of init, the exact addition of adopt plan and repository-inventory, one explicit selection policy covering every command whose declared input-contract identifier changed while leaving source-bound digest churn to the enclosing ABI digests, the released input-contract identifier and wire schema of every selected command, every changed generated artifact identity, and the ordered breaking and additive change inventories to one digest-bound frozen release change record; the superseded init route has no active descriptor, dispatcher, CLI contract, command family, or package owner, and later releases cannot reinterpret this historical edge through live contract metadata.",
654
654
  "claimLevel": "blocking",
655
655
  "riskClass": "high",
656
656
  "proofBindingRefs": ["proofkit/requirement-bindings.json"],
@@ -659,6 +659,45 @@
659
659
  "lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
660
660
  "deferral": null,
661
661
  "updatePolicy": {"reviewOwnerId": "proofkit.spec-proof-core", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
662
+ },
663
+ {
664
+ "requirementId": "REQ-PROOFKIT-SPEC-032",
665
+ "ownerId": "proofkit.spec-proof-core",
666
+ "invariant": "Adoption materialization fully admits one candidate packet through the existing requirement-source, requirement-binding, test-inventory, repository-inventory, and adoption-plan owners; proves exact cross-record identity and reference closure; derives canonical child-owned bytes plus one routing-only manifest without mirroring child field semantics; and emits a deterministic read-only plan whose transaction and desired-state identities bind the complete admitted before and after states. Apply recomputes that complete plan and requires both expected identities before any mutation, recovery accepts only one observed transaction identity and one state-compatible action, every plan and receipt is closed under its own output admission, and caller review declarations remain declarations rather than requirement, proof, execution, or approval evidence.",
667
+ "claimLevel": "blocking",
668
+ "riskClass": "critical",
669
+ "proofBindingRefs": ["proofkit/requirement-bindings.json"],
670
+ "nonClaimRefs": ["NC-PROOFKIT-SPEC-032"],
671
+ "nonClaims": ["Materialization does not infer requirement meaning, authenticate witness truth or freshness, execute native witnesses, approve merge or release, establish rollout or production readiness, or make its routing manifest a second semantic owner."],
672
+ "lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
673
+ "deferral": null,
674
+ "updatePolicy": {"reviewOwnerId": "proofkit.spec-proof-core", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
675
+ },
676
+ {
677
+ "requirementId": "REQ-PROOFKIT-SPEC-033",
678
+ "ownerId": "proofkit.spec-proof-core",
679
+ "invariant": "The repository-transaction owner confines every effect to one explicit repository root; freezes a bounded canonical execution plan before effects; rejects non-canonical, reserved, symlinked, case-folding, Unicode-folding, and prefix-alias target identities; keeps staged payloads, backups, ownership records, and publish temporaries in one private transaction namespace; records each created directory by exact filesystem identity; and performs each target replacement by same-filesystem atomic rename. A bounded durable journal identifies the exact before-state prefix, applied-target count, and terminal result; apply fails closed on stale state, unknown control records, and cooperative concurrency; rollback removes only transaction-owned artifacts and restores exact bytes and modes; resume and rollback are state-compatible, action-stable, cancellation-aware, and replay-idempotent; terminal receipts preserve the complete observable result until a later valid transaction replaces them. These guarantees cover process interruption at every injected mutation boundary but do not claim filesystem-wide atomic visibility, power-loss durability beyond successful synchronization, protection from arbitrary readers, or safety against a non-cooperative same-user process mutating the private namespace.",
680
+ "claimLevel": "blocking",
681
+ "riskClass": "critical",
682
+ "proofBindingRefs": ["proofkit/requirement-bindings.json"],
683
+ "nonClaimRefs": ["NC-PROOFKIT-SPEC-033"],
684
+ "nonClaims": ["Repository transactions do not provide multi-file atomic visibility to concurrent arbitrary readers, distributed transactions, protection from a hostile same-user process, or stronger power-loss durability than the admitted filesystem synchronization operations."],
685
+ "lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
686
+ "deferral": null,
687
+ "updatePolicy": {"reviewOwnerId": "proofkit.spec-proof-core", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
688
+ },
689
+ {
690
+ "requirementId": "REQ-PROOFKIT-SPEC-034",
691
+ "ownerId": "proofkit.spec-proof-core",
692
+ "invariant": "The 0.7.0-to-0.8.0 public version edge binds the exact previous and current public ABI digests; the exact addition of adopt materialize plan, apply, and recover with their public routes and input/output contract identities and digests; an explicit added-command selection policy; and the complete ordered additive inventory to one digest-bound current release change record. The edge is compatible, contains no breaking changes or migration steps, and does not mutate or reinterpret the frozen 0.6.0-to-0.7.0 edge.",
693
+ "claimLevel": "blocking",
694
+ "riskClass": "high",
695
+ "proofBindingRefs": ["proofkit/requirement-bindings.json"],
696
+ "nonClaimRefs": ["NC-PROOFKIT-SPEC-034"],
697
+ "nonClaims": ["A source-bound version edge does not authenticate registry publication, provider ingestion, consumer adoption, native witness truth, rollout, or production readiness."],
698
+ "lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
699
+ "deferral": null,
700
+ "updatePolicy": {"reviewOwnerId": "proofkit.spec-proof-core", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
662
701
  }
663
702
  ],
664
703
  "nonClaims": [
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@research-engineering/agentic-proofkit",
3
3
  "description": "Reusable proof profile, report, graph, and witness-planning primitives.",
4
- "version": "0.7.0",
4
+ "version": "0.8.0",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "sideEffects": false,
@@ -42,6 +42,406 @@
42
42
  }
43
43
  },
44
44
  "commands": [
45
+ {
46
+ "command": "adopt-materialize-apply",
47
+ "route": [
48
+ "adopt",
49
+ "materialize",
50
+ "apply"
51
+ ],
52
+ "input": "required",
53
+ "stdin": true,
54
+ "inputPointer": true,
55
+ "scopeClass": "explicit_filesystem_mutation",
56
+ "outputModes": [
57
+ "json",
58
+ "text"
59
+ ],
60
+ "allowedFlags": [
61
+ "--color",
62
+ "--expect-desired-state",
63
+ "--expect-transaction",
64
+ "--format",
65
+ "--input",
66
+ "--input-pointer",
67
+ "--repo-root"
68
+ ],
69
+ "requiredFlags": [
70
+ "--expect-desired-state",
71
+ "--expect-transaction",
72
+ "--repo-root"
73
+ ],
74
+ "singleOccurrenceFlags": [
75
+ "--color",
76
+ "--expect-desired-state",
77
+ "--expect-transaction",
78
+ "--format",
79
+ "--input",
80
+ "--input-pointer",
81
+ "--repo-root"
82
+ ],
83
+ "flagChoices": {
84
+ "--color": [
85
+ "auto",
86
+ "never"
87
+ ],
88
+ "--format": [
89
+ "json",
90
+ "text"
91
+ ]
92
+ },
93
+ "flagPresenceRequirements": [
94
+ {
95
+ "flag": "--color",
96
+ "requiredFlagValues": [
97
+ {
98
+ "flag": "--format",
99
+ "value": "text"
100
+ }
101
+ ],
102
+ "requiredFlags": []
103
+ }
104
+ ],
105
+ "inputContract": {
106
+ "contractId": "proofkit.adopt-materialize-apply.input.v1",
107
+ "schemaVersion": 1,
108
+ "rootType": "object",
109
+ "closed": true,
110
+ "rootDefinitionRef": "proofkit.adoption-materialization.apply-input.v1.root-shape",
111
+ "rootDefinitionDigest": "sha256:3dbf760a8f8b0a4093c1dd4edc23367c5ef8027b31c18a01490afb657fcc03ad",
112
+ "nativeSource": {
113
+ "path": "internal/command/adoptionmaterialization",
114
+ "canonicalDigest": "sha256:25fde227d9a26bc6fac85be5963b4f227e5cac06b876b14565a863ff45b40f11",
115
+ "evidenceClass": "source_checkout"
116
+ },
117
+ "nativeAdmissionWitnessSelector": {
118
+ "path": "internal/app/adoption_materialization_command_test.go",
119
+ "test": "TestAdoptionMaterializationCLI",
120
+ "command": "go test ./internal/app -run '^TestAdoptionMaterializationCLI$'",
121
+ "evidenceClass": "source_checkout"
122
+ },
123
+ "compatibilitySummary": [
124
+ "schemaVersion=1",
125
+ "owner-admitted adoption plan, requirement sources, proof bindings, and direct test inventory",
126
+ "root-shape-only definition proofkit.adoption-materialization.apply-input.v1.root-shape; nested fields, types, cardinalities, and cross-record closure remain native-owner claims"
127
+ ],
128
+ "ownerRequirementRefs": [
129
+ "REQ-PROOFKIT-PACKAGE-002",
130
+ "REQ-PROOFKIT-QUALITY-004",
131
+ "REQ-PROOFKIT-SPEC-032",
132
+ "REQ-PROOFKIT-SPEC-033"
133
+ ]
134
+ },
135
+ "outputContract": {
136
+ "contractId": "proofkit.adopt-materialize-apply.output.v1",
137
+ "schemaVersion": 1,
138
+ "rootType": "object",
139
+ "closed": true,
140
+ "rootDefinitionRef": "proofkit.adoption-materialization.apply-output.v1.root-shape",
141
+ "rootDefinitionDigest": "sha256:4b58bd4e89da98ad79c5e6faf32fe58766313117ad2558b602bfed853de0cf7e",
142
+ "nativeSources": [
143
+ {
144
+ "path": "internal/app",
145
+ "canonicalDigest": "sha256:0195a152392ad4cecd99a2d0c147ee8e25a034a32e4f730033766399a030c5c3",
146
+ "evidenceClass": "source_checkout"
147
+ },
148
+ {
149
+ "path": "internal/command/adoptionmaterialization",
150
+ "canonicalDigest": "sha256:25fde227d9a26bc6fac85be5963b4f227e5cac06b876b14565a863ff45b40f11",
151
+ "evidenceClass": "source_checkout"
152
+ },
153
+ {
154
+ "path": "internal/kernel/repositorytransaction",
155
+ "canonicalDigest": "sha256:a0c1d96df99382bd334cd7ddaa3de2d191c5c7f166ece0c720e3791fec87350f",
156
+ "evidenceClass": "source_checkout"
157
+ }
158
+ ],
159
+ "nativeOutputWitnessSelector": {
160
+ "path": "internal/app/adoption_materialization_command_test.go",
161
+ "test": "TestAdoptMaterializeApplyOutputUsesExactRootShape",
162
+ "command": "go test ./internal/app -run '^TestAdoptMaterializeApplyOutputUsesExactRootShape$'",
163
+ "evidenceClass": "source_checkout"
164
+ },
165
+ "compatibilitySummary": [
166
+ "schemaVersion=1",
167
+ "apply receipt binds expected transaction and desired-state identities to the transaction result",
168
+ "JSON receipt and bounded text projection preserve the same operation outcome",
169
+ "root-shape-only definition proofkit.adoption-materialization.apply-output.v1.root-shape; nested fields, types, and cardinalities remain native-owner claims"
170
+ ],
171
+ "ownerRequirementRefs": [
172
+ "REQ-PROOFKIT-PACKAGE-002",
173
+ "REQ-PROOFKIT-QUALITY-004",
174
+ "REQ-PROOFKIT-SPEC-032",
175
+ "REQ-PROOFKIT-SPEC-033"
176
+ ],
177
+ "flagChoices": {
178
+ "--color": [
179
+ "auto",
180
+ "never"
181
+ ],
182
+ "--format": [
183
+ "json",
184
+ "text"
185
+ ]
186
+ }
187
+ }
188
+ },
189
+ {
190
+ "command": "adopt-materialize-plan",
191
+ "route": [
192
+ "adopt",
193
+ "materialize",
194
+ "plan"
195
+ ],
196
+ "input": "required",
197
+ "stdin": true,
198
+ "inputPointer": true,
199
+ "scopeClass": "explicit_filesystem_scan",
200
+ "outputModes": [
201
+ "json",
202
+ "text"
203
+ ],
204
+ "allowedFlags": [
205
+ "--color",
206
+ "--format",
207
+ "--input",
208
+ "--input-pointer",
209
+ "--repo-root"
210
+ ],
211
+ "requiredFlags": [
212
+ "--repo-root"
213
+ ],
214
+ "singleOccurrenceFlags": [
215
+ "--color",
216
+ "--format",
217
+ "--input",
218
+ "--input-pointer",
219
+ "--repo-root"
220
+ ],
221
+ "flagChoices": {
222
+ "--color": [
223
+ "auto",
224
+ "never"
225
+ ],
226
+ "--format": [
227
+ "json",
228
+ "text"
229
+ ]
230
+ },
231
+ "flagPresenceRequirements": [
232
+ {
233
+ "flag": "--color",
234
+ "requiredFlagValues": [
235
+ {
236
+ "flag": "--format",
237
+ "value": "text"
238
+ }
239
+ ],
240
+ "requiredFlags": []
241
+ }
242
+ ],
243
+ "inputContract": {
244
+ "contractId": "proofkit.adopt-materialize-plan.input.v1",
245
+ "schemaVersion": 1,
246
+ "rootType": "object",
247
+ "closed": true,
248
+ "rootDefinitionRef": "proofkit.adoption-materialization.plan-input.v1.root-shape",
249
+ "rootDefinitionDigest": "sha256:c18995fb310dbde102bea231d83ec3756ffdf863199acbc88237471d06278c9e",
250
+ "nativeSource": {
251
+ "path": "internal/command/adoptionmaterialization",
252
+ "canonicalDigest": "sha256:25fde227d9a26bc6fac85be5963b4f227e5cac06b876b14565a863ff45b40f11",
253
+ "evidenceClass": "source_checkout"
254
+ },
255
+ "nativeAdmissionWitnessSelector": {
256
+ "path": "internal/app/adoption_materialization_command_test.go",
257
+ "test": "TestAdoptionMaterializationCLI",
258
+ "command": "go test ./internal/app -run '^TestAdoptionMaterializationCLI$'",
259
+ "evidenceClass": "source_checkout"
260
+ },
261
+ "compatibilitySummary": [
262
+ "schemaVersion=1",
263
+ "owner-admitted adoption plan, requirement sources, proof bindings, and direct test inventory",
264
+ "root-shape-only definition proofkit.adoption-materialization.plan-input.v1.root-shape; nested fields, types, cardinalities, and cross-record closure remain native-owner claims"
265
+ ],
266
+ "ownerRequirementRefs": [
267
+ "REQ-PROOFKIT-PACKAGE-002",
268
+ "REQ-PROOFKIT-QUALITY-004",
269
+ "REQ-PROOFKIT-SPEC-032",
270
+ "REQ-PROOFKIT-SPEC-033"
271
+ ]
272
+ },
273
+ "outputContract": {
274
+ "contractId": "proofkit.adopt-materialize-plan.output.v1",
275
+ "schemaVersion": 1,
276
+ "rootType": "object",
277
+ "closed": true,
278
+ "rootDefinitionRef": "proofkit.adoption-materialization.plan-output.v1.root-shape",
279
+ "rootDefinitionDigest": "sha256:fc0e2d547a5fd54ebebe9d237a48ae15418b32d3d28fa5185aae64a0fba9b255",
280
+ "nativeSources": [
281
+ {
282
+ "path": "internal/app",
283
+ "canonicalDigest": "sha256:0195a152392ad4cecd99a2d0c147ee8e25a034a32e4f730033766399a030c5c3",
284
+ "evidenceClass": "source_checkout"
285
+ },
286
+ {
287
+ "path": "internal/command/adoptionmaterialization",
288
+ "canonicalDigest": "sha256:25fde227d9a26bc6fac85be5963b4f227e5cac06b876b14565a863ff45b40f11",
289
+ "evidenceClass": "source_checkout"
290
+ },
291
+ {
292
+ "path": "internal/kernel/repositorytransaction",
293
+ "canonicalDigest": "sha256:a0c1d96df99382bd334cd7ddaa3de2d191c5c7f166ece0c720e3791fec87350f",
294
+ "evidenceClass": "source_checkout"
295
+ }
296
+ ],
297
+ "nativeOutputWitnessSelector": {
298
+ "path": "internal/app/adoption_materialization_command_test.go",
299
+ "test": "TestAdoptMaterializePlanOutputUsesExactRootShape",
300
+ "command": "go test ./internal/app -run '^TestAdoptMaterializePlanOutputUsesExactRootShape$'",
301
+ "evidenceClass": "source_checkout"
302
+ },
303
+ "compatibilitySummary": [
304
+ "schemaVersion=1",
305
+ "read-only content-bound plan with transaction and desired-state identities",
306
+ "JSON plan and bounded text are derived from one admitted typed plan",
307
+ "root-shape-only definition proofkit.adoption-materialization.plan-output.v1.root-shape; nested fields, types, and cardinalities remain native-owner claims"
308
+ ],
309
+ "ownerRequirementRefs": [
310
+ "REQ-PROOFKIT-PACKAGE-002",
311
+ "REQ-PROOFKIT-QUALITY-004",
312
+ "REQ-PROOFKIT-SPEC-032",
313
+ "REQ-PROOFKIT-SPEC-033"
314
+ ],
315
+ "flagChoices": {
316
+ "--color": [
317
+ "auto",
318
+ "never"
319
+ ],
320
+ "--format": [
321
+ "json",
322
+ "text"
323
+ ]
324
+ }
325
+ }
326
+ },
327
+ {
328
+ "command": "adopt-materialize-recover",
329
+ "route": [
330
+ "adopt",
331
+ "materialize",
332
+ "recover"
333
+ ],
334
+ "input": "none",
335
+ "stdin": false,
336
+ "inputPointer": false,
337
+ "scopeClass": "explicit_filesystem_mutation",
338
+ "outputModes": [
339
+ "json",
340
+ "text"
341
+ ],
342
+ "allowedFlags": [
343
+ "--action",
344
+ "--color",
345
+ "--format",
346
+ "--repo-root",
347
+ "--transaction"
348
+ ],
349
+ "requiredFlags": [
350
+ "--action",
351
+ "--repo-root",
352
+ "--transaction"
353
+ ],
354
+ "singleOccurrenceFlags": [
355
+ "--action",
356
+ "--color",
357
+ "--format",
358
+ "--repo-root",
359
+ "--transaction"
360
+ ],
361
+ "flagChoices": {
362
+ "--action": [
363
+ "resume",
364
+ "rollback"
365
+ ],
366
+ "--color": [
367
+ "auto",
368
+ "never"
369
+ ],
370
+ "--format": [
371
+ "json",
372
+ "text"
373
+ ]
374
+ },
375
+ "flagPresenceRequirements": [
376
+ {
377
+ "flag": "--color",
378
+ "requiredFlagValues": [
379
+ {
380
+ "flag": "--format",
381
+ "value": "text"
382
+ }
383
+ ],
384
+ "requiredFlags": []
385
+ }
386
+ ],
387
+ "outputContract": {
388
+ "contractId": "proofkit.adopt-materialize-recover.output.v1",
389
+ "schemaVersion": 1,
390
+ "rootType": "object",
391
+ "closed": true,
392
+ "rootDefinitionRef": "proofkit.adoption-materialization.recover-output.v1.root-shape",
393
+ "rootDefinitionDigest": "sha256:06129ef857ffb11351535c769f9ca207522a08f3c5bf2da52c6f5fff0b1ac757",
394
+ "nativeSources": [
395
+ {
396
+ "path": "internal/app",
397
+ "canonicalDigest": "sha256:0195a152392ad4cecd99a2d0c147ee8e25a034a32e4f730033766399a030c5c3",
398
+ "evidenceClass": "source_checkout"
399
+ },
400
+ {
401
+ "path": "internal/command/adoptionmaterialization",
402
+ "canonicalDigest": "sha256:25fde227d9a26bc6fac85be5963b4f227e5cac06b876b14565a863ff45b40f11",
403
+ "evidenceClass": "source_checkout"
404
+ },
405
+ {
406
+ "path": "internal/kernel/repositorytransaction",
407
+ "canonicalDigest": "sha256:a0c1d96df99382bd334cd7ddaa3de2d191c5c7f166ece0c720e3791fec87350f",
408
+ "evidenceClass": "source_checkout"
409
+ }
410
+ ],
411
+ "nativeOutputWitnessSelector": {
412
+ "path": "internal/app/adoption_materialization_command_test.go",
413
+ "test": "TestAdoptMaterializeRecoverOutputUsesExactRootShape",
414
+ "command": "go test ./internal/app -run '^TestAdoptMaterializeRecoverOutputUsesExactRootShape$'",
415
+ "evidenceClass": "source_checkout"
416
+ },
417
+ "compatibilitySummary": [
418
+ "schemaVersion=1",
419
+ "resume or rollback receipt binds one exact pending transaction identity to its terminal or retained recovery state",
420
+ "JSON receipt and bounded text projection preserve the same operation outcome",
421
+ "root-shape-only definition proofkit.adoption-materialization.recover-output.v1.root-shape; nested fields, types, and cardinalities remain native-owner claims"
422
+ ],
423
+ "ownerRequirementRefs": [
424
+ "REQ-PROOFKIT-PACKAGE-002",
425
+ "REQ-PROOFKIT-QUALITY-004",
426
+ "REQ-PROOFKIT-SPEC-032",
427
+ "REQ-PROOFKIT-SPEC-033"
428
+ ],
429
+ "flagChoices": {
430
+ "--action": [
431
+ "resume",
432
+ "rollback"
433
+ ],
434
+ "--color": [
435
+ "auto",
436
+ "never"
437
+ ],
438
+ "--format": [
439
+ "json",
440
+ "text"
441
+ ]
442
+ }
443
+ }
444
+ },
45
445
  {
46
446
  "command": "adopt-plan",
47
447
  "route": [
@@ -785,7 +1185,7 @@
785
1185
  "nativeSources": [
786
1186
  {
787
1187
  "path": "internal/app",
788
- "canonicalDigest": "sha256:7f8837c629226c740c41b14ea0c1fc9c03337faeeec5453bd4d2899a8f7b0bf8",
1188
+ "canonicalDigest": "sha256:0195a152392ad4cecd99a2d0c147ee8e25a034a32e4f730033766399a030c5c3",
789
1189
  "evidenceClass": "source_checkout"
790
1190
  },
791
1191
  {
@@ -2563,7 +2963,7 @@
2563
2963
  "nativeSources": [
2564
2964
  {
2565
2965
  "path": "internal/app",
2566
- "canonicalDigest": "sha256:7f8837c629226c740c41b14ea0c1fc9c03337faeeec5453bd4d2899a8f7b0bf8",
2966
+ "canonicalDigest": "sha256:0195a152392ad4cecd99a2d0c147ee8e25a034a32e4f730033766399a030c5c3",
2567
2967
  "evidenceClass": "source_checkout"
2568
2968
  },
2569
2969
  {
@@ -4159,7 +4559,7 @@
4159
4559
  "rootDefinitionDigest": "sha256:f6300d6d0f80f5066fe4079433978132ee2bb1df75e602e59cf3dc37a385d3ce",
4160
4560
  "nativeSource": {
4161
4561
  "path": "internal/command/requirementcoverageinput",
4162
- "canonicalDigest": "sha256:4c10b1cd675af7d7753bb72a44fca1bb9a568bcd4d3733ee1907e6c4e22757f8",
4562
+ "canonicalDigest": "sha256:ca685e4dd96bcd3981443471bcb9ef6f2a74ca2d8c2f9926aba2662bf7876ab4",
4163
4563
  "evidenceClass": "source_checkout"
4164
4564
  },
4165
4565
  "nativeAdmissionWitnessSelector": {
@@ -4207,7 +4607,7 @@
4207
4607
  "rootDefinitionDigest": "sha256:0f264c996a058fb8aff102e42b95a4610d3a584b35687cc870b3d16c9589cfed",
4208
4608
  "nativeSource": {
4209
4609
  "path": "internal/command/requirementcoverageinput",
4210
- "canonicalDigest": "sha256:4c10b1cd675af7d7753bb72a44fca1bb9a568bcd4d3733ee1907e6c4e22757f8",
4610
+ "canonicalDigest": "sha256:ca685e4dd96bcd3981443471bcb9ef6f2a74ca2d8c2f9926aba2662bf7876ab4",
4211
4611
  "evidenceClass": "source_checkout"
4212
4612
  },
4213
4613
  "nativeOutputWitnessSelector": {
@@ -5853,7 +6253,7 @@
5853
6253
  "rootDefinitionDigest": "sha256:3c842174dff5361e7f83166469b832805e05aa314b073c16234b5b64e346281e",
5854
6254
  "nativeSource": {
5855
6255
  "path": "internal/app",
5856
- "canonicalDigest": "sha256:7f8837c629226c740c41b14ea0c1fc9c03337faeeec5453bd4d2899a8f7b0bf8",
6256
+ "canonicalDigest": "sha256:0195a152392ad4cecd99a2d0c147ee8e25a034a32e4f730033766399a030c5c3",
5857
6257
  "evidenceClass": "source_checkout"
5858
6258
  },
5859
6259
  "nativeAdmissionWitnessSelector": {
@@ -5882,7 +6282,7 @@
5882
6282
  "rootDefinitionDigest": "sha256:0ea95e277ebe44cd2de42c29b47c38686ac0b6b390d8965367437b3fe138e209",
5883
6283
  "nativeSource": {
5884
6284
  "path": "internal/app",
5885
- "canonicalDigest": "sha256:7f8837c629226c740c41b14ea0c1fc9c03337faeeec5453bd4d2899a8f7b0bf8",
6285
+ "canonicalDigest": "sha256:0195a152392ad4cecd99a2d0c147ee8e25a034a32e4f730033766399a030c5c3",
5886
6286
  "evidenceClass": "source_checkout"
5887
6287
  },
5888
6288
  "nativeOutputWitnessSelector": {
@@ -6233,7 +6633,7 @@
6233
6633
  },
6234
6634
  {
6235
6635
  "path": "internal/command/testevidenceinventory",
6236
- "canonicalDigest": "sha256:60983b8f25544c7b85e818f202de053fa15557b0de37a7df35aa0d58b58c3888",
6636
+ "canonicalDigest": "sha256:5b0a149b1875f3844459420645c9b2fa86a9d7c933c5edd90292192220fcdc33",
6237
6637
  "evidenceClass": "source_checkout"
6238
6638
  }
6239
6639
  ],
@@ -6330,7 +6730,7 @@
6330
6730
  },
6331
6731
  {
6332
6732
  "path": "internal/command/testevidenceinventory",
6333
- "canonicalDigest": "sha256:60983b8f25544c7b85e818f202de053fa15557b0de37a7df35aa0d58b58c3888",
6733
+ "canonicalDigest": "sha256:5b0a149b1875f3844459420645c9b2fa86a9d7c933c5edd90292192220fcdc33",
6334
6734
  "evidenceClass": "source_checkout"
6335
6735
  }
6336
6736
  ],
@@ -7765,6 +8165,126 @@
7765
8165
  },
7766
8166
  "canonicalDigest": "sha256:90583a47b9bdd605b2d3f24dcb1a5dbb2b4d9da20d7be097da381c9c77229e62"
7767
8167
  },
8168
+ {
8169
+ "definitionId": "proofkit.adoption-materialization.apply-input.v1.root-shape",
8170
+ "schemaVersion": 1,
8171
+ "rootType": "object",
8172
+ "closed": true,
8173
+ "definitionRefs": [],
8174
+ "fieldTree": {
8175
+ "kind": "root_shape_only",
8176
+ "nonClaims": [
8177
+ "Root-shape definitions do not claim nested field shapes, leaf types, cardinalities, or semantic validity.",
8178
+ "Root-shape definitions do not replace direct public-CLI runtime witnesses for variant selection."
8179
+ ],
8180
+ "variants": [
8181
+ {
8182
+ "allowedFields": ["nonClaims", "projectId", "requestId", "requestKind", "requirementProofBinding", "requirementSources", "schemaVersion", "sourcePlan", "testEvidenceInventory"],
8183
+ "requiredFields": ["nonClaims", "projectId", "requestId", "requestKind", "requirementProofBinding", "requirementSources", "schemaVersion", "sourcePlan", "testEvidenceInventory"],
8184
+ "rootKind": "object",
8185
+ "variantId": "01-root",
8186
+ "when": ["default JSON input"]
8187
+ }
8188
+ ]
8189
+ },
8190
+ "canonicalDigest": "sha256:3dbf760a8f8b0a4093c1dd4edc23367c5ef8027b31c18a01490afb657fcc03ad"
8191
+ },
8192
+ {
8193
+ "definitionId": "proofkit.adoption-materialization.apply-output.v1.root-shape",
8194
+ "schemaVersion": 1,
8195
+ "rootType": "object",
8196
+ "closed": true,
8197
+ "definitionRefs": [],
8198
+ "fieldTree": {
8199
+ "kind": "root_shape_only",
8200
+ "nonClaims": [
8201
+ "Root-shape definitions do not claim nested field shapes, leaf types, cardinalities, or semantic validity.",
8202
+ "Root-shape definitions do not replace direct public-CLI runtime witnesses for variant selection."
8203
+ ],
8204
+ "variants": [
8205
+ {
8206
+ "allowedFields": ["expectedDesiredStateId", "expectedTransactionId", "failureClass", "nonClaims", "operation", "receiptId", "receiptKind", "schemaVersion", "state", "transactionResult"],
8207
+ "requiredFields": ["expectedDesiredStateId", "expectedTransactionId", "failureClass", "nonClaims", "operation", "receiptId", "receiptKind", "schemaVersion", "state", "transactionResult"],
8208
+ "rootKind": "object",
8209
+ "variantId": "01-root",
8210
+ "when": ["default JSON mode"]
8211
+ }
8212
+ ]
8213
+ },
8214
+ "canonicalDigest": "sha256:4b58bd4e89da98ad79c5e6faf32fe58766313117ad2558b602bfed853de0cf7e"
8215
+ },
8216
+ {
8217
+ "definitionId": "proofkit.adoption-materialization.plan-input.v1.root-shape",
8218
+ "schemaVersion": 1,
8219
+ "rootType": "object",
8220
+ "closed": true,
8221
+ "definitionRefs": [],
8222
+ "fieldTree": {
8223
+ "kind": "root_shape_only",
8224
+ "nonClaims": [
8225
+ "Root-shape definitions do not claim nested field shapes, leaf types, cardinalities, or semantic validity.",
8226
+ "Root-shape definitions do not replace direct public-CLI runtime witnesses for variant selection."
8227
+ ],
8228
+ "variants": [
8229
+ {
8230
+ "allowedFields": ["nonClaims", "projectId", "requestId", "requestKind", "requirementProofBinding", "requirementSources", "schemaVersion", "sourcePlan", "testEvidenceInventory"],
8231
+ "requiredFields": ["nonClaims", "projectId", "requestId", "requestKind", "requirementProofBinding", "requirementSources", "schemaVersion", "sourcePlan", "testEvidenceInventory"],
8232
+ "rootKind": "object",
8233
+ "variantId": "01-root",
8234
+ "when": ["default JSON input"]
8235
+ }
8236
+ ]
8237
+ },
8238
+ "canonicalDigest": "sha256:c18995fb310dbde102bea231d83ec3756ffdf863199acbc88237471d06278c9e"
8239
+ },
8240
+ {
8241
+ "definitionId": "proofkit.adoption-materialization.plan-output.v1.root-shape",
8242
+ "schemaVersion": 1,
8243
+ "rootType": "object",
8244
+ "closed": true,
8245
+ "definitionRefs": [],
8246
+ "fieldTree": {
8247
+ "kind": "root_shape_only",
8248
+ "nonClaims": [
8249
+ "Root-shape definitions do not claim nested field shapes, leaf types, cardinalities, or semantic validity.",
8250
+ "Root-shape definitions do not replace direct public-CLI runtime witnesses for variant selection."
8251
+ ],
8252
+ "variants": [
8253
+ {
8254
+ "allowedFields": ["manifest", "nonClaims", "planKind", "projectId", "requestId", "schemaVersion", "sourceIntent", "sourcePlanId", "state", "transaction"],
8255
+ "requiredFields": ["manifest", "nonClaims", "planKind", "projectId", "requestId", "schemaVersion", "sourceIntent", "sourcePlanId", "state", "transaction"],
8256
+ "rootKind": "object",
8257
+ "variantId": "01-root",
8258
+ "when": ["default JSON mode"]
8259
+ }
8260
+ ]
8261
+ },
8262
+ "canonicalDigest": "sha256:fc0e2d547a5fd54ebebe9d237a48ae15418b32d3d28fa5185aae64a0fba9b255"
8263
+ },
8264
+ {
8265
+ "definitionId": "proofkit.adoption-materialization.recover-output.v1.root-shape",
8266
+ "schemaVersion": 1,
8267
+ "rootType": "object",
8268
+ "closed": true,
8269
+ "definitionRefs": [],
8270
+ "fieldTree": {
8271
+ "kind": "root_shape_only",
8272
+ "nonClaims": [
8273
+ "Root-shape definitions do not claim nested field shapes, leaf types, cardinalities, or semantic validity.",
8274
+ "Root-shape definitions do not replace direct public-CLI runtime witnesses for variant selection."
8275
+ ],
8276
+ "variants": [
8277
+ {
8278
+ "allowedFields": ["expectedDesiredStateId", "expectedTransactionId", "failureClass", "nonClaims", "operation", "receiptId", "receiptKind", "schemaVersion", "state", "transactionResult"],
8279
+ "requiredFields": ["expectedDesiredStateId", "expectedTransactionId", "failureClass", "nonClaims", "operation", "receiptId", "receiptKind", "schemaVersion", "state", "transactionResult"],
8280
+ "rootKind": "object",
8281
+ "variantId": "01-root",
8282
+ "when": ["default JSON mode"]
8283
+ }
8284
+ ]
8285
+ },
8286
+ "canonicalDigest": "sha256:06129ef857ffb11351535c769f9ca207522a08f3c5bf2da52c6f5fff0b1ac757"
8287
+ },
7768
8288
  {
7769
8289
  "definitionId": "proofkit.adoption-workflow-plan.input.v1.root-shape",
7770
8290
  "schemaVersion": 1,
@@ -17,6 +17,16 @@
17
17
  "pilot-admission"
18
18
  ]
19
19
  },
20
+ {
21
+ "familyId": "adoption-materialization",
22
+ "label": "Adoption materialization",
23
+ "purpose": "Plan, apply, and recover confined candidate adoption artifacts.",
24
+ "commands": [
25
+ "adopt-materialize-apply",
26
+ "adopt-materialize-plan",
27
+ "adopt-materialize-recover"
28
+ ]
29
+ },
20
30
  {
21
31
  "familyId": "agent-workflow-planning",
22
32
  "label": "Agent workflow planning",
@@ -752,6 +752,30 @@
752
752
  "proofState": "witness_backed",
753
753
  "nonClaims": ["A source-bound version edge does not authenticate Git history, registry publication, provider ingestion, consumer migration, rollout, or production readiness."]
754
754
  },
755
+ {
756
+ "requirementId": "REQ-PROOFKIT-SPEC-032",
757
+ "ownerId": "proofkit.spec-proof-core",
758
+ "specPath": "docs/specs/proofkit-spec-proof-core/requirements.v1.json",
759
+ "claimLevel": "blocking",
760
+ "proofState": "witness_backed",
761
+ "nonClaims": ["Materialization does not infer requirement meaning, authenticate witness truth or freshness, execute native witnesses, approve merge or release, establish rollout or production readiness, or make its routing manifest a second semantic owner."]
762
+ },
763
+ {
764
+ "requirementId": "REQ-PROOFKIT-SPEC-033",
765
+ "ownerId": "proofkit.spec-proof-core",
766
+ "specPath": "docs/specs/proofkit-spec-proof-core/requirements.v1.json",
767
+ "claimLevel": "blocking",
768
+ "proofState": "witness_backed",
769
+ "nonClaims": ["Repository transactions do not provide multi-file atomic visibility to concurrent arbitrary readers, distributed transactions, protection from a hostile same-user process, or stronger power-loss durability than the admitted filesystem synchronization operations."]
770
+ },
771
+ {
772
+ "requirementId": "REQ-PROOFKIT-SPEC-034",
773
+ "ownerId": "proofkit.spec-proof-core",
774
+ "specPath": "docs/specs/proofkit-spec-proof-core/requirements.v1.json",
775
+ "claimLevel": "blocking",
776
+ "proofState": "witness_backed",
777
+ "nonClaims": ["A source-bound version edge does not authenticate registry publication, provider ingestion, consumer adoption, native witness truth, rollout, or production readiness."]
778
+ },
755
779
  {
756
780
  "requirementId": "REQ-PROOFKIT-WORKFLOW-001",
757
781
  "ownerId": "proofkit.agent-workflow",
@@ -1145,6 +1169,33 @@
1145
1169
  "local-go"
1146
1170
  ]
1147
1171
  },
1172
+ {
1173
+ "requirementId": "REQ-PROOFKIT-PACKAGE-002",
1174
+ "scenarioId": "proofkit.package-boundary.adoption-materialization-output-root-witnesses",
1175
+ "witnessId": "proofkit.adoption-materialization.cli-output-root.exact-witnesses",
1176
+ "witnessKind": "contract",
1177
+ "witnessPath": "internal/app/adoption_materialization_command_test.go",
1178
+ "witnessSelectors": [
1179
+ {
1180
+ "selector": "TestAdoptMaterializeApplyOutputUsesExactRootShape",
1181
+ "command": "go test ./internal/app -run '^TestAdoptMaterializeApplyOutputUsesExactRootShape$'"
1182
+ },
1183
+ {
1184
+ "selector": "TestAdoptMaterializePlanOutputUsesExactRootShape",
1185
+ "command": "go test ./internal/app -run '^TestAdoptMaterializePlanOutputUsesExactRootShape$'"
1186
+ },
1187
+ {
1188
+ "selector": "TestAdoptMaterializeRecoverOutputUsesExactRootShape",
1189
+ "command": "go test ./internal/app -run '^TestAdoptMaterializeRecoverOutputUsesExactRootShape$'"
1190
+ }
1191
+ ],
1192
+ "commandIds": [
1193
+ "proofkit.go-test"
1194
+ ],
1195
+ "environmentClasses": [
1196
+ "local-go"
1197
+ ]
1198
+ },
1148
1199
  {
1149
1200
  "requirementId": "REQ-PROOFKIT-PACKAGE-002",
1150
1201
  "scenarioId": "proofkit.package-boundary.cli-output-root-witnesses",
@@ -2407,6 +2458,33 @@
2407
2458
  "local-go"
2408
2459
  ]
2409
2460
  },
2461
+ {
2462
+ "requirementId": "REQ-PROOFKIT-QUALITY-004",
2463
+ "scenarioId": "proofkit.supply-chain-quality.adoption-materialization-cli-abi",
2464
+ "witnessId": "proofkit.adoption-materialization.cli-abi.exact-output",
2465
+ "witnessKind": "contract",
2466
+ "witnessPath": "internal/app/adoption_materialization_command_test.go",
2467
+ "witnessSelectors": [
2468
+ {
2469
+ "selector": "TestAdoptMaterializeApplyOutputUsesExactRootShape",
2470
+ "command": "go test ./internal/app -run '^TestAdoptMaterializeApplyOutputUsesExactRootShape$'"
2471
+ },
2472
+ {
2473
+ "selector": "TestAdoptMaterializePlanOutputUsesExactRootShape",
2474
+ "command": "go test ./internal/app -run '^TestAdoptMaterializePlanOutputUsesExactRootShape$'"
2475
+ },
2476
+ {
2477
+ "selector": "TestAdoptMaterializeRecoverOutputUsesExactRootShape",
2478
+ "command": "go test ./internal/app -run '^TestAdoptMaterializeRecoverOutputUsesExactRootShape$'"
2479
+ }
2480
+ ],
2481
+ "commandIds": [
2482
+ "proofkit.go-test"
2483
+ ],
2484
+ "environmentClasses": [
2485
+ "local-go"
2486
+ ]
2487
+ },
2410
2488
  {
2411
2489
  "requirementId": "REQ-PROOFKIT-QUALITY-004",
2412
2490
  "scenarioId": "proofkit.supply-chain-quality.cli-abi-golden",
@@ -5809,6 +5887,264 @@
5809
5887
  ],
5810
5888
  "commandIds": ["proofkit.go-test"],
5811
5889
  "environmentClasses": ["local-go"]
5890
+ },
5891
+ {
5892
+ "requirementId": "REQ-PROOFKIT-SPEC-032",
5893
+ "scenarioId": "proofkit.spec-proof-core.adoption-materialization-owner-closure",
5894
+ "witnessId": "proofkit.adoption-materialization.owner-closure-falsifier",
5895
+ "witnessKind": "contract",
5896
+ "witnessPath": "internal/command/adoptionmaterialization/adoptionmaterialization_test.go",
5897
+ "witnessSelectors": [
5898
+ {
5899
+ "selector": "TestMaterializationWholeChainIsCanonicalAndOwnerClosed",
5900
+ "command": "go test ./internal/command/adoptionmaterialization -run '^TestMaterializationWholeChainIsCanonicalAndOwnerClosed$'"
5901
+ },
5902
+ {
5903
+ "selector": "TestMaterializationOutputAdmissionRejectsCrossOwnerMutants",
5904
+ "command": "go test ./internal/command/adoptionmaterialization -run '^TestMaterializationOutputAdmissionRejectsCrossOwnerMutants$'"
5905
+ },
5906
+ {
5907
+ "selector": "TestReceiptAdmissionRejectsOperationAttributionMutants",
5908
+ "command": "go test ./internal/command/adoptionmaterialization -run '^TestReceiptAdmissionRejectsOperationAttributionMutants$'"
5909
+ },
5910
+ {
5911
+ "selector": "TestApplyBlocksStaleMutationButAcceptsLostAcknowledgementRetry",
5912
+ "command": "go test ./internal/command/adoptionmaterialization -run '^TestApplyBlocksStaleMutationButAcceptsLostAcknowledgementRetry$'"
5913
+ },
5914
+ {
5915
+ "selector": "TestMaterializationRejectsCrossRecordDriftAndManifestMutation",
5916
+ "command": "go test ./internal/command/adoptionmaterialization -run '^TestMaterializationRejectsCrossRecordDriftAndManifestMutation$'"
5917
+ }
5918
+ ],
5919
+ "commandIds": ["proofkit.go-test"],
5920
+ "environmentClasses": ["local-go"]
5921
+ },
5922
+ {
5923
+ "requirementId": "REQ-PROOFKIT-SPEC-032",
5924
+ "scenarioId": "proofkit.spec-proof-core.adoption-materialization-reference-closure",
5925
+ "witnessId": "proofkit.adoption-materialization.reference-closure-falsifier",
5926
+ "witnessKind": "contract",
5927
+ "witnessPath": "internal/command/adoptionmaterialization/closure_test.go",
5928
+ "witnessSelectors": [
5929
+ {
5930
+ "selector": "TestPathRoleLedgerRejectsWriteReferenceCollisions",
5931
+ "command": "go test ./internal/command/adoptionmaterialization -run '^TestPathRoleLedgerRejectsWriteReferenceCollisions$'"
5932
+ },
5933
+ {
5934
+ "selector": "TestRequirementProjectionRequiresClaimLevelParity",
5935
+ "command": "go test ./internal/command/adoptionmaterialization -run '^TestRequirementProjectionRequiresClaimLevelParity$'"
5936
+ },
5937
+ {
5938
+ "selector": "TestInventoryReferencesMustResolveThroughBindingEdges",
5939
+ "command": "go test ./internal/command/adoptionmaterialization -run '^TestInventoryReferencesMustResolveThroughBindingEdges$'"
5940
+ },
5941
+ {
5942
+ "selector": "TestManifestAdmissionEqualsProducerImage",
5943
+ "command": "go test ./internal/command/adoptionmaterialization -run '^TestManifestAdmissionEqualsProducerImage$'"
5944
+ }
5945
+ ],
5946
+ "commandIds": ["proofkit.go-test"],
5947
+ "environmentClasses": ["local-go"]
5948
+ },
5949
+ {
5950
+ "requirementId": "REQ-PROOFKIT-SPEC-032",
5951
+ "scenarioId": "proofkit.spec-proof-core.adoption-materialization-whole-cli",
5952
+ "witnessId": "proofkit.adoption-materialization.whole-cli-falsifier",
5953
+ "witnessKind": "contract",
5954
+ "witnessPath": "internal/app/adoption_materialization_command_test.go",
5955
+ "witnessSelectors": [
5956
+ {
5957
+ "selector": "TestAdoptionMaterializationCLI",
5958
+ "command": "go test ./internal/app -run '^TestAdoptionMaterializationCLI$'"
5959
+ }
5960
+ ],
5961
+ "commandIds": ["proofkit.go-test"],
5962
+ "environmentClasses": ["local-go"]
5963
+ },
5964
+ {
5965
+ "requirementId": "REQ-PROOFKIT-SPEC-033",
5966
+ "scenarioId": "proofkit.spec-proof-core.repository-transaction-terminal-state",
5967
+ "witnessId": "proofkit.repository-transaction.terminal-state-falsifier",
5968
+ "witnessKind": "contract",
5969
+ "witnessPath": "internal/kernel/repositorytransaction/invariant_test.go",
5970
+ "witnessSelectors": [
5971
+ {
5972
+ "selector": "TestApplyExecutesFrozenPlan",
5973
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestApplyExecutesFrozenPlan$'"
5974
+ },
5975
+ {
5976
+ "selector": "TestRecoveryActionAndTerminalReceiptAreStable",
5977
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestRecoveryActionAndTerminalReceiptAreStable$'"
5978
+ },
5979
+ {
5980
+ "selector": "TestRecoveryActionIsDurableBeforeDirectionalMutation",
5981
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestRecoveryActionIsDurableBeforeDirectionalMutation$'"
5982
+ },
5983
+ {
5984
+ "selector": "TestMalformedRecoveryActionBlocksMutation",
5985
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestMalformedRecoveryActionBlocksMutation$'"
5986
+ },
5987
+ {
5988
+ "selector": "TestAppliedTerminalReceiptReplaysCompleteResult",
5989
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestAppliedTerminalReceiptReplaysCompleteResult$'"
5990
+ },
5991
+ {
5992
+ "selector": "TestPreparingRollbackAtomicallyReplacesPreviousTerminalReceipt",
5993
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestPreparingRollbackAtomicallyReplacesPreviousTerminalReceipt$'"
5994
+ },
5995
+ {
5996
+ "selector": "TestReadyReplacementRetiresPreviousReceiptAndPreservesCompleteResult",
5997
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestReadyReplacementRetiresPreviousReceiptAndPreservesCompleteResult$'"
5998
+ },
5999
+ {
6000
+ "selector": "TestUnknownRecoveryStateDoesNotAdoptExpectedIdentity",
6001
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestUnknownRecoveryStateDoesNotAdoptExpectedIdentity$'"
6002
+ },
6003
+ {
6004
+ "selector": "TestPreparingFailureCannotClaimRollbackAfterTargetDivergence",
6005
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestPreparingFailureCannotClaimRollbackAfterTargetDivergence$'"
6006
+ },
6007
+ {
6008
+ "selector": "TestCommittedRecoveryRejectsRollback",
6009
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestCommittedRecoveryRejectsRollback$'"
6010
+ },
6011
+ {
6012
+ "selector": "TestPreparingRecoveryRejectsResumeBeforeActionSelection",
6013
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestPreparingRecoveryRejectsResumeBeforeActionSelection$'"
6014
+ }
6015
+ ],
6016
+ "commandIds": ["proofkit.go-test"],
6017
+ "environmentClasses": ["local-go"]
6018
+ },
6019
+ {
6020
+ "requirementId": "REQ-PROOFKIT-SPEC-033",
6021
+ "scenarioId": "proofkit.spec-proof-core.repository-transaction-fault-recovery",
6022
+ "witnessId": "proofkit.repository-transaction.fault-recovery-falsifier",
6023
+ "witnessKind": "contract",
6024
+ "witnessPath": "internal/kernel/repositorytransaction/transaction_test.go",
6025
+ "witnessSelectors": [
6026
+ {
6027
+ "selector": "TestApplyFaultAfterFirstPublishRestoresExactBeforeState",
6028
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestApplyFaultAfterFirstPublishRestoresExactBeforeState$'"
6029
+ },
6030
+ {
6031
+ "selector": "TestProcessInterruptionAtEveryMutationBoundaryIsRecoverable",
6032
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestProcessInterruptionAtEveryMutationBoundaryIsRecoverable$'"
6033
+ },
6034
+ {
6035
+ "selector": "TestApplyRejectsConcurrentCooperativeWriter",
6036
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestApplyRejectsConcurrentCooperativeWriter$'"
6037
+ },
6038
+ {
6039
+ "selector": "TestApplyAlreadySatisfiedRejectsConcurrentCooperativeWriter",
6040
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestApplyAlreadySatisfiedRejectsConcurrentCooperativeWriter$'"
6041
+ },
6042
+ {
6043
+ "selector": "TestTransactionLockIsInterprocess",
6044
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestTransactionLockIsInterprocess$'"
6045
+ },
6046
+ {
6047
+ "selector": "TestRecoverDoesNotInventIdentityForPartialPreparingJournal",
6048
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestRecoverDoesNotInventIdentityForPartialPreparingJournal$'"
6049
+ }
6050
+ ],
6051
+ "commandIds": ["proofkit.go-test"],
6052
+ "environmentClasses": ["local-go"]
6053
+ },
6054
+ {
6055
+ "requirementId": "REQ-PROOFKIT-SPEC-033",
6056
+ "scenarioId": "proofkit.spec-proof-core.repository-transaction-output-relations",
6057
+ "witnessId": "proofkit.repository-transaction.output-relation-falsifier",
6058
+ "witnessKind": "contract",
6059
+ "witnessPath": "internal/kernel/repositorytransaction/output_admission_test.go",
6060
+ "witnessSelectors": [
6061
+ {
6062
+ "selector": "TestPlanAndResultOutputAdmissionRejectSemanticMutants",
6063
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestPlanAndResultOutputAdmissionRejectSemanticMutants$'"
6064
+ }
6065
+ ],
6066
+ "commandIds": [
6067
+ "proofkit.go-test"
6068
+ ],
6069
+ "environmentClasses": [
6070
+ "local-go"
6071
+ ]
6072
+ },
6073
+ {
6074
+ "requirementId": "REQ-PROOFKIT-SPEC-033",
6075
+ "scenarioId": "proofkit.spec-proof-core.repository-transaction-cleanup-state-matrix",
6076
+ "witnessId": "proofkit.repository-transaction.cleanup-state-falsifier",
6077
+ "witnessKind": "contract",
6078
+ "witnessPath": "internal/kernel/repositorytransaction/state_machine_test.go",
6079
+ "witnessSelectors": [
6080
+ {
6081
+ "selector": "TestCleanupDurabilityFailureDoesNotClaimRecoverableState",
6082
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestCleanupDurabilityFailureDoesNotClaimRecoverableState$'"
6083
+ }
6084
+ ],
6085
+ "commandIds": [
6086
+ "proofkit.go-test"
6087
+ ],
6088
+ "environmentClasses": [
6089
+ "local-go"
6090
+ ]
6091
+ },
6092
+ {
6093
+ "requirementId": "REQ-PROOFKIT-SPEC-033",
6094
+ "scenarioId": "proofkit.spec-proof-core.repository-transaction-filesystem-portable-path-identity",
6095
+ "witnessId": "proofkit.repository-transaction.filesystem-portable-path-falsifier",
6096
+ "witnessKind": "contract",
6097
+ "witnessPath": "internal/kernel/repositorytransaction/plan_test.go",
6098
+ "witnessSelectors": [
6099
+ {
6100
+ "selector": "TestBuildPlanRejectsFilesystemPortableAliases",
6101
+ "command": "go test ./internal/kernel/repositorytransaction -run '^TestBuildPlanRejectsFilesystemPortableAliases$'"
6102
+ }
6103
+ ],
6104
+ "commandIds": [
6105
+ "proofkit.go-test"
6106
+ ],
6107
+ "environmentClasses": [
6108
+ "local-go"
6109
+ ]
6110
+ },
6111
+ {
6112
+ "requirementId": "REQ-PROOFKIT-SPEC-033",
6113
+ "scenarioId": "proofkit.spec-proof-core.repository-transaction-portable-path-identity",
6114
+ "witnessId": "proofkit.repository-transaction.portable-path-identity-falsifier",
6115
+ "witnessKind": "contract",
6116
+ "witnessPath": "internal/kernel/pathidentity/pathidentity_test.go",
6117
+ "witnessSelectors": [
6118
+ {
6119
+ "selector": "TestPortableEquivalenceAndContainment",
6120
+ "command": "go test ./internal/kernel/pathidentity -run '^TestPortableEquivalenceAndContainment$'"
6121
+ }
6122
+ ],
6123
+ "commandIds": ["proofkit.go-test"],
6124
+ "environmentClasses": ["local-go"]
6125
+ },
6126
+ {
6127
+ "requirementId": "REQ-PROOFKIT-SPEC-034",
6128
+ "scenarioId": "proofkit.spec-proof-core.adoption-materialization-version-edge",
6129
+ "witnessId": "proofkit.adoption-materialization.version-edge-falsifier",
6130
+ "witnessKind": "contract",
6131
+ "witnessPath": "internal/app/adoption_materialization_version_edge_test.go",
6132
+ "witnessSelectors": [
6133
+ {
6134
+ "selector": "TestAdoptionMaterializationVersionEdgeClosesPublicCommands",
6135
+ "command": "go test ./internal/app -run '^TestAdoptionMaterializationVersionEdgeClosesPublicCommands$'"
6136
+ },
6137
+ {
6138
+ "selector": "TestAdoptionMaterializationVersionEdgeRejectsCoordinatedChangeRecordDrift",
6139
+ "command": "go test ./internal/app -run '^TestAdoptionMaterializationVersionEdgeRejectsCoordinatedChangeRecordDrift$'"
6140
+ },
6141
+ {
6142
+ "selector": "TestAdoptionMaterializationVersionEdgePreservesFrozenPredecessor",
6143
+ "command": "go test ./internal/app -run '^TestAdoptionMaterializationVersionEdgePreservesFrozenPredecessor$'"
6144
+ }
6145
+ ],
6146
+ "commandIds": ["proofkit.go-test"],
6147
+ "environmentClasses": ["local-go"]
5812
6148
  }
5813
6149
  ],
5814
6150
  "witnessCommands": [