"""estateview - the estate map as a cockpit view. The same model as ESTATE.md (the canonical committed version), rendered interactively for humans, with RUNTIME as a first-class dimension: every entity dossier states whether anything is actually running, where, and when it starts and stops. A sync test guards name-level drift between this page and ESTATE.md. """ ESTATE_HTML = r'''LTL estate map — repos, services, loops

LTL estate map

Every persisting entity of the Lean Transparency Log endeavour, arranged as five lanes of custody — click any card for its dossier. The two colored routes are the loops that make this estate hard to hold in one head.
log 13 leaves root 3488a2d0… key 874c8a00… paper v0.9 · 23 pp · camera-ready attested components 5 pacta suite 144 green SLH-DSA campaign open — 0 certificates state as of 2026-07-22
ALWAYS ON droplet: caddy (TLS, static blog) · LTL web service (read-only container) · Forgejo (+ 03:00 mirror cron) ON-DEMAND operator machine: append/publish/sign ceremonies · cockpit · MCP — exist only while invoked NOT RUNNING warden: implemented prototype, no deployed instance, no funds watched everything else: static files or external parties — no process at all
extract / feed attest append / publish template (CI-pinned) serve / deploy consume Loop 1 — dogfood signer Loop 2 — self-attestation
Upstream inputs · frozen

curve25519-dalek-source

upstream Rust, pinned clone

anza-cryptography-source

Solana fork, pinned clone

risc0-…-dalek-source

RISC Zero fork, pinned clone

betrusted-…-dalek-source

Betrusted fork (+ xous-core, litex-boards context)

pasta_curves-source

Pasta curves, pinned clone

fips205-source

integritychain FIPS 205 (SLH-DSA), pinned snapshot
Verified subjects

dalek-ed25519-verified

16 certs · leaf 8 (gen 3)
attestedsigner source

anza-ed25519-verified

16 certs · leaf 9
attested

risc0-ed25519-verified

16 certs · leaf 10
attested

betrusted-ed25519-verified

16 certs · leaf 11
attested

pasta-pallas-verified

field layer proven · curve layer pending
not attested

fips205-slhdsa-verified

SLH-DSA-SHA2-128s verify path · skeleton — 0 certificates
11 certs · reviewer attest-with-conditionsnot attested

ltl-accumulator-verified

61 certs · proofs about the log's own accumulator model
attested · entry 13frozen 172a1d0loop 2
Machinery & operator-held
proof-aware-crypto-tooling-agent(pacta)

Provider service

check → append → publish · site & API code · publish templates
templates CI-pinned

Dogfood signer

verified-dalek-serial binary — signs every head
loop 1

Consumer library

verify · pin store · receipts · R0–R5 risk model

warden (code)

quorum-custody wallet · MCP · custody card

Paper

ltl.tex — v0.9 camera-ready · archives v0.1 / v0.2

Course + llms.txt

14 notebooks · agent-readable index
Operator-held · never in git

Signing key

offline · sole copy + encrypted SD backup

Operational log state

transparency-log-main — the true accumulator

Evidence archive (offline)

review kits · stamped artifacts
Published faces

lean-transparency-log

public mirror — leaves, heads, receipts, fail-closed verify.py + selftest
generated by publish

ltl.zkdefi.org

homepage from live leaves · /v1 API · /paper (+v0.2, v0.1) · key endpoint

Forgejo mirror

droplet · nightly 03:00 · full saymrwulf account
disaster copy

Infra as code (private)

droplet configuration in a private repo — unnamed so this map stays shareable

verifying-crypto-with-lean

undergraduate book — educational face, no LTL coupling
Consumers

Offline cloner

git clone → verify.py --all (fails closed) → own witness view

warden (runtime)

internal consumer — quorum of 4 attested fork verifiers

Agents

MCP tools · custody card with embedded inclusion proofs

swisspost-evoting-go-poc

prospective — dalek family-level match only, no receipt code
prospective

External reviewers

GPT-5.6 + Claude — adversarial consumers of paper, corpus, log
''' # ───────────────────────────────────────────────────────────────────────────── # MEASURED PROGRESS PANEL # # Everything above this line is hand-written prose. That is why, between # 2026-07-22 and 2026-07-30, this page told the operator that the SLH-DSA # campaign was "in progress" with a button "non-green by design" while it had # eleven proven certificates and a green button, and that the ed25519 forks had # "16 reviewed certificates" while they had 31 bound and 3022 inventoried. A # page that asserts cannot notice it has gone out of date; only a page that # measures can. # # So this panel renders ONLY what formal-verification-control's # tools/estate-progress.py derived from the repositories, and it states three # things a reader would otherwise have to assume: when it was measured, whether # the repositories have moved since, and which parts of this page are measured # at all. If there is no snapshot it renders that fact loudly rather than # quietly rendering nothing. # ───────────────────────────────────────────────────────────────────────────── import json as _json import os as _os import subprocess as _sp PROGRESS_JSON = _os.environ.get( "PACTA_PROGRESS_JSON", "/home/oho/GitClone/FormalVerification/formal-verification-control/ESTATE-PROGRESS.json") ESTATE_ROOT = _os.environ.get( "ESTATE_ROOT", "/home/oho/GitClone/Claude/FormalVerification") def _live_head(repo: str): try: r = _sp.run(["git", "-C", _os.path.join(ESTATE_ROOT, repo), "rev-parse", "--short", "HEAD"], capture_output=True, text=True, timeout=5) return r.stdout.strip() or None except Exception: return None def _panel(cls: str, title: str, body: str) -> str: return (f'

{title}

{body}
') def progress_panel() -> str: """The measured half of this page. Never falls back to prose.""" style = """ """ if not _os.path.exists(PROGRESS_JSON): return style + _panel("bad", "Progress: NOT MEASURED", f"""

No snapshot at {PROGRESS_JSON}, so this page is showing you nothing rather than something stale. That is deliberate: the previous version of this page displayed hand-typed claims that were eight days out of date, and looked exactly as confident as this one.

To populate it: formal-verification-control/tools/estate-progress.py --json

""") try: d = _json.load(open(PROGRESS_JSON)) except Exception as e: return style + _panel("bad", "Progress: SNAPSHOT UNREADABLE", f"

{e}

") moved = [] for repo, recorded in (d.get("repo_heads") or {}).items(): live = _live_head(repo) if live and recorded and live != recorded: moved.append((repo, recorded, live)) rows = [] for c in d["campaigns"]: ax = c["axes"] for axis, label in (("proof", "act one · proof"), ("attestation", "act two · attestation")): if axis not in ax: continue a = ax[axis] unm = (f' ' f'+{a["unmeasurable"]} unmeasurable' if a["unmeasurable"] else "") rows.append( f'{c["title"]}{label}' f'{a["earned"]} / {a["identified"]}' f'
' f'{a["pct"]}%{unm}' f'{c["reproduction_note"]}') t = d["totals"] head = (f'

act one — proof {t["proof"]["pct"]}% · ' f'act two — attestation {t["attestation"]["pct"]}% ' f'(two numbers, never one: a single figure is what let the ' f'old metric report 100% for work nobody had attacked)

') table = ('' '' + "".join(rows) + "
campaignaxisband-pointsverifiedreproduction
") contra = "" if d.get("contradictions"): items = "".join(f"
  • {c['id']}: {c['detail']}
  • " for c in d["contradictions"]) contra = (f'

    The ledger contradicts the repositories. ' f'These numbers are not trustworthy until this list is empty:

    ') note = (f'

    Measured {d["generated_at"]} by {d["generator"]}, ' f'from the repositories as they were at that moment. Nothing here is cached or ' f'carried forward. Everything on this page ABOVE this panel is ' f'hand-written prose and can be out of date; only this panel is derived.

    ') if moved: rowsm = "".join(f"
  • {r}: measured at {a}, " f"now {b}
  • " for r, a, b in moved) return style + _panel( "warn", "Progress: MEASURED, BUT THE REPOSITORIES HAVE MOVED SINCE", f'

    {len(moved)} repository(ies) changed after this snapshot, so the figures ' f'below describe an earlier state:

    {head}{table}{contra}{note}' f'

    Re-run tools/estate-progress.py --json to refresh.

    ') return style + _panel("", "Progress — measured, not asserted", head + table + contra + note)