A referee persona (deep crypto, shallow Lean, no prior drafts) read the whole paper; all findings applied, ~40 edits, none touching technical content: - house terms defined at first use: certificate (in contributions), accumulator (= the log's Merkle tree + verifiers), signed view (4.2), pin rule/pin-store (named at their definition, 4.3), axiom cone as the one canonical synonym, loop-fidelity glossed, facade tied to its entry point, scope block named in 3.1, oracles marked 'uninterpreted function symbols, not random oracles' - operator 'verdict' renamed label everywhere (Verdict stays the consumer algorithm); fork disambiguated (codebases vs fork evidence) - notation: declarations T_i -> Theta_i (tier collision), HIST chain k kept but challenge scalar -> c and signature bytes -> R-bar (k/r_1 overloads resolved); tiers T1-T4 introduced in 6.1 body - theorem-statement sensitivity: Thm 8 scoped to the recursive verifiers in the STATEMENT; Prop 1's 'exhibited' made conditional with pointer; Thm 3 carries its honest-pin note; Def 2(iii) gets the forgery caveat; Lemma 5 declared a restatement of Prop 2 - ghost references resolved (whole-tree root binding stated in place, twice); revision residue purged (Post-submission -> Subsequently closed; tense unified; hardened state, guarded replay, KNOWN-GAPS explained); 6.2 retitled 'A second instantiation' - six triple-read sentences rewritten per referee (them-sentence, vacuous->trivially-by-counting with real non-vacuity guard wording, pin supplier, physical-execution antecedent, bridges-land, App E factorization) - appendices A-D now each cited from the body; App D states its shared opaque boundary; FIPS 205 added to the bibliography [23] and cited - abstract divergence sentence rewritten (divergence not 'boundary', past tense, closure named, 'the corresponding log entry') Gate green: v0.13, 25pp; pages 1/16/25 eye-checked; suite 156. |
||
|---|---|---|
| .. | ||
| src/pacta_provider | ||
| pyproject.toml | ||
| README.md | ||
PACTA Proof Check Provider
This nested project is a prototype third-party proof-checking service. It reuses host Lean/Aeneas infrastructure, runs portable PACTA replay/audit checks, and emits signed attestation certificates.
It does not modify anything outside this repository. It may read configured toolchains such as ~/aeneas-toolchain/env.sh.
It can also maintain a local transparency log. The log is an RFC 9162-style Merkle accumulator over signed attestations. It emits Signed Tree Heads with Ed25519 today; heads are dual-sign capable with an additive SLH-DSA-SHA2-128s slot (proven verify path), and the ML-DSA/FIPS 204 slot stays honestly not_configured/unavailable — never silently filled. Agents that require both signatures must reject such receipts.
Commands
PYTHONPATH=src:provider/src python -m pacta_provider discover
PYTHONPATH=src:provider/src python -m pacta_provider init-key --key-dir provider/state/demo-provider
PYTHONPATH=src:provider/src python -m pacta_provider check \
--config examples/repos.yaml \
--repo-name dalek-ed25519-verified \
--repo repos/dalek-ed25519-verified \
--provider local-pacta-provider \
--private-key provider/state/demo-provider/provider.ed25519.key \
--public-key provider/state/demo-provider/provider.ed25519.pub \
--out provider/out/dalek.attestation.yaml
Transparency log:
PYTHONPATH=src:provider/src python -m pacta_provider log-init \
--log-dir provider/state/transparency-log \
--provider local-pacta-provider \
--public-key provider/state/demo-provider/provider.ed25519.pub
PYTHONPATH=src:provider/src python -m pacta_provider log-append \
--log-dir provider/state/transparency-log \
--attestation provider/out/dalek.attestation.yaml \
--private-key provider/state/demo-provider/provider.ed25519.key \
--public-key provider/state/demo-provider/provider.ed25519.pub \
--out provider/out/dalek.receipt.yaml
PYTHONPATH=src:provider/src python -m pacta_provider log-sth \
--log-dir provider/state/transparency-log \
--private-key provider/state/demo-provider/provider.ed25519.key \
--public-key provider/state/demo-provider/provider.ed25519.pub
The resulting certificate can be consumed by pacta with --attestation, --trust-attestation-provider, and --attestation-public-key.
The receipt can be consumed with --transparency-receipt, --transparency-log-public-key, and --require-transparency-receipt.
The private key must remain provider-side. Downstream agents only need the public key, the inclusion receipt, and a policy decision that the provider name/log key is trusted.