@research-engineering/agentic-proofkit 0.5.1 → 0.7.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.
- package/ADOPTION.md +17 -1
- package/README.md +20 -9
- package/dist/platform/darwin-arm64/agentic-proofkit +0 -0
- package/dist/platform/darwin-x64/agentic-proofkit +0 -0
- package/dist/platform/linux-arm64/agentic-proofkit +0 -0
- package/dist/platform/linux-x64/agentic-proofkit +0 -0
- package/docs/proofkit-contract-map.md +28 -17
- package/docs/specs/proofkit-agent-workflow/overview.md +7 -6
- package/docs/specs/proofkit-agent-workflow/requirements.v1.json +1 -1
- package/docs/specs/proofkit-package-boundary/overview.md +5 -4
- package/docs/specs/proofkit-package-boundary/requirements.v1.json +2 -2
- package/docs/specs/proofkit-spec-proof-core/overview.md +26 -4
- package/docs/specs/proofkit-spec-proof-core/requirements.v1.json +79 -1
- package/docs/specs/proofkit-supply-chain-quality/overview.md +9 -8
- package/docs/specs/proofkit-supply-chain-quality/requirements.v1.json +5 -5
- package/package.json +4 -4
- package/proofkit/cli-contract.v2.json +511 -195
- package/proofkit/command-families.v1.json +2 -1
- package/proofkit/requirement-bindings.json +563 -2
package/ADOPTION.md
CHANGED
|
@@ -151,7 +151,23 @@ check. Durable truth still starts only after the consumer commits and admits
|
|
|
151
151
|
## First Adoption Loop
|
|
152
152
|
|
|
153
153
|
Proofkit can reduce initial adoption glue, but it must not turn observation into
|
|
154
|
-
truth.
|
|
154
|
+
truth. Start with one explicit trust intent:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
npm exec --offline -- agentic-proofkit adopt plan --mode fresh --repo-root .
|
|
158
|
+
npm exec --offline -- agentic-proofkit adopt plan --mode code-baseline --repo-root .
|
|
159
|
+
npm exec --offline -- agentic-proofkit adopt plan --mode audit-from-code --repo-root .
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
The command validates its arguments before filesystem access, scans only a
|
|
163
|
+
fixed catalog of recognized files at the selected root, and emits a
|
|
164
|
+
candidate-only task sequence plus a compact reference to the native-evidence
|
|
165
|
+
guidance owner. It does not parse those files, infer a stack, inspect arbitrary
|
|
166
|
+
source code, generate product requirements, write files, or run witnesses.
|
|
167
|
+
An optional `--stack <preset-id>` records a caller-selected suggestion and
|
|
168
|
+
cannot alter source trust or task semantics.
|
|
169
|
+
|
|
170
|
+
Continue the first loop as follows:
|
|
155
171
|
|
|
156
172
|
```text
|
|
157
173
|
caller-owned capability or test observations
|
package/README.md
CHANGED
|
@@ -50,7 +50,7 @@ CLI, not as a Python SDK. Python projects should still treat CLI/JSON records,
|
|
|
50
50
|
exit codes, and package metadata as the public contract.
|
|
51
51
|
|
|
52
52
|
<!-- proofkit:platform-python:start -->
|
|
53
|
-
Supported binary targets are macOS
|
|
53
|
+
Supported binary targets are macOS 13 or later on arm64 or x64.
|
|
54
54
|
Linux manylinux 2.17 or later is supported on arm64 or x64. Windows is unsupported. The Python
|
|
55
55
|
runner requires Python 3.9 or later and wraps the same Go CLI; it is not a
|
|
56
56
|
Python SDK.
|
|
@@ -144,19 +144,22 @@ truth unless the consumer explicitly admits them.
|
|
|
144
144
|
|
|
145
145
|
### Invariant Authoring Loop
|
|
146
146
|
|
|
147
|
-
For a repository with no specification, Proofkit can guide an agent through
|
|
148
|
-
|
|
147
|
+
For a repository with no specification, Proofkit can guide an agent through
|
|
148
|
+
three explicit starting modes:
|
|
149
149
|
|
|
150
150
|
```mermaid
|
|
151
151
|
flowchart TB
|
|
152
152
|
Start["Code, docs, tests, issues, and maintainer intent"] --> Mode["Choose trust mode"]
|
|
153
|
+
Mode --> Fresh["Fresh authoring mode"]
|
|
153
154
|
Mode --> Baseline["Code baseline mode"]
|
|
154
155
|
Mode --> Audit["Code audit mode"]
|
|
156
|
+
Fresh --> Contract["Owner-authored product contract"]
|
|
155
157
|
Baseline --> Observations["Caller-owned capability observations"]
|
|
156
158
|
Audit --> Observations
|
|
157
159
|
Observations --> Seeds["Candidate invariants and requirement seeds"]
|
|
158
160
|
Seeds --> Review["Owner review and promotion"]
|
|
159
161
|
Review --> Specs["Repo-owned requirements.v1.json"]
|
|
162
|
+
Contract --> Specs
|
|
160
163
|
Specs --> Obligations["Proof obligations"]
|
|
161
164
|
Obligations --> Evidence["Proof bindings and test inventory"]
|
|
162
165
|
Evidence --> Admission["Proofkit admission and coverage"]
|
|
@@ -164,10 +167,11 @@ flowchart TB
|
|
|
164
167
|
|
|
165
168
|
| Mode | Use when | Result |
|
|
166
169
|
|---|---|---|
|
|
170
|
+
| Fresh authoring | No existing code or specification is accepted as product truth | Owner-authored behavior statements that remain candidates until admitted as repository requirements |
|
|
167
171
|
| Code baseline | Current behavior is accepted as the starting contract | Candidate requirements and bindings that preserve current behavior until owners review them |
|
|
168
172
|
| Code audit | Current behavior may be wrong or incomplete | Untrusted observations and questions that must be promoted by a repository owner before becoming requirements |
|
|
169
173
|
|
|
170
|
-
In
|
|
174
|
+
In all three modes, generated records remain candidates until the consuming
|
|
171
175
|
repository admits them as repo-owned requirements, proof bindings, and witness
|
|
172
176
|
plans. Proofkit can structure and validate candidate packets, but it does not
|
|
173
177
|
extract complete behavior from arbitrary source code, invent product policy, or
|
|
@@ -179,7 +183,8 @@ Use the CLI help route before reading source:
|
|
|
179
183
|
|
|
180
184
|
```bash
|
|
181
185
|
npm exec --offline -- agentic-proofkit help
|
|
182
|
-
npm exec --offline -- agentic-proofkit
|
|
186
|
+
npm exec --offline -- agentic-proofkit adopt plan --mode fresh --repo-root .
|
|
187
|
+
npm exec --offline -- agentic-proofkit help adopt plan
|
|
183
188
|
npm exec --offline -- agentic-proofkit help repo-profile-admission
|
|
184
189
|
npm exec --offline -- agentic-proofkit repo-profile-admission --help
|
|
185
190
|
```
|
|
@@ -189,12 +194,18 @@ does not read stdin. The full machine-readable command inventory remains
|
|
|
189
194
|
`proofkit/cli-contract.v2.json`; the human route map is
|
|
190
195
|
`docs/proofkit-contract-map.md`.
|
|
191
196
|
|
|
197
|
+
`adopt plan` is the read-only front door. It inventories only a fixed catalog
|
|
198
|
+
of recognized files at the explicit repository root, validates all arguments
|
|
199
|
+
before filesystem access, and returns candidate-authoring tasks. It does not
|
|
200
|
+
infer a stack, parse arbitrary source semantics, generate requirements, write
|
|
201
|
+
files, or execute evidence. `--stack` is an optional caller-selected hint and
|
|
202
|
+
cannot change the selected trust mode.
|
|
203
|
+
|
|
192
204
|
| Repository state | Minimal first route | Stop condition |
|
|
193
205
|
|---|---|---|
|
|
194
|
-
|
|
|
195
|
-
|
|
|
196
|
-
| Current code
|
|
197
|
-
| Current code must be audited before it becomes a contract | `capability-map-admission` with `trustMode: "audit_from_code"` | Stop at owner questions and candidate-only records |
|
|
206
|
+
| Fresh repository with no specification | `adopt plan --mode fresh --repo-root .` | Stop before writing files or inventing requirement meaning |
|
|
207
|
+
| Current code is intentionally accepted as the initial baseline | `adopt plan --mode code-baseline --repo-root .` | The flag is a caller declaration, not evidence that the code is correct; stop before promoting candidate observations |
|
|
208
|
+
| Current code must be audited before it becomes a contract | `adopt plan --mode audit-from-code --repo-root .` | Stop at explicit observations, owner questions, and candidate-only records |
|
|
198
209
|
| Legacy repository has local proof infrastructure | `migration-parity-admission`, then `migration-plan` | Stop before deleting local proof owners without parity evidence |
|
|
199
210
|
| A change set needs bounded checks | `changed-path-set`, optional `impact`, then `selective-gate-plan` and `selective-gate-evidence` | Stop on unknown scope, missing routes, or stale receipts |
|
|
200
211
|
| An agent needs only one specification subtree | `requirement-context-compose --repo-root . --input context-catalog.json`, then `requirement-context-slice` | Stop before treating a bounded slice as complete repository truth |
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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 | `
|
|
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 |
|
|
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 |
|
|
@@ -57,7 +57,7 @@ must use the public `agentic-proofkit` CLI routes declared in
|
|
|
57
57
|
`proofkit/cli-contract.v2.json`.
|
|
58
58
|
| Repository structure | `repo-profile-admission`, `workspace-manifest-facts`, `workspace-registry`, `workspace-changed-package-plan`, `workspace-shard-partition`, `typescript-public-api-surfaces`, `text-policy`, `secret-scan`, `package-runtime-dependency-admission` | explicit repo/profile facts, caller-owned manifest records, caller-owned roots, caller-owned text file inventories, explicit TypeScript package-manifest and per-condition source paths, optional `environmentClassPolicies` tuples | structural admission, manifest-to-workspace fact projection, workspace graph projections, bounded TypeScript package public API checks over referenced files, text policy admission, explicit-inventory secret-like text detection, shard plans | repository freshness, git/file discovery, compiler output provenance, command policy, package manager truth, provider secret scanning | structural, fact, policy, or planning report |
|
|
59
59
|
| Custom and generated artifacts | `custom-rule-boundary`, `document-lifecycle-boundary`, `rendered-artifact-freshness`, `conformance-profile`, `json-report-cli-adapter-source`, `witness-plan`, `witness-scheduler-plan` | custom rule metadata, document lifecycle records, artifact digests, profile manifests, command metadata, adapter language | boundary checks, generated-view freshness shape, deterministic adapter source generation, scheduler metadata checks | rule execution, document meaning, cache contents, CI scheduling, committed generated-source freshness | boundary report, generated source artifact, or scheduler report |
|
|
60
|
-
| CLI metadata | `help` | optional command
|
|
60
|
+
| CLI metadata | `help` | optional full public command route or help flag | built-in command catalog and help text routing | command selection, semantic proof, freshness, merge policy | text help only |
|
|
61
61
|
|
|
62
62
|
## Migrating Repository Route
|
|
63
63
|
|
|
@@ -80,7 +80,7 @@ Route ambiguous modernization work through the smallest matching family:
|
|
|
80
80
|
|---|---|---|
|
|
81
81
|
| No specs exist and current code should be frozen as the first baseline. | `capability-map-admission` with `trustMode: "code_baseline"` | It admits caller-owned capability observations and emits bounded candidate requirement/proof-binding seeds only when scenarios have candidate ids and executable anchors. |
|
|
82
82
|
| No specs exist and current code is not trusted. | `capability-map-admission` with `trustMode: "audit_from_code"` | It treats code observations as hypotheses, keeps missing anchors as owner actions, and prevents code from becoming stable requirement truth without owner review. |
|
|
83
|
-
| Where should adoption start? | `
|
|
83
|
+
| Where should adoption start? | `adopt plan --mode <mode> --repo-root <path>`, where mode is `fresh`, `code-baseline`, or `audit-from-code`; add `--stack <preset-id>` only when the caller already selected that hint. | It validates intent before a bounded fixed-catalog root scan and emits candidate-authoring tasks. It does not infer stack identity, inspect arbitrary source semantics, write files, or promote candidates. |
|
|
84
84
|
| Is a candidate module ready for gradual enforcement? | `gradual-adoption-guidance` | It reports missing source, binding, witness, blocked-precondition, and advisory candidate-boundary facts by adoption mode. |
|
|
85
85
|
| What still blocks an imperfect repository from enforcement? | `adoption-doctor` | It classifies caller-provided owner routes, candidate boundaries, child reports, blocked preconditions, and stale current authority vocabulary facts without scanning repository state or owning semantic boundary decisions. |
|
|
86
86
|
| Does current documentation still name a retired proof package or proof owner? | `adoption-doctor --agent-envelope` with caller-extracted `staleAuthority` facts | It fails current authority surfaces, admits only explicitly scoped historical vocabulary, and emits bounded repair actions without substring-scanning files itself. |
|
|
@@ -94,11 +94,17 @@ Route ambiguous modernization work through the smallest matching family:
|
|
|
94
94
|
|
|
95
95
|
## Agent Decision Procedure
|
|
96
96
|
|
|
97
|
-
Agents should use `agent-route` for
|
|
98
|
-
`agent-route --agent-envelope`
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
97
|
+
Agents should use `agent-route` for the complete deterministic route report and
|
|
98
|
+
`agent-route --agent-envelope` for the default bounded brief packet. Explicit
|
|
99
|
+
`--agent-envelope-mode brief` is byte-identical to the bare envelope form;
|
|
100
|
+
`--agent-envelope-mode full` preserves the complete generic agent envelope for
|
|
101
|
+
debugging or demand-loaded detail. Every brief binds its source report ID and
|
|
102
|
+
stable digest and admitted launcher profile in one top-level `detailAccess`
|
|
103
|
+
record, so callers retain the original admitted input and launcher context and
|
|
104
|
+
recompute report or full detail instead of adding a detail reference to every
|
|
105
|
+
item. All three forms are derived from explicit caller-owned facts. This map
|
|
106
|
+
explains route families without becoming an
|
|
107
|
+
execution, freshness, or merge decision.
|
|
102
108
|
The exact route input vocabulary is machine-readable in
|
|
103
109
|
`proofkit/cli-contract.v2.json` under `agent-route.inputContract`; the Go
|
|
104
110
|
admission implementation owns nested and semantic behavior, while the shipped
|
|
@@ -110,7 +116,7 @@ Formal rule:
|
|
|
110
116
|
goal plus caller-owned state
|
|
111
117
|
-> smallest matching command family
|
|
112
118
|
-> explicit required input
|
|
113
|
-
-> deterministic report or
|
|
119
|
+
-> deterministic report, bounded brief, or explicit full envelope
|
|
114
120
|
-> caller-owned execution, proof freshness, and merge decision
|
|
115
121
|
```
|
|
116
122
|
|
|
@@ -122,10 +128,10 @@ Semantic context routes are `requirement-context-compose`,
|
|
|
122
128
|
|
|
123
129
|
| State or goal | Next Proofkit route | Stop or escalation condition |
|
|
124
130
|
|---|---|---|
|
|
125
|
-
| The agent does not know where to start. | `
|
|
131
|
+
| The agent does not know where to start. | `adopt plan --mode <mode> --repo-root <caller-selected-root>`, where mode is `fresh`, `code-baseline`, or `audit-from-code` | Choose the trust intent explicitly. Treat the fixed-catalog inventory and tasks as a read-only candidate plan; stop before arbitrary source inspection, writing files, or making requirements authoritative. |
|
|
126
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. |
|
|
127
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. |
|
|
128
|
-
| No admitted spec/profile exists and no capability observations exist. | `scaffold-project-structure`, `adoption-workflow-plan`, or `stack-preset` | Stop before writing files; the consumer owns materialization, overwrite policy, and final requirement text. |
|
|
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. |
|
|
129
135
|
| 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. |
|
|
130
136
|
| 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. |
|
|
131
137
|
| 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. |
|
|
@@ -154,14 +160,19 @@ Semantic context routes are `requirement-context-compose`,
|
|
|
154
160
|
2. Start from this map when a human or agent only needs the correct command
|
|
155
161
|
family.
|
|
156
162
|
3. Use `agent-route` when a coding agent needs a deterministic next-command
|
|
157
|
-
|
|
158
|
-
the agent needs
|
|
159
|
-
|
|
160
|
-
|
|
163
|
+
report from explicit current state. Use `agent-route --agent-envelope` when
|
|
164
|
+
the agent needs exactly one next action or terminal state, bounded blockers,
|
|
165
|
+
caller-owned context refs, exact omission counts, and uniquely resolvable
|
|
166
|
+
shipped boundary-policy requirement refs instead of the full route report.
|
|
167
|
+
Resolve further detail with the packet's exact output-argument suffixes and
|
|
168
|
+
retained original input and launcher context only after checking the brief's source digest and launcher profile; request
|
|
169
|
+
`--agent-envelope-mode full` only when the generic envelope is actually
|
|
170
|
+
needed. Treat `blocked_*` states as stop signals, not as permission to guess
|
|
171
|
+
missing inputs. `knownChangedPaths` are
|
|
161
172
|
diagnostic-only until the caller supplies a `changed_path_set`; browser
|
|
162
173
|
server startup requires explicit `browserMode: "serve_local_view"`.
|
|
163
|
-
4.
|
|
164
|
-
|
|
174
|
+
4. Prefer the brief packet for agent context; do not expand full route reports,
|
|
175
|
+
full envelopes, or proof graphs into chat without a specific detail need.
|
|
165
176
|
5. Treat generated views and rendered HTML as presentation only. They never
|
|
166
177
|
replace the structured source record.
|
|
167
178
|
6. Escalate to the consuming repository's owner policy whenever Proofkit reports
|
|
@@ -20,11 +20,12 @@ The public capability is deliberately small:
|
|
|
20
20
|
3. Existing descriptors, dispatch, command families, root-shape CLI contracts,
|
|
21
21
|
agent envelopes, and package gates provide public-surface closure.
|
|
22
22
|
|
|
23
|
-
Neither command scans a repository. Both command cores are stateless
|
|
24
|
-
projections with no filesystem, Git, process, environment, clock, random,
|
|
25
|
-
network, container, or provider dependency.
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
Neither workflow command scans a repository. Both command cores are stateless
|
|
24
|
+
pure projections with no filesystem, Git, process, environment, clock, random,
|
|
25
|
+
network, container, or provider dependency. Neither workflow command adds a
|
|
26
|
+
setup facade, hidden route policy, external prompt resource, persisted
|
|
27
|
+
experiment state, or second source codec. Agent-route brief and full
|
|
28
|
+
projections remain independently owned by the spec-proof-core package.
|
|
28
29
|
|
|
29
30
|
## Requirements
|
|
30
31
|
|
|
@@ -48,7 +49,7 @@ introduced.
|
|
|
48
49
|
limits.
|
|
49
50
|
- `REQ-PROOFKIT-WORKFLOW-006`: only existing launcher and presentation
|
|
50
51
|
capabilities outside explicit input, with no ambient repository authority,
|
|
51
|
-
setup facade, hidden policy, or agent-route
|
|
52
|
+
setup facade, hidden policy, or ownership of agent-route projections.
|
|
52
53
|
- `REQ-PROOFKIT-WORKFLOW-007`: pure deterministic repository-neutral
|
|
53
54
|
native-evidence guidance from one versioned typed table with five closed
|
|
54
55
|
applicability classes, explicit absent-channel decisions, and finite
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
{
|
|
74
74
|
"requirementId": "REQ-PROOFKIT-WORKFLOW-006",
|
|
75
75
|
"ownerId": "proofkit.agent-workflow",
|
|
76
|
-
"invariant": "After existing bounded CLI transport, immutable installed-launcher profile admission, and immutable presentation-capability capture, the semantic planner accepts no repository root, caller prompt, caller-selected bound, command, environment, receipt body, or external authority field and has no filesystem, Git, process, environment, clock, random, network, container, or provider dependency; the CLI reads only the explicit input transport, the existing launcher-profile and optional Python-executable transport capabilities, and startup TTY/NO_COLOR presence needed by requested presentation, and
|
|
76
|
+
"invariant": "After existing bounded CLI transport, immutable installed-launcher profile admission, and immutable presentation-capability capture, the semantic planner accepts no repository root, caller prompt, caller-selected bound, command, environment, receipt body, or external authority field and has no filesystem, Git, process, environment, clock, random, network, container, or provider dependency; the CLI reads only the explicit input transport, the existing launcher-profile and optional Python-executable transport capabilities, and startup TTY/NO_COLOR presence needed by requested presentation, and this two-command workflow capability adds no setup facade, ambient scan, hidden repository policy, consumer-specific route, or ownership of the independently specified agent-route projections.",
|
|
77
77
|
"claimLevel": "blocking",
|
|
78
78
|
"riskClass": "high",
|
|
79
79
|
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
@@ -39,10 +39,11 @@ denial, and package artifact behavior only.
|
|
|
39
39
|
strict-character-reference-encoded broad caller-supplied phrase suppressors
|
|
40
40
|
that can hide readiness overclaims.
|
|
41
41
|
- `REQ-PROOFKIT-PACKAGE-003`: the root package remains installable and
|
|
42
|
-
executable by an outside consumer
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
executable by an outside consumer; packed launcher and platform-binary bytes
|
|
43
|
+
match source-built artifacts, npm offline transport proves package resolution
|
|
44
|
+
plus one multi-token route, and direct execution under the exact admitted npm
|
|
45
|
+
launcher profile proves exhaustive family, leaf, preset, continuation, and README
|
|
46
|
+
onboarding closure without claiming registry publication.
|
|
46
47
|
- `REQ-PROOFKIT-PACKAGE-004`: CI package-gate receipts used as merge evidence
|
|
47
48
|
are admitted through a declared producer policy and proof-receipt shape
|
|
48
49
|
validator instead of current-build output alone, and each fixed subprocess
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
{
|
|
63
63
|
"requirementId": "REQ-PROOFKIT-PACKAGE-003",
|
|
64
64
|
"ownerId": "proofkit.package-boundary",
|
|
65
|
-
"invariant": "The exact local root-package tarball remains installable and executable by an outside consumer on the current native platform through npm exec --offline,
|
|
65
|
+
"invariant": "The exact local root-package tarball remains installable and executable by an outside consumer on the current native platform. The proof opens installed package resources through one bounded package-root-confined non-symlink boundary, byte-binds the installed launcher, selected platform binary, README, and complete CLI contract to their exact packed owner bytes, admits that contract before interpreting routes or presets, verifies npm exec --offline resolution through root help and one contract-owned multi-token help route, then uses the exact admitted npm launcher profile to prove exhaustive root-help to family to leaf-help closure, stack-preset vocabulary, every generated preset continuation, one re-executed self-continuation, and the first valid README input without network fallback or a registry-publication claim.",
|
|
66
66
|
"claimLevel": "blocking",
|
|
67
67
|
"riskClass": "medium",
|
|
68
68
|
"proofBindingRefs": [
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
{
|
|
144
144
|
"requirementId": "REQ-PROOFKIT-PACKAGE-006",
|
|
145
145
|
"ownerId": "proofkit.package-boundary",
|
|
146
|
-
"invariant": "Python/uv distribution is a platform wheel wrapper over the same Go CLI, with wheel-safe package metadata, wheel tags, embedded binary identity, exact wheel-set version, uniqueness, presence, and SHA closure
|
|
146
|
+
"invariant": "Python/uv distribution is a platform wheel wrapper over the same Go CLI, with wheel-safe package metadata, wheel tags, embedded binary identity, exact wheel-set version, uniqueness, presence, and SHA closure; the local consumer proof installs through an isolated offline no-dependency pip invocation, opens installed resources through one bounded package-root-confined non-symlink boundary, byte-binds and admits the exact embedded CLI contract plus executable before and after route execution, preserves POSIX exec process identity and signals, binds generated display and argv routes to the absolute active interpreter plus -m agentic_proofkit, re-executes one exact emitted self-continuation, proves the complete root-help to family-help to leaf-help chain and one exact emitted agent-route argv with npm absent from PATH, and verifies a marker-bounded README projection of the owned Python and platform matrix with explicit non-claims until PyPI publication.",
|
|
147
147
|
"claimLevel": "blocking",
|
|
148
148
|
"riskClass": "medium",
|
|
149
149
|
"proofBindingRefs": [
|
|
@@ -116,13 +116,15 @@ execution receipts, and merge policy.
|
|
|
116
116
|
caller-provided previous and next source snapshots so lifecycle changes are
|
|
117
117
|
monotonic, evidence-backed, package-boundary-stable, and repository-neutral.
|
|
118
118
|
- `REQ-PROOFKIT-SPEC-017`: capability map admission validates caller-owned
|
|
119
|
-
pre-spec observations under explicit code-baseline or code
|
|
119
|
+
pre-spec observations under explicit code-baseline or audit-from-code trust modes
|
|
120
120
|
and emits only bounded candidate requirements, bindings, or owner guidance.
|
|
121
121
|
- `REQ-PROOFKIT-SPEC-018`: an authored command-family catalog covers every
|
|
122
122
|
public CLI command exactly once, deterministically generates the private
|
|
123
|
-
runtime navigation projection,
|
|
124
|
-
|
|
125
|
-
|
|
123
|
+
runtime navigation projection, while one reusable bounded token grammar owns
|
|
124
|
+
native routing, the public machine contract, generated adapters, and installed
|
|
125
|
+
npm and wheel route admission. It adds root discovery and projects exact
|
|
126
|
+
stack-preset IDs into help and diagnostics while preserving existing help
|
|
127
|
+
invocation forms, process channels, no-input behavior, and leaf dispatch;
|
|
126
128
|
descriptor and help truth remains owned by `REQ-PROOFKIT-QUALITY-004`.
|
|
127
129
|
- `REQ-PROOFKIT-SPEC-019`: explicit catalogs compose content-bound semantic
|
|
128
130
|
schema-v2 context snapshots with exact expected-digest coverage through
|
|
@@ -168,6 +170,26 @@ execution receipts, and merge policy.
|
|
|
168
170
|
selected owner boundary without migrating current sources, exposing a new
|
|
169
171
|
public CLI, proving open-world absence of undeclared equivalent parsers, or
|
|
170
172
|
claiming that no future owner-approved grammar can be added.
|
|
173
|
+
- `REQ-PROOFKIT-SPEC-026`: agent-route v3 emits a deterministic 3072-byte
|
|
174
|
+
brief packet by default with one canonical action or typed blockers, exact
|
|
175
|
+
omission accounting, stable source-report identity, one top-level detail
|
|
176
|
+
access record, and explicit full-envelope retrieval without repeating policy
|
|
177
|
+
prose or promoting route guidance to authority.
|
|
178
|
+
- `REQ-PROOFKIT-SPEC-027`: the read-only `adopt plan` front door validates its
|
|
179
|
+
explicit trust intent, optional stack hint, repository root, and platform
|
|
180
|
+
before access, then composes only owner-admitted inventory and plan records.
|
|
181
|
+
- `REQ-PROOFKIT-SPEC-028`: repository inventory confines a fixed root catalog,
|
|
182
|
+
rejects unsafe file identities, enforces exact resource bounds, discards
|
|
183
|
+
unknown names, and emits one deterministic owner-re-admissible record.
|
|
184
|
+
- `REQ-PROOFKIT-SPEC-029`: adoption planning keeps stack observations separate
|
|
185
|
+
from trust, emits candidate-authoring tasks plus a digest-bound child guidance
|
|
186
|
+
reference, and never promotes inferred requirements or proof bindings.
|
|
187
|
+
- `REQ-PROOFKIT-SPEC-030`: adoption JSON and bounded text are deterministic
|
|
188
|
+
projections of one admitted plan, preserve authority non-claims, and apply
|
|
189
|
+
terminal styling only through an explicit presentation capability.
|
|
190
|
+
- `REQ-PROOFKIT-SPEC-031`: the adoption version edge binds exact ABI, command,
|
|
191
|
+
contract, generated-artifact, and release-change inventories while proving
|
|
192
|
+
that the retired `init` route has no remaining public owner.
|
|
171
193
|
|
|
172
194
|
## Non-Claims
|
|
173
195
|
|
|
@@ -467,7 +467,7 @@
|
|
|
467
467
|
{
|
|
468
468
|
"requirementId": "REQ-PROOFKIT-SPEC-018",
|
|
469
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, exposes one
|
|
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, exposes one root discovery route, and projects the exact stack-preset vocabulary from the authored CLI contract into generated runtime IDs, direct help, and invalid-ID diagnostics. One reusable command-route grammar owner defines canonical token syntax, separator, cardinality, and strict no-prefix ambiguity; the public CLI contract carries its exact machine projection, contract generation rejects drift from the native owner, generated adapters consume that owner, and installed npm and wheel verifiers independently admit the shipped projection before interpreting route-bearing help. Family navigation admits only opt-in 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
471
|
"claimLevel": "blocking",
|
|
472
472
|
"riskClass": "medium",
|
|
473
473
|
"proofBindingRefs": [
|
|
@@ -581,6 +581,84 @@
|
|
|
581
581
|
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
582
582
|
"deferral": null,
|
|
583
583
|
"updatePolicy": {"reviewOwnerId": "proofkit.spec-proof-core", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
584
|
+
},
|
|
585
|
+
{
|
|
586
|
+
"requirementId": "REQ-PROOFKIT-SPEC-026",
|
|
587
|
+
"ownerId": "proofkit.spec-proof-core",
|
|
588
|
+
"invariant": "Agent-route output contract v3 derives every report, brief packet, and full envelope from one fully admitted immutable route input, one admitted launcher profile, and one command-owned route report: route artifact refs in both available inputs and observed reports identify materialized caller-owned artifacts and never use the stdin transport sentinel; the nested report contract preserves the exact required route-report fields, schemaVersion 3, closed route-family vocabulary, guidance-to-selected-family relation, pre-suppression available-command count, and launcher profile; a bare --agent-envelope and explicit brief mode emit the same deterministic schema-v1 proofkit.agent-route.brief root while explicit full mode preserves the prior generic envelope; a routed brief selects exactly the first canonical nextCommands entry as its sole nextAction, retains its exact command and argv identity when the 3072-byte pretty stable-JSON bound permits, otherwise removes only inline argv and marks argvState detail_required, while every blocked state emits null nextAction; blockers are projected in deterministic unknown-goal, required-input, then sorted non-passed observed-report order, retain at most four typed entries without materializing omitted blocker maps, and report the exact omitted remainder; contextRefs refer to all and only caller-owned artifact operands of the selected command through resolvable source-report JSON pointers; one top-level detailAccess record binds the source report ID, stable digest, and launcher profile, provides exact report and full output-argument suffixes for replay with the original input and launcher context, and no per-item detail reference is added; omissionSummary exactly counts pre-suppression unselected available commands, source-omitted commands, and omitted blockers; fixed uniquely resolvable shipped requirement IDs replace repeated boundary-policy prose; the complete brief is at most 3072 bytes, and unsupported modes, invalid flag values, repeated single-value flags, or a detail mode without --agent-envelope fail before input is read. Reports and envelopes remain derived route guidance and never become requirement, proof, execution, merge, release, rollout, deployment, or readiness authority.",
|
|
589
|
+
"claimLevel": "blocking",
|
|
590
|
+
"riskClass": "high",
|
|
591
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
592
|
+
"nonClaimRefs": ["NC-PROOFKIT-SPEC-026"],
|
|
593
|
+
"nonClaims": ["The 3072-byte packet bound and stable source-report digest do not prove provider token consumption, semantic sufficiency, source freshness, command execution, native witness truth, or policy approval; detail retrieval requires the caller to retain the original admitted input and launcher context."],
|
|
594
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
595
|
+
"deferral": null,
|
|
596
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.spec-proof-core", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"requirementId": "REQ-PROOFKIT-SPEC-027",
|
|
600
|
+
"ownerId": "proofkit.spec-proof-core",
|
|
601
|
+
"invariant": "The public read-only adoption front door is routed only as adopt plan, requires one explicit repository root and one explicit fresh, code-baseline, or audit-from-code intent, keeps an optional stack preset orthogonal to source trust, validates every argument and platform support before filesystem access, and composes its result only from an owner-admitted repository inventory and adoption plan without writing files, executing commands, or promoting candidate artifacts.",
|
|
602
|
+
"claimLevel": "blocking",
|
|
603
|
+
"riskClass": "high",
|
|
604
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
605
|
+
"nonClaimRefs": ["NC-PROOFKIT-SPEC-027"],
|
|
606
|
+
"nonClaims": ["The adoption front door does not write files, execute commands or native witnesses, promote candidate artifacts, authenticate freshness, approve merge or release, or establish rollout or production readiness."],
|
|
607
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
608
|
+
"deferral": null,
|
|
609
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.spec-proof-core", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
610
|
+
},
|
|
611
|
+
{
|
|
612
|
+
"requirementId": "REQ-PROOFKIT-SPEC-028",
|
|
613
|
+
"ownerId": "proofkit.spec-proof-core",
|
|
614
|
+
"invariant": "The adoption repository-inventory owner scans only a fixed root-file catalog through a confined root handle, fails before filesystem access on platforms without its nonblocking no-follow open boundary, rejects recognized symlink or non-regular substitutions, preflights root cardinality and observed file sizes before content reads, enforces per-file, actual aggregate-read, and output byte bounds, hashes only recognized regular UTF-8 file bytes, discards unrecognized root entry names immediately after bounded classification, and emits one deterministic identity-bound output that re-admits unchanged through the same owner.",
|
|
615
|
+
"claimLevel": "blocking",
|
|
616
|
+
"riskClass": "high",
|
|
617
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
618
|
+
"nonClaimRefs": ["NC-PROOFKIT-SPEC-028"],
|
|
619
|
+
"nonClaims": ["Repository inventory does not inspect arbitrary source semantics, infer repository intent or stack identity, authenticate checkout freshness, or establish code correctness."],
|
|
620
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
621
|
+
"deferral": null,
|
|
622
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.spec-proof-core", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
623
|
+
},
|
|
624
|
+
{
|
|
625
|
+
"requirementId": "REQ-PROOFKIT-SPEC-029",
|
|
626
|
+
"ownerId": "proofkit.spec-proof-core",
|
|
627
|
+
"invariant": "The adoption-plan owner consumes one fully admitted repository inventory, binds deterministic plan and inventory identities, emits only candidate-authoring tasks and one child-owned native-evidence guidance reference whose digest binds the complete current guidance, records code-baseline solely as an explicit caller declaration, keeps every stack hint observational so it cannot change trust or task semantics, and re-admits its output unchanged without synthesizing requirement meaning or proof bindings.",
|
|
628
|
+
"claimLevel": "blocking",
|
|
629
|
+
"riskClass": "high",
|
|
630
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
631
|
+
"nonClaimRefs": ["NC-PROOFKIT-SPEC-029"],
|
|
632
|
+
"nonClaims": ["The adoption plan does not make candidate requirements, contracts, bindings, or tests authoritative and does not authenticate evidence, execute witnesses, or approve a change."],
|
|
633
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
634
|
+
"deferral": null,
|
|
635
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.spec-proof-core", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
"requirementId": "REQ-PROOFKIT-SPEC-030",
|
|
639
|
+
"ownerId": "proofkit.spec-proof-core",
|
|
640
|
+
"invariant": "Adoption-plan JSON and bounded text are deterministic projections of the same fully admitted typed plan, text preserves every authority non-claim and identity needed to recover the machine record, output and text byte bounds are exact, and terminal styling occurs only when explicitly requested or supported by the caller-provided presentation capability.",
|
|
641
|
+
"claimLevel": "blocking",
|
|
642
|
+
"riskClass": "medium",
|
|
643
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
644
|
+
"nonClaimRefs": ["NC-PROOFKIT-SPEC-030"],
|
|
645
|
+
"nonClaims": ["The text projection is a human view, not requirement, proof, execution, merge, release, rollout, deployment, or readiness authority."],
|
|
646
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
647
|
+
"deferral": null,
|
|
648
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.spec-proof-core", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
649
|
+
},
|
|
650
|
+
{
|
|
651
|
+
"requirementId": "REQ-PROOFKIT-SPEC-031",
|
|
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.",
|
|
654
|
+
"claimLevel": "blocking",
|
|
655
|
+
"riskClass": "high",
|
|
656
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
657
|
+
"nonClaimRefs": ["NC-PROOFKIT-SPEC-031"],
|
|
658
|
+
"nonClaims": ["A source-bound version edge does not authenticate Git history, registry publication, provider ingestion, consumer migration, rollout, or production readiness."],
|
|
659
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
660
|
+
"deferral": null,
|
|
661
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.spec-proof-core", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
584
662
|
}
|
|
585
663
|
],
|
|
586
664
|
"nonClaims": [
|
|
@@ -124,14 +124,15 @@ vulnerability absence, or consumer rollout safety by itself.
|
|
|
124
124
|
identity tuple with the exact version-tag workflow ref for workflow-published
|
|
125
125
|
npm and PyPI channels and release closeout rejects publication claims without
|
|
126
126
|
that tuple.
|
|
127
|
-
- `REQ-PROOFKIT-QUALITY-019`: installed package smoke proof
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
127
|
+
- `REQ-PROOFKIT-QUALITY-019`: installed package smoke proof byte-binds the
|
|
128
|
+
launcher and platform binary, proves npm offline package resolution plus one
|
|
129
|
+
contract-owned multi-token argv route, then uses the exact admitted npm
|
|
130
|
+
launcher profile to exhaustively traverse displayed family and leaf-help routes,
|
|
131
|
+
bind installed invocations to ordered bare Usage tokens, require every exact
|
|
132
|
+
generated preset command to retain the offline npm prefix, re-execute one
|
|
133
|
+
emitted continuation, reach the first valid README input, execute one
|
|
134
|
+
successful JSON report command and one failed-report command, apply bounded
|
|
135
|
+
expansion-free literal parsing to emitted and README argv, and verify the current
|
|
135
136
|
`json-report-cli-adapter-source` generated source artifact from the
|
|
136
137
|
package-managed binary, including report identity, state, exit code, stdout,
|
|
137
138
|
stderr discipline, generated-source hash, owner-source parity, and exact
|
|
@@ -129,7 +129,7 @@
|
|
|
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, descriptor-owned command proof-route candidates, and a separate execution-backed command-oracle ledger. The ledger must bind every candidate commandRef, selector, concrete negative case, falsification event, assertion oracle, expected public outcome, and owner invariant to one immutable exact-file materialized source snapshot; execute exactly the selected active Go tests through canonically ordered package-scoped argv vectors that cannot select same-named non-candidate tests in another package; require unique package start and pass events, unique test run and pass events, owner-reserved cooperative attributes for every candidate, bounded cancellable subprocesses, and immediate process-group termination on output-limit violation; reject missing, unknown, duplicate, skipped, failed, reordered, context-invalid, spoofed-output, cross-test, source-drift, producer-unreachable candidate projections, and correlated identity substitutions; publish and invalidate local diagnostic and metrics artifacts atomically through repository-confined non-symlink destinations; revalidate current candidate, corpus, runtime, and source identities before and after artifact publication; and fail closed when any public command lacks execution-backed evidence. An independently authored versioned counterfeit corpus must bijectively cover every shipped evidence class, required policy axis, record coordinate, and declared substitution axis with positive controls and checked-in exact expected decisions evaluated through the production admission and lifecycle owners rather than a generated expectation registry. Static route metadata, prose, legacy source markers, test existence, and failure-capable syntax remain proof-route candidates and cannot satisfy the execution-backed closure.",
|
|
132
|
+
"invariant": "Coverage metrics report requirement, binding, witness, CLI inventory linkage, descriptor-owned command proof-route candidates, and a separate execution-backed command-oracle ledger. The ledger must bind every candidate commandRef, selector, concrete negative case, falsification event, assertion oracle, expected public outcome, and owner invariant to one immutable exact-file materialized source snapshot; execute exactly the selected active Go tests through canonically ordered package-scoped argv vectors that cannot select same-named non-candidate tests in another package; require unique package start and pass events, unique test run and pass events, owner-reserved cooperative attributes for every candidate, bounded cancellable subprocesses, and immediate process-group termination on output-limit violation; reject missing, unknown, duplicate, skipped, failed, reordered, context-invalid, spoofed-output, cross-test, source-drift, producer-unreachable candidate projections, and correlated identity substitutions; publish and invalidate local diagnostic and metrics artifacts atomically through repository-confined non-symlink destinations; on supported release platforms, open retained input artifacts descriptor-first through a nonblocking no-follow boundary before type, identity, and exact byte-limit checks so named pipes, symlinks, path substitution, and post-read mutation cannot block or escape, and fail closed instead of using a weaker file-open path elsewhere; revalidate current candidate, corpus, runtime, and source identities before and after artifact publication; and fail closed when any public command lacks execution-backed evidence. An independently authored versioned counterfeit corpus must bijectively cover every shipped evidence class, required policy axis, record coordinate, and declared substitution axis with positive controls and checked-in exact expected decisions evaluated through the production admission and lifecycle owners rather than a generated expectation registry. Static route metadata, prose, legacy source markers, test existence, and failure-capable syntax remain proof-route candidates and cannot satisfy the execution-backed closure.",
|
|
133
133
|
"claimLevel": "blocking",
|
|
134
134
|
"riskClass": "medium",
|
|
135
135
|
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
@@ -246,7 +246,7 @@
|
|
|
246
246
|
{
|
|
247
247
|
"requirementId": "REQ-PROOFKIT-QUALITY-019",
|
|
248
248
|
"ownerId": "proofkit.supply-chain-quality",
|
|
249
|
-
"invariant": "Installed package smoke proof builds the current product, installs the exact local tarball, and
|
|
249
|
+
"invariant": "Installed package smoke proof builds the current product, installs the exact local tarball, byte-compares the packed launcher and platform binary with their source-built artifacts, proves npm exec --offline package resolution at root help, and proves ordered multi-token argv forwarding through one contract-owned multi-token help route. It then executes the installed platform binary under the exact admitted npm launcher profile to verify every displayed family and leaf-help transition, with each installed invocation bound to its ordered bare Usage command token; verifies exact stack-preset vocabulary; requires every exact generated preset command string to retain the offline npm prefix; re-executes one emitted self-continuation; and continues to exactly one marker-bounded README command and JSON first input, with every emitted or README argv admitted through bounded expansion-free literal shell-word semantics before execution. It also verifies that the package-managed binary can process explicit JSON input for one successful report command and one failed-report command and emit the current json-report-cli-adapter-source artifact with source bytes equal to the generator owner source, preserving report kind, report id, state, explicit input counts, exit code, stdout JSON, generated-source hash, and stderr channel discipline without admitting unlisted consumer working-directory files.",
|
|
250
250
|
"claimLevel": "blocking",
|
|
251
251
|
"riskClass": "high",
|
|
252
252
|
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
@@ -298,7 +298,7 @@
|
|
|
298
298
|
{
|
|
299
299
|
"requirementId": "REQ-PROOFKIT-QUALITY-023",
|
|
300
300
|
"ownerId": "proofkit.supply-chain-quality",
|
|
301
|
-
"invariant": "Every npm platform-binary tar entry and every Python wheel independently binds its embedded executable bytes to the same release-platform binary,
|
|
301
|
+
"invariant": "Every npm platform-binary tar entry and every Python wheel independently binds its embedded executable bytes to the same release-platform binary, while an independently asserted complete OS/architecture-to-suffix bijection proves that every launcher target selects exactly one owned platform payload. Release metadata generation admits every final npm tarball, wheel, and SBOM exactly once into one bounded regular non-symlink immutable snapshot, derives npm pack SHA-1 and SRI claims, final carrier decoding, direct chunked binary equality, wheel and embedded-binary digests, release checksums, and SBOM-subject checksums only from that epoch, requires every npm pack and Python package-set digest claim to equal those decoded bytes, and revalidates every source identity before metadata persistence without relying on a mutable intermediate dist directory or claimed digests; release closeout independently reopens every declared repository-confined npm tarball and wheel through bounded identity-checked non-symlink handles, recomputes npm SHA-1 and SRI plus both wheel and embedded-binary digests, and rejects unsafe or duplicate archive topology before accepting package evidence; both tar and wheel decoders reject duplicate entry names, preflight bounded archive and entry cardinality plus compressed and uncompressed sizes before decompression, cap every decoded payload, and require exact release-platform closure; the wheel-set verifier independently rejects version drift, duplicate identities, missing files, and SHA drift; each wheel independently decodes Darwin Mach-O bytes so an advertised macOS platform minimum is never lower than the executable minimum, uses Core Metadata 2.4 License-Expression and License-File fields, carries an exact repository LICENSE copy under the wheel licenses directory, and closes every payload entry through RECORD.",
|
|
302
302
|
"claimLevel": "blocking",
|
|
303
303
|
"riskClass": "critical",
|
|
304
304
|
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
@@ -337,7 +337,7 @@
|
|
|
337
337
|
{
|
|
338
338
|
"requirementId": "REQ-PROOFKIT-QUALITY-026",
|
|
339
339
|
"ownerId": "proofkit.supply-chain-quality",
|
|
340
|
-
"invariant": "Every repository-owned stable JSON implementation used by a public or retained-evidence path accepts only Unicode
|
|
340
|
+
"invariant": "Every repository-owned stable JSON implementation used by a public or retained-evidence path accepts only Unicode 17.0.0 scalar strings, rejecting malformed UTF-8 byte strings and unpaired UTF-16 surrogates as applicable, emits the same deterministic semantic-preserving JSON escapes for the pinned Cc, Cf, Zl, and Zp range table, preserves ordinary decoded values, and remains byte-compatible with one versioned owner-authored literal range corpus whose Go projection is exhaustively checked against the Unicode 17.0.0 category oracle and whose JavaScript and generated TypeScript projections are exhaustively checked over the scalar domain.",
|
|
341
341
|
"claimLevel": "blocking",
|
|
342
342
|
"riskClass": "high",
|
|
343
343
|
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
@@ -350,7 +350,7 @@
|
|
|
350
350
|
{
|
|
351
351
|
"requirementId": "REQ-PROOFKIT-QUALITY-027",
|
|
352
352
|
"ownerId": "proofkit.supply-chain-quality",
|
|
353
|
-
"invariant": "Every report-visible diagnostic and structural-text sanitizer accepts only Unicode
|
|
353
|
+
"invariant": "Every report-visible diagnostic and structural-text sanitizer accepts only Unicode 17.0.0 scalar strings, recognizes one explicit Unicode whitespace alphabet plus the pinned Cc, Cf, Zl, and Zp range table and contiguous or control-split secret-shaped values through one shared taxonomy, replaces any rejected caller-owned value as a whole with one fixed command-owned label without emitting its bytes, code points, prefix, suffix, or caller-controlled replacement text, and bounds admitted diagnostic projection to 512 Unicode scalars; every Go and JavaScript repository tool entrypoint routes dynamic errors through that owner, failed child-process stderr that enters this diagnostic boundary is captured under a fixed byte limit before whole-value sanitization while successful child stderr is not projected, direct child stderr wiring is rejected, and the installed-carrier smoke adapter bounds stdout, stderr, time, and cleanup; on supported Unix hosts, a successful installed-carrier result requires confirmed process-group absence after the command parent is reaped, while cleanup timeout or probe failure is an explicit failed operation rather than a successful terminal result.",
|
|
354
354
|
"claimLevel": "blocking",
|
|
355
355
|
"riskClass": "high",
|
|
356
356
|
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@research-engineering/agentic-proofkit",
|
|
3
3
|
"description": "Reusable proof profile, report, graph, and witness-planning primitives.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.7.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"sideEffects": false,
|
|
8
|
-
"packageManager": "npm@
|
|
8
|
+
"packageManager": "npm@12.0.2",
|
|
9
9
|
"publishConfig": {
|
|
10
10
|
"access": "public",
|
|
11
11
|
"registry": "https://registry.npmjs.org"
|
|
@@ -74,8 +74,8 @@
|
|
|
74
74
|
"x64"
|
|
75
75
|
],
|
|
76
76
|
"devDependencies": {
|
|
77
|
-
"@playwright/test": "1.62.
|
|
78
|
-
"axe-core": "4.
|
|
77
|
+
"@playwright/test": "1.62.1",
|
|
78
|
+
"axe-core": "4.13.0",
|
|
79
79
|
"typescript": "7.0.2"
|
|
80
80
|
}
|
|
81
81
|
}
|