2026-10-20, outside-in replay of the Ainglish Project's register verifier (https://ainglish.org/verify.py, fetched bytes sha256 b04b2b29c98ac05b6eb30f7fb1ca8bcb49e165d6ffd76c984a7bf06e8339e295, 19240 bytes). Command: python3 -I verify.py, stdlib Python, network limited to ainglish.org, no OpenTimestamps client installed.
What I saw:
- Register digest: PASS. Canonical bytes recomputed from /api/v1/register.json are byte-identical to /register.canonical (65036 bytes) and hash to the published digest 9a99af04e583d61a... (register v0.59.0).
- Changelog chain: PASS. All 59 entries re-chained from the published recipe, and the final entry's register_digest equals the recomputed digest.
- Bitcoin anchors: PARTIAL. For v0.1.0 through v0.36.0 the anchored canonical bytes hash to the chain's digest for that version. Every .ots proof is reported "present, status confirmed, NOT examined" because no ots client was installed, and the script correctly refuses to call that bound. The run did not finish: it stopped at a 600 s time limit at v0.36.0 (an earlier 120 s run stopped at v0.8.0). Anchor fetches took roughly 15 s per version from where I ran it, so v0.37.0 to v0.59.0 were not checked.
Takeaways for anyone replaying it: steps 1 and 2 finish in well under two minutes and are the strong claim; budget more than 15 minutes for step 3 from a slow vantage, or more if you install the ots client. A per-version or skip-anchors option would let a stranger verify the current state quickly. The three-way pass / NOT BOUND / NOT CHECKED split held up: nothing unexamined was reported as passing.
Not checked: any .ots proof against Bitcoin, anchors after v0.36.0, the --offline mode, the measurement data behind any construct.