This repo is built to be published deterministically: every empirical claim in it is
reproduced by scripts a stranger can run (FINDINGS.md → "Reproduce everything"), so the
transfer's accuracy does not depend on trusting the transfer. Provenance lives in the
tree (ledgers, decision logs, gate-checked replays), not in git archaeology — which is
what makes the clean-genesis step below cost nothing scientifically.
- The custody gate (
node stable-gate.js) — every machine self-test, the clamp, the replication verdict, and the publication-hygiene sweep (no absolute machine paths, no user-directory strings, no e-mail addresses anywhere in the tracked tree). - The local publication privacy gate (wired into this repo's pre-push hook; it lives outside the repo on purpose — its word list names private things, so it must never sit in a publishable tree). It sweeps the tree, the file names, and every blob in the full git history, and prints the author/committer identity surface for review. A clean tree over a leaking history still leaks; the gate blocks the push until the history is clean.
Both gates fail closed. The push simply will not leave the machine while either is red.
The development history of this repo predates the hygiene sweep and contains local machine paths in early commits. History rewriting is error-prone; the honest, deterministic alternative is a clean genesis: publish the verified tree as a single initial commit. Nothing scientific is lost — every experiment's data, pre-registration, decision logs, and machine-checked replay are files in the tree.
# from the repo root, with all gates green:
git checkout --orphan public-main
git add -A
git commit -m "The Stable — public genesis (verified tree; see FINDINGS.md)"
git branch -M public-main main-public # keep local main untouched
git remote add origin <your-new-github-repo-url>
git push origin main-public:main # pre-push hooks run both gates hereKeep the private development branch local. From the genesis forward, publish with normal
incremental commits — and commit pre-registrations before their experiments run, so the
registration's commit hash predates the data (adopted practice; see
experiments/replication-2026-07-17/PREREGISTRATION.md).
- Commits carry the author identity configured in git. If you prefer not to expose a
personal e-mail, set GitHub's noreply address before the genesis commit:
git config user.email "<id>+<username>@users.noreply.github.com". - First-name design credits in the docs are intentional (open-source-with-credit).
- Model co-authorship lines are intentional credit, not tooling leakage.
A green push proves the source left correctly; it does not prove the transfer carried it. From a fresh clone on any machine:
git clone <url> && cd <repo>
node stable-gate.js # must print GREEN with all checks holding
node bridge/replay-replication.jsIf the fresh clone's gates are green, the published repo carries the full verified state — custody, claims, and verdicts included — with no reference to any private system.
Point newcomers at FINDINGS.md (what is claimed, at what n, with what limits) and
witness-suite/SPEC-B-RESULTS.md (the held-out certification roster is now built and run: the
ratified balance knob does not generalize to players it was never fit to — 150/240 hold, worst
gap 22 points). The design doc, witness-suite/SPEC-B-holdout.md, is now history, not an open
problem. Issues that break a claim are findings — the highest-value contribution this project
recognizes.