Zach SternCommercial lawyer

Work Gridiron

Gridiron · Game commentary

Football commentary that waits for the facts.

Commentary for a football video game can run ahead of the facts and celebrate a play a flag has already wiped out. Gridiron writes each play into a record first, and the commentary is meant to work only from that record.

Public source · research snapshot frozen September 19, 2026, free to download

Recorded drive · 3 made-up plays
  1. Play 1Six-yard run

    Confirmed

    Too small to call, so no line.

  2. Play 2Pass, flag thrown

    Voided

    A no-play. The score stays 0 to 0, and nothing is said.

  3. Play 3Touchdown

    Confirmed

    One line: "Touchdown!"

Saved replay output From the replay run on September 19, 2026.

Write down what happened. Then decide what to say.

Commentary that runs ahead of the facts can celebrate a play a flag has already wiped out, or call the same play twice. So Gridiron splits the job in two.

The first part, the event reconciler, works out what happened and writes each play to the ledger, the one agreed record of the game. Only then does the second part, the producer, get a turn to decide whether to speak.

For a score, the producer uses a fixed reaction line such as "Touchdown!". Other lines are built from fixed templates filled with a packet of supporting facts. A claim guard then rejects any line that names a player or a number those facts don't support.

When a language model is set up, it writes from the same facts. It never decides what happened in the game.

Conceptual illustration: a miniature football field connects to paper event records, then to a broadcast microphone.
AI-generated artwork Record the event, then ground the call.
  1. 1Observations

    Take in what the game shows on each play.

  2. 2Event record

    Work out what happened and write it to the ledger.

  3. 3Commentary

    Speak from the recorded play and its facts.

Read one replay carefully.

The sample drive has three plays. For each one, the answer key (a script of what should happen) sets the expected status, and the replay records what Gridiron decided.

Confirm the first play.

The drive opens with a six-yard run. The replay confirms it.

Keep the flagged play, and say nothing.

The next play, a pass, draws a flag and becomes a no-play. It stays in the record as voided, and the score stays 0 to 0.

Call the score.

The drive ends with a confirmed touchdown, and the producer answers with its fixed reaction line.

Two runs, the same record.

The replay ran twice from the command line on September 19, 2026, on the same made-up drive. Both runs wrote exactly the same record.

3plays ended with the status the answer key expected.
1line of commentary: "Touchdown!", a fixed reaction to the score.
2 runsproduced exactly the same event record.

Saved results from the two runs. The switch only changes which saved results you see; nothing runs in your browser.

The fingerprint

The statuses and the number of plays matched the full answer key, and no play was recorded twice. To show the two records are identical, the replay prints a fingerprint of each: a 64-character code (a SHA-256 hash) computed from the exact contents of the record. Change one detail and the code changes completely.

3229305cb6a0f7ac6e7d6e9f7b27ca04b791cb9e2ca65a2e44c6eb0162c0d4bb

The replay command in the download prints this fingerprint, so you can rerun it and compare.

An unknown stays unknown.

A replay that repeats perfectly can make a report look convincing about things nobody measured.

So before the snapshot was frozen, AI tools fixed the report to show no value for anything never measured. Those fields stay empty on purpose and carry a NOT_MEASURED label with a reason. A claim that the replay matched the answer key needs a complete answer key.

Four tests now reject a report that claims accuracy nobody measured, checks against a partial or missing answer key, or counts a different number of plays than the key. The report makes fewer claims, and a reviewer can see which conclusions it supports.

Download it and rerun the replay.

The download is the research snapshot itself. It runs the replay without the game, a real save, a model account or model weights. With uv, Python 3.12 and Node.js installed, the quick start in its README reruns the replay.

Research prototype · snapshot frozen September 19, 2026 · GPL-3.0-or-later declarations retained · 194 packaged files. It is for local research, with no hosted service or support guarantee.

What's in the download

Python backend source files: window capture, reading the screen, the event record, the commentary producer, the claim guard and speech
64
The bridge, a small read-only reader for save files
1
Pages in a local dashboard
7
Generated data-format files, exported from the backend so every part uses the same shapes
20
Design decision notes
6
A research ledger of each candidate dependency, its license, and whether it was adopted or rejected
1

A safety boundaries document rules out injecting code into the game, reading its memory, getting around anti-cheat and changing a save. The bridge's read-only test fails if any of the known save-writing calls appears in its source.

The package holds no game saves, captures, announcer recordings, model weights or private development history. Optional integrations have their own upstream terms.

Gridiron is an unofficial fan project. It is not affiliated with or endorsed by Electronic Arts, EA SPORTS, the NFL, the NFLPA, any broadcaster or any announcer.

What went into this work.

What I did

I decide what each project is for and check what comes back. For Gridiron I wanted an event record the commentary can rely on, and one public replay anyone can rerun.

What the AI did

AI tools write the code. For Gridiron that covers the backend, the save-file reader, the dashboard and the tests. An AI agent also did the dependency research recorded in the archive's research ledger.

How I work with AI tools

What's proven, and what isn't yet.

Recorded
Two runs of the replay on one made-up drive, on September 19, 2026, with no AI model running. Both gave the same record, and 44 of the snapshot's tests passed.
Source
Public. The research snapshot is a free download, with its GPL-3.0-or-later declarations.
Not tested yet
The real game. How accurately Gridiron reads a game screen, and how accurate its commentary is, haven't been measured. Live capture, real saves, a complete played game, the optional language models, speech quality, delay and performance are unverified.
The full record: test results, replay details and credits

Tests and checks

These ran on September 19, 2026, against a fresh copy of the snapshot in an isolated Windows environment, as the archive's status file records.

CheckPassed
Python tests38
Bridge tests2
Web tests3
Browser test, from setup through a replay1
Tests in total44

Formatting, lint, the Python and TypeScript type checks and the web build passed. Locked installs passed too, with every dependency at the version pinned in the lockfiles. So did a check that the 20 generated data-format files match a fresh export byte for byte. A secret scan and a private-file scan also passed.

The replay, in detail

MeasureRecorded
Plays recorded / expected3 / 3
Plays recorded twice0
Statuses and play count match the answer keyYes, against a complete answer key
Lines of commentary1, "Touchdown!"
Screen-reading accuracyNOT_MEASURED: the replay feeds in made-up observations
Commentary accuracyNOT_MEASURED: no independent checker was run
Replay result labelVERIFIED for the made-up replay; UNVERIFIED for the live game

Notes on the replay

The one line of commentary, "Touchdown!", is the producer's fixed reaction to a score, so the claim guard had nothing to check in this replay. The archive's own tests check the guard separately.

The archive's limitations file says what it would take to find out whether Gridiron holds up against a live game: a private set of at least 50 labeled plays to check how well it reads the screen, and one complete offline game, run and reviewed.

The download has its own fingerprint, and it is the one the annotated drive record names as its source:

48f5573e460871d6eb144461b668422f7057fbdebcb0589cbbc69400dfd32658

Licenses and credits

The Gridiron archive keeps its own GPL-3.0-or-later declarations and notices, and third-party components keep their own terms. The illustration on this page is conceptual artwork made with OpenAI image generation.

Next projectEnaction
All work