---
name: Rescheduled games leave orphan pre-date entries — never fill their ftr
description: When a game is rescheduled, daily_watchlist re-lists it on the new date and the monitor tracks it fully there (result included). The ORIGINAL date's live_data entry stays PRE/NS-only forever. Filling that orphan's ftr double-counts the fixture in the forward tracker (both entries fire xlow). Leave orphans blank; the new-date record is the real one.
type: feedback
---

Learned 2026-07-19 the hard way: Hangzhou Greentown vs Qingdao Jonoon (CN1) was
originally 2026-07-11, rescheduled to 07-14. The pipeline handled it CORRECTLY on its
own — Kalshi moved the event, daily_watchlist re-listed it on 07-14, live_monitor
tracked PRE->FT there, resolver filled ftr=H. The 07-11 file kept 250 PRE/NS-only
orphan rows.

I then "fixed" the orphan by writing ftr=H into the 07-11 entry — which made the
forward tracker fire BOTH entries (07-11 @0.14 and 07-14 @0.15, both losses) and
double-count the game. Reverted same day.

**Why:** forward_test_unique_book keys fixtures by (game_date, league, home, away) —
a reschedule creates two distinct fixtures for one real game, and only the new-date
one accumulates a result organically. The audit signature of an orphan is
statuses={PRE,NS} only, ftr blank, on a past date, WITH the same matchup appearing
complete in a later file.

**How to apply:** during data audits, an orphaned pre-date entry is NOT a missing
result — check for the matchup on nearby later dates before filling anything. Only
fill ftr manually when the game truly has no complete record anywhere (and then via
fixture_id, like Seattle vs Portland 07-16). The bet_history ledger is unaffected
either way (it resolves via fixture_id, which follows reschedules).
