Commit 4dc4aca
feat: assay / assimilate / aggregate — proof-integration subcommands (#121)
## What
Three new a-themed subcommands that wire panic-attack into the
**PROOF-PROGRAMME** loop (survey → swap → fold-in-proofs), plus a small
version-drift fix.
### `assay` — proven-library substitution survey (`src/assay/mod.rs`)
Surveys a target for code that has a formally proven drop-in equivalent
in a `proven` / `proven-servers` library, reporting each candidate with
the proof artifact that backs it. Operationalises the "Proven cross-fit"
table in `PROOF-PROGRAMME.md` mechanically. Built-in catalogue:
`SafePath`, `SafeUrl`.
On this repo it reports `safe-path` **Offered** (port present in
`src/safe_path.rs`, 5 call sites still to rewire) and `safe-url`
**NoReplacementSource** (14 `VERISIMDB_URL` hits, not yet ported).
### `assimilate` — perform the swap (`src/assay/mod.rs`)
Stages the proven module into the tree, backs up the original
(`*.orig`), and records provenance — source **BLAKE3** hash + proof
backing + pending call-site rewires — under `.assimilated/`. Module
swaps are automatic; call-site rewiring is **reported, never
auto-edited** (mechanically editing arbitrary call sites is not a
reviewable operation).
### `aggregate` — fold external prover output into a report
(`src/aggregate/mod.rs`)
Ingests prover artifacts (Agda / Idris2 / Coq·Rocq / Lean / Isabelle /
TSTP / Alethe / DRAT·LRAT). Each artifact is **BLAKE3-hashed for
non-repudiation**, given a friendly name, classified (`Closed` / `Holes`
/ `Refuted` / `Indeterminate` — comment-stripped so prose mentioning
`postulate`/`Admitted` does not false-trigger), and reconciled against
an existing report's findings (**Backed / Corroborated /
Contradicted**).
Every verdict is explicitly conditioned on the named checker's trust;
the recorded hash lets the tool show exactly which bytes it was handed
if the assessment is later challenged. `@name`/`@covers
[claim:]kind:value` annotations travel inside the artifact; CLI
`--label`/`--covers` override.
## Proof foundation
Idris2 0.8.0 installed and the existing foundation re-verified from
first principles (all typecheck): `Types`, `Stripping` (Layer 1.0),
`PatternCompleteness` (PA1), `ClassificationSoundness` (PA2).
## Tests
17 new unit tests; full library suite (395) green; zero new compiler
warnings.
## Naming note
`assay` / `assimilate` are clean, no clashes. `aggregate` has **no CLI
clash** but conceptually overlaps `adjudicate` (aggregates
panic-attack's own reports) and `assemblyline` ("aggregate results"). A
thematically tighter alternative for "bring an external proof forward as
evidence" is **`adduce`** (or `annex`) — trivial rename if preferred.
## Still open (not in this PR)
- New subcommands not yet added to `README.adoc` / `EXPLAINME.adoc`
(CLAUDE.md count corrected).
- Next proof obligation (Layer 1.0 block/strings/composition/position,
issue #114) not yet advanced.
https://claude.ai/code/session_01K2TJLeQSyz4tpydZ18aRcb
---
_Generated by [Claude
Code](https://claude.ai/code/session_01K2TJLeQSyz4tpydZ18aRcb)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 2dc1393 commit 4dc4aca
5 files changed
Lines changed: 2039 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
5 | 42 | | |
6 | 43 | | |
7 | 44 | | |
| |||
0 commit comments