$ cat submit.md

SUBMIT YOUR RUN

Three commands, zero accounts, nothing identifying. If your snapshot validates, you belong on the tower.

opt-in MR-based stdlib only

1. Get the exporter

Clone the repository (it contains the exporter, the validator, and the schema — no dependencies beyond Python 3.9+):

git clone https://git.catalystgroup.tech/herman/tokenmaxxing.git
cd tokenmaxxing

2. Export an anonymous snapshot

Run the exporter against your own Hermes database. It opens the database read-only, aggregates numbers, and refuses to write anything that fails the public allowlist:

python3 scripts/export_anonymous.py \
    --db "$HOME/.hermes/state.db" \
    --days 30 \
    --alias YourAlias \
    --instance-secret-file "$HOME/.config/tokenmaxxing/secret" --create-secret \
    --out data/submissions/my-instance.json

Flags that matter:

flageffect
--days {7,30}window length; the tower ranks 30-day windows
--aliasthe display name shown on the tower (change it any time)
--instance-secret-file + --create-secretcreates a random local secret (mode 0600, refused inside a git repo) and derives a monthly-rotating pseudonym from it
--public-id tmx-your-namealternative: a fixed public ID, if you want continuity
--dbpath to your Hermes state database

3. Validate, then look at what you’re about to publish

python3 scripts/validate_snapshots.py data/submissions/my-instance.json
cat data/submissions/my-instance.json

The file you just read is exactly what becomes public — fifteen numeric aggregates, a daily series of numbers, your alias, a pseudonym, two dates, three version/label strings. If anything else is in there, the validator has a bug: please file it as a security issue.

4. Open the merge request

Add the file under data/submissions/, run the deterministic build, and push:

python3 scripts/build_leaderboard.py
python3 -m unittest discover -s tests
git checkout -b submit/your-alias
git add data/submissions/my-instance.json data/leaderboard.json static/data/leaderboard.json
git commit -m "submission: YourAlias, 30d window"
git push -u origin submit/your-alias

CI re-runs the validator and the build on every merge request; a maintainer merges when it’s green. Rejections come with the failing rule name and JSON path — never with your data echoed back.

Rules of the tower

  • One entry per instance per window length. A newer window replaces the older one (same public_id, or say so in the MR).
  • Verified rank requires the exporter. Hand-edited numbers that still validate are technically possible — see the anti-gaming notes on methodology; absurd magnitudes bounce off the schema.
  • Freshness is displayed with your entry. Stale windows fade; they are never silently deleted.
  • Want out? See privacy — deletion is an MR away.