CODE COMMITMENT — release of 2026-09-02 OpenTimestamps -> Bitcoin WHAT THIS IS. The scripts that compute and generate everything published in this project, frozen AS AT THIS RELEASE. It is not a claim that the code never changes; it is living code and it changed nine times on the day this was written. It is a claim that THIS release was produced by exactly these scripts. WHY IT EXISTS. A hostile reviewer overrode one figure inside figures.py — four lines — and turned a registered prediction from a declared loss into a hit, with every check in the build still passing, because those checks verify that the published numbers agree with each other and not that they came from the published code. COMMITMENT.txt deliberately excluded the scripts as "living code", so a reader had nothing but the author's word. WHAT IT DOES NOT DO. It does not prove the code is correct, or that it does what its comments say, or that its author is honest. It proves that the scripts shipped in the data bundle are the scripts that produced the pages, and that neither has been swapped since this release was anchored. 308d4cac311eba3eacfeb171226300e9c5e6b5f803a19c95d7c9dd1acf703484 scripts/figures.py (every published measurement) 97de6262eda0db2438e608761e94a27370326a44b03b80b4d39a27adde0cfdd6 scripts/make_pages.py (the page generator and its checks) 607ba3e32573b64c53b583b1c786d2912cf6785133f81157e5bd5acb16ee4f43 scripts/money_analysis.py (the core estimator) 2c9c6b8840cfa2d763618f0ed1c85abf0bf4f98fdc61a1e567904bff15aaef84 scripts/make_figures.py (the chart) b0bbdc2d29a6e5b7707124fe2f3c03a1a7f61f9a37c8a321018430769e4712d3 scripts/make_roster_csv.py (the published roster) 9cd9471dada3d145033ad178b1909853006fa793cd4fcb29f4db5aa0f64a9e06 scripts/phase2.py (the master coding table and the Source Log) dfe41eb3a45cf5668ba37b5ecee10f0f2f7baec8f19394c73df6e3b187565a85 scripts/nominees.py (the roster and party coding) bf71a8a8f2462ff16e1d8465bea9d7b27b0fd41c3670b9b85fb6773638f7934f scripts/style_analysis.py (the writing-measurement instrument) 0c1dfdb3f73aee751bc18f11e4be835aef06e45c0ffef57c48ddd2b82ab41fcd scripts/build_all.py (the build, and the order its gates run in) a7f49f13ab9eaf35d70af3d31549fa5d508d3b9741de0ea9f347fe642906436c scripts/a11y_audit.py (the accessibility audit and its mutation self-test) 159eacad372c84114cdd1ea2296abd04c898ae37ad9f57ed99c061231c102243 scripts/privacy_gate.py (gate) 1199b4b06fd18bf4a3220c59a3e9d2350d77a95719dd6c5bdf68ce9070c72f1a scripts/faith_gate.py (gate) 1f0cc1f62044475d6037491b18e18ae4a437554a67ca10324f563774e9737d2c scripts/tier_gate.py (gate) 6e60cd092d61df3c98918d9a820aab891e0fa1fdefcbc14b8da37ebeb79b3023 scripts/register_gate.py (gate) 810a005f8348e11ad4f40c6bd744d3e19f5c7c4c8f0e7ef7a2978fcab10ce2db scripts/commitment_gate.py (gate) cb3177abb26beca38d6ed204848f33d7e5efe4d1722e1a57d70df956d304de62 scripts/ots_verify.py (the proof walker the commitment gate rests on) cf698c07eb1abf739f1124638e3c52d39881af553831780f7275a5ea04640a59 scripts/nav_behaviour_test.py (the navigation behaviour test) 6a6bc03e54f1198fb96b6c33197d4d9f0c0453883f7fad4ef571c655e3b7578e scripts/print_behaviour_test.js (the print behaviour test) 579f62c4838e9aef9dffc792a47d8e01b63223f0b86a6432bb7c899ebec390ec scripts/make_code_commitment.py (this file, so the list itself is frozen too)