Colophon written over, never erased

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.

seq 0 case_open prev 0000…0000 seq 1 brief prev 832f9dfc…65eb8 ← the digest event 0 carries ⋮ 77 events between seq 79 manifest prev 1c7d5a83…4d5f7 root d3c3a2ae4602299aa8cf2c7d52cc325698749f9a913261459fb1853fc63c5aeb

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.