Below the floor
The client refuses to treat the log as fully verified, and says so where the answer is read — not in a log line and not in a footnote. It does not withhold the answer. It withholds the claim that the answer came from a watched log.
Live site. Matching is not running yet.
Openness
A matching service can lie in three ways. Each way has a check that does not rest on the operator’s word.
The source this site was built from is published here, with a hash for every file. The protocol description is not, and matching operations stay closed.
That source sits on this site, next to a per-file hash list you can check what you received against. It is on the source page. It is not a souvenir on a code host, and it is not a link to somewhere that could change later.
The protocol description is a separate thing from the source, and it is not published: there is no specification URL today, and no link to one.
It can serve one visitor different code than another. It can show one reader a different log than the next. It can let a publisher quietly answer differently for one person.
Each of those has a check described below. Each check is about whether the machinery behaves as described, not about whether it is running.
This site ships its look and motion as local files next to the page. Nothing is fetched from a third-party origin. When the source that runs is published here, you hash what you received and compare it to the published production hash.
The per-file list is at source/SHA256SUMS.txt, and sha256sum -c checks a whole tree against it. For this page itself the shell check is the one that matters, because it does not ask you to trust a button on the page it is checking:
curl -sS "$URL/transparency.html" | sha256sum
Hash the CSS and the script the same way. One digest per file. If the look arrived from somewhere else, hashing the page would prove very little.
Not run yet. Without scripting, use the command above.
A digest that matches proves you were served the published bytes. A digest that does not match proves something changed between the published version and you — which is exactly the case a public hash exists to catch, and exactly the case an operator would prefer you could not tell from a routine update.
Answers are not simply asserted. Each one can be tied back to a log that only grows. Every result carries a token that names the entry it came from. History is archived rather than deleted: a note that has been replaced stops answering, and does not stop existing.
A log that only grows defends against a changed past. It does not, on its own, defend against two different presents. That is what the next section is for.
The attack a growing log cannot see is the operator keeping two logs and showing each reader the one that suits. Every reader’s copy is internally consistent. They simply are not the same copy. Detecting it needs someone other than the operator to say what they saw.
That is what witnesses do: they co-sign the log. The client counts how many co-signed inside the watch window, and compares that count to the floor the domain requires. Only witness roles are ever shown — never a witness name, person, or organisation. The live signal sits on the front page.
The client refuses to treat the log as fully verified, and says so where the answer is read — not in a log line and not in a footnote. It does not withhold the answer. It withholds the claim that the answer came from a watched log.
A domain may run with an empty roster. The client says split-view detection is not active, rather than pretending the log is watched. Zero of zero is a legal configuration and is displayed as one.
Whether the log is watched is a fact about the whole log, not about any one hit. It is highlighted with the log. It is not one of the decision signals on an ask.
Four different reasons a lookup can fail to match all produce the same answer, byte for byte. If they differed, the difference would itself be a fact about a person — leaked by a service that person never joined. The identical rendering is on the ask page.
The same reasoning runs through the bill. A no is charged exactly as a yes, so an invoice cannot answer the question the uniform no declines to.
A yes does not rank anyone. It does not say the person is good, employed, or still agreeing today.
A yes is not a licence to stop thinking. It is not a product decision. If you need “true now”, you ask again.
We guarantee the seal matches. That is all. Reliance sits with the asker.
The source is published. A written protocol description — formats and message flow set out so someone can write their own client without reading the code — is not. That is still owed, it is not published here or anywhere, and no draft of it is circulated for comment.
Matching operations stay proprietary. Published source does not make the operator’s running service customer-auditable, and this page does not pretend otherwise. This site — not a public code host — is the canonical source, and packages published elsewhere are checkable against the hashes here.