---
title: Backfill or write off the 2023 projection-history tail
type: task
status: draft
description: >-
  projections_index holds 22,610 rows across twelve dated sources whose observation instants exist
  nowhere in projections_history — dominated by a contiguous 2023 weeks 13-18 block of 21,288.
  Either the instants are recoverable and get backfilled, or the block is formally written off.
base_uri: user:task/league/backfill-2023-projection-history-tail.md
created_at: '2026-09-03T01:07:52.392Z'
entity_id: 96629207-d8ee-4b49-bd35-cc85fe18150b
owner_identity_uri: █████████████████████████
priority: Low
public_read: true
relations:
  - succeeds [[████████████████████████████-██████████-█████-███████████]]
tags:
  - user:tag/league-xo-football.md
  - user:tag/software-task.md
updated_at: '2026-09-03T01:07:52.392Z'
visibility_analyzed_at: '2026-11-05T23:48:24.736Z'
---

# Backfill or write off the 2023 projection-history tail

## What this owns

Every baselined `population-index-rebuild-parity` entry on `projections` except source 18. Twelve entries, one per dated source, 22,610 rows in total.

## The measurement (2026-09-03, production)

Decomposed from the check's own anti-join, and the per-source figures sum exactly to the feed total of 130,825 the feed-grained run reported:

- **21,288 rows in 2023 weeks 13-18**, across all twelve sources. This is the contiguous block: the 2020-2023 history backfill stopped short of the season end.
- **691 rows in 2023 week 1**, across four sources (9, 10, 11, 19). Same shape at the other boundary of the same backfill.
- **356 rows in 2024 week 18**, source 1 only.
- **275 rows over three pids**, unrelated to any block, owned by [[█████████████████████████-████████-█████-████-███████]] rather than by this task.

## The decision this task exists to make

The rows exist in the index; the observation instants exist nowhere, and the 2023-11-29 MySQL archive predates these weeks. So the question is not how to backfill but WHETHER anything can be: a synthesized instant would be a fabricated measurement in a history table whose whole purpose is to say when a value was observed.

- [ ] Establish whether any retained artifact carries a real observation instant for 2023 weeks 13-18 — the MySQL archive, a dump, or a source that re-serves dated history.
- [ ] If one does, backfill from it and drop the twelve parked entries.
- [ ] If none does, write the block off: convert the twelve entries to adjudications carrying that evidence, or delete the index rows if nothing reads them. Deleting needs the shape of `db/adhoc/2026-09-02-remove-orphaned-sleeper-rankings-rows.sql` — assert the retained fallback exists BEFORE deleting, assert scope after.
