@research-engineering/agentic-proofkit 0.1.146 → 0.1.147

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
@@ -30,6 +30,19 @@ Publisher and post-publish registry identity are admitted. GitHub Release
30
30
  assets are archive and provenance lookup, not package-manager dependency
31
31
  authority.
32
32
 
33
+ Consumers may choose npm or Bun for installation. Both consume the same npm
34
+ registry package identity:
35
+
36
+ ```bash
37
+ npm install -D @research-engineering/agentic-proofkit
38
+ bun add -d @research-engineering/agentic-proofkit
39
+ ```
40
+
41
+ Release evidence still uses npm as the registry-authority CLI because Proofkit
42
+ records npm-specific package identity, `dist.integrity`, `dist.shasum`, `npm
43
+ pack`, and root-only registry install proof. Bun is not used as a substitute
44
+ for those release-authority facts.
45
+
33
46
  Stable authority channel ids:
34
47
 
35
48
  | Channel | Authority owner | Non-claims |
@@ -120,6 +133,52 @@ Candidate boundaries in `observe` and `warn` are advisory. Enforcement modes
120
133
  fail closed while candidate boundaries remain unresolved because enforcement
121
134
  requires owner-admitted requirements and proof bindings.
122
135
 
136
+ Pre-spec trust modes:
137
+
138
+ | Trust mode | Use case | Proofkit role | Required next owner step |
139
+ |---|---|---|---|
140
+ | `code_baseline` | no specs exist and maintainers intentionally freeze current behavior | admit caller-owned capability observations and emit bounded candidate requirement/proof-binding seeds only when scenarios have candidate ids and executable anchors | review seeds, materialize accepted `requirements.v1.json` and proof bindings, then run source, binding, inventory, and coverage gates |
141
+ | `audit_from_code` | no specs exist and maintainers do not trust current behavior | admit caller-owned observations as hypotheses, keep missing anchors as owner actions, and emit questions without failing solely on missing anchors | answer owner questions, add falsification witnesses, then materialize only accepted requirements |
142
+
143
+ `capability-map-admission` owns this pre-spec transition artifact. It does not
144
+ replace `requirement-authoring-plan`: capability maps produce seeds from
145
+ observed capabilities, while authoring plans compose owner-reviewed candidate
146
+ updates into a non-authoritative requirement-source preview and transition
147
+ check. Durable truth still starts only after the consumer commits and admits
148
+ `requirements.v1.json`.
149
+
150
+ ## First Adoption Loop
151
+
152
+ Proofkit can reduce initial adoption glue, but it must not turn observation into
153
+ truth. The first loop is:
154
+
155
+ ```text
156
+ caller-owned capability or test observations
157
+ -> candidate-only Proofkit reports
158
+ -> owner review and materialization
159
+ -> strict requirement source, proof binding, and test inventory admission
160
+ -> coverage view from explicit admitted facts
161
+ ```
162
+
163
+ Use `test-evidence-inventory --projection discovery-draft` only for explicit
164
+ caller-owned test discovery facts. The command does not scan repositories,
165
+ execute tests, emit `semantic_falsifier` evidence, or close coverage. It emits
166
+ candidate inventory guidance with a non-strict candidate authority so an agent
167
+ can ask the right owner questions and materialize strict inventory rows later.
168
+ Candidate inventory diagnostics are rejected by strict inventory admission until
169
+ the consumer rewrites them into owner-reviewed `caller_owned_inventory`.
170
+
171
+ Use `requirement-coverage-input-compose` when the consumer already has explicit
172
+ requirement source, proof binding, test inventory, coverage universe, and local
173
+ environment policy records. The command may compose from direct child records
174
+ or from previously normalized records, but it must reject failed child reports
175
+ instead of repairing semantics.
176
+
177
+ Use `witness-plan` with a `projection: "requirement-bindings"` input only when
178
+ the proof binding already contains safe witness command facts and the caller
179
+ provides witness command vocabulary. The projection avoids duplicated command
180
+ identity; native execution and command freshness remain caller-owned.
181
+
123
182
  ## Requirement, Contract, And Test Order
124
183
 
125
184
  The durable semantic source is the repository-owned requirement package:
package/AGENTS.md CHANGED
@@ -19,7 +19,7 @@ Use this order when instructions or evidence conflict:
19
19
  4. nearest scoped `AGENTS.md`;
20
20
  5. this repository authority model;
21
21
  6. `README.md` as a human overview only;
22
- 7. `BACKLOG.md` for current completion criteria, open work, and blocked claims;
22
+ 7. `BACKLOG.md` for active work, blocked claims, and deferred work;
23
23
  8. `ADOPTION.md`, `NON_CLAIMS.md`, `docs/proofkit-contract-map.md`, and
24
24
  `docs/specs/*` as owner surfaces for their stated boundaries;
25
25
  9. imported source files, tests, package metadata, workflows, and
@@ -51,7 +51,7 @@ own release, provider, or deployment evidence.
51
51
  2. If the request is clear, do not ask whether to resume previous work.
52
52
  3. If the request is ambiguous and strong unfinished-work signals exist,
53
53
  inspect the worktree state and ask whether to resume.
54
- 4. Use `BACKLOG.md` for current completion state and open work.
54
+ 4. Use `BACKLOG.md` for active work, blocked claims, and deferred work.
55
55
  5. Load one primary owner surface for the task. Load a second owner surface only
56
56
  when the task clearly crosses another boundary.
57
57
  6. Stop context loading once the owner boundary, allowed mutation, proof path,
package/BACKLOG.md CHANGED
@@ -1,203 +1,56 @@
1
1
  # Proofkit Backlog
2
2
 
3
- This file is the canonical work ledger for completing the public
4
- `research-engineering/agentic-proofkit` cutover. It tracks open work and blocked
5
- claims. It is not a CLI manual, proof registry, or historical release log.
3
+ This file is the canonical active-work ledger for
4
+ `research-engineering/agentic-proofkit`.
6
5
 
7
- ## Completion Criteria
6
+ It tracks only current `NEXT`, `BLOCKED`, or `DEFERRED` work. It is not a
7
+ roadmap, release log, proof registry, architecture document, CLI manual, or
8
+ historical completion archive.
8
9
 
9
- Proofkit can be called complete as an organization-neutral reusable toolkit
10
- only when these criteria are satisfied or explicitly retired by owner decision:
10
+ ## Current State
11
11
 
12
- 1. **Public source provenance is admitted.** A release is produced from this
13
- public source repository and records source, tag, package, registry, and
14
- release evidence.
15
- 2. **Public npm release is admitted.** A versioned release publishes or
16
- exact-byte-matches the root package, records post-publish npm identity,
17
- verifies root-only installation, proves JSON CLI ABI from the installed
18
- package, and documents rollback.
19
- 3. **Optional PyPI channel is admitted before it is claimed.** Python/uv wheels
20
- are candidate evidence until PyPI Trusted Publisher and post-publish PyPI
21
- registry identity are proven.
22
- 4. **Browser rendering is released.** Requirement source, proof, coverage, and
23
- spec-tree views are consumable through CLI rendering and loopback-only
24
- serving without requiring generated HTML in consumer repositories.
25
- 5. **Repository identity is organization-neutral.** Package metadata, README,
26
- agent entrypoint, docs, workflows, tests, and examples avoid organization-
27
- or consumer-specific authority.
28
- 6. **At least one consumer migration is proven from the public package.** A
29
- consuming repository replaces local or vendored Proofkit access with the
30
- public package, smokes the installed binary, records rollback, and keeps
31
- product semantics local.
32
- 7. **Second-consumer reuse is proven before broad reuse claims.** A second
33
- topology adopts one stable module in observe or warn mode with explicit
34
- caller-owned inputs.
35
- 8. **Agent guidance is usable.** Reports provide bounded envelopes that name
36
- what to inspect, who owns the decision, which proof route applies, what is
37
- omitted, and what escalation is required.
38
- 9. **Gradual adoption is usable for imperfect repositories.** A repository can
39
- scaffold starter records, define owner-reviewed requirements, bind proofs,
40
- run selective checks, and promote enforcement only after explicit owner
41
- approval.
42
- 10. **Self-hosting avoids circular proof.** Current-build Proofkit output may
43
- provide advisory self-consistency, but merge-critical proof must rely on
44
- native package gates, admitted CI producer policy, a prior release, or a
45
- minimal bootstrap verifier.
46
- 11. **Release-size changes are evidence-gated.** Platform-binary splitting,
47
- OCI, Homebrew, or Go module distribution is admitted only when measured
48
- consumer need outweighs added registry and adoption complexity.
49
- 12. **Generic authority invariants are upstream-owned.** Requirement-binding
50
- identity, test-inventory identity, report-shape admission, and other
51
- cross-repository mechanics live in Proofkit before consumers retire
52
- duplicate local checks.
53
- 13. **Hierarchical spec rendering is explicit-input and presentation-only.**
54
- Meta, module, and submodule spec chains can be rendered or exported from a
55
- caller-owned tree without implicit repository scanning or generated-output
56
- authority.
12
+ Active work is limited to the rows below.
57
13
 
58
- ## Current Cutover State
59
-
60
- | Status | ID | Scope | Completion condition |
61
- |---|---|---|---|
62
- | DONE | IMPORT-01 | Public project contract | Initial public README, license, contribution, security, and source-hygiene boundaries were admitted. |
63
- | DONE | IMPORT-02 | Deterministic kernel primitives | Core Go admission, stable JSON, digest, report, path, release-platform, and package helper primitives were imported with tests. |
64
- | DONE | IMPORT-03 | CLI command and release proof surface | CLI registry, command families, package/release tools, npm/PyPI wrapper surfaces, specs, proofkit JSON, and workflows were imported with local `npm run check`. Provider CI, protected-branch, registry, and release evidence remain separate open proof classes. |
65
- | DONE | IMPORT-04 | Adoption and backlog owner surfaces | Public-ready adoption and backlog routing were added without stale private release facts or consumer-specific claims. |
66
- | DONE | IMPORT-05 | Historical design and plan cleanup | Durable claims from pre-cutover design and implementation-plan work are represented by deterministic specs, proof bindings, tests, package-public docs, or open backlog rows. No source-repository design documents or implementation plans are retained as current authority. |
67
- | DONE | IMPORT-06 | Remaining source-local code delta audit | Non-document source comparison found no old source file missing from the public source tree. Old source bytes remain candidate evidence only and are not imported over current hardening. |
68
- | DONE | RELEASE-01 | Public source release | A public-source npm release path was admitted through Trusted Publisher, post-publish registry identity capture, root-only installed-package proof, and GitHub Release assets. PyPI publication and GitHub artifact attestations were skipped by explicit optional-channel policy and are not claimed. |
69
- | DONE | RELEASE-02 | Scoped npm package identity | The organization-scoped npm package identity is the preferred release channel and is admitted through the scoped npm Trusted Publisher path, post-publish registry capture, root-only installed-package JSON CLI ABI proof, and GitHub Release assets. The `agentic-proofkit` CLI binary and Python package identities remain unchanged. The previous unscoped npm package remains a compatibility artifact, not the preferred dependency identity. |
70
- | BLOCKED | RELEASE-03 | PyPI registry publication | The release workflow has a dedicated PyPI Trusted Publisher job and the GitHub repository has the `pypi` environment required by that workflow identity, but PyPI registry publication is blocked until the PyPI account has a normal or pending Trusted Publisher for project `agentic-proofkit`, repository `research-engineering/agentic-proofkit`, workflow `release.yml`, and environment `pypi`. `PROOFKIT_ENABLE_PYPI_PUBLISH` must stay disabled until that PyPI-side publisher exists. Completion requires enabling the variable, publishing a new version or recording exact existing-byte match, capturing PyPI registry identity, and proving the package through the release workflow. Workflow-published or mixed publication modes must bind the PyPI Trusted Publisher tuple in the release manifest; existing-byte-match mode must retain exact-byte registry proof without inventing publisher provenance. Wheel files in GitHub Release assets remain candidate artifacts, not PyPI dependency authority. |
71
- | DONE | SECURITY-01 | Provider security settings | Repository is public with collaborator-only PR creation, public issues, squash-only merges, branch protection on `main`, strict required CI, CodeQL, OSV source advisory scanning, Scorecard, Dependabot security updates, secret scanning, and push protection. Non-provider secret patterns and validity checks remain unavailable or disabled under the current provider plan and are not claimed. |
72
- | DONE | CONSUMER-01 | Public-package consumer proof | A private first consumer repository consumed the public npm package through its repository-owned external-consumer gate. The proof installed the package into an isolated temporary consumer, matched the admitted package identity, proved lockfile resolution was not workspace based, ran installed CLI `self-check`, `witness-plan`, and `release-authority`, proved rollback by removing the dependency from the temporary lockfile, and preserved consumer-owned native witness authority. |
73
- | DONE | CONSUMER-02 | Second-consumer pilot | A private topology-distinct Python/FastAPI consumer module was run through explicit-input warn-mode `gradual-adoption-guidance` and `--agent-envelope` pilot records. Proofkit admitted the caller-owned route, reported one advisory candidate boundary, reported two missing proof-binding rule IDs as warnings, emitted route/bind/modernize/verify/promote agent actions, and kept enforcement blocked until consumer owners admit stable requirements and proof bindings. No generic Proofkit blocker was confirmed. |
74
-
75
- ## Release Evidence Model
76
-
77
- This backlog records release-channel completion state, not immutable per-version
78
- provider facts. Exact package versions, source refs, workflow run identities,
79
- tarball URLs, integrity strings, shasums, release assets, and registry
80
- post-publish facts are owned by npm registry records, GitHub Release artifacts,
81
- and generated release manifests for each tag.
82
-
83
- Do not copy exact post-publish provider facts into package-public source docs:
84
- package bytes are immutable, while those facts are known only after the package
85
- candidate has been built and published. The package verifier rejects shipped
86
- Markdown that reintroduces exact release versions, provider run URLs, registry
87
- tarball URLs, or raw release hash evidence.
88
-
89
- PyPI publication is not claimed unless the release workflow enables the PyPI
90
- channel and records post-publish PyPI registry identity. GitHub artifact
91
- attestations are not claimed unless the release workflow records provider
92
- attestation evidence for the published assets.
93
-
94
- ## Consumer Evidence
95
-
96
- `CONSUMER-01` was admitted from a private first consumer repository using these
97
- consumer-owned gates:
98
-
99
- ```bash
100
- bun run verify:proofkit-external-consumer
101
- bun scripts/report-proofkit-external-consumer.selftest.ts
102
- bun scripts/lib/proofkit-runtime.selftest.ts
103
- bun scripts/verify-workspace-script-registry.selftest.ts
104
- bun run verify:proofkit-pilot
105
- bun run verify:proofkit-requirement-source
106
- bun run verify:proofkit-requirement-coverage
107
- ```
108
-
109
- The machine report for `bun scripts/report-proofkit-external-consumer.ts
110
- --format json` emitted `reportKind: proofkit.registry-consumer`, `state:
111
- passed`, a public npm registry URL, non-workspace lockfile resolution,
112
- `releaseAuthorityReportKind: proofkit.release-authority`,
113
- `releaseAuthorityState: passed`, and `rollbackLockContainsPackage: false`.
114
-
115
- This evidence does not claim npm publication from this public source
116
- repository, Trusted Publisher configuration, public-source release provenance,
117
- provider-side security ingestion, PyPI publication, second-consumer reuse,
118
- native consumer test execution by Proofkit, rollout readiness, production
119
- readiness, or retirement of consumer-owned product semantics.
120
-
121
- `CONSUMER-02` was admitted on 2026-07-03 from a private topology-distinct
122
- consumer module using explicit caller-owned warn-mode adoption facts. The
123
- Proofkit guidance report emitted `reportKind:
124
- proofkit.gradual-adoption-guidance`, `state: passed`, `guidanceMode: warn`,
125
- `candidateBoundaryCount: 1`, `proofBindingMissingCount: 2`, and warning rules
126
- for `proofkit.gradual-adoption-guidance.missing-proof-bindings` and
127
- `proofkit.gradual-adoption-guidance.candidate-boundaries`. The companion agent
128
- envelope emitted `route`, `bind`, `modernize-boundary`, `verify`, and
129
- `promote` actions, with candidate-boundary context refs and explicit
130
- instructions to keep native witness execution outside Proofkit.
131
-
132
- Gap classification:
133
-
134
- - Generic Proofkit work: no confirmed blocker. The current CLI accepted
135
- explicit caller facts, preserved advisory candidate-boundary semantics, kept
136
- missing binding records as warnings in warn mode, and emitted bounded agent
137
- guidance without scanning repository state.
138
- - Consumer-local adapter work: the consumer still needs owner-reviewed
139
- `requirements.v1.json` records, requirement-to-proof bindings, native witness
140
- command records, and a repository-local environment that can run its existing
141
- coverage-map and backend test commands. Native witness attempts were blocked
142
- by consumer-local dependency/bootstrap preconditions, not by Proofkit command
143
- semantics.
144
-
145
- This evidence does not claim second-consumer enforcement, native witness
146
- success, consumer rollout, production readiness, public package publication
147
- from this source repository, provider-side registry evidence, or retirement of
148
- consumer-owned coverage-map and test authority.
149
-
150
- ## Import Discipline
151
-
152
- Old local repository content is not automatically authoritative. A transfer
153
- batch is admissible only when:
14
+ The public source cutover, scoped npm channel, optional PyPI channel, provider
15
+ security setup, first-consumer proof, and second-consumer pilot have all been
16
+ closed. Durable rules and reusable architecture now live in their owner
17
+ surfaces:
154
18
 
155
- ```text
156
- candidate file set
157
- and owner boundary
158
- and stale/private fact scan
159
- and lower-cost alternative review
160
- and proof gate
161
- and non-claims
162
- ```
19
+ - `README.md` for human orientation;
20
+ - `ADOPTION.md` for adoption, distribution, rendering, requirement, contract,
21
+ test, and agent-guidance models;
22
+ - `NON_CLAIMS.md` for boundary denials;
23
+ - `docs/proofkit-contract-map.md` for command-family routing and agent
24
+ decision procedure;
25
+ - `docs/release-process.md` for release-channel evidence and publication
26
+ process;
27
+ - `docs/specs/**/requirements.v1.json` for durable machine requirements;
28
+ - `proofkit/*.json` for shipped machine contracts and proof routes;
29
+ - source, tests, package metadata, and workflows for executable behavior.
163
30
 
164
- Code from the old local repository is rejected when it would delete current
165
- hardening, weaken package verification, remove non-disclosure tests, reduce
166
- semantic-route proof, or replace current public-source wording with private
167
- repository facts.
31
+ ## Admission Rules
168
32
 
169
- ## Historical Import Discipline
33
+ Add a row only when new work is accepted and cannot be represented more
34
+ precisely by an existing owner surface.
170
35
 
171
- Pre-cutover design documents and implementation plans are not retained in this
172
- repository as current authority. Stable claims must move into deterministic
173
- surfaces:
36
+ Every row must be falsifiable and include:
174
37
 
175
- - `docs/specs/**/requirements.v1.json` for durable requirements;
176
- - `proofkit/requirement-bindings.json` and `proofkit/witness-plan.json` for
177
- proof routes;
178
- - source code and tests for executable behavior;
179
- - package-public docs only when consumers need stable operational guidance;
180
- - this backlog only for open, falsifiable work.
38
+ - `Status`: `NEXT`, `BLOCKED`, or `DEFERRED`;
39
+ - `ID`: stable owner-scoped identifier;
40
+ - `Scope`: one bounded reason to change;
41
+ - `Completion condition`: objective proof or explicit retirement condition.
181
42
 
182
- Temporary design, implementation-plan, PR, code, or test observations may be
183
- caller-owned inputs to authoring commands, but they must not become tracked
184
- repository authority unless rewritten into one of the deterministic surfaces
185
- above.
43
+ When a row is completed, remove it from this active backlog after its durable
44
+ rule, evidence, or behavior is represented by the owning source, test,
45
+ contract, release artifact, provider record, or documentation surface. Do not
46
+ retain completed rows here as history.
186
47
 
187
- Architecture documents, ADRs, or roadmap documents are not banned by type. They
188
- are admitted only when they are the lowest-cost current authority for a real
189
- architecture decision, migration sequence, release obligation, or adoption
190
- contract. An admitted architecture document must state its owner, scope, proof
191
- path, non-claims, and retirement or supersession condition; otherwise the claim
192
- belongs in `requirements.v1.json`, machine contracts, executable tests,
193
- package-public operational docs, or this backlog.
48
+ Historical evidence belongs in pull requests, release artifacts, registry
49
+ records, generated release manifests, or the owning docs named above.
194
50
 
195
- ## Non-Goals
51
+ ## Open Rows
196
52
 
197
- - Proofkit does not own product semantics for consuming repositories.
198
- - Proofkit does not become a CI runner, repository scanner, policy owner, or
199
- proof freshness authority.
200
- - Proofkit does not require generated HTML, generated Markdown, or generated
201
- lookup graphs to be committed by default.
202
- - Proofkit does not require a rewrite in another language without measured
203
- evidence that the current Go CLI is the limiting factor.
53
+ | Status | ID | Scope | Completion condition |
54
+ |---|---|---|---|
55
+ | BLOCKED | RELEASE-01 | Decide whether normalized post-create GitHub Release facts need durable public evidence beyond retained workflow artifacts under immutable GitHub Releases. | Either keep `github-release.json` as retained workflow evidence with explicit non-claims, or design a provider-compatible public evidence channel that does not require post-create Release asset mutation. Completion requires a release-proof design and live provider proof; direct backfill/upload is blocked by immutable Release upload rejection. |
56
+ | BLOCKED | RELEASE-02 | Resolve or explicitly retire the immutable historical GitHub Release asset-closure gap where release metadata references a notes asset that the published release does not contain. | Either attach the exact checksum-matching notes asset if provider policy allows, or record the provider-impossible closure in the release evidence model and prove future releases cannot repeat the gap. Completion requires live provider proof; direct backfill is currently blocked by immutable Release upload rejection. |
package/CONTRIBUTING.md CHANGED
@@ -15,7 +15,8 @@ admission, and rollout approval belong in consuming repositories.
15
15
  3. Use [docs/proofkit-contract-map.md](docs/proofkit-contract-map.md) to find
16
16
  the owner command or primitive.
17
17
  4. Use [ADOPTION.md](ADOPTION.md) for dependency and channel authority.
18
- 5. Use [BACKLOG.md](BACKLOG.md) to check completion criteria and open work.
18
+ 5. Use [BACKLOG.md](BACKLOG.md) to check active work, blocked claims, and
19
+ deferred work.
19
20
  6. Use [NON_CLAIMS.md](NON_CLAIMS.md) to understand the boundary between
20
21
  Proofkit mechanics and consuming-repository authority.
21
22
 
@@ -28,6 +29,10 @@ npm run check
28
29
  git diff --check
29
30
  ```
30
31
 
32
+ If your local project uses Bun, `bun run check` is acceptable as a convenience
33
+ runner only when it invokes the same scripts and leaves `npm run check`
34
+ equivalent. Release and package-authority proof remains npm-owned.
35
+
31
36
  For CLI or Go changes, run focused Go tests first. For package or release
32
37
  changes, inspect [docs/release-process.md](docs/release-process.md).
33
38
 
package/NON_CLAIMS.md CHANGED
@@ -7,7 +7,8 @@ This repository state does not claim:
7
7
 
8
8
  - runtime implementation readiness;
9
9
  - package publication readiness;
10
- - public-source provenance for any existing package version;
10
+ - public-source provenance for a package version unless that version's release
11
+ assets, registry identity, and checksum manifests are artifact-closed;
11
12
  - source-code completeness;
12
13
  - production readiness;
13
14
  - vulnerability absence;
@@ -25,7 +26,7 @@ This repository state does not claim:
25
26
  - deployment approval;
26
27
  - package-registry access-control proof;
27
28
  - provider-side CodeQL, OSV, Scorecard, secret-scanning, or dependency-scanning
28
- ingestion;
29
+ absence-of-findings, ingestion freshness, or dashboard processing success;
29
30
  - GitHub branch-protection proof;
30
31
  - Trusted Publisher or OIDC publication proof;
31
32
  - generated HTML, Markdown, reports, lookup graphs, or agent envelopes as
package/README.md CHANGED
@@ -13,12 +13,31 @@ packets without copying verifier logic between projects.
13
13
  | Surface | State |
14
14
  |---|---|
15
15
  | Source visibility | Public |
16
- | Current layer | Public source with admitted scoped npm release evidence |
16
+ | Current layer | Public source; release evidence is version-specific |
17
17
  | Runtime implementation | Go CLI with npm and Python wrapper packaging |
18
- | Package release | Scoped npm release channel admitted; exact version and registry identity are owned by npm and GitHub Release artifacts |
19
- | Public-source provenance | Admitted through release artifacts and registry evidence, not by this overview |
18
+ | Package release | Scoped npm release channel configured; exact version and registry identity are owned by npm and GitHub Release artifacts |
19
+ | Public-source provenance | Claimed only for a version whose release assets, registry identity, and checksum manifests are artifact-closed |
20
20
  | License | MIT |
21
21
 
22
+ ## Install
23
+
24
+ The canonical registry identity is npm:
25
+
26
+ ```bash
27
+ npm install -D @research-engineering/agentic-proofkit
28
+ ```
29
+
30
+ Bun consumers may install the same npm registry package with Bun:
31
+
32
+ ```bash
33
+ bun add -d @research-engineering/agentic-proofkit
34
+ ```
35
+
36
+ npm remains the release-authority toolchain because release proof records npm
37
+ registry identity, `dist.integrity`, `dist.shasum`, `npm pack`, and root-only
38
+ registry install evidence. Bun is a supported consumer/developer package
39
+ manager path, not a replacement for npm release evidence.
40
+
22
41
  ## Project Boundary
23
42
 
24
43
  `agentic-proofkit` is intended to provide reusable proof-workflow mechanics for
@@ -29,6 +48,95 @@ Proofkit does not own a consuming repository's product requirements, native
29
48
  witness execution, receipt authenticity, proof freshness, merge admission,
30
49
  rollout, deployment, or production readiness.
31
50
 
51
+ ## How It Works
52
+
53
+ Proofkit has two related but separate loops:
54
+
55
+ - an **authoring loop** for turning observations into candidate invariants and
56
+ repo-owned specifications;
57
+ - a **proof loop** for admitting those specifications, binding them to evidence,
58
+ and producing derived views or bounded next actions.
59
+
60
+ The loops are separate because generated observations are not product truth.
61
+ Only the consuming repository can promote a candidate invariant into an
62
+ admitted requirement.
63
+
64
+ ### Proof Loop
65
+
66
+ ```mermaid
67
+ flowchart TB
68
+ subgraph Repo["Consumer repository authority"]
69
+ Requirements["Requirements and invariants"]
70
+ Bindings["Proof bindings and witness commands"]
71
+ Execution["Native test and CI execution"]
72
+ Decision["Owner decision"]
73
+ end
74
+
75
+ subgraph Proofkit["Proofkit reusable mechanics"]
76
+ Admission["Admit and normalize JSON"]
77
+ Graph["Build proof graph"]
78
+ Planning["Plan selected checks"]
79
+ Receipts["Admit receipt-shaped evidence"]
80
+ Views["Render derived views"]
81
+ Packets["Emit bounded agent packets"]
82
+ end
83
+
84
+ Requirements --> Admission
85
+ Bindings --> Admission
86
+ Admission --> Graph
87
+ Graph --> Planning
88
+ Planning --> Execution
89
+ Execution --> Receipts
90
+ Receipts --> Decision
91
+ Graph --> Views
92
+ Graph --> Packets
93
+ Views --> Decision
94
+ Packets --> Decision
95
+ ```
96
+
97
+ The core invariant is separation of authority. The consuming repository owns
98
+ what the product must do and which native checks prove it. Proofkit owns the
99
+ reusable mechanics: admitting structured inputs, preserving provenance,
100
+ checking proof-binding shape, planning bounded verification, rendering derived
101
+ views, and returning agent-readable next-action packets.
102
+
103
+ The diagram keeps the rendering syntax intentionally simple for GitHub README
104
+ compatibility. Requirements, bindings, witness commands, native execution, and
105
+ final decisions stay in the consumer repository. Proofkit outputs are admitted
106
+ reports, plans, views, receipts, or agent packets; they do not become product
107
+ truth unless the consumer explicitly admits them.
108
+
109
+ ### Invariant Authoring Loop
110
+
111
+ For a repository with no specification, Proofkit can guide an agent through two
112
+ different starting modes:
113
+
114
+ ```mermaid
115
+ flowchart TB
116
+ Start["Code, docs, tests, issues, and maintainer intent"] --> Mode["Choose trust mode"]
117
+ Mode --> Baseline["Code baseline mode"]
118
+ Mode --> Audit["Code audit mode"]
119
+ Baseline --> Observations["Caller-owned capability observations"]
120
+ Audit --> Observations
121
+ Observations --> Seeds["Candidate invariants and requirement seeds"]
122
+ Seeds --> Review["Owner review and promotion"]
123
+ Review --> Specs["Repo-owned requirements.v1.json"]
124
+ Specs --> Obligations["Proof obligations"]
125
+ Obligations --> Evidence["Proof bindings and test inventory"]
126
+ Evidence --> Admission["Proofkit admission and coverage"]
127
+ ```
128
+
129
+ | Mode | Use when | Result |
130
+ |---|---|---|
131
+ | Code baseline | Current behavior is accepted as the starting contract | Candidate requirements and bindings that preserve current behavior until owners review them |
132
+ | Code audit | Current behavior may be wrong or incomplete | Untrusted observations and questions that must be promoted by a repository owner before becoming requirements |
133
+
134
+ In both modes, generated records remain candidates until the consuming
135
+ repository admits them as repo-owned requirements, proof bindings, and witness
136
+ plans. Proofkit can structure and validate candidate packets, but it does not
137
+ extract complete behavior from arbitrary source code, invent product policy, or
138
+ make generated invariants authoritative by itself.
139
+
32
140
  ## Start Here
33
141
 
34
142
  | Need | Owner |
@@ -36,7 +144,7 @@ rollout, deployment, or production readiness.
36
144
  | Human orientation | This README |
37
145
  | Coding-agent startup | `AGENTS.md` |
38
146
  | Adoption and release-channel model | `ADOPTION.md` |
39
- | Completion criteria and remaining work | `BACKLOG.md` |
147
+ | Active work ledger | `BACKLOG.md` |
40
148
  | Contribution rules | `CONTRIBUTING.md` |
41
149
  | Vulnerability reporting boundary | `SECURITY.md` |
42
150
  | Explicit boundary denials | `NON_CLAIMS.md` |
package/SECURITY.md CHANGED
@@ -2,17 +2,20 @@
2
2
 
3
3
  ## Supported Versions
4
4
 
5
- No public source-based release is claimed by this repository state yet.
6
- Supported versions will be named after a reviewed public release exists.
5
+ Supported versions are named only after a reviewed public release has
6
+ artifact-closed release assets, registry identity, and checksum manifests.
7
+ The current source tree may be ahead of the latest supported package version.
7
8
 
8
9
  ## Reporting A Vulnerability
9
10
 
10
- Private vulnerability intake is not claimed by this repository layer. Before a
11
- public release, maintainers must enable GitHub private vulnerability reporting
12
- or publish another private reporting channel.
11
+ Use GitHub Private Vulnerability Reporting for this repository:
12
+ https://github.com/research-engineering/agentic-proofkit/security/advisories/new
13
13
 
14
- Until a private channel is available, do not open a public issue with exploit
15
- details.
14
+ If GitHub returns an unavailable route, open a public issue that requests a
15
+ private security contact path and includes no exploit details, credentials,
16
+ private data, or step-by-step reproduction.
17
+
18
+ Do not open a public issue with exploit details.
16
19
 
17
20
  Do not include live credentials, private keys, access tokens, or third-party
18
21
  secrets in reports. Use redacted examples and describe how to reproduce the