Verify this record
Do not take this record's word for its own integrity. Each command below is either executed against the live artifacts on every build — a command that fails stops the build rather than appearing on this page — or carries a note beneath it saying this build does not run it. All of them are for you to run, on your machine.
Integrity root, fixed
fd0980cf7ca42518ff7457b92b075df16163772d48d6f75e546b4869fe7bedab
- Leaves in the tree
- 5393
- Fixed at
- 00:00:00Z — the day is this record's unit, so the time is a constant, not a clock reading
The manifest these figures describe:
leaves.txt · root.txt · head.txt.
The three checks below are (i) what you can run against those files alone,
(ii) what someone who is not us has anchored, and (iii) what is our word.
A different question, on its own page: the integrity board runs five families of test over this record’s own data — dates against the years their documents are numbered for, referents against what an address serves, verifications against the acts behind them — and publishes each test’s question, the population it was asked over, and what it found.
(i) Checks you can run yourself
These need nothing from this site except the files, and nothing from you
except a shell. Download
leaves.txt and
root.txt first.
The inputs, and what reads them
| File | What it is | Read by |
|---|---|---|
root.txt | the Merkle root, one line | every command below |
leaves.txt | one line per distinct observation digest | the recompute |
head.txt | the commit this root was built at | a reader checking the root against this repository |
root.tsr | an RFC 3161 timestamp token over the root | the timestamp check |
tsa.crt | the timestamp authority’s certificate | the timestamp check |
tsa-cacert.pem | its issuing certificate | the timestamp check |
root.txt.ots | a Bitcoin-anchored attestation over the root | the OpenTimestamps check |
head.txt.ots | the same over the commit | the OpenTimestamps check |
These are the files this page publishes for checking. Whether any of them checks out is what the commands below answer, on the machine that runs them — this page does not answer it.
Recompute the root
The root is a SHA-256 Merkle tree over sorted
id|date|content_hash lines. An odd node at the end of a level
is promoted, never paired with itself.
The lines are distinct: 11953 records in
the series carry both a hash and a date, and they reduce to 5393 lines,
because 6560 of them repeat an
id|date|content_hash a line already covers. A source
re-fetched on a day it has already been fetched, returning the same
bytes, adds no line — there is no further state to fix in time.
python3 - <<'EOF'
import hashlib
L = [l.strip() for l in open('leaves.txt') if l.strip()]
h = [hashlib.sha256(x.encode()).hexdigest() for x in L]
while len(h) > 1:
n = [hashlib.sha256((h[i] + h[i+1]).encode()).hexdigest()
for i in range(0, len(h) - 1, 2)]
if len(h) % 2:
n.append(h[-1])
h = n
print(h[0])
EOFIt prints the root above, or one of us is wrong — and the published data is the evidence for which, not this sentence.
What is in the file, and what is not. The first field is the id an observation was recorded under. Of the 132 instrument rows this record publishes, 126 contribute at least one line and 6 contribute none: a line stands for retained bytes. All 6 have been observed, and no observation of them has retained content.
A further 5 ids in the file account for 282 lines: sources this record observes without publishing an instrument row. The file is a record of observations that retained content, so it is neither a list of this site’s pages nor a census of the rows it publishes.
131 distinct ids appear across the 5393 lines. Every figure in this box is derived from the published file when this page is built; none of them is written by hand.
Check a document against its recorded hash
Every instrument page shows the SHA-256 of the normalised text observed that
day, and observations.json
carries the whole series. Fetch the source yourself and compare.
(ii) Anchored by someone who is not us
A root this site publishes and this site alone vouches for fixes nothing: we could publish any number. What makes a date checkable is a third party saying it saw that value then.
The root above is timestamped by freetsa.org, a public RFC 3161 timestamp authority. We sent a hash; the authority returned it signed with its key, not ours. That is the only claim on this page whose forgery would require compromising someone else.
- Authority
- freetsa.org
- Its stated date
The token records the authority's exact instant, to the second. This page shows the date; the instant is in the token, and anyone verifying the proof reads it there. Nothing is withheld — the artifact is published unchanged, and the command below prints the time it carries.
Token: root.tsr ·
chain: tsa-cacert.pem, tsa.crt
openssl ts -verify -data root.txt -in root.tsr \
-CAfile tsa-cacert.pem -untrusted tsa.crt What the token proves, and only this: that this exact root existed by the authority's stated time. It says nothing about who assembled it, nothing about whether the observations behind it were read correctly, and nothing about whether this record is accurate. Existence by a date is the whole claim.
Second anchor: this page is held by the Internet Archive at 20260810005227 (opens in new tab). That copy carries the token above.
An anchor that rests on nobody
The token above is one authority's signature. If that authority's key is lost, retired or compromised, every token it issued becomes a file nobody can check. So the same digests are also anchored with OpenTimestamps (opens in new tab), which writes them into the Bitcoin blockchain. Nobody operates that, which is the point: the proof outlives the calendar servers that built it, the OpenTimestamps project, and this site.
| What is anchored | Proof | State |
|---|---|---|
/integrity/root.txt 76dafeb25ee80b295df8a864… | root.txt.ots | Pending. A calendar has promised to anchor this; the Bitcoin transaction is not confirmed yet. It is a receipt for a request, not a timestamp. |
/integrity/head.txt b5d3d7ec5049a31a5ccdf49c… | head.txt.ots | Pending. A calendar has promised to anchor this; the Bitcoin transaction is not confirmed yet. It is a receipt for a request, not a timestamp. |
How a stranger checks it, with the stock client and nothing of ours:
pip install opentimestamps-client==0.7.2
curl -O https://gxplex.com/integrity/root.txt
curl -O https://gxplex.com/integrity/root.txt.ots
ots verify root.txt.ots This build does not run these lines. They install a client from PyPI, fetch this site over the network, and ask a Bitcoin block explorer for a block header — none of which a build of this site does.
There is deliberately no verifier of ours to download. The client that wrote these proofs is the client that reads them, and it comes from somewhere else — a tool of ours vouching for evidence of ours would prove nothing.
/integrity/head.txt carries the commit the proof covers,
which is the parent of the commit that carries the proof: stamping the
repository and then committing the result necessarily moves it on by
one.
Granularity. One stamp per daily cycle, taken by the scheduled daily job and by nothing else — never per commit, never per working session. A completed proof names a Bitcoin block, and block times are public, so a proof discloses roughly when its stamp was taken. What that discloses here is the schedule, which is published on this site anyway. Everything this record states about its own activity is day-granular by rule.
Anchoring proves WHEN, not WHO. Both anchors on this page fix digests at times. Neither says who assembled them, whether the documents behind them were read correctly, or whether any person checked anything. The named-person verification this record describes elsewhere is a separate act, and it is still owed — no quantity of cryptography here discharges it.
(iii) Procedure — our word, and you cannot check it
No signing key exists yet. When one does, its generation is offline and its custody is a person's, and this page will carry the fingerprint and the verification command. Both facts — that a key was generated offline and that it has stayed in one person's custody — are claims by this site that no reader can verify. A signature proves that a file came from the holder of a key and has not changed since it was signed. It cannot prove who has held that key. That limit belongs on this page rather than in a footnote, and nothing in this section is ever presented as a check you can run.
The rotation and compromise procedure is written before the first signature rather than after the first incident: how a key would be rotated.
What none of this proves
A signature proves origin, and that a file has not changed since it was signed. A timestamp proves a value existed by a date. A root proves the published data is the data the root was built from.
None of it proves the record is accurate. A status read wrongly hashes exactly as well as one read correctly, and a mistake fixed at a time is still a mistake. Accuracy is not a cryptographic property; it lives in the reading, in the human check, and in the corrections log, which is additive and never silently edits. Treating a hash as evidence of correctness is the one over-claim this page exists to refuse.
Method: how this record is maintained ·
the leaves and the root are at /integrity/leaves.txt and /integrity/root.txt.
Last updated: