Post

The Cull

The Cull

The fastest period in this project’s history was also the one that required the most deletion. That is not a paradox once you have watched it happen, but it surprised me at the time.

First, verification

On 2026-07-24 I had the physics port independently re-verified against the binary, using Ghidra rather than the tooling that produced the original decompilation. The point was to check the work with a different instrument, not a different mood.

The result came back in three parts:

  • The constants were byte-exact.
  • The C++ movement-math ports were correct.
  • The documentation had drifted.

Two heuristic constants on the C# side were wrong and were fixed. Everything else that was wrong was in the notes describing the implementation, not the implementation.

That is a specific and useful failure mode. The code had been tested, exercised, and corrected over months. The documents describing it had been written once, by an agent, at the moment a question was being worked on — and then left alone while the answer moved.

Then, the cull

On 2026-08-01, in phases:

  • 167 raw disassembly artifacts removed. The disassembly directory went from 872,278 bytes to 195,252.
  • 68 stale physics research documents and agent plans.
  • Total across the pass: 235 files, −32,800 lines.
flowchart TB
  subgraph Before
    A1["disasm — 872 KB<br/>167 raw listings"]
    A2["68 plan + research docs"]
    A3["Implementation (C++/C#)"]
  end
  subgraph After
    B1["disasm — 195 KB<br/>derived models only"]
    B3["Implementation (C++/C#)<br/><b>the source of truth</b>"]
  end
  A1 --> B1
  A2 --> X["deleted"]
  A3 --> B3

The justification I wrote in the commit message was that these were safe to delete because the re-verification had happened: the implementation was confirmed correct, standing guidance was to trust the code over the notes, and therefore the notes were no longer evidence of anything.

The practical reason

There is a less principled reason too, and it is worth saying out loud: the repository had grown to the point where it was crashing the agents and the machines working on it.

Context is finite. A documentation tree that an agent has to wade through is not free — it is a tax paid on every single task, forever. Eight hundred kilobytes of raw objdump listings, sitting in a directory an agent will search when you ask it about movement, is a cost you pay every time you ask about movement. And the listings had already done their job: they were the raw material from which the model was derived, and the model was now in the code, verified.

The rule

Machine-generated intermediate artifacts are scaffolding.

They are evidence while a question is open, and dead weight the moment it closes. The skill is telling which one you are looking at. A decompiled listing of a routine you are actively porting is the most valuable file in the repository. The same file, after the port is written, tested, and independently verified, is 4 KB of noise that will be retrieved by every future search for the word “movement”.

Delete accordingly. Git still has all of it, which is how I was able to write this post.

This post is licensed under CC BY 4.0 by the author.