GxPlex

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

FileWhat it isRead 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])
EOF

It 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 anchoredProofState
/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: