mirror of
https://github.com/saymrwulf/proof-aware-crypto-tooling-agent.git
synced 2026-09-04 20:03:40 +00:00
estate: the SLH-DSA (FIPS 205) campaign enters the map — two new entities
Two repos joined the estate on 2026-07-22; both renderings (ESTATE.md + cockpit /estate) gain their cards, with every fact recomputed from the repos themselves: - fips205-source (upstream lane): verbatim snapshot of integritychain/fips205 (pure-Rust FIPS 205 / SLH-DSA), upstream pin 30bac08, snapshot head 5dca0db — single deviation: upstream CI workflows stripped, documented in-commit. Aeneas-compat patches land there as transparent, individually-justified commits; nothing is proposed upstream. - fips205-slhdsa-verified (subject lane): SLH-DSA-SHA2-128s verify-path campaign, marked exactly as its own check.sh says — CAMPAIGN IN PROGRESS, zero certificates, non-green by design. NOT attested; the map does not imply otherwise. Also: - liveness board now probes fips205-slhdsa-verified (a sibling under the default repos root). fips205-source is deliberately NOT probed: the upstream-source shelf lives outside that root, like the five existing source clones (comment documents the decision). - drift tripwire (test_estate_view_and_estate_md_do_not_drift) extended with both new sentinel names. - stale fact chip refreshed in both renderings: pacta suite 135 → 144 green (the suite grew during the cockpit era; chip was never bumped). - estateview's pasta dossier no longer calls the curve layer "the one open verification task in the estate" — the campaign is a second. Suite 144 green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
aff1c32fc5
commit
fd2f6baa36
4 changed files with 28 additions and 8 deletions
17
ESTATE.md
17
ESTATE.md
|
|
@ -7,9 +7,10 @@ including the two self-referential loops that make the estate hard to
|
|||
keep in one head. Maintained here in pacta because pacta is the
|
||||
machinery hub and the only repo that changes freely.
|
||||
|
||||
State snapshot (2026-07-19): log **13 leaves**, root `3488a2d0…`, key
|
||||
State snapshot (2026-07-22): log **13 leaves**, root `3488a2d0…`, key
|
||||
fingerprint `874c8a00…`, paper **v0.9 camera-ready (23 pp)**, five
|
||||
attested components, pacta suite 135 green.
|
||||
attested components, one campaign open (SLH-DSA — **zero
|
||||
certificates**), pacta suite 144 green.
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
|
|
@ -19,6 +20,7 @@ flowchart LR
|
|||
s3["risc0-…-dalek-source"]
|
||||
s4["betrusted-…-dalek-source"]
|
||||
s5["pasta_curves-source"]
|
||||
s6["fips205-source"]
|
||||
end
|
||||
subgraph V["VERIFIED SUBJECTS"]
|
||||
d["dalek-ed25519-verified<br/>16 certs · leaf 8 · signer source"]
|
||||
|
|
@ -26,6 +28,7 @@ flowchart LR
|
|||
r["risc0-ed25519-verified<br/>16 certs · leaf 10"]
|
||||
b["betrusted-ed25519-verified<br/>16 certs · leaf 11"]
|
||||
p["pasta-pallas-verified<br/>field layer only · NOT attested"]
|
||||
f["fips205-slhdsa-verified<br/>campaign in progress · 0 certs · NOT attested"]
|
||||
c["ltl-accumulator-verified<br/>61 certs · entry-13 subject · frozen 172a1d0"]
|
||||
end
|
||||
subgraph M["MACHINERY — pacta + operator-held"]
|
||||
|
|
@ -57,6 +60,7 @@ flowchart LR
|
|||
s3 --> r
|
||||
s4 --> b
|
||||
s5 --> p
|
||||
s6 --> f
|
||||
d -->|attest| prov
|
||||
a -->|attest| prov
|
||||
r -->|attest| prov
|
||||
|
|
@ -85,8 +89,8 @@ flowchart LR
|
|||
classDef held fill:#2b3442,stroke:#2b3442,color:#e8ecf2
|
||||
classDef pub fill:#efe9f5,stroke:#6d4a8f,color:#1c2430
|
||||
classDef cons fill:#fdf0da,stroke:#a86a10,color:#1c2430
|
||||
class s1,s2,s3,s4,s5 src
|
||||
class d,a,r,b,p,c sub
|
||||
class s1,s2,s3,s4,s5,s6 src
|
||||
class d,a,r,b,p,c,f sub
|
||||
class prov,sig,lib,wal,pap,crs mach
|
||||
class key,ops,sd held
|
||||
class mir,site,fj,book pub
|
||||
|
|
@ -115,8 +119,10 @@ deployed verifier; see the corpus KNOWN-GAPS ledger).
|
|||
| Repository | Lane | Role | Mutability |
|
||||
|---|---|---|---|
|
||||
| `curve25519-dalek-source`, `anza-cryptography-source`, `risc0-…-source`, `betrusted-…-source`, `pasta_curves-source` (+ `xous-core`, `litex-boards` context) | upstream | pinned inputs to extraction | **frozen — never modified** |
|
||||
| `fips205-source` | upstream | verbatim snapshot of `integritychain/fips205` (pure-Rust FIPS 205 / SLH-DSA); upstream pin `30bac08`, snapshot head `5dca0db` — single deviation: upstream CI workflows stripped, documented in-commit | pinned; moves only for transparent, individually-justified Aeneas-compat patches (nothing proposed upstream) |
|
||||
| `dalek-` / `anza-` / `risc0-` / `betrusted-ed25519-verified` | subject | Rust source + Lean proofs; 16 certs each; attested (leaves 8–11, generations at 0–7) | frozen at attested commits; branch moves only for docs |
|
||||
| `pasta-pallas-verified` | subject | field layer proven; curve layer pending; **not attested** | changes freely |
|
||||
| `fips205-slhdsa-verified` | subject | SLH-DSA (FIPS 205) verify-path campaign, parameter set SLH-DSA-SHA2-128s; **campaign in progress — zero certificates, `check.sh` non-green by design**; not attested | changes freely — campaign |
|
||||
| `ltl-accumulator-verified` | subject | 61-cert corpus about the log's accumulator model; **entry-13 subject**, frozen `172a1d0` | frozen; doc-only commits allowed |
|
||||
| `proof-aware-crypto-tooling-agent` (this repo) | machinery | provider service, consumer library, warden (+ local read-only cockpit), dogfood signer, paper, course, tests | **changes freely — the hub** |
|
||||
| `lean-transparency-log` | published | the public mirror: leaves, heads, receipts, fail-closed `verify.py` + selftest | **generated by publish** — canonical files here, templates in pacta, CI-pinned |
|
||||
|
|
@ -133,7 +139,7 @@ deployed verifier; see the corpus KNOWN-GAPS ledger).
|
|||
| **Operational log state** | `provider/state/transparency-log-main` — the true accumulator. Appends happen here; the mirror is its projection. |
|
||||
| **Evidence archive (offline)** | review kits and stamped artifacts (`_timestamp_hash8` convention); never in git. |
|
||||
|
||||
## What is running (operations, verified 2026-07-20)
|
||||
## What is running (operations, verified 2026-07-20; campaign rows 2026-07-22)
|
||||
|
||||
| Entity | Runtime | Where | Starts / stops |
|
||||
|---|---|---|---|
|
||||
|
|
@ -143,6 +149,7 @@ deployed verifier; see the corpus KNOWN-GAPS ledger).
|
|||
| provider write side (check / append / publish / sign) | **on demand** | operator machine | runs only during an append ceremony, minutes at a time; the signing key is offline otherwise |
|
||||
| warden (the financial agent) | **not running** | nowhere | implemented prototype: a wallet directory plus CLI/MCP/cockpit processes that exist only while explicitly started; no deployed instance, no funds watched |
|
||||
| custody cockpit | **on demand** | operator machine, localhost | `pacta wallet cockpit`, stops with Ctrl-C; read-only |
|
||||
| SLH-DSA campaign (`fips205-source` + `fips205-slhdsa-verified`) | **no process** | — | static repos, **zero certificates yet**; extraction/proof sessions are episodic operator-machine runs under lean-guard |
|
||||
| everything else (repos, paper, book, mirror, SD) | **no process** | — | static files; consumers and reviewers are external and episodic |
|
||||
|
||||
The human-facing interactive rendering of this whole map, runtime
|
||||
|
|
|
|||
|
|
@ -123,8 +123,9 @@ ESTATE_HTML = r'''<title>LTL estate map — repos, services, loops</title>
|
|||
<span class="fact">key <b class="mono">874c8a00…</b></span>
|
||||
<span class="fact">paper <b>v0.9 · 23 pp · camera-ready</b></span>
|
||||
<span class="fact">attested components <b>5</b></span>
|
||||
<span class="fact">pacta suite <b>135 green</b></span>
|
||||
<span class="fact">state as of <b>2026-07-20</b></span>
|
||||
<span class="fact">pacta suite <b>144 green</b></span>
|
||||
<span class="fact">SLH-DSA campaign <b>open — 0 certificates</b></span>
|
||||
<span class="fact">state as of <b>2026-07-22</b></span>
|
||||
</div>
|
||||
<div class="facts" style="padding-top:.15rem">
|
||||
<span class="fact" style="border-color:#1e7f4f"><b style="color:#1e7f4f">ALWAYS ON</b> droplet: caddy (TLS, static blog) · LTL web service (read-only container) · Forgejo (+ 03:00 mirror cron)</span>
|
||||
|
|
@ -155,6 +156,7 @@ ESTATE_HTML = r'''<title>LTL estate map — repos, services, loops</title>
|
|||
<div class="node" id="srcRisc0"><h3 class="mono">risc0-…-dalek-source</h3><div class="role">RISC Zero fork, pinned clone</div></div>
|
||||
<div class="node" id="srcBet"><h3 class="mono">betrusted-…-dalek-source</h3><div class="role">Betrusted fork (+ xous-core, litex-boards context)</div></div>
|
||||
<div class="node" id="srcPasta"><h3 class="mono">pasta_curves-source</h3><div class="role">Pasta curves, pinned clone</div></div>
|
||||
<div class="node" id="srcFips205"><h3 class="mono">fips205-source</h3><div class="role">integritychain FIPS 205 (SLH-DSA), pinned snapshot</div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -170,6 +172,8 @@ ESTATE_HTML = r'''<title>LTL estate map — repos, services, loops</title>
|
|||
<div class="chips"><span class="chip ok">attested</span></div></div>
|
||||
<div class="node" id="pasta"><h3 class="mono">pasta-pallas-verified</h3><div class="role">field layer proven · curve layer pending</div>
|
||||
<div class="chips"><span class="chip warn">not attested</span></div></div>
|
||||
<div class="node" id="fips"><h3 class="mono">fips205-slhdsa-verified</h3><div class="role">SLH-DSA-SHA2-128s verify path · skeleton — 0 certificates</div>
|
||||
<div class="chips"><span class="chip warn">campaign in progress</span><span class="chip warn">not attested</span></div></div>
|
||||
<div class="node" id="corpus"><h3 class="mono">ltl-accumulator-verified</h3><div class="role">61 certs · proofs about the log's own accumulator model</div>
|
||||
<div class="chips"><span class="chip ok">attested · entry 13</span><span class="chip frz">frozen 172a1d0</span><span class="chip l2">loop 2</span></div></div>
|
||||
</div>
|
||||
|
|
@ -241,9 +245,11 @@ const RUNTIME = {
|
|||
srcDalek:"frozen clone — nothing runs", srcAnza:"frozen clone — nothing runs",
|
||||
srcRisc0:"frozen clone — nothing runs", srcBet:"frozen clone — nothing runs",
|
||||
srcPasta:"frozen clone — nothing runs",
|
||||
srcFips205:"pinned snapshot — nothing runs; moves only for documented Aeneas-compat patches",
|
||||
dalek:"static repo — proofs replay on demand", anza:"static repo — proofs replay on demand",
|
||||
risc0:"static repo — proofs replay on demand", bet:"static repo — proofs replay on demand",
|
||||
pasta:"static repo — open work, run manually", corpus:"frozen repo — replay on demand",
|
||||
fips:"static repo — no process; campaign sessions are episodic operator-machine runs under lean-guard; check.sh exits non-green by design",
|
||||
provider:"SPLIT: the write side (check/append/publish) runs ON DEMAND on the operator machine, only during a ceremony; the read-only web face runs ALWAYS ON in the droplet container",
|
||||
signer:"on demand — invoked only while signing during a ceremony; key offline otherwise",
|
||||
conslib:"library — runs inside whichever consumer invokes it",
|
||||
|
|
@ -269,11 +275,13 @@ const DOSSIER = {
|
|||
srcRisc0:{lane:"Upstream inputs",mut:"frozen",facts:["Pinned clone of the RISC Zero dalek fork.","Input to extraction; never modified."]},
|
||||
srcBet:{lane:"Upstream inputs",mut:"frozen",facts:["Pinned clone of the Betrusted dalek fork.","xous-core and litex-boards sit alongside as platform context.","Input to extraction; never modified."]},
|
||||
srcPasta:{lane:"Upstream inputs",mut:"frozen",facts:["Pinned clone of the Pasta curves crate.","Feeds pasta-pallas-verified; never modified."]},
|
||||
srcFips205:{lane:"Upstream inputs",mut:"frozen",facts:["Verbatim snapshot of integritychain/fips205 — pure-Rust FIPS 205 / SLH-DSA (zero unsafe, no_std, const-generic).","Pinned at upstream 30bac08 (2025-09-01); snapshot head 5dca0db — the single deviation from verbatim is stripping upstream CI workflows, documented in that commit.","Aeneas-compat patches land HERE as transparent, individually-justified commits; nothing is proposed upstream (no affiliation)."]},
|
||||
dalek:{lane:"Verified subjects",mut:"frozen",facts:["16 reviewed certificates: field, group law, scalars, signature apex (T1–T4).","Attested in all three log generations; current leaf 8.","LOOP 1 anchor: the dogfood signer binary is built from this source — the log's heads are signed by code whose proofs are inside the log.","Attestation pins a commit; the branch only moves for docs."]},
|
||||
anza:{lane:"Verified subjects",mut:"frozen",facts:["16 reviewed certificates; current leaf 9.","Same proof pyramid as dalek, rebuilt for the fork's code structure."]},
|
||||
risc0:{lane:"Verified subjects",mut:"frozen",facts:["16 reviewed certificates; current leaf 10.","Differs from Betrusted's corpus by 27 changed proof lines (the paper's portability datum)."]},
|
||||
bet:{lane:"Verified subjects",mut:"frozen",facts:["16 reviewed certificates; current leaf 11."]},
|
||||
pasta:{lane:"Verified subjects",mut:"free",facts:["Field layer proven from own extraction; curve layer (group law + scalar mul) is the one open verification task in the estate.","NOT attested — the log carries only the four Ed25519 forks + the corpus."]},
|
||||
pasta:{lane:"Verified subjects",mut:"free",facts:["Field layer proven from own extraction; curve layer (group law + scalar mul) remains open work.","NOT attested — the log carries only the four Ed25519 forks + the corpus."]},
|
||||
fips:{lane:"Verified subjects",mut:"free",facts:["CAMPAIGN IN PROGRESS — ZERO certificates: verification/check.sh exits non-green and says so; that script is the only source of the word «proven» for this repo.","Scope: the FIPS 205 verify path only (slh_verify → fors / hypertree → xmss → wots → chain), parameter set SLH-DSA-SHA2-128s; keygen and signing are trusted base, exactly as ed25519 signing was.","The six SHA-2 hash oracles are opaque external models (TRUSTED-BASE.md), kept outside every future certificate's dependency cone.","Gate-0 (2026-07-22): Charon clean; Aeneas translated the whole cone with exactly one obstruction class (the Hashers fn-pointer struct) — campaign phase 1 is the compat patch in fips205-source.","NOT attested — the log carries nothing from this campaign yet."]},
|
||||
corpus:{lane:"Verified subjects",mut:"frozen",facts:["61 certificates over one boundary axiom (LTLAcc.sha256); 222-constant environment inventory; 15-gap honest ledger.","Mechanizes the archived report's §6: extractors, consistency binding, per-step pin safety.","LOOP 2 anchor: attested INTO the log as entry 13 — the log carries kernel-checked proofs about its own accumulator model.","Frozen at 172a1d0 (the attested commit); doc-only commits may move the branch.","Docs carry numbering notes: paper references are v0.2 numbering."]},
|
||||
provider:{lane:"pacta · machinery",mut:"free",facts:["pacta_provider: attestation check → log-append → log-publish; webdocs homepage + /v1 API code.","Holds the publish TEMPLATES for the mirror's verify.py / selftest / README — since 2026-07-19 pinned by CI (test_published_assets) after the audit caught a stale fail-open template.","Deploys to the droplet as the ltl container."]},
|
||||
signer:{lane:"pacta · machinery",mut:"free",facts:["verified-dalek-serial: the Ed25519 binary built from the attested dalek source.","Signs every tree head; before signing, the provider re-checks inclusion of the signer's own leaf.","LOOP 1: signature vouches for the tree; the tree contains the attestation of the signer's source (leaf 8). Execution provenance is reported, not proven — stated in the paper."]},
|
||||
|
|
@ -299,6 +307,7 @@ const EDGES = [
|
|||
["srcDalek","dalek","","extract"],["srcAnza","anza","","extract"],
|
||||
["srcRisc0","risc0","","extract"],["srcBet","bet","","extract"],
|
||||
["srcPasta","pasta","","extract"],
|
||||
["srcFips205","fips","","extract"],
|
||||
["dalek","provider","","attest"],["anza","provider","","attest"],
|
||||
["risc0","provider","","attest"],["bet","provider","","attest"],
|
||||
["provider","opstate","append","publish"],
|
||||
|
|
|
|||
|
|
@ -36,6 +36,8 @@ SERVICES: list[tuple[str, str, str]] = [
|
|||
]
|
||||
|
||||
# local working copies expected as siblings of this repo checkout
|
||||
# (the upstream-source shelf — curve25519-dalek-source, fips205-source, … —
|
||||
# lives outside this root and is deliberately not probed here)
|
||||
LOCAL_REPOS: list[str] = [
|
||||
"lean-transparency-log",
|
||||
"ltl-accumulator-verified",
|
||||
|
|
@ -45,6 +47,7 @@ LOCAL_REPOS: list[str] = [
|
|||
"risc0-ed25519-verified",
|
||||
"betrusted-ed25519-verified",
|
||||
"pasta-pallas-verified",
|
||||
"fips205-slhdsa-verified",
|
||||
"proof-aware-crypto-tooling-agent",
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -232,6 +232,7 @@ def test_estate_view_and_estate_md_do_not_drift():
|
|||
for name in ("lean-transparency-log", "ltl-accumulator-verified",
|
||||
"proof-aware-crypto-tooling-agent", "verifying-crypto-with-lean",
|
||||
"dalek-ed25519-verified", "pasta-pallas-verified",
|
||||
"fips205-source", "fips205-slhdsa-verified",
|
||||
"ltl.zkdefi.org", "Forgejo"):
|
||||
assert name in ESTATE_HTML, f"estate view lost: {name}"
|
||||
assert name in estate_md, f"ESTATE.md lost: {name}"
|
||||
|
|
|
|||
Loading…
Reference in a new issue