---
title: Repair the negative overtime clock rows in 2025
type: task
status: planned
description: >-
  122 rows across 7 games of 2025 REG carry a negative seconds_remaining_game and
  seconds_remaining_half. The writer is fixed in 0f929b233; the stored rows are not, and repairing
  them disarms the meaning-drift auditor's must-report control, which must be re-pointed first.
base_uri: user:task/league/repair-negative-overtime-clock-rows.md
created_at: '2026-09-06T17:05:02.489Z'
entity_id: 501e902d-3664-400f-a108-ea6d97c3127d
observations:
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
owner_identity_uri: █████████████████████████
priority: Medium
public_read: true
relations:
  - relates [[███████████████████████-████-█████-████████]]
  - relates [[██████████████████████-██████████-█████-████████████]]
tags:
  - user:tag/league-xo-football.md
updated_at: '2026-09-06T19:06:52.321Z'
visibility_analyzed_at: '2026-11-05T23:50:08.037Z'
---

# Repair the negative overtime clock rows in 2025

## Overview

- 122 rows across 7 games of 2025 REG carry a negative `seconds_remaining_game` and `seconds_remaining_half`, bottoming at -899. The writer is fixed; the stored rows are not.
- Expected outcome: no row in any season carries a negative time remaining, and the meaning-drift auditor keeps a live must-report control after the finding it is currently pointed at disappears.
- Impact: this is coupled work rather than a bare data repair, because repairing the rows disarms a gate.

## Background

`calculate_time_remaining` in `sportradar-transforms.mjs` derived both the half and the game figure from `4 - qtr`, which is NEGATIVE in overtime, so the regulation arithmetic subtracted a whole quarter from the clock. Every affected row is `quarter = 5`, and `clock - 900` reproduces each value exactly: a 10:00 overtime kickoff reads -300 and a 0:01 snap reads -899.

The class is 2025-only because `seconds_remaining_game` is owned by nfl-v1 and nflfastR — 2025 is the one season nflfastR has not yet overwritten, so the Sportradar value survived there and nowhere else. Seasons 2019-2024 read a minimum of 0 or above.

**The writer fix has landed** in `0f929b233`, with a red/green pair: overtime now holds only its own period time on both columns, matching what nfl-v1 and nflfastR already produce for the same plays. New rows will be correct. What remains is the 122 stored rows.

## Why this is not just an UPDATE

`scripts/audit-sportradar-meaning-drift.mjs` uses `seconds_remaining_game` 2025 as its MUST-REPORT positive control — the specimen that proves the auditor's sweep actually reaches production rows rather than merely computing correct arithmetic. It was deliberately re-pointed there on 2026-09-06 when `drive_yards` was retired out from under it, and that re-point was verified as a pair: unperturbed it prints WENT RED and exits 0; with the saturation bar raised so the sweep can report nothing it prints STAYED GREEN and exits 1.

So repairing these rows makes that auditor fail — correctly and loudly, but it fails. The control must be re-pointed FIRST, at a real finding with comparable saturation, or the repair trades a data defect for a disarmed gate. This is the second time this specimen slot has needed moving, which is itself worth weighing: a control pointed at a defect anyone might fix is a control that keeps needing maintenance.

## Plan

- [ ] Choose a replacement must-report specimen for `audit-sportradar-meaning-drift.mjs`, preferring a finding no open task is about to repair.
  - Verify: shown as a pair against production — unperturbed prints WENT RED and exits 0, and with the saturation bar raised past what the sweep can report it prints STAYED GREEN and exits 1. A specimen that cannot be shown to go both ways is not a control.
- [ ] Re-point the control and land it BEFORE the data repair.
  - Verify: the auditor is green on the new specimen while the 122 rows are still present, which proves the new control does not depend on the old finding.
- [ ] Repair the 122 rows under the production write gate, recomputing both columns from `quarter` and the stored clock rather than hand-writing values.
  - Verify: zero rows with a negative `seconds_remaining_game` or `seconds_remaining_half` in any season, and the 2025 overtime rows read a minimum of 0 like every other season.
- [ ] Confirm the repaired values agree with the fixed writer.
  - Verify: recompute a sample through `calculate_time_remaining` and require agreement, so the repair and the importer cannot drift apart.

## Notes

Found while triaging the drive-seq coherence signal cluster on 2026-09-06, recorded until then only as an unowned `[defect]` observation on [[███████████████████████-████-█████-████████]]. A production write touching `nfl_plays` needs the write gate.
