Skip to content

§8.3's second algorithm: owner monitoring, and §12.3.6's incomplete list - #22

Merged
OR13 merged 1 commit into
mainfrom
owner-monitor
Jul 29, 2026
Merged

§8.3's second algorithm: owner monitoring, and §12.3.6's incomplete list#22
OR13 merged 1 commit into
mainfrom
owner-monitor

Conversation

@OR13

@OR13 OR13 commented Jul 29, 2026

Copy link
Copy Markdown
Owner

§8.3's second algorithm inverts the relationship every other operation has with its proof. Step 4 makes the user's only stop condition "having consumed all of the Transparency Log's response" — because §8.3 tells the log to limit how many distinguished entries it covers, and the user just asks again. So the element count decides when the walk stops.

That costs the verification technique its teeth, and the check says so rather than pretending otherwise. Everywhere else §12.3's exact-count rule turns a misreading into a leftover element; here the walk consumes whatever it's given by construction. What still catches a misreading is the ladders — an element attributed to the wrong entry evaluates to a prefix tree root that entry never had. The recorded check reads "to exhaustion" rather than "exactly".

Three things had to be right, two of them not where you'd look

The step 5 target is per-entry. The ladder targets the greatest version expected at that entry, from the owner's own record of when it created each version — not one global greatest. §8.3 says so; it's easy to read past, and the global version gives ladders of the wrong length at every entry but the last.

The owner needs VRF outputs for versions that never existed — a ladder for version 3 reaches for version 7. §8.3 step 3 supplies exactly that set during initialization, and a client retains it. That sentence turned this from a suspected spec gap into a modelling error in my harness. Checked before filing anything.

DRAFT-10: §12.3.6's list is incomplete. It gives a timestamp for each entry that causes a recursion and, separately, a proof for each entry reaching step 5. An entry that reaches step 5 without recursing gets a proof and no timestamp — and can't be placed in the log tree at all, since §11.8's leaf hashes a timestamp together with a prefix root and §12.3 ties inclusion to leaves whose timestamps were provided. §12.3.3 lists both for a fixed-version search. Resolved by measurement, not filed: the peer sends them, in a determinable position.

The case had to be built deliberately

With a week-long window only the root of a seven-entry log is distinguished, so the first recorded owner monitor walked one step right, found nothing distinguished, and checked no ladders at all — the same degenerate shape §8.2 had. Spacing the entries and shrinking the window gives the walk something to do. Both shapes are kept.

All eight monitoring cases replay. §8 is complete.

6706 checks / 789 cases / 18 suites, 0 disagreements. cargo fmt, clippy -D warnings, 176 kt-tree tests green; line coverage 97.7%.

🤖 Generated with Claude Code

…the proof

§8.3's second algorithm inverts the relationship every other operation has with its proof. Step 4
makes the user's only stop condition "having consumed all of the Transparency Log's response",
because §8.3 tells the log to limit how many distinguished entries it covers and the user simply
asks again. So the element count decides when the walk stops.

That costs the verification technique its teeth, and the check says so rather than pretending
otherwise. Everywhere else §12.3's exact-count rule turns a misreading of the ordering into a
leftover element; here the walk consumes whatever it is given by construction. What still catches a
misreading is the ladders — an element attributed to the wrong entry evaluates to a prefix tree
root that entry never had — so the recorded check reads "to exhaustion" rather than "exactly".

Three things had to be right before the recorded case would replay, and two of them are not where
a reader would look.

The step 5 ladder targets the greatest version expected at *that entry* from the owner's own record
of when it created each version, not one global greatest. §8.3 says so; it is easy to read past,
and using the global version gives ladders of the wrong length at every entry but the last.

The owner needs VRF outputs for versions that have never existed, because a ladder for version 3
reaches for version 7. §8.3 step 3 supplies exactly that set during initialization and a client
retains it — which is the sentence that turned this from a suspected specification gap into a
modelling error in the harness. Checked before filing anything.

And §12.3.6's list of what a proof contains is incomplete: it gives a timestamp for each entry that
causes a recursion and, separately, a proof for each entry reaching step 5. An entry that reaches
step 5 without recursing therefore gets a proof and no timestamp — and cannot be placed in the log
tree at all, since §11.8's leaf hashes a timestamp together with a prefix tree root and §12.3 ties
inclusion to the leaves whose timestamps were provided. §12.3.3 lists both for a fixed-version
search. Resolved by measurement rather than filed, since the peer sends them and sends them in a
determinable position: recorded as DRAFT-10, and the case that pins it is the only one where an
entry reaches step 5 without recursing.

That case had to be built deliberately. With a week-long window only the root of a seven-entry log
is distinguished, so the first recorded owner monitor walked one step right, found nothing
distinguished and checked no ladders at all — the same degenerate shape §8.2 had. Spacing the
entries and shrinking the window gives the walk something to do. Both shapes are kept.

All eight monitoring cases now replay, and §8 is complete.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@OR13
OR13 marked this pull request as ready for review July 29, 2026 16:04
@OR13
OR13 merged commit 601b52c into main Jul 29, 2026
3 checks passed
@OR13
OR13 deleted the owner-monitor branch July 29, 2026 16:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant