The paper was reinvented (new title, new section/theorem numbering, old
report archived at /paper/v0.2), which made this repo's paper references
ambiguous — worst case: KNOWN-GAPS gap 14/15 cites 'paper §5.3/§5.4'
meaning the OLD report's pin-store sections, while the CURRENT paper's
§5.3/§5.4 are entirely different content. Fixes:
- README: points to the archived v0.2 (the version this corpus was built
against) AND the current paper (which presents the results in its §5
and carries this corpus as entry 13).
- STATEMENT-MAP + KNOWN-GAPS: explicit numbering notes — all 'paper §N'
references are v0.2 numbering; do not match against the current paper.
- ATTESTATION-RUNBOOK facts table: the 'log' row claimed 12 leaves
FROZEN and the 'entry 13' row claimed 'does not exist yet' — both now
state execution-time vs current state (13 leaves, 3488a2d0, entry 13
live; the runbook is the record of that execution).
No Lean, verification, or attestation content touched; the attested
freeze commit 172a1d0 is unaffected (attestation pins the commit, not
the branch).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The log now carries kernel-checked proofs of its own machinery. Subject
ltl-accumulator-verified@172a1d0, 61/61 proven+clean, mechanized-model
scope (KNOWN-GAPS 14/15). Consistency 12→13 accepted by both the
deployed verifier and the mechanized model; live-consumer-verified.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The drill caught: committing the paper outline advanced the pacta
working tree 8b1a325→84e0eb8, so the release tuple's exact-SHA
PACTA_COMMIT=8b1a325 was already stale and B1b's 'HEAD==PACTA_COMMIT'
would have falsely aborted. Verified 8b1a325..84e0eb8 touches ONLY
paper/ (zero producer code). Fixed the invariant to pin the producer
CODE (PACTA_CODE_BASE=8b1a325, git diff -- src provider must be empty),
tolerating doc-only commits above it — the correct thing to pin is the
reviewed producer code, not an ephemeral HEAD.
Drill also re-confirmed by execution (not from Opus-session logs):
operational append base pristine (12 entries, root bcd15f9d, max index
11, mtimes Jul 7 — uncontaminated by any rehearsal); B1 clean-room exit
0 + ATTESTATION GREEN with fidelity; live log 12/bcd15f9d; producer
suite 115/115.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Execution found: the append signs with the verified-dalek-serial
dogfood backend, which needs BOTH the built binary (dogfood/state/) and
the key (provider/state/local-provider/) — neither exists in a fresh
clone (a fresh clone fails the wallet dogfood-signer test, orthogonal
to the log path). B1b now verifies the operator's working tree is at
PACTA_COMMIT, tracked-clean, binary present, suite green.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Two defects found in the first minutes of Phase B, both in my own check
text, both would have misfired on a PRISTINE log:
- B0 'exactly 12 entries under entries/' counted 16 (the live log has
12 numbered leaves + 4 per-component <name>.attestation.json
convenience pointers). Now counts entries/[0-9]*.json and trusts the
STH tree_size.
- B3 'exactly 4 changed paths, receipts unchanged' was WRONG: publish
regenerates every component's inclusion-proof receipt against the new
head (correct CT behavior). Empirically captured on a throwaway
publish over the real published clone: 9 changed paths (3 new + STH +
history + 4 recomputed receipts); numbered leaves 0..11 and existing
attestation pointers byte-identical; provider.ed25519.pub unchanged
under the real key. The old check would have falsely aborted a
correct append.
Neither is a log problem — the log is pristine (12 leaves, bcd15f9d).
The rehearsal missed both because it checked only numbered-leaf
immutability; live-state execution caught them, as B0 is designed to.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Self-audit of the round-6 fix batch (operator-ordered drill) found and
fixed in this file:
- §2a pinned the producer at 87ef2a1 — but the GREEN 12→13 rehearsal
ran at d937a94, and 87ef2a1 LACKS the leaf-scope fix. The stale-pin
defect class (round-6's own critical) reintroduced within hours;
now names all three required pacta commits and the rehearsal commit.
- B0/A4 carried a FALSE mechanism claim: 'published leaf projections do
not rebuild the tree'. Executed check: they DO (hash each stored leaf
as-is; per-entry hashes match; root == bcd15f9d). The real trap is
double-wrapping on re-append. Both texts corrected — a wrong reason
in a runbook breeds future misdiagnoses.
- B2 called the candidate 'UNSIGNED' — check signs at generation; the
gate is inspect-before-APPEND. Reworded (+ B6 digest field renamed).
- Facts header said 'round-4 freeze'; key row said 'no second copy
exists' (contradicting A3b done); kit row stopped at round 4;
Phase-A heading still waited for IACR. All updated.
- B3c renamed B3b (there was no B3a/B3b sequence).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Both round-6 reviewers' critical/high procedural findings:
- CRITICAL (both): runbook pinned the wrong commit (2da0a79 in the
facts table, B1 checkout, A4) while the reviewed subject and the
scoped-wording config live in 172a1d0. Re-pinned everywhere;
remaining 2da0a79 mentions are explicitly historical. Added §2a
release tuple (SUBJECT_COMMIT/PACTA_COMMIT/EXPECTED_OLD_SIZE/
EXPECTED_OLD_ROOT/KEY_FINGERPRINT) that every Phase-B step consumes.
- A2: "14 entries" → 15, with the dynamic grep count and gap 15 called
out as the claim-constraining one.
- GPT §10: new B0 — preflight the LIVE predecessor (size/root/STH-sig/
witness-audit-under-real-key/live-service/mirror agreement/no partial
entry 13/operational-state roots to bcd15f9d). An append-only system
re-reads its predecessor; it does not trust a Facts table.
- GPT §4: new B1b — clone + checkout + clean-tree + green-suite the
pinned PACTA_COMMIT; that is the only producer used.
- GPT §5 + both: new B2b candidate-leaf inspection gate (subject commit,
61/61 proven+clean, scope.deployment_constraints carries the required
wording and not the forbidden phrase, scope.exclusions complete) —
inspect before you append a leaf you cannot take back.
- GPT §11: exact changed-path set + prefix immutability (entries
0..11 byte-identical, one appended history line) instead of
"exactly four paths" by description.
- GPT §7/§8: B6 binds sanitized evidence (subject/producer commits,
config + candidate + fidelity-transcript digests, old/new roots,
consistency + witness + pin results) so the leaf's fidelity clause
points at a concrete object.
A4 redone as a structural 12→13 rehearsal (GPT Method B) — green:
predecessor copy roots to bcd15f9d, candidate 61/61 with scoped wording
IN THE LEAF, append→13, prefix immutability, consistency 12→13 accepted
by deployed AND mechanized model. Transcript on SD. Facts table:
pacta freeze lifted; producer = round-6 PACTA_COMMIT, not 3d81d53.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Round-4 verdicts: Claude reviewer — nothing blocks the freeze, no
remaining findings; GPT-5.6 — approve after minor documentation fixes,
attestation scoped to the mechanized model. This round is those fixes;
no Lean surface changed.
- 218/59 → 222/61 everywhere, and STRUCTURALLY: check.sh Phase 3c
asserts the audit counts (STATEMENT-MAP + README vs allowlist/CONES)
and the four fidelity pins (STATEMENT-MAP vs run_fidelity.py
constants) on every run — stale-count drift is a red button now
(R4-1, third recurrence of the class).
- Gap 14 reworded to evidence-vs-inference (the invariant "is assumed",
not "transfers"), witnesses cited (paper §5.3/§5.4; pacta
sthstore.py/logclient.py — outside the fidelity target). New gap 15:
deployment refinement invariant unmechanized (GPT's principal
finding, split out because it carries the deployed-soundness claim).
- Runbook: A1 marked done (both approvals on SD); B2 gains the REQUIRED
scoped attestation wording (GPT §11) as a gate condition — entry 13
cannot claim "deployed verifier formally verified".
- run_bare.sh fail-closes on Lean version AND commit (rejection path
tested with a fake toolchain: FATAL, exit 1).
- Harness: "consistency baseline family" line (GPT §8); gap 14 says
"fixed offsets n−1/n+1/n+7" (R4-5).
- RESPONSE round 5, incl. refutation of GPT §7 (the target tarball
demonstrably contains MANIFEST.sha256 + TARGET-PROVENANCE.md; the
round-5 kit also ships both unpacked as a courtesy).
check.sh exit 0 ATTESTATION GREEN (Phases 0-4 incl. new 3c); selftest
exit 0, 9/9 + control. Live LTL untouched (12 leaves, bcd15f9d…).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Parked blog-post source, publishes after entry 13 (so it can end with
a live leaf link). Part I: the tree holds verification-event records
(operator claims that name their own evidence via commit+toolchain
pins), not the Lean proofs; three-layer guarantee table (kernel /
replay pin / accumulator). Part II: the optimistic-rollup resemblance
made precise — two fraud layers (log-layer: Theorem 3 as a
constructive fraud-proof generator; claim-layer: replay with an
infinite challenge window), the honest enforcement gap (reputational
vs economic slashing, CT lineage), the watcher/liveness assumption,
and the inversion (validity-proven payload in an optimistic envelope;
entry 13 = formally verified fraud-proof machinery).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The append driver was never lost: pacta's committed provider/ CLI
(check / log-append / log-publish) produced leaves 8-11, signing heads
with the verified-dalek-serial dogfood backend (self_inclusion:
verified). Only the per-run orchestration was session work — A4 is now
rehearsal + private documentation, not reconstruction. A3: private key
located laptop-side (0600, gitignored state dir; public half
byte-matches provider.ed25519.pub); exact path deliberately excluded
from this public file. A3b: the key has NO second copy anywhere —
encrypted SD backup procedure added as a Phase-A blocker.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The droplet serves a DERIVED log dir rebuilt from a published/ mirror
(PersonalCloudServer DEPLOY.md § 'The LTL service') — B4 now refreshes
published/ and runs reconstruct.py instead of a bare app pull. Facts:
signing key verified NOT on the droplet (server only serves); server
deployment now version-controlled in private PersonalCloudServer@a186bac
(md5-verified == droplet).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Corrected the facts table (mirror URL scheme zkdefi.org/saymrwulf/,
nightly reconcile path + log) and replaced the server-side A5 with an
anonymous seven-repo GitHub==Forgejo head comparison.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Single authoritative ToDo between now and leaf index 12. Phase A (now):
reviewer confirmations, author statement read, operator-only key
confirmation (openssl pubkey diff against provider.ed25519.pub),
reconstruction of the never-persisted append driver (found 2026-07-12:
the leaves 8-11 driver was session work), Forgejo mirror verification.
Phase B (gated on ePrint decision + fresh explicit operator order):
clean-room button run, driver append, witness-audit, consumer
sth-refresh 12->13, publish, live checks, mirrors, SD archive. Iron
rules, failure protocol, and an Agent Appendix (key handling forbidden
to agents; the fifth gate condition cannot be satisfied from files).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>