diff --git a/provider/src/pacta_provider/webdocs.py b/provider/src/pacta_provider/webdocs.py index f7a6080..a222dab 100644 --- a/provider/src/pacta_provider/webdocs.py +++ b/provider/src/pacta_provider/webdocs.py @@ -95,7 +95,7 @@ def _svg_tree(entries: list[LogEntry], root_hex: str, signing_backend: str, head root_x, root_y = positions[(len(levels) - 1, 0)] out.append(f'') out.append(f'Signed Tree Head — {escape(head_label)}({root_hex[:12]}…)') - out.append(f'signed by: {escape(signing_backend)} (the proof-attested library itself)') + out.append(f'signed by: {escape(signing_backend)} (verify path attested; signing itself not proven)') out.append(f'') out.append("") return "".join(out) @@ -213,7 +213,7 @@ milliseconds, instead of running a theorem prover for hours.

historical audit-failure attestation — kept forever; an append-only ledger does not erase its bad day (leaves 0–3: an early audit round that failed; leaves 4–7 re-attest the same four libraries cleanly)

Every box above is computed from the live log at page render — leaf hashes, -internal nodes, the root, and the signature are the real ones. The code that signs the log is itself an entry in the log — and checks its own entry before signing. In detail: before signing this +internal nodes, the root, and the signature are the real ones. The library that signs the log is itself an entry in the log — what that entry proves is its verify path (no signing code is proven, here or anywhere) — and it checks its own entry before signing. In detail: before signing this root, the provider Merkle-verified its own signing library's leaf (index {provenance.get('signing_library_leaf_index','?')}, certificates {escape(str(provenance.get('signing_library_certificates_proven','?')))})