Decide: do the public repos keep the game screenshots in docs/re/captures/? #49

Closed
opened 2026-09-17 19:02:10 +00:00 by fabi · 2 comments
Owner

docs/re/captures/ is 82 MB of screenshots and logs captured from the running game. #23 flagged the size and the policy question when it landed the F5/F6 corpus, deliberately without blocking on it. Both repos are public — this API serves issues to an unauthenticated client — so this is a decision, not a cleanup.

The evidence is load-bearing: docs/re/f5-*/f6-* pages cite individual captures by name, and a finding whose evidence is gone is a claim. Options, roughly in increasing cost:

  1. Keep as is. 82 MB is not a burden for clone or CI; the exposure is that the repo publishes frames of a commercial game.
  2. Keep, but shrink — downsample or crop to the region each page actually argues about. Cheap, and it keeps every citation resolvable.
  3. Move out of git and cite by content hash, with the files kept next to the disc. Every existing citation then needs a resolver.

A history rewrite to remove them is possible and not recommended: it invalidates every commit id the corpus cites, and the frames stay in anyone's existing clone anyway.

Human's call. Filed because the decision has been carried in session notes rather than here.

`docs/re/captures/` is **82 MB** of screenshots and logs captured from the running game. #23 flagged the size and the policy question when it landed the F5/F6 corpus, deliberately without blocking on it. Both repos are public — this API serves issues to an unauthenticated client — so this is a decision, not a cleanup. The evidence is load-bearing: `docs/re/f5-*`/`f6-*` pages cite individual captures by name, and a finding whose evidence is gone is a claim. Options, roughly in increasing cost: 1. **Keep as is.** 82 MB is not a burden for clone or CI; the exposure is that the repo publishes frames of a commercial game. 2. **Keep, but shrink** — downsample or crop to the region each page actually argues about. Cheap, and it keeps every citation resolvable. 3. **Move out of git** and cite by content hash, with the files kept next to the disc. Every existing citation then needs a resolver. A history rewrite to remove them is possible and **not recommended**: it invalidates every commit id the corpus cites, and the frames stay in anyone's existing clone anyway. Human's call. Filed because the decision has been carried in session notes rather than here.
fabi added the kind/askstate/needs-human labels 2026-09-17 19:02:10 +00:00
Author
Owner

Decided: no. The repos carry code, tooling and docs only — no game assets.

Already satisfied: the ISO lives outside the repo, and sylpheed.db and export/ are gitignored, so none of those were ever committed.

What is actually committed, measured on main @ d6fb3169:

kind count size
PNG screenshots (docs/re/captures/**) 143 76.4 MB
savegame blobs (*.bin) 3 small
derived measurements (csv/tsv/txt/log/json) ~280 small

The screenshots are frames of the retail game and go. The derived measurement tables are our own numbers, not game content, and stay — they are what the pages cite as evidence.

⚠️ Removing them from HEAD does not remove them from the repository. The blobs stay in history, and a fresh git clone still downloads all 76 MB. Actually purging them needs a history rewrite and a force-push to a public repo, which invalidates every existing clone — that is a separate decision, not implied by this one.

Two further consequences to weigh, since the corpus's whole method is measure, don't infer:

  • 203 PNG citations across 75 pages go dead. The claims stay; the visual evidence behind them stops being followable.
  • tools/re/check-capture-citations exists to guarantee a cited capture is present. Its contract inverts: it would need to enforce that no game asset is committed instead.

Implementation is being scoped now.

**Decided: no.** The repos carry **code, tooling and docs only** — no game assets. Already satisfied: the ISO lives outside the repo, and `sylpheed.db` and `export/` are gitignored, so none of those were ever committed. What is actually committed, measured on `main` @ `d6fb3169`: | kind | count | size | |---|---|---| | PNG screenshots (`docs/re/captures/**`) | 143 | **76.4 MB** | | savegame blobs (`*.bin`) | 3 | small | | derived measurements (csv/tsv/txt/log/json) | ~280 | small | The screenshots are frames of the retail game and go. The derived measurement tables are our own numbers, not game content, and stay — they are what the pages cite as evidence. ⚠️ **Removing them from `HEAD` does not remove them from the repository.** The blobs stay in history, and a fresh `git clone` still downloads all 76 MB. Actually purging them needs a history rewrite and a force-push to a public repo, which invalidates every existing clone — that is a separate decision, not implied by this one. Two further consequences to weigh, since the corpus's whole method is *measure, don't infer*: - **203 PNG citations across 75 pages** go dead. The claims stay; the visual evidence behind them stops being followable. - `tools/re/check-capture-citations` exists to guarantee a cited capture is present. Its contract inverts: it would need to enforce that no game asset is committed instead. Implementation is being scoped now.
Author
Owner

Implemented and verified. This can be closed.

The decision above was carried out in full, including the history rewrite that the original post recommended against — that was taken as a separate human decision on 2026-09-19, not implied by this one.

What landed

#59 stop committing game assets; captures stay local (.gitignore, and check-capture-citations' contract inverted)
history rewritegit filter-repo + force-push, run by hand from a guarded runbook with verified backups
#60 re-lock the self-referencing cargo dep the rewrite broke
#61 restore agent evidence sharing after the purge
#65 the capture check was red on a clean tree (an off-by-one that made the captures root look dangling)

Measured on main @ bfe590c6

game-asset blobs in history, all refs 0
game assets tracked at HEAD 0
captures present on disk 212 (82 MB)
citations resolving 203 / 203
.git 115 MB

A fresh clone no longer downloads a single frame of the retail game.

The two consequences the decision flagged

"203 PNG citations across 75 pages go dead." They did not. The captures live on disk at docs/re/captures/, gitignored, bind-mounted read-write into both agent containers, so the host and both agents see the same file. Presence is now read from the working tree, not from git — asking the index would report every screenshot as missing.

"check-capture-citations' contract inverts." Done. It asserts both halves now: a citation with no file fails, and a tracked game asset fails. The second half is the one that has to stay loud — a screenshot that sneaks back in is invisible in review (Bin 0 -> 1234567 bytes) and permanent once merged.

Cross-machine evidence goes on the issue or PR as an attachment, per the evidence table in docs/agents/PROTOCOL.md. Derived measurements (csv/tsv/txt/log/json) stayed tracked, as decided — they are our numbers, not game content.

One thread this does not close

The other desktop (fabi-MS-7C37) still has to re-clone and take captures-2026-09-19.tar.gz from the backup. Until it does, its citations resolve to nothing — the check reports that case explicitly rather than failing, so it will say so plainly instead of looking broken.

**Implemented and verified. This can be closed.** The decision above was carried out in full, including the history rewrite that the original post recommended against — that was taken as a separate human decision on 2026-09-19, not implied by this one. ### What landed | | | |---|---| | #59 | stop committing game assets; captures stay local (`.gitignore`, and `check-capture-citations`' contract inverted) | | — | **history rewrite** — `git filter-repo` + force-push, run by hand from a guarded runbook with verified backups | | #60 | re-lock the self-referencing cargo dep the rewrite broke | | #61 | restore agent evidence sharing after the purge | | #65 | the capture check was red on a clean tree (an off-by-one that made the captures *root* look dangling) | ### Measured on `main` @ `bfe590c6` | | | |---|---| | game-asset blobs in history, **all refs** | **0** | | game assets tracked at `HEAD` | **0** | | captures present on disk | **212** (82 MB) | | citations resolving | **203 / 203** | | `.git` | 115 MB | A fresh clone no longer downloads a single frame of the retail game. ### The two consequences the decision flagged **"203 PNG citations across 75 pages go dead."** They did not. The captures live on disk at `docs/re/captures/`, gitignored, bind-mounted read-write into both agent containers, so the host and both agents see the same file. Presence is now read from the **working tree**, not from git — asking the index would report every screenshot as missing. **"`check-capture-citations`' contract inverts."** Done. It asserts both halves now: a citation with no file fails, *and* a tracked game asset fails. The second half is the one that has to stay loud — a screenshot that sneaks back in is invisible in review (`Bin 0 -> 1234567 bytes`) and permanent once merged. Cross-machine evidence goes on the issue or PR as an attachment, per the evidence table in `docs/agents/PROTOCOL.md`. Derived measurements (csv/tsv/txt/log/json) stayed tracked, as decided — they are our numbers, not game content. ### One thread this does not close The **other desktop** (`fabi-MS-7C37`) still has to re-clone and take `captures-2026-09-19.tar.gz` from the backup. Until it does, its citations resolve to nothing — the check reports that case explicitly rather than failing, so it will say so plainly instead of looking broken.
fabi closed this issue 2026-09-21 16:37:44 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: fabi/Sylpheed#49