@research-engineering/agentic-proofkit 0.6.0 → 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
@@ -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. |
@@ -128,10 +128,10 @@ Semantic context routes are `requirement-context-compose`,
128
128
 
129
129
  | State or goal | Next Proofkit route | Stop or escalation condition |
130
130
  |---|---|---|
131
- | 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. |
132
132
  | An agent needs a bounded, deterministic stage transition for an engineering change. | `change-workflow-plan` selects the optional built-in `proofkit.reviewed-change.v1` profile; use `--agent-envelope` for the compact work packet and `native-evidence-guidance` when the consuming repository has not yet materialized repository-specific evidence instructions. | Supply only explicit current checkpoint, completed stages, and admitted context references. Apply conditional guidance slots only when their applicability class matches a declared consumer mechanism. Stop before treating the profile, plan, or guidance as repository policy or as proof that a stage ran, evidence exists, review passed, or merge/release is authorized. |
133
133
  | No admitted spec/profile exists and the caller has explicit capability observations. | `capability-map-admission`; use `trustMode: "code_baseline"` only when maintainers intentionally freeze current code, otherwise use `trustMode: "audit_from_code"`. | Stop before treating seeds as stable requirements. The consumer owns observation extraction, materialization, requirement meaning, and proof adequacy. |
134
- | 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. |
135
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. |
136
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. |
137
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. |
@@ -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
@@ -173,6 +175,21 @@ execution receipts, and merge policy.
173
175
  omission accounting, stable source-report identity, one top-level detail
174
176
  access record, and explicit full-envelope retrieval without repeating policy
175
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.
176
193
 
177
194
  ## Non-Claims
178
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": [
@@ -594,6 +594,71 @@
594
594
  "lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
595
595
  "deferral": null,
596
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}
597
662
  }
598
663
  ],
599
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"],
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@research-engineering/agentic-proofkit",
3
3
  "description": "Reusable proof profile, report, graph, and witness-planning primitives.",
4
- "version": "0.6.0",
4
+ "version": "0.7.0",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "sideEffects": false,