RATIONALE
Why ATM exists
Not more structure. Testing before trust — and keeping what survived.
Wind tunnel
In 1899, the Wright brothers read everything publicly available about flight — Lilienthal, Chanute, Langley. Then their gliders did not fly the way the numbers said they should. Instead of assuming they had built it wrong, they built a wind tunnel and tested 200 wing shapes themselves. Lilienthal's lift tables, which the whole field relied on, turned out to be wrong. Not slightly wrong — wrong.
FPF is the literature we started from: 51,000 lines, well built for a human reader. The usual move is to hand the model the whole frame and hope that if the theory is sound, its use by the model will be sound too. We built the wind tunnel instead: we tested directly how a model behaves when reading raw FPF versus a compiled slice from it — the same error every time, a pattern REFLECTIONS.md calls the triple tax: parse, aggregate, generate. We kept what survived the real test. The rest did not make it into the map.
The five whys
For each mechanism in FPF we applied the same question again and again. Why does the model need this concept at execution time — because it changes what it may do in the next step. Why must it be phrased exactly this way — it does not have to be, that wording is for human readers, so it became a JSON key. Why should the model reason about abstract epistemic concepts — it should not, it only needs to know whether evidence is missing, so that became the field name. Any layer of “why” that did not end in something the next model decision actually depended on was cut.
Ten primitives, twelve guards, six logical operators — that is not a random stopping point. It is the actual bet: the constraint surface for one move has to stay small enough that it never needs its own protocol for how to add things to itself.
The mechanism
We did not give up semantics — we moved it. The raw spec does not fit any practical context window, and running it costs real money on every step (see the table below). The solution was not to cut meaning, but to turn it into a traversal map the model walks itself: it keeps its generation, its reasoning, everything that belongs to it — but it applies logical restrictions to its own next move. That way long, semantically dense tasks do not accumulate their own garbage along the way.
The numbers
| Compared to the full raw FPF spec | 4,668.8× smaller |
|---|---|
| Compared to the exact quoted spec fragment, per decision | 288.7× smaller |
| Live cost per decision (billed input tokens) | 537 vs. 139,195 — a 259× gap |
| Match with expected results on tested cases | 80% vs. 40% for the raw fragment |
The numbers come from TRIPLE_TAX_CALCULUS.md — measured with tiktoken and live runs on a current model, not estimated. The document also says just as clearly what it does not prove: it does not confirm a literal “3-pass” decomposition, and the tested multi-step traversal accumulates linearly, not superlinearly. What could not be measured is reported as such, not left implicit.
REFLECTIONS.md — the full story, including what we rejected along the way ↗