fips205-slhdsa-verified/verification
mrwulf d44b70d806 verification: separate the two accounting questions (round-9 review, Claude N2)
Phase 2c-accounting asked one question with a name-keyed identity: is every
kernel constant covered by the corpus inventory or the instrument surface?
Keying on the name alone conflates that with a second, different question --
does the kernel attribute a declaration to the same module the walk does?

Pair-keying the identity (module|name) was the obvious fix and is wrong: it
fails on legitimate per-module duplicates. Lean materialises equation lemmas
lazily, so each module forcing an unfold gets its own copy in its object file
(GPT-5.6 round-7 F8). Those records differ from the walk only in module
attribution, and every one of their names is accounted for elsewhere.

So the block now asks both questions and reports them separately: coverage
stays name-keyed and fail-closed, module attribution is counted and printed
rather than suppressed. A divergence is now visible instead of either passing
silently or failing for the wrong reason.

The accumulator declines the second question and says why: its INV rows carry
no module column (4 fields), so its records cannot be compared as pairs at
all. Gating on the field count rather than on the row tag -- the shape of the
record, not the spelling of its label. Adding that column is the open
follow-up; until then the identity there is name-keyed only, which is weaker
and now says so.

Certified by the round-14 sweep: 50/50 green across all six repositories,
both buttons and every self-test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-04 03:17:05 +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 verification: separate the two accounting questions (round-9 review, Claude N2) 2026-08-04 03:17:05 +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