@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 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. The first loop is:
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 12 or later on arm64 or x64.
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 two
148
- different starting modes:
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 both modes, generated records remain candidates until the consuming
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 init
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
- | Unknown starting point | `init` | Stop before reading repository files, writing files, or treating route guidance as proof |
195
- | Fresh repository with no specs and no extracted observations | `init --preset fresh`, then `scaffold-project-structure` or `gradual-adoption-bootstrap` | Stop before writing files or inventing requirement meaning |
196
- | Current code is trusted as the initial contract | `capability-map-admission` with `trustMode: "code_baseline"` | Stop before treating generated seeds as admitted requirements |
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 |
@@ -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 | `init`, `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` | adoption intent, aggregate adoption contract envelope, checklist facts, target paths, owner routes, caller-extracted stale authority vocabulary facts, explicit pre-spec capability observations, pilot records, stack preset id, optional init preset id | dry-run route selection, 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, pilot shape admission | final files, final requirements, rollout policy, text extraction from files, code observation extraction, pilot truth | selected child output, plan, report, seed packet, or agent envelope |
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 name or help flag | built-in command catalog and help text routing | command selection, semantic proof, freshness, merge policy | text help only |
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? | `adoption-workflow-plan` or `scaffold-project-structure`; use `adoption-contract-envelope` when one caller-owned aggregate adoption file already exists. | They route scenario steps and first-module starter records without scanning the repository; the aggregate route removes consumer-local root-key projection scripts without owning rollout policy. |
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 executable routing and
98
- `agent-route --agent-envelope` when a bounded work packet is needed. The command
99
- returns deterministic JSON from explicit caller-owned facts; the envelope is an
100
- opt-in derived projection over the same report. This map explains the route
101
- families without becoming an execution, freshness, or merge decision.
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 bounded envelope
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. | `init`, or `init --preset` with `fresh`, `code-baseline`, `code-audit`, `legacy`, or `change-set` | Treat output as dry-run route guidance only. Stop before scanning, writing files, or making requirements authoritative. |
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
- packet from explicit current state. Use `agent-route --agent-envelope` when
158
- the agent needs compact context refs, blockers, command refs, and non-claims
159
- instead of a plain route report. Treat `blocked_*` states as stop signals,
160
- not as permission to guess missing inputs. `knownChangedPaths` are
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. Use agent-envelope output only when a coding agent needs bounded context;
164
- do not expand whole proof graphs into chat.
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 pure
24
- projections with no filesystem, Git, process, environment, clock, random,
25
- network, container, or provider dependency. No setup facade, agent-route extension,
26
- external prompt resource, persisted experiment state, or second source codec is
27
- introduced.
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 extension.
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 the capability adds no setup facade, ambient scan, hidden repository policy, consumer-specific route, or agent-route extension.",
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 through the exact offline onboarding trace
43
- on the current native platform; every generated preset command retains the
44
- offline npm resolver and one exact emitted continuation is re-executed
45
- without claiming registry publication.
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, with a continuous root-help to family to stack-preset to every exact generated preset continuation and first-valid-input onboarding trace, including successful re-execution of one emitted self-continuation without network fallback, without claiming registry publication.",
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, local install smoke proof, POSIX exec process-identity and signal preservation, generated display and argv routes bound to the absolute active interpreter plus -m agentic_proofkit, successful direct-argv re-execution of an exact emitted self-continuation, the complete root-help to family-help to leaf-help chain, and an exact emitted agent-route argv with npm absent from PATH, and a marker-bounded README projection of the owned Python and platform matrix with explicit non-claims until PyPI publication.",
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-audit trust modes
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, adds token-bounded root discovery, and projects
124
- exact stack-preset IDs into help and diagnostics while preserving existing
125
- help invocation forms, process channels, no-input behavior, and leaf dispatch;
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 token-bounded 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; it 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.",
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 verifies one
128
- continuous offline route through every displayed family and leaf-help
129
- transition, binds each installed invocation to its ordered exact bare Usage
130
- command token, requires every exact generated preset command to retain the
131
- offline npm prefix, re-executes one emitted continuation, reaches the first
132
- valid README input, executes one successful JSON report command and one
133
- failed-report command, applies bounded expansion-free literal parsing to
134
- emitted and README argv, and verifies the current
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 verifies a continuous npm exec --offline route from root help through every displayed family and leaf-help transition, with each installed invocation exactly bound to its ordered bare Usage command token; it then 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 direct 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.",
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, and 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 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.",
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 15.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 15.0.0 category oracle and whose JavaScript and generated TypeScript projections are exhaustively checked over the scalar domain.",
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 15.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.",
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.5.1",
4
+ "version": "0.7.0",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "sideEffects": false,
8
- "packageManager": "npm@11.18.0",
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.0",
78
- "axe-core": "4.12.1",
77
+ "@playwright/test": "1.62.1",
78
+ "axe-core": "4.13.0",
79
79
  "typescript": "7.0.2"
80
80
  }
81
81
  }