Operator-ordered UX audit (full linear read + every page rendered and visually inspected + both reviewers' 'visually clear' certifications spot-checked). Scope: no theorem, proof, or scope sentence changed in meaning. BUGS FIXED (both missed by both round-12/13/14 reviewers): - Deployment figure: leaf 11 was CLIPPED to 'clea' by the overlapping 1.3cm 'accumulator' box — box now standard width, label 'accum.' Verified fixed by render. - The sentence 'Leaf 12 attests the accumulator corpus at commit' was split from its hash by a float/page break, stranding the bare commit after the figure — now wrapped in samepage. Verified by render. - 'signing- library' hyphenation artifact in §6.3. READER AIDS (for adjacent-field experts; verifiability up, rigor untouched): - Notation summary table (12 rows) at the end of §4, right before the security analysis that uses every symbol. - NEW transport figure (now Fig. 2): the 6->8 instance with the opening path (red), frontier values A,B (blue), consumed proof value (dashed), kept siblings (orange), and the r0/P0 assembly inset — §5.4's five pages previously had zero figures. Hand-verified by render; referenced from the transport-algorithm paragraph. - 'Games at a glance' table (game/adversary/secrets/wins-by/consequence) after the §5.4 intro. - One-sentence reading guide at the top of §5.4. - 2->3 tie-in after the transport proof (the log's own transition as the smallest growth case; seam subsection gains a label). - 'assumption cone' defined at first use (§2.1). DE-SEDIMENTATION (three review rounds of accreted hedges, reorganized with all semantic content kept): - §5.4 intro: one 14-line wall -> four short paragraphs (context / two levels / non-interactivity), duplicated hardness sentence merged. - HIST game: definition crisp, commentary moved to a parenthetical. - Abstract: ~15% tighter (inventory numbers -> '61 human-reviewed certificates over a single uninterpreted SHA-256 axiom'; run-on split). All boundary/honesty sentences retained. 22 pages, 0 overfull, suite 115 green. Deployment figure renumbered 2->3 (no numeric figure cross-references existed). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| 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 /Users/oho/GitClone/ClaudeCodeProjects/your-lean-project/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 and records an ML-DSA/FIPS 204 signature slot as unavailable unless a real backend is present. 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.