TiltDataLabs Audit Proof

MLB Picks · Wednesday, August 19, 2026

These picks were cryptographically committed to a public Git repo and signed to the Rekor transparency log before games started. Independently verifiable — the file cannot have been generated retroactively.

Correction — read before the picks below

The stamped file below is the cryptographic pre-game commitment and cannot be modified without breaking the OTS + Rekor proof. The picks the operator actually placed at book (and their real outcomes) may differ from what the stamp records. Full context:

Show full correction memo
# Correction — 2026-08-19 TDL picks

**Status**: DB corrected 2026-08-20. Original pre-game stamp preserved.

## What the stamp says

`v2/pipelines/mlb/tdl_picks/2026-08-19.json` (sha256
`de78e9d0ef95433920d0e9c8748b213c6b7bcd7b3ac2d8437d9250ca97359c86`,
stamped via OTS + Rekor at commit `8041f941` on 2026-08-19 13:45 UTC) recorded
2 picks:

- WSH F5 -0.5 (F5 spread, WSH @ TEX) — stake 45u @ 2.35
- SEA F5 -0.5 (F5 spread, SEA @ MIL) — stake 35u @ 2.35

Both showed model probability 0.5408, edge +11.53%, recorded 12:44-12:47 UTC.

## What actually happened

Both picks were **plateau artifacts** from an isotonic calibrator bug. On
2026-08-19, F5 training data was stale (game_targets.parquet had collapsed
to 2026-only rows) and the isotonic calibrator produced a monotone plateau
where multiple distinct raw probabilities all mapped to the same calibrated
value (0.5408). This produced identical "high-edge" tiles for both games on
the site's dashboard.

The operator clicked "took this pick" on SEA F5 -0.5 through the site UI
(persisted to DB as `tdl_picks` id 252 and `user_selections` id 267) before
realizing the edge was phantom. **The operator did not physically place either
bet at book.** WSH F5 -0.5 never made it to the DB — it appeared only in the
snapshot JSON due to a separate `_snapshot_tdl_picks` write racing with the
UI actions.

The only bet physically placed at book on 2026-08-19 was:

- **NYY ML @ BAL, decimal 1.86 (-116), $40 stake, FanDuel — WON 5-3**
  (`tdl_picks` id 253, recorded 19:44 UTC, `result: win`, `profit: $34.40`,
  CLV -2.22pp against 1.94 close)

## What was corrected

DB (2026-08-20 13:15 UTC via direct SQL):
- `DELETE FROM tdl_picks WHERE id=252` (SEA F5 -0.5 phantom)
- `DELETE FROM user_selections WHERE id=267` (matching tracker phantom)

Site performance page + tracker page (both DB-driven) now show the correct
1-0 day for 2026-08-19.

The **stamped JSON is intentionally unchanged**. Re-snapshotting the file
would break the pre-game cryptographic proof — the original OTS + Rekor
attestations remain valid for the original hash. This markdown is the
audit trail explaining the divergence between what was stamped and what
was placed.

## Root causes shipped

- `bbc0ef46` (2026-08-19): pybaseball_loader schema-shrinkage guard —
  prevents FG mlbapi fallback from corrupting the pitcher_stats cache
  (unrelated but same day's fire drill).
- `6e6e9bf7` (2026-08-19): `refresh_fg.py` + weekly reminder — durable
  Cloudflare bypass for FG data refreshes.
- `21c0df86` (2026-08-20): tracker.py pending count fix (push+PPD were
  miscounted as pending).

## Root causes still open

- Tracker `_pick_key` omits `side` — a tracked selection on one side of a
  market lights up "took this pick" on the opposite side after a refresh.
  Root cause of the "MIL F5 -0.5 phantom" the operator saw on 2026-08-19.
- F5 calibrator plateau — isotonic collapses raw probs to identical
  calibrated values on some days; sigmoid retrain attempted and reverted
  2026-08-19 after a validation harness regression. Deferred; documented as
  systemic in the 2-week audit (`plateau in `over_under` every single day`).

Bitcoin Anchor

Stamp pending block
SHA-256 Hash
2cd1f57bf6cd6f0e2bf2ee77173f33bd5fa16d57ad243bb9b5e1fa3ef6d58f37
Picks in file
2

Want to verify the stamp without trusting our server?

Verify independently at opentimestamps.org →

On opentimestamps.org, drag the .json file into the "original" slot and the .ots file into the "proof" slot. It will re-hash, check against Bitcoin, and confirm — no install needed.

How the proof works

The picks below are connected to a Bitcoin block — here's the chain

  1. 1. Picks file

    The exact JSON shown in "The Picks" section below.

    Open raw JSON
  2. 2. SHA-256

    A fingerprint of the file. Change one character and this hash changes.

    de78e9d0…359c86
  3. 3. Sigstore
    logged2026-08-19 13:45:52 UTC
    4. Bitcoin
    stamping…

The picks file's SHA-256 was logged to Sigstore when the pipeline ran, and Sigstore's log is itself anchored to Bitcoin via OpenTimestamps. If anyone changes the picks after the fact, the hash no longer matches — and the chain breaks visibly. The verify buttons below let you check each link in your own browser.

Verify the picks above
GitHub commit
2026-08-19T13:45:55Z
Sigstore log
2026-08-19T13:45:52Z

The Picks

Committed at the SHA-256 above · Editing any pick invalidates the proof
GamePickOddsEdgeResult
NYYNYY@BALBALNYY ML1.86+6.6%WIN
SEASEA@MILMILSEA F5 -0.52.35+11.5%PENDING

More verifiable picks at tiltdatalabs.com