fips205-slhdsa-verified/verification
mrwulf 1b430dfd68 llbc: commit the artifact the claim depended on, and verify the pin block
Round-9 review (GPT-5.6, R9-F2, BLOCKER). TRUSTED-BASE said:

    "The .llbc is committed, so the SECOND step can be re-run by anyone with
     the pinned Aeneas and this repository"

.gitignore excluded it. `git ls-files` had no LLBC. The file existed only on
the author's disk. I ran `ls`, saw it, and wrote the claim without running
`git ls-files` — so a sentence that reads as an independent-reproducibility
guarantee was true for exactly one person. The experiment itself was real:
re-running Aeneas on that LLBC did reproduce Types.lean and Funs.lean
byte-identically. What was false is that anyone else could repeat it.

CHASING IT FOUND WORSE. `generated_artifacts_sha256` was read by NOTHING —
check.sh had zero references to it. Its Types.lean and Funs.lean entries
matched only because those files are ALSO pinned in model_integrity_sha256,
which is checked. The .llbc entry, the one nothing else covered, had been
stale since review round 2 (522d8b2): the source was re-extracted on
2026-07-28, the model files and their pins were updated, and this pin was not.
It named d8ec0b00…, an artifact that did NOT produce the committed model. The
file that did is 69666ddc… — timestamped nine seconds before Types.lean and
Funs.lean, and demonstrably regenerating them byte-for-byte.

A pin nothing verifies drifts, and nobody notices. That is the finding, and it
is a sharper instance of the pattern than the one the reviewer reported.

  · .gitignore no longer excludes SlhVerify.llbc; it is committed (1.6 MB)
  · its pin corrected to the artifact that actually produced the model
  · check.sh Phase 0 now verifies generated_artifacts_sha256, so the block
    stops being decorative. Negative-tested: one appended byte gives
    `✗ SlhVerify.llbc: sha256 dd5925770bc7 ≠ pinned 69666ddc43a4`, exit 1
  · TRUSTED-BASE item 3 rewritten. It now says what committing the LLBC does
    and does NOT buy: the Lean model is the faithful Aeneas image of THAT
    intermediate, and whether the intermediate is the faithful Charon image of
    fips205-source@a3ce8e8 rests on the author alone. Verifying the committed
    LLBC against itself establishes nothing about Charon.
    "Do not read the second half as evidence for the first."
  · README qualified AT THE CLAIM SITE, not via a later link

Button green after every edit; accounting still closes at 300 with no residual.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-03 20:36:19 +02:00
..
gen/SlhVerify correspondence: keep the artifact that says what the model must answer 2026-08-03 15:49:16 +02:00
Proofs Phase 3c: declaration coverage in both directions, and the accounting identity 2026-08-03 17:34:00 +02:00
AUDIT-MANIFEST.txt review round 6: pin the auditor, purge every olean, pin gen/ as a set 2026-07-28 09:22:12 +02:00
check-selftest.sh round 8: self-deriving harness pins, honest extraction guarantees, attestation basis 2026-07-28 14:40:39 +02:00
check.sh llbc: commit the artifact the claim depended on, and verify the pin block 2026-08-03 20:36:19 +02:00
drill.sh drill: the post-flight drill becomes a button (drill.sh) 2026-07-23 15:36:00 +02:00
driver-allowlist.txt Phase 3c: declaration coverage in both directions, and the accounting identity 2026-08-03 17:34:00 +02:00
extract.sh re-pin source @ a3ce8e8 (extraction-script honesty fixes) and rotate extract.sh's harness pin 2026-07-28 14:42:46 +02:00
inventory-allowlist.txt Phase 3c: declaration coverage in both directions, and the accounting identity 2026-08-03 17:34:00 +02:00
inventory_gate.sh Phase 3c: declaration coverage in both directions, and the accounting identity 2026-08-03 17:34:00 +02:00
lean-guard lean-guard: surface clamp/kill diagnostics on stderr (operator incident 2026-07-24) 2026-07-24 21:37:05 +02:00
model-correspondence.py correspondence: keep the artifact that says what the model must answer 2026-08-03 15:49:16 +02:00
MODEL-CORRESPONDENCE.txt correspondence: keep the artifact that says what the model must answer 2026-08-03 15:49:16 +02:00
PROVENANCE.json llbc: commit the artifact the claim depended on, and verify the pin block 2026-08-03 20:36:19 +02:00
RECORDED-RUN.md provenance: name the pin the machine actually enforces 2026-08-03 15:28:57 +02:00
SlhVerify.llbc llbc: commit the artifact the claim depended on, and verify the pin block 2026-08-03 20:36:19 +02:00