@research-engineering/agentic-proofkit 0.8.0 → 0.10.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 +61 -0
- package/NON_CLAIMS.md +18 -0
- package/dist/platform/darwin-arm64/agentic-proofkit +0 -0
- package/dist/platform/darwin-x64/agentic-proofkit +0 -0
- package/dist/platform/linux-arm64/agentic-proofkit +0 -0
- package/dist/platform/linux-x64/agentic-proofkit +0 -0
- package/docs/proofkit-contract-map.md +8 -2
- package/docs/specs/proofkit-agent-workflow/overview.md +74 -6
- package/docs/specs/proofkit-agent-workflow/requirements.v1.json +107 -0
- package/docs/specs/proofkit-spec-proof-core/overview.md +6 -0
- package/docs/specs/proofkit-spec-proof-core/requirements.v1.json +14 -1
- package/package.json +1 -1
- package/proofkit/cli-contract.v2.json +711 -33
- package/proofkit/command-families.v1.json +18 -0
- package/proofkit/requirement-bindings.json +937 -0
package/ADOPTION.md
CHANGED
|
@@ -196,6 +196,67 @@ the proof binding already contains safe witness command facts and the caller
|
|
|
196
196
|
provides witness command vocabulary. The projection avoids duplicated command
|
|
197
197
|
identity; native execution and command freshness remain caller-owned.
|
|
198
198
|
|
|
199
|
+
## Portable Agent Bootstrap
|
|
200
|
+
|
|
201
|
+
`REQ-PROOFKIT-WORKFLOW-016` through `REQ-PROOFKIT-WORKFLOW-018` own the bounded
|
|
202
|
+
Phase5A generation/check contract. Use `integration source --tool codex` or
|
|
203
|
+
`integration source --tool claude` through a repository-approved, already
|
|
204
|
+
installed launcher. JSON is the default and includes the exact generated
|
|
205
|
+
content, descriptor-owned target path, materialization identity, content and
|
|
206
|
+
consumed-capability digests, and separate metadata/body byte counts. Text is
|
|
207
|
+
the exact file content. The limits are 512 metadata bytes and 4096 body bytes,
|
|
208
|
+
not tokenizer-specific token counts.
|
|
209
|
+
|
|
210
|
+
The fixed repository paths are `.agents/skills/agentic-proofkit/SKILL.md` for
|
|
211
|
+
`codex` and `.claude/skills/agentic-proofkit/SKILL.md` for `claude`. Neither tool
|
|
212
|
+
is selected implicitly; selecting one does not inspect the other location.
|
|
213
|
+
The generator reads no repository files, writes nothing, and has no `--output`
|
|
214
|
+
or install option. Generated instructions contain no hooks or permission grants
|
|
215
|
+
and delegate policy, planning, and evidence semantics to current owners.
|
|
216
|
+
Resolve the approved installed launcher for each session. An absent or
|
|
217
|
+
ambiguous binding needs an owner decision, not an install, network fallback,
|
|
218
|
+
package-manager default, or persisted machine-local executable path.
|
|
219
|
+
|
|
220
|
+
For one manual export, first inspect the explicit repository root and every
|
|
221
|
+
component of the selected path. Stop on symlinks, aliases, unknown ownership,
|
|
222
|
+
local edits, or an existing target; do not overwrite it. The example below
|
|
223
|
+
assumes the owner has approved the npm launcher, inspected and prepared the
|
|
224
|
+
ordinary parent directories, and ensured no concurrent writer can replace
|
|
225
|
+
them. Replace the example absolute root with that inspected root. The shell,
|
|
226
|
+
not Proofkit, creates the file; noclobber protects an existing final file but
|
|
227
|
+
does not establish race-free parent traversal or transactional installation.
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
(set -o noclobber; npm exec --offline -- agentic-proofkit integration source --tool codex --format text > /absolute/inspected/repository/.agents/skills/agentic-proofkit/SKILL.md)
|
|
231
|
+
npm exec --offline -- agentic-proofkit integration check --tool codex --repo-root /absolute/inspected/repository
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Check a failed export before treating its output as usable: shell redirection
|
|
235
|
+
may leave an empty or partial new file if generation or transport fails.
|
|
236
|
+
Resolve such a file manually under repository ownership; check never repairs it.
|
|
237
|
+
The checker admits flags before I/O and reads only the selected fixed path
|
|
238
|
+
through an application-write-free confined lease with bounded reobservation.
|
|
239
|
+
Exit 0 and `current` mean exact generated-byte equality; exit 2 reports
|
|
240
|
+
`missing`, `stale`, or `invalid`; exit 1 reports an invocation or operational
|
|
241
|
+
error, including denied reads, ambiguous paths, observed changes, cancellation,
|
|
242
|
+
or cleanup failure. It never prints observed bytes, their digest, or caller
|
|
243
|
+
root paths. Source exits 0 on successful generation and 1 on error.
|
|
244
|
+
|
|
245
|
+
Generated identity binds the shared template, selected descriptor, and exact
|
|
246
|
+
consumed registered public invocation contracts. Package version is absent
|
|
247
|
+
from the generated bytes; version-only or unrelated-command changes preserve
|
|
248
|
+
identity when consumed projections remain unchanged. Shared native source
|
|
249
|
+
digests may conservatively invalidate freshness. This is materialization
|
|
250
|
+
freshness, not proof of every transitive runtime behavior.
|
|
251
|
+
|
|
252
|
+
Phase5B managed install/update/remove remains open. Manual export is not an
|
|
253
|
+
installer, rollback protocol, or proof of host activation. Installed npm/Python
|
|
254
|
+
integration proof requires actual carrier execution; source-only tests do not
|
|
255
|
+
discharge it. Native-host file discovery, body loading, and approved-launcher calls
|
|
256
|
+
are separate observations requiring isolated sessions and absent/altered-file
|
|
257
|
+
controls; a prompt directly requesting CLI execution is not skill-use evidence.
|
|
258
|
+
Removing a file does not revoke instructions already loaded into host context.
|
|
259
|
+
|
|
199
260
|
## Requirement, Contract, And Test Order
|
|
200
261
|
|
|
201
262
|
The durable semantic source is the repository-owned requirement package:
|
package/NON_CLAIMS.md
CHANGED
|
@@ -36,6 +36,24 @@ This repository state does not claim:
|
|
|
36
36
|
Consuming repositories must keep their own specifications, proof bindings,
|
|
37
37
|
native witnesses, CI gates, rollback policy, and rollout decisions.
|
|
38
38
|
|
|
39
|
+
Phase5A integration source/check implements only bounded portable generation
|
|
40
|
+
and read-only generated-byte freshness. It does not install, update, remove,
|
|
41
|
+
repair, activate host instructions, grant tool permissions, or authorize native
|
|
42
|
+
execution. Phase5B managed lifecycle remains open; manual shell export does not
|
|
43
|
+
close it. `current` neither proves semantic full proof nor guarantees stability
|
|
44
|
+
after return. Consumed registered-contract identity is not complete transitive
|
|
45
|
+
native-semantic identity, and byte budgets are not token counts.
|
|
46
|
+
|
|
47
|
+
Declared witness routes do not prove execution. Installed npm/Python integration
|
|
48
|
+
smokes and final frozen-tree closure require actual execution against the named
|
|
49
|
+
source and artifacts. Native-host discovery, body loading, and approved-launcher
|
|
50
|
+
invocation require separate isolated evidence; direct CLI calls cannot prove
|
|
51
|
+
skill use. Removing an on-disk file does not revoke already-loaded instructions.
|
|
52
|
+
Read-only checks do not suppress filesystem-owned access metadata updates or
|
|
53
|
+
exclude uncooperative writers. Cancellation after the final pre-emission check
|
|
54
|
+
cannot retract bytes accepted by an external stdout writer, and prefix-accepting
|
|
55
|
+
transport failure does not imply an atomic sink.
|
|
56
|
+
|
|
39
57
|
Reference infrastructure boundary:
|
|
40
58
|
|
|
41
59
|
```text
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -10,6 +10,8 @@ This map helps consuming repositories choose the smallest Proofkit CLI command
|
|
|
10
10
|
or JSON contract without loading the full README or source tree. It is not an
|
|
11
11
|
exhaustive schema reference. The canonical command inventory is
|
|
12
12
|
`proofkit/cli-contract.v2.json`.
|
|
13
|
+
Its `commandRouteGrammar.omittedRoutePolicy` field owns how consumers expand a
|
|
14
|
+
command record that omits an explicit `route`.
|
|
13
15
|
|
|
14
16
|
Formal rule:
|
|
15
17
|
|
|
@@ -39,7 +41,9 @@ owner boundaries. It is not a second command-family inventory.
|
|
|
39
41
|
|
|
40
42
|
| Family | Main commands | Caller provides | Proofkit owns | Consumer owns | Output authority |
|
|
41
43
|
|---|---|---|---|---|---|
|
|
42
|
-
| Agent
|
|
44
|
+
| Agent integration generation/check | `integration source`, `integration check` | explicit `claude` or `codex` tool; explicit repository root for check only | one portable bounded bootstrap, exact consumed registered-contract identity, descriptor-owned path, and confined read-only generated-byte freshness | launcher admission, manual materialization, instruction ownership, host discovery/activation, permissions, native verification, and any future managed lifecycle | generated source or missing/current/stale/invalid freshness report; neither is installation or execution authority |
|
|
45
|
+
| Project state navigation | `status`, `next` | explicit repository root | bounded transaction-first materialized-project inspection, normalized observation identity, deterministic project-state classification, and one non-executable next action; admitted in-bound records bind exact content digests, while unread out-of-bound records intentionally identify only their invalid class | repository policy, byte identity for unread out-of-bound records, witness execution, receipt trust/currentness/scope, merge, release, deployment, rollout, and production readiness | project-status report, next-action packet, or bounded text projection |
|
|
46
|
+
| Agent workflow planning | `change 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
47
|
| Adoption and scaffolding | `adopt plan`, `adopt materialize plan`, `adopt materialize apply`, `adopt materialize recover`, `repository-inventory`, `adoption-contract-envelope`, `adoption-workflow-plan`, `adoption-checklist`, `adoption-doctor`, `gradual-adoption`, `gradual-adoption-bootstrap`, `gradual-adoption-guidance`, `capability-map-admission`, `pilot-admission`, `scaffold-profile-plan`, `scaffold-project-structure`, `stack-preset` | explicit repository root, explicit fresh/code-baseline/audit-from-code intent, optional stack hint, owner-reviewed candidate packet, expected transaction and desired-state identities, recovery action, aggregate adoption contract envelope, checklist facts, target paths, owner routes, caller-extracted stale authority vocabulary facts, explicit pre-spec capability observations, and pilot records | bounded fixed-catalog root inventory, candidate-only front-door tasks, owner-closed read-only materialization plans, confined transactional apply and recovery receipts, aggregate contract-envelope admission, deterministic starter plans, checklist/report admission, bounded guidance envelopes, dry-run manifests, pre-spec trust-mode admission, adoption gap and stale-authority classification, and pilot shape admission | stack selection, arbitrary source inspection, candidate review, final requirement meaning, proof adequacy, rollout policy, text extraction, code observation extraction, and pilot truth | inventory, candidate-only plan, transaction-bound materialization plan or receipt, selected child output, report, seed packet, or agent envelope |
|
|
44
48
|
| 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
49
|
| 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 |
|
|
@@ -128,8 +132,10 @@ Semantic context routes are `requirement-context-compose`,
|
|
|
128
132
|
|
|
129
133
|
| State or goal | Next Proofkit route | Stop or escalation condition |
|
|
130
134
|
|---|---|---|
|
|
135
|
+
| A repository owner requests a portable Proofkit bootstrap or its exact-byte freshness. | `integration source --tool <tool>` generates JSON or exact file bytes with `--format text`; `integration check --tool <tool> --repo-root <caller-selected-root>` checks only the selected fixed path. Select `claude` or `codex` explicitly. | Source writes nothing; neither route accepts `--output` or install. Source exits 0/1 for success/error; check exits 0 for current, 2 for missing/stale/invalid, and 1 for invocation or operation error. Current proves only generated-byte equality. Use `ADOPTION.md` for inspected manual export; Phase5B installation/update/removal and host activation remain open. |
|
|
136
|
+
| The repository may already contain a materialized Proofkit project. | `status --repo-root <caller-selected-root>` for the full bounded classification or `next --repo-root <caller-selected-root>` for its single action projection. | Treat `verification_required` as a request to run repository-owned verification, never as completion or approval. Stop on blocked or recovery-required states; the packet does not execute its route or own policy. |
|
|
131
137
|
| 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
|
-
| An agent needs a bounded, deterministic stage transition for an engineering change. | `change
|
|
138
|
+
| An agent needs a bounded, deterministic stage transition for an engineering change. | `change 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
139
|
| 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
140
|
| 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
141
|
| Owner-reviewed candidate requirement sources, proof bindings, and test inventory are ready for repository materialization. | Use command ID `adopt-materialize-plan` through route `adopt materialize plan --input <candidate-packet> --repo-root <caller-selected-root>`, review the exact transaction and desired-state identities, then use command ID `adopt-materialize-apply` through route `adopt materialize apply` with both expected identities. Use `adopt materialize recover` only for the exact observed transaction and state-compatible `resume` or `rollback` action. | Stop on stale state, unknown ownership, path-role collision, pending transaction, identity mismatch, or recovery-required output. A plan or receipt does not prove requirement meaning, witness truth, proof adequacy, merge approval, rollout, or production readiness. |
|
|
@@ -7,7 +7,7 @@ witnesses, merge, release, rollout, or production-readiness decisions.
|
|
|
7
7
|
|
|
8
8
|
The public capability is deliberately small:
|
|
9
9
|
|
|
10
|
-
1. `change
|
|
10
|
+
1. `change plan` admits explicit JSON and projects one next action for
|
|
11
11
|
the optional built-in profile `proofkit.reviewed-change.v1`, whose ordered
|
|
12
12
|
stages are `architecture`, `design`, `implementation_plan`,
|
|
13
13
|
`implementation`, `verification`, `pull_request`, and `closeout`.
|
|
@@ -19,12 +19,24 @@ The public capability is deliberately small:
|
|
|
19
19
|
the consuming witness declares the named mechanism.
|
|
20
20
|
3. Existing descriptors, dispatch, command families, root-shape CLI contracts,
|
|
21
21
|
agent envelopes, and package gates provide public-surface closure.
|
|
22
|
+
4. `status --repo-root` classifies only a bounded normalized
|
|
23
|
+
materialized-project observation, and `next --repo-root` projects one
|
|
24
|
+
bounded action. Admitted in-bound records bind exact content digests;
|
|
25
|
+
unread out-of-bound records bind only their invalid class. Neither command
|
|
26
|
+
claims native execution or proof completion.
|
|
27
|
+
5. `integration source --tool <claude|codex>` emits one portable static
|
|
28
|
+
bootstrap without reading repositories or writing files;
|
|
29
|
+
`integration check --tool <claude|codex> --repo-root <path>` compares only
|
|
30
|
+
the selected descriptor-owned file through confined read-only inspection.
|
|
31
|
+
These are generation/check targets, not managed integration support.
|
|
22
32
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
33
|
+
The change planner and evidence-guidance cores are stateless pure projections.
|
|
34
|
+
Project status reads only an explicit repository root, the conventional routing
|
|
35
|
+
manifest, its declared children, and transaction control state through bounded
|
|
36
|
+
owner-admitted transport. No workflow command executes Git, native witnesses,
|
|
37
|
+
network, containers, or providers. No workflow command adds a setup facade,
|
|
38
|
+
hidden route policy, external prompt resource, persisted experiment state,
|
|
39
|
+
generic report interpreter, or second source codec. Agent-route brief and full
|
|
28
40
|
projections remain independently owned by the spec-proof-core package.
|
|
29
41
|
|
|
30
42
|
## Requirements
|
|
@@ -69,11 +81,63 @@ projections remain independently owned by the spec-proof-core package.
|
|
|
69
81
|
descriptor/dispatcher/family/help/root-contract/witness/generated/package
|
|
70
82
|
surfaces, with npm-only non-runtime specification docs and cross-channel
|
|
71
83
|
runtime behavior proof.
|
|
84
|
+
- `REQ-PROOFKIT-WORKFLOW-012`: one truthful project-state owner, exhaustive
|
|
85
|
+
precedence, existing child and cross-record closure owners, and no promotion
|
|
86
|
+
of source declarations or caller status into execution evidence.
|
|
87
|
+
- `REQ-PROOFKIT-WORKFLOW-013`: one application-write-free root-bound inspection
|
|
88
|
+
lease, cooperative writer exclusion, descriptor-relative exact-path
|
|
89
|
+
traversal, bounded content-cohort validation, fail-closed partial control
|
|
90
|
+
observations, one bounded retry, and a portable non-disclosing
|
|
91
|
+
normalized-observation identity.
|
|
92
|
+
Filesystem-owned read metadata such as access time is outside that guarantee.
|
|
93
|
+
- `REQ-PROOFKIT-WORKFLOW-014`: one total state-to-action table, one bounded
|
|
94
|
+
next action, explicit owner decisions, and no embedded route universe.
|
|
95
|
+
- `REQ-PROOFKIT-WORKFLOW-015`: status/next CLI channel and exit semantics,
|
|
96
|
+
checkpointed pre-emission failure discipline, one bounded stdout write
|
|
97
|
+
without claiming cancellation rollback or atomicity from an external sink,
|
|
98
|
+
and a versioned breaking replacement
|
|
99
|
+
of the flat change route by `change plan` across source and installed carriers.
|
|
100
|
+
- `REQ-PROOFKIT-WORKFLOW-016`: one private descriptor/template owner, portable
|
|
101
|
+
approved-launcher guidance, 512-byte metadata and 4096-byte body limits, and
|
|
102
|
+
identity over exactly consumed registered invocation contracts rather than
|
|
103
|
+
package version or the entire command universe.
|
|
104
|
+
- `REQ-PROOFKIT-WORKFLOW-017`: pre-I/O invocation admission, a confined
|
|
105
|
+
application-write-free two-observation check with an 8192-byte read bound per
|
|
106
|
+
observation, distinct missing/current/stale/invalid states, non-disclosing
|
|
107
|
+
operational failures, and independent cancellation/cleanup outcomes.
|
|
108
|
+
- `REQ-PROOFKIT-WORKFLOW-018`: exact source/check CLI flags, JSON root shapes,
|
|
109
|
+
exit semantics, one source/check-only command family, and source, generated,
|
|
110
|
+
and installed-carrier closure obligations. A binding is not an execution
|
|
111
|
+
receipt; final frozen-tree and installed-carrier integration proof requires
|
|
112
|
+
actual execution against the named source and artifacts.
|
|
72
113
|
|
|
73
114
|
Shared stable-JSON/diagnostic hardening is owned by the supply-chain-quality
|
|
74
115
|
spec. Typed local-reference closure is owned by the existing agent-envelope
|
|
75
116
|
requirement. This workflow spec consumes those owners without duplicating them.
|
|
76
117
|
|
|
118
|
+
## Thin Integration Boundary
|
|
119
|
+
|
|
120
|
+
The production owner is `internal/command/agentintegration`. The descriptor
|
|
121
|
+
alone selects `.agents/skills/agentic-proofkit/SKILL.md` for `codex` or
|
|
122
|
+
`.claude/skills/agentic-proofkit/SKILL.md` for `claude`. Source and check share
|
|
123
|
+
the same renderer. Common name/description frontmatter and static Markdown
|
|
124
|
+
delegate to the current CLI instead of embedding schemas or workflow policy.
|
|
125
|
+
The bootstrap persists logical routes, not machine-local executable paths;
|
|
126
|
+
an absent or ambiguous repository-approved installed launcher needs an owner
|
|
127
|
+
decision, never an implicit package manager, install, or network fallback.
|
|
128
|
+
|
|
129
|
+
The source contract's default JSON includes exact content and its digest;
|
|
130
|
+
`--format text` emits those file bytes. Check returns only expected generated
|
|
131
|
+
identity and a bounded freshness classification, never observed content, its
|
|
132
|
+
digest, or caller root paths. Exit 0 means current, exit 2 means a classified
|
|
133
|
+
missing/stale/invalid file, and exit 1 means an invocation or operation error.
|
|
134
|
+
Source returns 0 on success and 1 on error. Neither accepts `--output` or an
|
|
135
|
+
install option. Manual export guidance is owned by `ADOPTION.md`.
|
|
136
|
+
|
|
137
|
+
Phase5B managed installation, update, and safe removal remains explicitly open.
|
|
138
|
+
Host discovery, body loading, and approved-launcher invocation require separate
|
|
139
|
+
isolated native-host observations; direct CLI execution cannot prove skill use.
|
|
140
|
+
|
|
77
141
|
## Non-Claims
|
|
78
142
|
|
|
79
143
|
- Generated prompts are not authenticated and need not be obeyed or adequate.
|
|
@@ -83,5 +147,9 @@ requirement. This workflow spec consumes those owners without duplicating them.
|
|
|
83
147
|
- Least dependency closure does not prove context truth, freshness, semantic
|
|
84
148
|
sufficiency, or global minimality.
|
|
85
149
|
- A finite pilot does not prove universal repository fit.
|
|
150
|
+
- Bootstrap byte bounds are not token counts, and consumed registered-contract
|
|
151
|
+
identity is not complete transitive semantic proof.
|
|
152
|
+
- Generated-byte freshness does not install, activate, authorize, or grant
|
|
153
|
+
permissions. File removal does not revoke instructions already in host context.
|
|
86
154
|
- This spec does not select a persisted requirement-source codec.
|
|
87
155
|
- This spec does not approve merge, release, rollout, or production readiness.
|
|
@@ -147,6 +147,113 @@
|
|
|
147
147
|
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
148
148
|
"deferral": null,
|
|
149
149
|
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-012",
|
|
153
|
+
"ownerId": "proofkit.agent-workflow",
|
|
154
|
+
"invariant": "Project status consumes only one explicit repository root, the conventional digest-routed project manifest, its exact manifest-declared canonical children, and one repository-transaction control projection; it delegates child admission and cross-record closure to the adoption-materialization owner, publishes exactly one state from uninitialized, recovery_required, blocked, stale, and verification_required through one exhaustive precedence table, and never promotes source declarations, binding commands, caller-owned passed labels, or caller-declared workflow completion into native execution, receipt currentness, trust, merge, release, rollout, deployment, or production-readiness evidence.",
|
|
155
|
+
"claimLevel": "blocking",
|
|
156
|
+
"riskClass": "high",
|
|
157
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
158
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-012"],
|
|
159
|
+
"nonClaims": ["Project status classifies the observed materialized-project snapshot and can become stale immediately after emission; it does not prove native witness execution or complete any declared proof scope."],
|
|
160
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
161
|
+
"deferral": null,
|
|
162
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-013",
|
|
166
|
+
"ownerId": "proofkit.agent-workflow",
|
|
167
|
+
"invariant": "Project inspection is explicit, root-confined, application-write-free, symlink-denying, byte-bounded, and normalized-observation-bound: Proofkit performs no repository mutation operation; one inspection lease pins one repository root for the whole attempt, exports only exact read-only file capabilities, and, when the transaction control namespace exists, holds its native cooperative writer lock; transaction control is projected by its native owner as clean, recoverable with an exact transaction identity, or invalid with a portable content-bound observation epoch only after the entire namespace is observed within canonical entry, file, aggregate, depth, and file-type bounds, while overflow or unsupported shape fails without a partial packet; every manifest and child route is traversed component by component from the pinned root with exact-name admission, no symlink following, descriptor identity checks, regular-file admission, per-file one-MiB and per-pass aggregate eight-MiB limits before semantic decoding; the root identity and transaction observation are equal before and after the read and a second bounded digest pass over the manifest and every routed child equals the admitted first-pass cohort, or the operation performs at most one complete retry and then fails as concurrent change; every public state receives a snapshot identity over one total tagged observation whose admitted in-bound records bind exact content digests, whose unread out-of-bound records intentionally bind only their invalid class, whose project is unknown or admitted, whose manifest is absent, invalid with an optional bounded content digest, or admitted with identity and content digest, whose transaction carries its tagged state and epoch, whose children are ordered kind/state/expected/observed digest records, and whose cross-record closure state is explicit, without exposing raw bytes, repository paths, or caller text.",
|
|
168
|
+
"claimLevel": "blocking",
|
|
169
|
+
"riskClass": "high",
|
|
170
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
171
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-013"],
|
|
172
|
+
"nonClaims": ["A coherent read snapshot does not prevent later filesystem mutation, authenticate repository ownership, provide power-loss or multi-reader atomicity, exclude a same-user writer that bypasses the repository transaction owner, identify unread out-of-bound record bytes beyond their normalized invalid class, or prevent the filesystem from updating read-side metadata such as access time."],
|
|
173
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
174
|
+
"deferral": null,
|
|
175
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-014",
|
|
179
|
+
"ownerId": "proofkit.agent-workflow",
|
|
180
|
+
"invariant": "Project next-action output is a deterministic bounded projection of the admitted project status through one total state-to-action table: blocked maps to non-executable repair, recovery_required maps to a non-executable recovery-direction decision bound to the transaction identity, uninitialized maps to a non-executable source-trust-mode decision, stale maps to rematerialization, and verification_required maps to repository-owned native verification; it emits exactly one action, at most sixteen stable non-disclosing issue codes, no route universe, no inferred trust mode, recovery direction, command success, or owner decision, and stable JSON within 32768 bytes plus text within 4096 UTF-8 bytes and sixteen lines that preserves exactly projectState, actionClass, executable, commandRoute, contextRef, requiredDecision, and issueCodes while intentionally omitting JSON-only packetId, snapshotId, statusRef, and nonClaims.",
|
|
181
|
+
"claimLevel": "blocking",
|
|
182
|
+
"riskClass": "high",
|
|
183
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
184
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-014"],
|
|
185
|
+
"nonClaims": ["A next-action packet is derived guidance; it does not execute, authorize, or prove the proposed action."],
|
|
186
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
187
|
+
"deferral": null,
|
|
188
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-015",
|
|
192
|
+
"ownerId": "proofkit.agent-workflow",
|
|
193
|
+
"invariant": "The public status and next commands require exactly one explicit --repo-root, default to stable ANSI-free JSON, admit text and terminal-only color through the shared presentation contract, return exit zero for every successfully classified project state, including bounded project-record decoding or admission failure, and return exit one without beginning output emission for invocation, confinement, inspection-bound, concurrent-change, cleanup, serialization, or cancellation observed at bounded operation checkpoints and the final pre-emission checkpoint; successful serialization reaches stdout through one bounded write, and a transport failure returns exit one without claiming atomic behavior from a writer that accepted a prefix before failing; the same versioned breaking public edge adds both commands, replaces the flat change-workflow-plan route with change plan without adding a route-alias registry or second implementation, rejects the retired route, admits the hierarchical route, and closes descriptor, help, CLI contract, command family, contract map, ABI, source witness, installed npm, and installed wheel surfaces.",
|
|
194
|
+
"claimLevel": "blocking",
|
|
195
|
+
"riskClass": "high",
|
|
196
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
197
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-015"],
|
|
198
|
+
"nonClaims": [
|
|
199
|
+
"A caller-provided stdout writer that accepts a prefix and then fails does not provide an atomic sink, so Proofkit does not claim that such a transport leaves stdout empty.",
|
|
200
|
+
"CLI surface closure does not prove registry publication, provider ingestion, consumer migration, native witness truth, rollout, or production readiness.",
|
|
201
|
+
"Cancellation racing after the final pre-emission checkpoint cannot retract bytes subsequently accepted by an external writer."
|
|
202
|
+
],
|
|
203
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
204
|
+
"deferral": null,
|
|
205
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-016",
|
|
209
|
+
"ownerId": "proofkit.agent-workflow",
|
|
210
|
+
"invariant": "One private production owner in internal/command/agentintegration holds the finite tool/path descriptor table and one shared static bootstrap renderer consumed by both source and check; explicit codex selects .agents/skills/agentic-proofkit/SKILL.md and explicit claude selects .claude/skills/agentic-proofkit/SKILL.md, without a default tool or access to the other location. Generation is a deterministic repository-read-free and application-write-free projection with only name/description frontmatter, at most 512 UTF-8 metadata bytes and 4096 UTF-8 body bytes, exact file bytes in text mode, and no hooks, shell injection, permission grants, persona, background process, package installation, copied schema, state/action table, or independent workflow policy. The shared body delegates status, next, adoption/change planning, brief agent-route and existing detail retrieval, help, and native-evidence-guidance to current CLI owners. Identity binds the template, selected descriptor, and exact consumed registered routes and invocation contracts from existing app descriptors and generated input/output contract metadata; package version is absent from generated bytes, and version-only or unconsumed-command changes preserve bytes and identity when consumed registered projections are unchanged. Consumed contract or route changes invalidate identity; shared native source digests may conservatively invalidate freshness. Persist logical routes only, resolve the repository-approved already-installed launcher at invocation time, and stop for an owner decision when its binding is absent or ambiguous; tool, distribution channel, launcher profile, and concrete interpreter remain distinct coordinates without a persistent carrier option or network fallback.",
|
|
211
|
+
"claimLevel": "blocking",
|
|
212
|
+
"riskClass": "high",
|
|
213
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
214
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-016"],
|
|
215
|
+
"nonClaims": [
|
|
216
|
+
"Byte budgets do not prove tokenizer-specific token cost or model behavior.",
|
|
217
|
+
"Generation does not install instructions, activate a host skill, grant permissions, authorize execution, or prove native verification.",
|
|
218
|
+
"Materialization identity binds consumed registered invocation contracts, not complete schemas or every transitive native semantic behavior."
|
|
219
|
+
],
|
|
220
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
221
|
+
"deferral": null,
|
|
222
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-017",
|
|
226
|
+
"ownerId": "proofkit.agent-workflow",
|
|
227
|
+
"invariant": "Integration freshness admits explicit tool, root, format, and flag cardinality before filesystem I/O, obtains expected bytes and the fixed selected path only from the integration source owner, and performs no application writes to selected, other-tool, adjacent, or global instructions. Reuse one read-only repository inspection lease and exact component-wise non-symlink regular-file traversal; check file kind before any content read and never read FIFO/device contents. Each of two complete observations reads at most 8192 bytes; reobserve the complete bounded state and bytes, verify file/route and pinned-root identity, and fail operationally on observed change. Exact entry or ordinary parent absence is missing; bounded regular UTF-8 text equal to generated bytes is current; differing bounded regular UTF-8 text, including unknown or old content, is stale; non-regular entry, symlink component, oversized file, NUL, or invalid UTF-8 is invalid. Permission, I/O, cleanup, portable-alias, changed-root/route, or cancellation failure is an operation error, never a classified success. Cancellation and file/lease cleanup outcomes participate independently in every result and dominate classification. Public reports and diagnostics disclose neither observed content, its digest, nor caller root paths; fixed descriptor-owned relative target paths and expected generated identities are public. A marker or stored digest never substitutes for checking actual bounded bytes.",
|
|
228
|
+
"claimLevel": "blocking",
|
|
229
|
+
"riskClass": "high",
|
|
230
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
231
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-017"],
|
|
232
|
+
"nonClaims": [
|
|
233
|
+
"Application-write-free inspection does not prevent filesystem-owned read metadata updates, exclude an uncooperative same-user writer, or identify unread oversized-file bytes beyond the bounded observation.",
|
|
234
|
+
"Current means exact generated-byte freshness only, not installation, host activation, approved-launcher invocation, native execution, semantic proof completion, or stability after return."
|
|
235
|
+
],
|
|
236
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
237
|
+
"deferral": null,
|
|
238
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-018",
|
|
242
|
+
"ownerId": "proofkit.agent-workflow",
|
|
243
|
+
"invariant": "Exactly two no-input commands expose Phase5A: integration-source through integration source with built_in_package_catalog scope, and integration-check through integration check with explicit_filesystem_scan scope. Both require exactly one --tool from claude/codex, admit at most one --format from json/text with JSON default, reject input transport, surplus operands, color, carrier, output-file, and install options; check additionally requires exactly one --repo-root, which source rejects. Source JSON has exactly schemaVersion, kind, tool, targetPath, integrationId, content, contentDigest, capabilityDigest, metadataBytes, bodyBytes, and nonClaims; check JSON has exactly schemaVersion, kind, tool, targetPath, integrationId, expectedContentDigest, state, and nonClaims. Both schema versions are 1; kinds are proofkit.integration-source.v1 and proofkit.integration-check.v1. Source text is the exact generated content. Source exits 0 on success and 1 on error; check exits 0 only for current, 2 for missing/stale/invalid classified reports with empty stderr, and 1 for operation or invocation error. Cancellation observed before emission and serialization/cleanup failures produce no success report. Descriptor, dispatch, help, the agent-integrations source/check-only family, root-shape definitions and their hashes, CLI contracts, contract-map routes, exact native witnesses, generated metadata, and installed npm/Python carriers must close over the same bounded invocation/output relation without a second semantic owner; native source bindings include internal/command/agentintegration. Source-carrier independence and installed-carrier execution are separate obligations. Phase5B managed install/update/remove remains open and is not discharged by generation, check, manual export, or this contract closure.",
|
|
244
|
+
"claimLevel": "blocking",
|
|
245
|
+
"riskClass": "high",
|
|
246
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
247
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-018"],
|
|
248
|
+
"nonClaims": [
|
|
249
|
+
"Cancellation after the final pre-emission checkpoint cannot retract accepted output, and a caller-provided writer that accepts a prefix before failure is not an atomic sink.",
|
|
250
|
+
"Installed CLI behavior does not prove native-host file discovery, body loading, approved-launcher calls, registry publication, consumer migration, or host instruction revocation after file removal.",
|
|
251
|
+
"Phase5A is generation/check only, not managed installation, update, removal, host activation, permission grant, semantic full proof, merge approval, or production readiness.",
|
|
252
|
+
"Witness selectors declare exact verification routes, not executed or passed proof; installed npm/Python integration witnesses and final frozen-tree closure require actual execution against the named source and artifacts."
|
|
253
|
+
],
|
|
254
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
255
|
+
"deferral": null,
|
|
256
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
150
257
|
}
|
|
151
258
|
],
|
|
152
259
|
"nonClaims": [
|
|
@@ -199,6 +199,12 @@ execution receipts, and merge policy.
|
|
|
199
199
|
- `REQ-PROOFKIT-SPEC-034`: the pre-materialization-to-transactional-
|
|
200
200
|
materialization public version edge binds all three transactional
|
|
201
201
|
materialization routes and their exact public contracts to a compatible
|
|
202
|
+
byte-frozen predecessor release record without coupling the historical edge
|
|
203
|
+
to the live release record or reinterpreting the frozen prior edge.
|
|
204
|
+
- `REQ-PROOFKIT-SPEC-035`: the project-state public version edge binds the exact
|
|
205
|
+
raw ABI identities, proves the complete semantic ABI difference after
|
|
206
|
+
normalizing only native-source digests, and binds status, next, the
|
|
207
|
+
change-plan route replacement, and omitted-route policy to one breaking
|
|
202
208
|
release record without reinterpreting the frozen prior edge.
|
|
203
209
|
|
|
204
210
|
## Non-Claims
|
|
@@ -689,7 +689,7 @@
|
|
|
689
689
|
{
|
|
690
690
|
"requirementId": "REQ-PROOFKIT-SPEC-034",
|
|
691
691
|
"ownerId": "proofkit.spec-proof-core",
|
|
692
|
-
"invariant": "The 0.7.0-to-0.8.0 public version edge binds the exact previous and
|
|
692
|
+
"invariant": "The byte-frozen 0.7.0-to-0.8.0 public version edge binds the exact previous and released 0.8.0 public ABI digests; the exact addition of adopt materialize plan, apply, and recover with their public routes and input/output contract identities and digests; an explicit added-command selection policy; and the complete ordered additive inventory to one digest-bound archived 0.8.0 release change record. The edge is compatible, contains no breaking changes or migration steps, and later releases cannot mutate, reinterpret, or bind it to the live current release record or live command metadata.",
|
|
693
693
|
"claimLevel": "blocking",
|
|
694
694
|
"riskClass": "high",
|
|
695
695
|
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
@@ -698,6 +698,19 @@
|
|
|
698
698
|
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
699
699
|
"deferral": null,
|
|
700
700
|
"updatePolicy": {"reviewOwnerId": "proofkit.spec-proof-core", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
"requirementId": "REQ-PROOFKIT-SPEC-035",
|
|
704
|
+
"ownerId": "proofkit.spec-proof-core",
|
|
705
|
+
"invariant": "The 0.8.0-to-0.9.0 public version edge binds the exact raw previous and current public ABI digests and proves their complete semantic difference: status and next are the only added commands; their public routes and output contract identities and digests are exact; the flat change-workflow-plan route is replaced by change plan while preserving one internal implementation and the input/output contract identities and digests; every predecessor command is otherwise identical after normalizing only native-source canonical digests; every predecessor contract definition remains exact; added definitions are exactly the transitive closure of the added commands; and omitted-route policy is the only process-contract addition. Native-source digest churn remains bound by the raw edge digests rather than being misclassified as wire-semantic change. The complete ordered breaking, additive, and migration inventories bind to one digest-bound current release change record; the edge rejects the retired route, admits the hierarchical route, and cannot mutate or reinterpret the byte-frozen 0.7.0-to-0.8.0 edge.",
|
|
706
|
+
"claimLevel": "blocking",
|
|
707
|
+
"riskClass": "high",
|
|
708
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
709
|
+
"nonClaimRefs": ["NC-PROOFKIT-SPEC-035"],
|
|
710
|
+
"nonClaims": ["A source-bound version edge does not authenticate registry publication, provider ingestion, consumer migration, native witness truth, rollout, or production readiness."],
|
|
711
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
712
|
+
"deferral": null,
|
|
713
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.spec-proof-core", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
701
714
|
}
|
|
702
715
|
],
|
|
703
716
|
"nonClaims": [
|
package/package.json
CHANGED