Technology
What is underneath, and where it lives
This page is a map, not a manual. Each part gets the paragraph that says what it is and why it is that way; the working code, the specification and the reference documentation are all in one repository, and every section below ends by pointing at it.
Nothing here is needed in order to use the method. It is here for the reader who wants to know what they would be trusting before they trust it — which is the only kind of reader this project is written for.
The format
One JSON line per event, each carrying the last one's fingerprint
The register is append-only. Altering a past event invalidates every hash that follows it, so a correction is a new event and the old one stays where it was. The register is the evidence, and it is never edited.
Each event's digest, recomputed from its own bytes, has to be
the prev of the event that follows, all the way to the root. The bytes are
hashed after a canonical serialisation with sorted keys, so two readers who recompute
the chain get the same answer or one of them has a different file. That serialisation
is normative and versioned, with conformance vectors, because a second implementation
has to be able to agree with the first.
The specification, with its conformance vectorsgithub.com/fchinaglia/colophon
The seal
What the seal settles, and what it leaves open
sealed by
Ed25519 signature
Detached. The public key travels in the bundle, so the check runs offline with no domain to keep alive — and a key inside the package it signs cannot say whose it is. It says one key closed this register, and that the same key closed the author's other cases.
when
RFC 3161 timestamp
A timestamp authority attests the register existed in that form on that date. Verifiable against a certificate bundle a reader already has.
when, again
Bitcoin anchor
Submitted to OpenTimestamps. Submitted is not anchored: it proves nothing until the calendars confirm, and the method says so rather than implying otherwise.
All three are detached files alongside the register, which stays intact and readable. No container that swallows the document is used: a register lives by being inspectable, and a format that makes it unreadable without a specific toolchain is the opposite of what is needed. The signature is performed by the author and never by the model — a private key inside the model's environment is a signature that means nothing.
None of the three says who.
That comes from outside the package, and it is optional: a qualified electronic signature on the document the bundle is attached to. A supervised trust service identified the signer before issuing the certificate, so a reader gets a natural person rather than a key fingerprint, and one signature covers the article and the evidence together.
Without one, all of this is a consistent, sealed, timestamped record from an author you are taking on their word — which is a real thing to be, and not the same thing as a name.
So why is the register signed at all?
Because the qualified signature covers the document the record arrived in — and the record also travels on its own. It gets forwarded, archived, extracted. At that point there is no document and no qualified signature, and this key is the only one left in the package. That is the case that comes up most often, and it is the whole answer on its own.
Three more, in order of how much they buy. The same key seals every case its author closes and the fingerprint sits inside each sealed manifest, which makes a body of work one body rather than a series of folders that merely resemble each other — a claim no signature on any single document can make. If the author ever publishes that key, every case sealed with it gains an anchor retroactively, which an unsigned register can never do: its door closes at the seal. And when a case is reopened the old seal is kept beside the new one, so the history of a case's states is carried by these files.
None of that is identity, before or after — and it is worth saying twice, because the opposite reading is available and cheap.
The qualified signature does not make the measurement true either. It says this file came from this person and has not changed since, nothing about whether the numbers are right. A reader seeing a legal name in a signature panel hears the stronger claim unless somebody says otherwise — so the method says otherwise, in the place the reader is standing.
The verifier
One HTML file, no network, no dependencies
It recomputes the chain, checks the manifest digest by digest, checks the signature, and reads what the timestamp commits to. It opens the document it is given and reads the record out of it, so nobody has to extract anything by hand, and it shows the case's own report beside the verdict.
It travels inside the document. A reader who was handed the PDF already has the verifier; the copy served from this domain is a convenience for anyone who has a bundle and no document. Nothing of ours has to stay online for a case to remain checkable, and nobody has to be alive in ten years — which is the property the whole design exists to protect.
It opens in a new tab. There are two copies and they behave identically. The one that travels inside a case carries no site at all — no masthead, no menu, nothing that has to stay online — because it has to still work in ten years with nobody answering. The one served here carries the masthead, so a reader who lands on it can tell where they are and get back. The checks are inlined into both from the same source, so the two can differ in chrome and never in what they find, and both digests are published. This site stays open behind it; close the tab to come back.
- it does not recompute the measurement
- It confirms the measurement files carry the digests the register sealed — which is what proves the published numbers are the sealed numbers — and leaves the arithmetic to the tool that did it. Two implementations of one number are worse than one.
- it never touches the network
- Validating a timestamp authority's certificate and confirming a Bitcoin anchor both require it, so it prints the commands instead of pretending. Querying a block explorer by default would quietly turn an offline verifier into a networked one.
- it does not tell you whether to trust the signer
- It computes what can be computed offline about the signature over the document and stops there. Whether a certificate is qualified, was valid on the day, or has been revoked needs a trusted list and a revocation service: network and policy, not arithmetic. A valid digest is not a valid identity.
The limit, stated before the results
A voluntary record cannot prove it is complete
You can record faithfully or you can omit, and cryptography does not tell the two apart. Everything above proves that what is recorded has not moved since it was sealed. None of it proves that nothing was left out, and the register is compiled by the model about its own work.
It proves
- That an event was not altered after it was recorded, and that no earlier event was edited without it showing.
- That the record existed in this exact form on a given date, attested by two parties who do not depend on the author.
- That the text you are reading is the text that was measured — rebuilt from the annotated pieces and compared character for character.
- That the published numbers are the numbers that were sealed, not a later edit of them.
It does not prove
- That the record is complete. No voluntary system can, and this one says so first.
- That the attribution is correct. It was compiled by the model that co-wrote the text, about its own work.
- Who wrote it — unless the author chose to sign the document, which is a separate act with a separate meaning.
- That the text is any good, or honest, or worth your time. Provenance is not quality.
We say it first because it is the strongest criticism that can be made of a voluntary disclosure, and it is a fair one. The value of a record like this is not in the proof: it is in the responsibility an author takes on by publishing it, and in the fact that it can be inspected at all.
Credible means expensive to fake, not verifiable on the merits.
Pretending otherwise destroys the credibility it is meant to build. The attribution is compiled by the model about its own work, which is the limit no amount of cryptography reaches: a record can be intact, sealed and timestamped, and still be an account given by an interested party.
All of it, in one place
The repository
The skill, the specification, the reference documentation, the paper and the sealed cases are one repository. It is MIT licensed: use it, change it, redistribute it — a standard that cannot be reused is not a standard.
Beside them is a command-line tool that runs the whole method with no model involved at all. It is what lets a case sealed ten years ago still be opened and checked by somebody with a shell, long after any particular conversation has stopped existing.
Off this site