---
title: Decide whether to reconstruct week-1 2026 lineup contribution weeks
type: task
status: planned
description: >-
  league_team_lineup_contribution_weeks lost week 1 of 2026 to the same season-wide delete as the
  starters, which were repaired; this table was not, and no oracle reads it.
base_uri: user:task/league/reconstruct-week-1-2026-lineup-contribution-weeks.md
created_at: '2026-09-15T16:36:11.319Z'
entity_id: b3c01ec8-94e3-42b4-9c62-bd9c5c3f972b
owner_identity_uri: █████████████████████████
public_read: true
tags:
  - user:tag/league-xo-football.md
updated_at: '2026-09-15T16:36:11.319Z'
visibility_analyzed_at: '2026-11-05T23:49:56.783Z'
---

`league_team_lineup_contribution_weeks` lost week 1 of 2026 to the same season-wide delete that drained `league_team_lineup_starters`. The starters were reconstructed on 2026-09-15 (league `7b86cb3cc`, see [[user:task/league/decide-week-1-2026-lineup-starter-reconstruction.md]]). This table was not.

## Why it was left

The starters repair works because `optimizeLineup` already returns `starter_pids` alongside the total, so `project_lineups_for_past_season` only had to stop discarding a value it was computing anyway. Contribution weeks are different: they come from a per-player loop in the live `project_lineups` path that walks `roster.players` and accumulates starts and points, driven by `getRoster`/`getPlayers` rather than by the optimizer result. Reconstructing them as-of a past week is real work, not a field that was being thrown away.

## Why it is not urgent

Nothing reports the gap. `check_lineup_starter_identity_oracle` joins `███████████████████` to `league_team_lineup_starters` and never reads this table, so the week-1 hole here is invisible to every current check — which is precisely why it needs an entity rather than a mention.

The leak itself is fixed: the delete has been week-scoped since `043f2b1f3`, and weeks 2 through 17 have held steady at 631-632 rows each.

## Plan

- [ ] **Establish whether anything consumes it.** Find the readers of `league_team_lineup_contribution_weeks` — API routes, data views, the SPA. If the answer is "nothing reads week-grain contribution history", close this as accepted and say so.
- [ ] **If it is consumed, decide whether one missing week matters** against the cost of reconstructing a per-player accumulation as-of a past week.
- [ ] **If reconstruction is wanted**, extend the repair path the starters used. The bounded `repair_current_season` week-list allowance in `project_lineups_for_past_season` is already there; what is missing is the contribution computation itself against a historical roster snapshot.
- [ ] **Either way, consider whether this table deserves its own coverage oracle.** A week-grain table that no check reads is how this gap stayed invisible after its sibling was caught and fixed.
