Skip to content

80 of the paper's 89 figures have no generator — the orphan gate's founding case, at forty times the size #702

Description

@gHashTag

Orphaned artefacts has never passed on main — 46 of 46 runs in the sampled window. It is right, and what it is reporting is bigger than it looks in the log.

The number

research/arxiv_tnf/tnf_paper.tex includes 89 figures. 80 of them have no generator in this repository.

location figures without a generator
canon/ 80 80
paper root 9 0

Verified as a negative across every file type, not just the ones the checker scans: *.py, *.sh, Makefile, *.mk, *.md, *.yml (the checker's set) plus *.ipynb, *.tex, *.zig, *.rs, *.ts, *.js, *.toml, *.cfg, *.ini. tnf_paper.tex is the only file in the repository that names them at all — nothing draws them, and nothing else refers to them.

They arrived in two commits, last touched 2026-08-14, and the artefact baseline written on 2026-08-19 holds six entries, none of them these.

Why this is the gate's founding case, at forty times the size

From check_orphan_artefacts.py's own docstring:

Two of the paper's six figures had no generator: the PDFs sat in the tree and the code that drew them did not. They were also the only two still carrying the format's name from two renames ago, and the two facts are one fact. A file nobody regenerates is a file nobody renames.

That gate was built after finding two. There are now eighty, and they are the figures of a paper this project has deliberately held back from publication. The stop-rule says do not publish until the block axis is won by measurement; when that day comes, 80 of 89 figures will have no code behind them, and nothing will have checked whether their contents still match the text.

The other thirteen

research/arxiv_tnf/measurements/*.json — thirteen files with no generator and no consumer: nothing produces them and nothing cites them.

hardware_scan_2026-08-20.json          oracle_rtl_2026-08-20.json
placer_router_full_2026-08-19.json     placer_router_sweep_2026-08-19.json
structural_2026-08-20.json             verdict_stability_2026-08-19.json
…and seven more

Those are separable from the figures and cheap to settle: either the run that produced them is worth a committed script, or the files are residue.

What I deliberately did not do

I did not add the 80 to the baseline. Recording them as declared debt would turn the gate green and hold the line against new orphans — which is what I did for the documentation gate, and it was right there. Here it would bless precisely the risk this gate exists to name, inside the paper, at the moment the paper is being held for a measurement. That is the owner's call and not an autonomous one.

Three ways forward, in the order I would rank them:

  1. Commit the generators. If the canon figures were drawn by a script or a notebook that lives outside the repository, bringing it in closes 80 orphans at once and makes the paper reproducible.
  2. Declare them hand-drawn. If they are illustrations rather than plots, they have no generator by nature; the gate needs a per-file declaration for that, which it does not currently have and which is a small addition.
  3. Baseline them and accept the debt. Cheapest, and the only option that leaves the paper's figures unregenerable while the gate reports green.

Whichever is chosen, the thirteen measurement JSONs should be settled separately — they are not figures and not part of the paper.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions