Five stages.
Four falsifications.
The rule still wins.
A closed research programme that tried to learn the dispatch policy routing work to the right provider — and graded every attempt hard enough that most of them died. Each stage below is a real measurement or an explicit absence. Nothing here is estimated to fill a row. Final research date 2026-08-04.
Router School — a closed research programme in learned dispatch policy, run on a local RTX 3090 Ti. Stages V1 through V5 are recorded with their measurements, gate results and reasons for advancing or failing. Final research date 2026-08-04.
The rule stays in production
V5, a 1,573-parameter numeric MLP, clears every quality and latency gate this programme has ever registered. It is still not the production artifact, because the deterministic teacher rule it was distilled from scores higher on the same frozen test set.
Current verdict, as of 2026-08-04. The recovered deterministic teacher rule scores 100% on the V5 test set. It stays in production. The V5 tiny MLP is retained as a shadow benchmark, not a promoted model.
No learned model has been promoted to the live routing path at any point in this program.
- The recovered teacher rule scores 100% on the same 105-example test set — strictly above the model's 99.05%.
- The rule is ~20 lines of stdlib, impossible to misconfigure, and needs no checkpoint.
- Out of distribution the model drops to 93.40% accuracy / 0.9260 macro-F1 on a 500-cell window of never-seen counter values.
- A learned classifier that matches a deterministic teacher is evidence the architectural ladder was mis-chosen, not a shipping candidate.
What this programme is for
A dispatcher decides which provider should receive a unit of work. The current dispatcher is a deterministic function: it reads a task description, a set of recent per-provider dispatch counts, and a handful of size estimates, and it returns a provider. Router School asks a narrow question about that function — can it be learned? — and refuses to answer yes without evidence that survives an adversarial recomputation.
The programme is not a one-night result. It is a sequence of stages, each one a bounded experiment with a preregistered gate set, a frozen evaluation window and its own published outcome. A stage that fails is not deleted and not softened; it is published as a falsification, and the next stage exists because of what the failure ruled out. Four of the five recorded stages ended that way.
The reason to keep going after a falsification is that the falsification is information. V1 proved the evaluation harness could lie. V2 proved a clean dataset was not enough. V3 proved the label depended on state the dataset never carried. V4 proved the fairness surface was learnable but too slow to serve. V4-1B proved shrinking the decoder was the wrong response to a latency violation. V5 exists because those five conclusions narrow the architecture down to one rung of one ladder.
The classification ladder
The single most expensive mistake in this programme was starting at the wrong rung. Four stages of generative decoders were spent on a task whose output is one integer.
- Rule + lookup rung 1 · the task-class rule baseline
- Sparse linear rung 2 · TF-IDF + logistic regression
- Tiny MLP rung 3 · 1–2 hidden layers, ~50–1,000 parameters
- Boosted trees rung 4 · often the best accuracy/latency tradeoff for tabular
- Generative decoder rung 5 · last resort — only when the task is genuinely generative
Classification tasks start at rung 3 and climb left only if the MLP fails. Generative tasks start at rung 5 (rank-16 QLoRA) and climb down.
V1 through V5 at a glance
Every stage, its verdict, and the number that decided it. The full record for each — measurements, gate tables, artifacts — is in the experiment ledger.
Round-1 shadow eval
rank-16 QLoRA adapter, generative decoder
Historical falsification. Not the current status of the program.
Foundation rebuild and bounded GPU matrix
rank-16 and rank-32 QLoRA on unsloth/Llama-3.2-3B-Instruct
The foundation survived and is still in use. The three trained cells did not.
Current-policy distillation
rank-16 QLoRA on unsloth/Llama-3.2-3B-Instruct — 700 steps, lr 1.5e-4, 1,048 examples
The first V3 evaluation measured the harness, not the adapter. The curriculum insight survived and became V4.
Fairness specialist (3B)
rank-16 QLoRA on unsloth/Llama-3.2-3B-Instruct
Quality gates cleared; the latency budget did not. Superseded by V5, not promoted.
1B distillation
rank-16 QLoRA on unsloth/Llama-3.2-1B-Instruct
Failed every promotion gate. Retained as the empirical proof that the generative route was the wrong architecture.
Tiny numeric MLP
10×32×32×5 ReLU MLP trained with PyTorch — 1,573 parameters, no tokenizer, no autoregressive loop
Current cell. Every quality and latency gate cleared — and the recovered teacher rule still beats it, so the rule stays in production.
What V6 would have to answer
The ledger is append-only and the site is built from it. No V6 cell ran before the programme closed on 2026-08-04; these questions are recorded as left open, not as work in progress.
Tiny MLP on an intentionally noisy policy
The current teacher is deterministic, which is exactly why the rule wins. Add a slight bias toward a preferred provider and the rule stops being exactly recoverable — that creates a real target for a learned model rather than a mimicry exercise.
Boosted trees on the same features
Rung 4 of the classification ladder. Worth running if the MLP plateaus on a harder regime, since boosted trees are frequently the best accuracy/latency tradeoff on tabular inputs.
Shadow the rejected cells against the rule
Re-score the V4 generative and V4-1B cells with the recovered rule as the baseline, to confirm the rule wins on every count distribution rather than only on the frozen test window.
Beyond the background task class
V5 is a fairness specialist on a single task class. Nothing in this program yet shows that a numeric policy learner generalizes across the ten-class task surface that V3 sampled too thinly.