---
title: Repair the 9,160 prop markets whose OPEN and CLOSE rows name different games
type: task
status: completed
description: >-
  Re-point the standing drifted PrizePicks prop-market esbid stamps against the vendor's own
  source_event_id and re-settle the selections beneath them. The importer cause is fixed and
  deployed; these are the rows it left behind.
base_uri: user:task/league/repair-drifted-prop-market-esbid-stamps.md
created_at: '2026-09-02T01:29:52.731Z'
entity_id: 486147b8-66d2-4e4c-af57-352bafa4095c
finished_at: '2026-09-22T16:39:13.978Z'
observations:
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
owner_identity_uri: █████████████████████████
priority: Medium
public_read: true
tags:
  - user:tag/league-xo-football.md
  - user:tag/nfl-betting.md
updated_at: '2026-09-24T20:17:47.912Z'
visibility_analyzed_at: '2026-11-05T23:50:04.717Z'
---

## Context

`prop-market-open-close-esbid-coherence` reports 9,160 drifted markets (signal 127416) and `prop-market-selection-grade-consistency` reports 4 self-contradicting settled selections that fall out of the same cause (signal 127417).

Measured 2026-09-01, and the count is stable rather than rising:

- PrizePicks: 9,160 drifted of 179,175 gradeable markets — a 5.1% defect rate, not the 99.9% the signal title implies. Caesars contributes exactly 1; every other book contributes zero.
- All drift is historical: 419 markets closing in 2023, 1,899 in 2024, 6,842 in 2025, and zero in 2026.
- The 4 grade-consistency findings are markets `1807454` and `3313862`, both esbid-drifted, both showing the CLOSE result graded against the OPEN row's line.

Two upstream tasks are Completed and neither owns this:

- [[██████████████████████████-████-██████-█████-███████████]] stopped NEW drift and repaired no existing row.
- [[███████████████████████████-███████-████-██████-██████████████]] voided 18 no-show selection rows and deliberately left every esbid stamp alone. Its own followup observation names this pass as the one that would move the count.

## Plan

- [ ] Build the crosswalk from `source_event_id` to the correct `esbid`. Every drifted market carries exactly ONE `source_event_id` across both rows, so the vendor's event is the oracle and our resolution is the side that moved.
- [ ] Establish which side moved per market. Do NOT pick the CLOSE row because it is later — that settles 9,160 markets against whichever game the last scrape happened to resolve.
- [ ] Re-point the `prop_markets_index` esbid stamps.
- [ ] Re-settle the selections beneath them in the SAME change, with `missing_only` false. `prop_market_selections_index` carries no esbid, so repointing a market alone changes nothing beneath it and merely converts a visible finding into an invisible one.
- [ ] Adjudicate the single Caesars market `4d54ee01-7aaa-3db0-a212-f2258352d709`, which sits outside the PrizePicks fix.
- [ ] Re-run the check and confirm the count falls.

## Gate

Mass mutation of the market rows plus their settled selections is an operator decision and must be raised in the session that runs it, not executed on this task's authority alone.

## Note on reading the signal

A count that RISES after the stamping fix deployed is a regression in the importer and belongs back with the stabilize task. A falling count is this repair landing.
