@research-engineering/agentic-proofkit 0.1.155 → 0.1.157

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.
@@ -29,7 +29,13 @@ Scanner commands require caller-selected roots or scopes.
29
29
  No command may infer ambient repository truth from the current directory.
30
30
  ```
31
31
 
32
- ## Families
32
+ ## Capability Routes
33
+
34
+ Exact, non-overlapping CLI navigation membership is owned by
35
+ `proofkit/command-families.v1.json` and exposed through `help families` and
36
+ `help family <family-id>`. The table below is a cross-cutting capability map:
37
+ commands may appear in more than one row because a workflow can cross several
38
+ owner boundaries. It is not a second command-family inventory.
33
39
 
34
40
  | Family | Main commands | Caller provides | Proofkit owns | Consumer owns | Output authority |
35
41
  |---|---|---|---|---|---|
@@ -149,6 +155,25 @@ Decision tree:
149
155
  7. Treat candidate boundaries from imperfect repositories as advisory until the
150
156
  consuming repository commits stable requirement records and proof bindings.
151
157
 
158
+ ## Contract Classification
159
+
160
+ Contract ceremony is determined by independent consumer-owned dimensions, not
161
+ by an inferred universal tier:
162
+
163
+ | Dimension | Cardinality | Typical values |
164
+ |---|---|---|
165
+ | `authorityClasses[]` | sorted set | `trust_boundary`, `public_contract`, `internal_behavior`, `derived_artifact` |
166
+ | `stabilityClass` | exactly one | `durable`, `evolutionary`, `local`, `generated` |
167
+ | `enforcementClass` | exactly one | `blocking`, `advisory`, `derived` |
168
+ | `evidenceClasses[]` | sorted set | `dedicated_binding`, `shared_native_test`, `rendered_freshness` |
169
+
170
+ Set-valued classes may coexist: a public API can also be a trust boundary, and
171
+ a generated view can also be a public contract. Proofkit admits explicit facts
172
+ and mechanics; it does not infer requirement meaning, a contract profile, or
173
+ ceremony from prose, `riskClass`, `claimLevel`, or code layout. A future
174
+ machine-readable classification field requires its own versioned caller-owned
175
+ contract and producer-to-consumer round-trip proof.
176
+
152
177
  ## Omitted Surfaces
153
178
 
154
179
  This map intentionally omits exhaustive per-field schema documentation,
@@ -87,11 +87,14 @@ execution receipts, and merge policy.
87
87
  - `REQ-PROOFKIT-SPEC-016`: requirement source transition reports validate
88
88
  caller-provided previous and next source snapshots so lifecycle changes are
89
89
  monotonic, evidence-backed, package-boundary-stable, and repository-neutral.
90
- - `REQ-PROOFKIT-SPEC-017`: test evidence inventory discovery-draft reports
91
- convert explicit caller-owned repository and test discovery facts into
92
- candidate-only inventory guidance with strict nested test title admission,
93
- source guidance, and non-claims that prevent draft guidance from becoming
94
- semantic coverage.
90
+ - `REQ-PROOFKIT-SPEC-017`: capability map admission validates caller-owned
91
+ pre-spec observations under explicit code-baseline or code-audit trust modes
92
+ and emits only bounded candidate requirements, bindings, or owner guidance.
93
+ - `REQ-PROOFKIT-SPEC-018`: an authored command-family catalog covers every
94
+ public CLI command exactly once, deterministically generates the private
95
+ runtime navigation projection, and adds opt-in family help while preserving
96
+ existing help invocation forms, process channels, no-input behavior, and leaf
97
+ dispatch; descriptor and help truth remains owned by `REQ-PROOFKIT-QUALITY-004`.
95
98
 
96
99
  ## Non-Claims
97
100
 
@@ -463,6 +463,33 @@
463
463
  "requiresImpactDeclaration": true,
464
464
  "requiresProofBindingReview": true
465
465
  }
466
+ },
467
+ {
468
+ "requirementId": "REQ-PROOFKIT-SPEC-018",
469
+ "ownerId": "proofkit.spec-proof-core",
470
+ "invariant": "Command family navigation projects the complete public CLI command inventory from one authored family catalog into a deterministic private runtime projection, preserves root and per-command help invocation forms, stdout and stderr channel discipline, no-input behavior, and leaf dispatch, admits only opt-in family help forms, rejects missing, duplicated, oversized, unsorted, or reserved-operand-colliding families, and does not infer command selection, execute commands through family membership, or create a second command inventory owner.",
471
+ "claimLevel": "blocking",
472
+ "riskClass": "medium",
473
+ "proofBindingRefs": [
474
+ "proofkit/requirement-bindings.json"
475
+ ],
476
+ "nonClaimRefs": [
477
+ "NC-PROOFKIT-SPEC-018"
478
+ ],
479
+ "nonClaims": [
480
+ "This requirement does not claim byte-for-byte help text compatibility across owner-approved CLI contract corrections, command recommendation, command execution through family membership, consumer policy, native witness execution, merge approval, release approval, rollout approval, or production readiness."
481
+ ],
482
+ "lifecycle": {
483
+ "state": "active",
484
+ "replacementRequirementIds": [],
485
+ "evidenceRefs": []
486
+ },
487
+ "deferral": null,
488
+ "updatePolicy": {
489
+ "reviewOwnerId": "proofkit.spec-proof-core",
490
+ "requiresImpactDeclaration": true,
491
+ "requiresProofBindingReview": true
492
+ }
466
493
  }
467
494
  ],
468
495
  "nonClaims": [
@@ -470,6 +497,7 @@
470
497
  "Proofkit spec-proof core requirements describe reusable infrastructure primitives only.",
471
498
  "Proofkit spec-proof core requirements do not approve document deletion or infer document meaning from Markdown prose.",
472
499
  "Proofkit spec-proof core requirements do not discover source diffs or approve requirement deletion.",
500
+ "Proofkit spec-proof core requirements do not infer command selection from command family membership.",
473
501
  "Proofkit spec-proof core requirements do not make capability-map seeds stable requirement truth.",
474
502
  "Proofkit spec-proof core requirements do not prove overview-claim extractor completeness."
475
503
  ]
@@ -39,17 +39,11 @@ vulnerability absence, or consumer rollout safety by itself.
39
39
  paths expose benchmark entrypoints without making wall-clock budgets a
40
40
  required PR gate before stable baselines exist.
41
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, semantic command routes
49
- whose parsed Go test body lacks the source-owned executable oracle marker for
50
- the exact emitted command route fact, and missing matching semantic command
51
- evidence without claiming line coverage or exhaustive test semantic
52
- completeness.
42
+ witness, CLI inventory linkage, and descriptor-owned command proof-route
43
+ candidates from admitted test-evidence-inventory rows. The gate fails closed
44
+ on linkage dead zones, failed inventory admission, missing candidates,
45
+ unknown command refs, contract-only commands, or route-only commands. Static
46
+ route metadata and source syntax never become semantic falsifier evidence.
53
47
  - `REQ-PROOFKIT-QUALITY-011`: CI separates the OS-independent full
54
48
  source/package gate from macOS platform smoke, uses explicit hosted runner
55
49
  labels instead of floating latest labels, and exposes one fail-closed
@@ -87,6 +81,11 @@ vulnerability absence, or consumer rollout safety by itself.
87
81
  stderr discipline, generated-source hash, owner-source parity, and exact
88
82
  explicit-input counts despite an unlisted poison file in the consumer working
89
83
  directory.
84
+ - `REQ-PROOFKIT-QUALITY-020`: package artifact execution starts from admitted
85
+ candidate-owned output roots, rejects ambient provider or unowned release
86
+ state before mutation, stays confined to the repository across symlinks,
87
+ binds non-empty generated content to stable source and execution-context
88
+ snapshots, and emits a schema-versioned execution record.
90
89
 
91
90
  ## Non-Claims
92
91
 
@@ -129,12 +129,12 @@
129
129
  {
130
130
  "requirementId": "REQ-PROOFKIT-QUALITY-010",
131
131
  "ownerId": "proofkit.supply-chain-quality",
132
- "invariant": "Coverage metrics report requirement, binding, witness, CLI inventory linkage, and descriptor-owned command semantic-route coverage from admitted test-evidence-inventory rows, failing closed on explicit requirement/proof linkage dead zones, failed command-route inventory admission, command semantic routes without owner-declared proof identities, route-index-derived semantic proof identities, direct app semantic routes outside the command-scoped app test, package-level semantic routes outside the descriptor-owned command package, semantic command routes whose parsed Go test body lacks the source-owned executable oracle marker for the exact emitted command ref, selector, source path, falsifier ids, oracle id, and expected public outcome, or missing matching semantic command evidence without claiming line coverage or exhaustive test semantic completeness.",
132
+ "invariant": "Coverage metrics report requirement, binding, witness, CLI inventory linkage, and descriptor-owned command proof-route candidates from admitted test-evidence-inventory rows, failing closed on explicit requirement/proof linkage dead zones, failed command-route inventory admission, missing candidate routes, unknown command refs, contract-only commands, or route-only commands; static route metadata, prose, source markers, test existence, and failure-capable syntax remain candidate evidence and cannot satisfy semantic_falsifier coverage.",
133
133
  "claimLevel": "blocking",
134
134
  "riskClass": "medium",
135
135
  "proofBindingRefs": ["proofkit/requirement-bindings.json"],
136
136
  "nonClaimRefs": ["NC-PROOFKIT-QUALITY-010"],
137
- "nonClaims": ["This requirement does not claim line coverage, dead-code absence, exhaustive semantic completeness for every test, native witness execution, receipt freshness, or merge satisfaction."],
137
+ "nonClaims": ["This requirement does not claim semantic command coverage, line coverage, dead-code absence, exhaustive semantic completeness for any test, native witness execution, receipt freshness, or merge satisfaction."],
138
138
  "lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
139
139
  "deferral": null,
140
140
  "updatePolicy": {"reviewOwnerId": "proofkit.supply-chain-quality", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
@@ -255,6 +255,19 @@
255
255
  "lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
256
256
  "deferral": null,
257
257
  "updatePolicy": {"reviewOwnerId": "proofkit.supply-chain-quality", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
258
+ },
259
+ {
260
+ "requirementId": "REQ-PROOFKIT-QUALITY-020",
261
+ "ownerId": "proofkit.supply-chain-quality",
262
+ "invariant": "Package artifact execution rejects ambient provider evidence and unowned release state before mutating candidate outputs, removes only candidate-owned package, wheel, and release outputs through a repository-confined filesystem root without following symlinks outside that root, invalidates prior execution evidence, executes the canonical package pipeline against stable source, environment, and toolchain snapshots, requires a non-empty content-bound artifact snapshot, and emits a schema-versioned execution record.",
263
+ "claimLevel": "blocking",
264
+ "riskClass": "high",
265
+ "proofBindingRefs": ["proofkit/requirement-bindings.json"],
266
+ "nonClaimRefs": ["NC-PROOFKIT-QUALITY-020"],
267
+ "nonClaims": ["This requirement does not claim producer authentication, hermetic or reproducible builds, registry publication, provider evidence freshness, release approval, rollout approval, production readiness, or exact artifact closure outside downstream package and release validators."],
268
+ "lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
269
+ "deferral": null,
270
+ "updatePolicy": {"reviewOwnerId": "proofkit.supply-chain-quality", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
258
271
  }
259
272
  ]
260
273
  }
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.1.155",
4
+ "version": "0.1.157",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "sideEffects": false,
@@ -36,7 +36,8 @@
36
36
  ],
37
37
  "scripts": {
38
38
  "build": "go run ./internal/tools/packagebuild",
39
- "check": "npm run npm:version && npm run source-hygiene && npm run text-policy && npm run mermaid:check && npm run go:check && npm run package:artifact && npm run self:receipt && npm run self:coverage && npm run release:closeout",
39
+ "check": "npm run npm:version && npm run source-hygiene && npm run command-family:check && npm run text-policy && npm run mermaid:check && npm run go:check && npm run package:artifact && npm run self:receipt && npm run self:coverage && npm run release:closeout",
40
+ "command-family:check": "go run ./internal/tools/commandfamilygen --check",
40
41
  "go:actionlint": "go tool actionlint",
41
42
  "go:bench": "go test ./internal/kernel/admission ./internal/kernel/stablejson -run '^$' -bench . -benchmem -count=10",
42
43
  "go:check": "npm run go:fmt && npm run go:test && npm run go:vet && npm run go:staticcheck && npm run go:actionlint && npm run go:vulncheck",
@@ -44,7 +45,8 @@
44
45
  "go:test": "go test ./...",
45
46
  "go:vet": "go vet ./...",
46
47
  "npm:version": "node -e \"const {execFileSync}=require('node:child_process'); const expected=require('./package.json').packageManager.split('@').at(-1); const actual=execFileSync('npm',['--version'],{encoding:'utf8'}).trim(); if(actual!==expected){throw new Error('expected npm '+expected+', got '+actual)}\"",
47
- "package:artifact": "npm run build && go run ./internal/tools/packagepack && go run ./internal/tools/packageverify && npm run python:package && npm run python:verify && npm run release:manifest",
48
+ "package:artifact": "go run ./internal/tools/packageartifact",
49
+ "package:artifact:steps": "npm run build && go run ./internal/tools/packagepack && go run ./internal/tools/packageverify && npm run python:package && npm run python:verify && npm run release:manifest",
48
50
  "platform:smoke": "go run ./internal/tools/packagebuild current && ./dist/agentic-proofkit --help >/dev/null && go run ./internal/tools/pythonpackage build-current && go run ./internal/tools/pythonpackage verify-current",
49
51
  "python:package": "go run ./internal/tools/pythonpackage build",
50
52
  "python:verify": "go run ./internal/tools/pythonpackage verify",
@@ -6,7 +6,14 @@
6
6
  "successExitCode": 0,
7
7
  "failureExitCode": 1,
8
8
  "stdout": "Successful JSON commands write exactly one JSON value to stdout unless an admitted explicit output-file flag writes that JSON value to the selected path and leaves stdout empty. Successful text or help commands write text to stdout unless an admitted explicit output-file flag writes the selected representation to the selected path and leaves stdout empty. Commands do not write stderr on success.",
9
- "stderr": "Argument parsing, unsupported command, input admission, and output serialization failures write human diagnostics to stderr. Failed report commands may still write a machine-readable failed report to stdout when admission succeeds. Opt-in agent-envelope repair packets may write deterministic invalid-input JSON to stdout with exit code 1 and empty stderr."
9
+ "stderr": "Argument parsing, unsupported command, input admission, and output serialization failures write human diagnostics to stderr. Failed report commands may still write a machine-readable failed report to stdout when admission succeeds. Opt-in agent-envelope repair packets may write deterministic invalid-input JSON to stdout with exit code 1 and empty stderr.",
10
+ "helpGrammar": {
11
+ "rootHelpFlags": ["--help", "-h"],
12
+ "commandHelpFlags": ["--help", "-h"],
13
+ "helpCommandPositionalTarget": "optional_supported_command",
14
+ "helpCatalogFormsSource": "proofkit/command-families.v1.json",
15
+ "helpReadsCommandInput": false
16
+ }
10
17
  },
11
18
  "commands": [
12
19
  {
@@ -42,6 +49,9 @@
42
49
  "--mode",
43
50
  "--pilot",
44
51
  "--touched-rule-id"
52
+ ],
53
+ "requiredFlags": [
54
+ "--mode"
45
55
  ]
46
56
  },
47
57
  {
@@ -108,6 +118,7 @@
108
118
  "binding_witness_plan_input",
109
119
  "capability_map",
110
120
  "changed_path_set",
121
+ "compact_proof_binding",
111
122
  "coverage_compose_input",
112
123
  "coverage_view_input",
113
124
  "deployment_evidence_input",
@@ -329,6 +340,22 @@
329
340
  "--list",
330
341
  "--profile",
331
342
  "--verify"
343
+ ],
344
+ "exactlyOneOfFlagGroups": [
345
+ [
346
+ "--list",
347
+ "--profile",
348
+ "--verify"
349
+ ]
350
+ ],
351
+ "flagValueRequirements": [
352
+ {
353
+ "flag": "--format",
354
+ "requiredFlags": [
355
+ "--profile"
356
+ ],
357
+ "value": "markdown"
358
+ }
332
359
  ]
333
360
  },
334
361
  {
@@ -535,6 +562,9 @@
535
562
  "--format",
536
563
  "--language"
537
564
  ],
565
+ "requiredFlags": [
566
+ "--language"
567
+ ],
538
568
  "outputContract": {
539
569
  "contractId": "proofkit.json-report-cli-adapter-source.output.v1",
540
570
  "schemaVersion": 1,
@@ -945,6 +975,9 @@
945
975
  "--scope",
946
976
  "--serve",
947
977
  "--view"
978
+ ],
979
+ "requiredFlags": [
980
+ "--view"
948
981
  ]
949
982
  },
950
983
  {
@@ -1145,6 +1178,12 @@
1145
1178
  "--input",
1146
1179
  "--input-pointer",
1147
1180
  "--local-environment-class"
1181
+ ],
1182
+ "exactlyOneOfFlagGroups": [
1183
+ [
1184
+ "--empty-local-environment-policy",
1185
+ "--local-environment-class"
1186
+ ]
1148
1187
  ]
1149
1188
  },
1150
1189
  {
@@ -1290,6 +1329,11 @@
1290
1329
  "stdin": true,
1291
1330
  "inputPointer": true,
1292
1331
  "scopeClass": "explicit_caller_input",
1332
+ "inputContract": {
1333
+ "schemaVersion": 2,
1334
+ "requiredFields": ["schemaVersion", "treeId", "rootNodeId", "callerAnnotations", "nodes", "edges", "overlays"],
1335
+ "callerTextAuthority": "callerAnnotations fields are untrusted presentation annotations and never command-owned nonClaims"
1336
+ },
1293
1337
  "outputModes": [
1294
1338
  "json"
1295
1339
  ],
@@ -1304,6 +1348,11 @@
1304
1348
  "stdin": true,
1305
1349
  "inputPointer": true,
1306
1350
  "scopeClass": "explicit_caller_input",
1351
+ "inputContract": {
1352
+ "schemaVersion": 2,
1353
+ "requiredFields": ["schemaVersion", "treeId", "rootNodeId", "callerAnnotations", "nodes", "edges", "overlays"],
1354
+ "callerTextAuthority": "callerAnnotations fields are untrusted presentation annotations and never command-owned nonClaims"
1355
+ },
1307
1356
  "outputModes": [
1308
1357
  "html",
1309
1358
  "json",
@@ -1316,9 +1365,10 @@
1316
1365
  "--output"
1317
1366
  ],
1318
1367
  "outputContract": {
1319
- "contractId": "proofkit.requirement-spec-tree-view.output.v1",
1320
- "schemaVersion": 1,
1368
+ "contractId": "proofkit.requirement-spec-tree-view.output.v2",
1369
+ "schemaVersion": 2,
1321
1370
  "authority": "requirement spec tree view output contract",
1371
+ "nonJsonFormats": ["html", "markdown"],
1322
1372
  "requiredFields": [
1323
1373
  "authority",
1324
1374
  "nodeCount",
@@ -1567,6 +1617,9 @@
1567
1617
  ],
1568
1618
  "allowedFlags": [
1569
1619
  "--preset"
1620
+ ],
1621
+ "requiredFlags": [
1622
+ "--preset"
1570
1623
  ]
1571
1624
  },
1572
1625
  {
@@ -1666,7 +1719,11 @@
1666
1719
  "value": 1
1667
1720
  }
1668
1721
  },
1669
- "nonClaim": "This projection input does not make Proofkit the owner of requirement meaning, native test execution, repository scanning, proof freshness, or merge policy."
1722
+ "candidateOutput": {
1723
+ "evidenceClass": "proof_route_candidate",
1724
+ "semanticCoverage": "not_satisfied_until_owner_materialized"
1725
+ },
1726
+ "nonClaim": "This projection input does not make Proofkit the owner of requirement meaning, native test execution, semantic coverage, repository scanning, proof freshness, or merge policy."
1670
1727
  },
1671
1728
  "strict-inventory": {
1672
1729
  "authority": "caller-owned strict test inventory admission",
@@ -1678,6 +1735,7 @@
1678
1735
  "nonClaims": [
1679
1736
  "Projection modes are closed vocabulary: proof-binding-derived or discovery-draft.",
1680
1737
  "Discovery draft candidate output must be materialized into strict inventory before it can affect coverage.",
1738
+ "Proof-binding-derived routes remain proof_route_candidate entries until a consumer owner materializes an executable semantic oracle.",
1681
1739
  "The derived inventory remains caller-owned input for downstream coverage views."
1682
1740
  ]
1683
1741
  },
@@ -1718,6 +1776,7 @@
1718
1776
  "missing_semantic_anchor",
1719
1777
  "mock_tests_mock",
1720
1778
  "over_broad_integration",
1779
+ "proof_route_candidate",
1721
1780
  "routing_smoke_only",
1722
1781
  "selector_fragility",
1723
1782
  "snapshot_without_oracle",
@@ -1774,6 +1833,9 @@
1774
1833
  "--input",
1775
1834
  "--input-pointer",
1776
1835
  "--repo-root"
1836
+ ],
1837
+ "requiredFlags": [
1838
+ "--repo-root"
1777
1839
  ]
1778
1840
  },
1779
1841
  {
@@ -0,0 +1,205 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "catalogId": "proofkit.command-families.v1",
4
+ "families": [
5
+ {
6
+ "familyId": "adoption-lifecycle",
7
+ "label": "Adoption lifecycle",
8
+ "purpose": "Select and assess repository adoption stages.",
9
+ "commands": [
10
+ "adoption-checklist",
11
+ "adoption-doctor",
12
+ "adoption-workflow-plan",
13
+ "gradual-adoption",
14
+ "gradual-adoption-bootstrap",
15
+ "gradual-adoption-guidance",
16
+ "init",
17
+ "pilot-admission"
18
+ ]
19
+ },
20
+ {
21
+ "familyId": "cli-metadata-and-conformance",
22
+ "label": "CLI metadata and conformance",
23
+ "purpose": "Expose, route, generate, and self-check CLI contract surfaces.",
24
+ "commands": [
25
+ "agent-route",
26
+ "conformance-profile",
27
+ "help",
28
+ "json-report-cli-adapter-source",
29
+ "self-check"
30
+ ]
31
+ },
32
+ {
33
+ "familyId": "deployment-and-readiness",
34
+ "label": "Deployment and readiness",
35
+ "purpose": "Admit deployment evidence and bounded closeout decisions.",
36
+ "commands": [
37
+ "branch-authority",
38
+ "completion-criteria",
39
+ "deployment-evidence-admission",
40
+ "readiness-closeout"
41
+ ]
42
+ },
43
+ {
44
+ "familyId": "migration-and-retirement",
45
+ "label": "Migration and retirement",
46
+ "purpose": "Prove parity and plan retirement of consumer-local infrastructure.",
47
+ "commands": [
48
+ "migration-parity-admission",
49
+ "migration-plan"
50
+ ]
51
+ },
52
+ {
53
+ "familyId": "proof-artifact-governance",
54
+ "label": "Proof artifact governance",
55
+ "purpose": "Govern custom rules, document lifecycle, freshness, and witness plans.",
56
+ "commands": [
57
+ "custom-rule-boundary",
58
+ "document-lifecycle-boundary",
59
+ "rendered-artifact-freshness",
60
+ "witness-plan",
61
+ "witness-scheduler-plan"
62
+ ]
63
+ },
64
+ {
65
+ "familyId": "proof-binding-topology",
66
+ "label": "Proof binding topology",
67
+ "purpose": "Admit, resolve, partition, and inspect requirement proof topology.",
68
+ "commands": [
69
+ "binding-partition",
70
+ "evidence-graph",
71
+ "proof-slice",
72
+ "requirement-bindings",
73
+ "requirement-proof-resolver",
74
+ "requirement-proof-source-set",
75
+ "spec-proof-bundle-admission"
76
+ ]
77
+ },
78
+ {
79
+ "familyId": "receipt-authority",
80
+ "label": "Receipt authority",
81
+ "purpose": "Admit receipts, producer compatibility, currentness, and trust classes.",
82
+ "commands": [
83
+ "producer-policy-self-proof",
84
+ "proof-receipt-admission",
85
+ "receipt-currentness-scope",
86
+ "receipt-producer-admission",
87
+ "receipt-trust-class"
88
+ ]
89
+ },
90
+ {
91
+ "familyId": "release-artifact-consumption",
92
+ "label": "Release artifact consumption",
93
+ "purpose": "Check package release facts and external or registry consumption.",
94
+ "commands": [
95
+ "external-consumer",
96
+ "registry-consumer",
97
+ "registry-consumer-proof-input-compose",
98
+ "release-authority"
99
+ ]
100
+ },
101
+ {
102
+ "familyId": "repository-facts-and-scanning",
103
+ "label": "Repository facts and scanning",
104
+ "purpose": "Admit explicit repository facts and bounded policy scans.",
105
+ "commands": [
106
+ "repo-profile-admission",
107
+ "secret-scan",
108
+ "text-policy",
109
+ "typescript-public-api-surfaces",
110
+ "workspace-manifest-facts"
111
+ ]
112
+ },
113
+ {
114
+ "familyId": "requirement-navigation-and-rendering",
115
+ "label": "Requirement navigation and rendering",
116
+ "purpose": "Build and present requirement, proof, and coverage views.",
117
+ "commands": [
118
+ "requirement-browser-server",
119
+ "requirement-coverage-view",
120
+ "requirement-proof-view",
121
+ "requirement-source-view",
122
+ "requirement-spec-tree",
123
+ "requirement-spec-tree-view"
124
+ ]
125
+ },
126
+ {
127
+ "familyId": "requirement-source-lifecycle",
128
+ "label": "Requirement source lifecycle",
129
+ "purpose": "Author, admit, transition, and check requirement source claims.",
130
+ "commands": [
131
+ "requirement-authoring-plan",
132
+ "requirement-source-admission",
133
+ "requirement-source-transition",
134
+ "spec-overview-claims"
135
+ ]
136
+ },
137
+ {
138
+ "familyId": "scaffolding-and-capability-capture",
139
+ "label": "Scaffolding and capability capture",
140
+ "purpose": "Produce candidate adoption structures and capability seeds.",
141
+ "commands": [
142
+ "adoption-contract-envelope",
143
+ "capability-map-admission",
144
+ "scaffold-profile-plan",
145
+ "scaffold-project-structure",
146
+ "stack-preset"
147
+ ]
148
+ },
149
+ {
150
+ "familyId": "selective-evidence-and-obligations",
151
+ "label": "Selective evidence and obligations",
152
+ "purpose": "Admit selective evidence and decide proof obligations.",
153
+ "commands": [
154
+ "obligation-decision",
155
+ "proof-obligation-algebra",
156
+ "selective-gate-evidence",
157
+ "selective-gate-obligation-decision-input"
158
+ ]
159
+ },
160
+ {
161
+ "familyId": "selective-impact-planning",
162
+ "label": "Selective impact planning",
163
+ "purpose": "Convert explicit change facts into bounded verification plans.",
164
+ "commands": [
165
+ "changed-path-set",
166
+ "impact",
167
+ "requirement-impact-input-compose",
168
+ "selective-gate-plan"
169
+ ]
170
+ },
171
+ {
172
+ "familyId": "test-evidence-and-coverage-input",
173
+ "label": "Test evidence and coverage input",
174
+ "purpose": "Admit test evidence and compose coverage inputs.",
175
+ "commands": [
176
+ "requirement-coverage-input-compose",
177
+ "test-evidence-inventory"
178
+ ]
179
+ },
180
+ {
181
+ "familyId": "workspace-topology-and-package-policy",
182
+ "label": "Workspace topology and package policy",
183
+ "purpose": "Model workspace topology, shards, and package runtime policy.",
184
+ "commands": [
185
+ "package-runtime-dependency-admission",
186
+ "workspace-changed-package-plan",
187
+ "workspace-registry",
188
+ "workspace-shard-partition"
189
+ ]
190
+ }
191
+ ],
192
+ "helpForms": [
193
+ "help families",
194
+ "help family <family-id>"
195
+ ],
196
+ "reservedHelpOperands": [
197
+ "families",
198
+ "family"
199
+ ],
200
+ "nonClaims": [
201
+ "Command families do not change leaf command dispatch or execution authority.",
202
+ "Command families do not infer which command a caller should execute.",
203
+ "Command families group the public command inventory for navigation only."
204
+ ]
205
+ }
@@ -2,7 +2,7 @@
2
2
  "schemaVersion": 1,
3
3
  "policyId": "proofkit.receipt-producer-policy",
4
4
  "receiptKinds": [
5
- "proofkit.package-gate"
5
+ "proofkit.package-artifact"
6
6
  ],
7
7
  "environmentClasses": [
8
8
  "local-go-python"
@@ -13,7 +13,7 @@
13
13
  "owner": "proofkit.package-boundary",
14
14
  "admissionLevel": "advisory",
15
15
  "receiptKinds": [
16
- "proofkit.package-gate"
16
+ "proofkit.package-artifact"
17
17
  ],
18
18
  "environmentClasses": [
19
19
  "local-go-python"
@@ -28,7 +28,7 @@
28
28
  "owner": "proofkit.package-boundary",
29
29
  "admissionLevel": "advisory",
30
30
  "receiptKinds": [
31
- "proofkit.package-gate"
31
+ "proofkit.package-artifact"
32
32
  ],
33
33
  "environmentClasses": [
34
34
  "local-go-python"
@@ -469,7 +469,7 @@
469
469
  "claimLevel": "blocking",
470
470
  "proofState": "witness_backed",
471
471
  "nonClaims": [
472
- "This requirement does not claim line coverage, dead-code absence, exhaustive semantic completeness for every test, native witness execution, receipt freshness, or merge satisfaction."
472
+ "This requirement does not claim semantic command coverage, line coverage, dead-code absence, exhaustive semantic completeness for any test, native witness execution, receipt freshness, or merge satisfaction."
473
473
  ]
474
474
  },
475
475
  {
@@ -562,6 +562,16 @@
562
562
  "This requirement does not claim registry publication, every command's runtime behavior, execution of non-native platform binaries, provider-side install freshness, consumer dependency admission, release approval, rollout approval, or production readiness."
563
563
  ]
564
564
  },
565
+ {
566
+ "requirementId": "REQ-PROOFKIT-QUALITY-020",
567
+ "ownerId": "proofkit.supply-chain-quality",
568
+ "specPath": "docs/specs/proofkit-supply-chain-quality/requirements.v1.json",
569
+ "claimLevel": "blocking",
570
+ "proofState": "witness_backed",
571
+ "nonClaims": [
572
+ "This requirement does not claim producer authentication, hermetic or reproducible builds, registry publication, provider evidence freshness, release approval, rollout approval, production readiness, or exact artifact closure outside downstream package and release validators."
573
+ ]
574
+ },
565
575
  {
566
576
  "requirementId": "REQ-PROOFKIT-SPEC-017",
567
577
  "ownerId": "proofkit.spec-proof-core",
@@ -571,6 +581,16 @@
571
581
  "nonClaims": [
572
582
  "This requirement does not claim repository scanning, code correctness, extraction completeness, final requirement meaning, proof-binding adequacy, native witness execution, proof freshness, merge approval, release approval, rollout approval, or production readiness."
573
583
  ]
584
+ },
585
+ {
586
+ "requirementId": "REQ-PROOFKIT-SPEC-018",
587
+ "ownerId": "proofkit.spec-proof-core",
588
+ "specPath": "docs/specs/proofkit-spec-proof-core/requirements.v1.json",
589
+ "claimLevel": "blocking",
590
+ "proofState": "witness_backed",
591
+ "nonClaims": [
592
+ "This requirement does not claim byte-for-byte help text compatibility across owner-approved CLI contract corrections, command recommendation, command execution through family membership, consumer policy, native witness execution, merge approval, release approval, rollout approval, or production readiness."
593
+ ]
574
594
  }
575
595
  ],
576
596
  "bindings": [
@@ -585,7 +605,8 @@
585
605
  "proofkit.package-artifact"
586
606
  ],
587
607
  "environmentClasses": [
588
- "local-go"
608
+ "local-go",
609
+ "local-go-python"
589
610
  ]
590
611
  },
591
612
  {
@@ -599,7 +620,8 @@
599
620
  "proofkit.package-artifact"
600
621
  ],
601
622
  "environmentClasses": [
602
- "local-go"
623
+ "local-go",
624
+ "local-go-python"
603
625
  ]
604
626
  },
605
627
  {
@@ -690,7 +712,7 @@
690
712
  "proofkit.package-artifact"
691
713
  ],
692
714
  "environmentClasses": [
693
- "local-go"
715
+ "local-go-python"
694
716
  ]
695
717
  },
696
718
  {
@@ -1563,6 +1585,36 @@
1563
1585
  "local-go"
1564
1586
  ]
1565
1587
  },
1588
+ {
1589
+ "requirementId": "REQ-PROOFKIT-QUALITY-020",
1590
+ "scenarioId": "proofkit.supply-chain-quality.package-artifact-clean-materialization",
1591
+ "witnessId": "proofkit.package-artifact.clean-materialization-falsifier",
1592
+ "witnessKind": "contract",
1593
+ "witnessPath": "internal/tools/packageartifact/main_test.go",
1594
+ "commandIds": [
1595
+ "proofkit.go-test",
1596
+ "proofkit.package-artifact"
1597
+ ],
1598
+ "environmentClasses": [
1599
+ "local-go",
1600
+ "local-go-python"
1601
+ ]
1602
+ },
1603
+ {
1604
+ "requirementId": "REQ-PROOFKIT-QUALITY-020",
1605
+ "scenarioId": "proofkit.supply-chain-quality.package-artifact-output-ownership-and-confinement",
1606
+ "witnessId": "proofkit.package-artifact.output-ownership-and-confinement-falsifier",
1607
+ "witnessKind": "contract",
1608
+ "witnessPath": "internal/tools/packageartifactrecord/record_test.go",
1609
+ "commandIds": [
1610
+ "proofkit.go-test",
1611
+ "proofkit.package-artifact"
1612
+ ],
1613
+ "environmentClasses": [
1614
+ "local-go",
1615
+ "local-go-python"
1616
+ ]
1617
+ },
1566
1618
  {
1567
1619
  "requirementId": "REQ-PROOFKIT-QUALITY-015",
1568
1620
  "scenarioId": "proofkit.supply-chain-quality.release-closeout-completion-criteria",
@@ -1602,7 +1654,8 @@
1602
1654
  "proofkit.package-artifact"
1603
1655
  ],
1604
1656
  "environmentClasses": [
1605
- "local-go"
1657
+ "local-go",
1658
+ "local-go-python"
1606
1659
  ]
1607
1660
  },
1608
1661
  {
@@ -1616,7 +1669,8 @@
1616
1669
  "proofkit.package-artifact"
1617
1670
  ],
1618
1671
  "environmentClasses": [
1619
- "local-go"
1672
+ "local-go",
1673
+ "local-go-python"
1620
1674
  ]
1621
1675
  },
1622
1676
  {
@@ -1751,7 +1805,8 @@
1751
1805
  "proofkit.package-artifact"
1752
1806
  ],
1753
1807
  "environmentClasses": [
1754
- "local-go"
1808
+ "local-go",
1809
+ "local-go-python"
1755
1810
  ]
1756
1811
  },
1757
1812
  {
@@ -1793,7 +1848,8 @@
1793
1848
  "proofkit.package-artifact"
1794
1849
  ],
1795
1850
  "environmentClasses": [
1796
- "local-go"
1851
+ "local-go",
1852
+ "local-go-python"
1797
1853
  ]
1798
1854
  },
1799
1855
  {
@@ -1820,7 +1876,8 @@
1820
1876
  "proofkit.package-artifact"
1821
1877
  ],
1822
1878
  "environmentClasses": [
1823
- "local-go"
1879
+ "local-go",
1880
+ "local-go-python"
1824
1881
  ]
1825
1882
  },
1826
1883
  {
@@ -1900,6 +1957,32 @@
1900
1957
  "environmentClasses": [
1901
1958
  "local-go"
1902
1959
  ]
1960
+ },
1961
+ {
1962
+ "requirementId": "REQ-PROOFKIT-SPEC-018",
1963
+ "scenarioId": "proofkit.spec-proof-core.command-family-help-compatibility",
1964
+ "witnessId": "proofkit.command-family-navigation.help-compatibility-falsifier",
1965
+ "witnessKind": "contract",
1966
+ "witnessPath": "internal/app/command_family_catalog_test.go",
1967
+ "commandIds": [
1968
+ "proofkit.go-test"
1969
+ ],
1970
+ "environmentClasses": [
1971
+ "local-go"
1972
+ ]
1973
+ },
1974
+ {
1975
+ "requirementId": "REQ-PROOFKIT-SPEC-018",
1976
+ "scenarioId": "proofkit.spec-proof-core.command-family-navigation-parity",
1977
+ "witnessId": "proofkit.command-family-navigation.parity-falsifier",
1978
+ "witnessKind": "contract",
1979
+ "witnessPath": "internal/tools/commandfamilygen/main_test.go",
1980
+ "commandIds": [
1981
+ "proofkit.go-test"
1982
+ ],
1983
+ "environmentClasses": [
1984
+ "local-go"
1985
+ ]
1903
1986
  }
1904
1987
  ],
1905
1988
  "witnessCommands": [
@@ -1936,7 +2019,7 @@
1936
2019
  {
1937
2020
  "commandId": "proofkit.package-artifact",
1938
2021
  "command": "npm run package:artifact",
1939
- "environmentClass": "local-go"
2022
+ "environmentClass": "local-go-python"
1940
2023
  },
1941
2024
  {
1942
2025
  "commandId": "proofkit.package-gate",
@@ -257,7 +257,7 @@
257
257
  "inherit": "none",
258
258
  "allowlist": [],
259
259
  "classes": [
260
- "local-go"
260
+ "local-go-python"
261
261
  ]
262
262
  },
263
263
  "timeoutMs": 600000,
@@ -275,6 +275,11 @@
275
275
  "path": "artifacts/package/*.tgz",
276
276
  "required": true
277
277
  },
278
+ {
279
+ "kind": "report",
280
+ "path": "artifacts/proofkit/package-artifact-execution.json",
281
+ "required": true
282
+ },
278
283
  {
279
284
  "kind": "python-wheel-artifact",
280
285
  "path": "artifacts/pypi/*.whl",