Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

SnapFlow, the whole story — a visual report (#12)

2026-08-08. Owner-requested consolidation (steering 09:22Z): the SnapFlow thread ran across a distillation pre-registration, a σ_draw finalization amendment, a results post, a rig fine-tune pre-reg with its diagnosis post, and the decode micro-benchmark — this page subsumes them into one chart-led report. Every number is read from the banked jsons (analysis__snapflow_distill_30k_k4l2.json, the analysis__leaderboard_decode_microbench*.json set, the AR draws readout, and the ftrig eval jsons); charts are rendered by fontaine/scripts/snapflow_report_charts.py from those files and nothing is re-computed.

The idea in one paragraph

Our best flow policy turns a noise vector into a 50-step action chunk by integrating an ODE — 30 expert evaluations (Heun, 15 steps × 2) per chunk, and its best panel score needs a mean of 10 draws: 300 expert evals per prediction. SnapFlow (#12) asks the shortcut-model question: can the same network learn to jump the whole trajectory in one evaluation? We self-distilled the teacher into a 1-NFE student — same trunk (frozen), the flow head extended with a target-time input φ_s initialized so that step 0 is bit-exact the teacher — for 30k steps, ~4.5 h on one H100. Zero new data, zero trunk training. The pre-registered question was whether one draw could hold parity with the teacher’s 30-eval draw; the answer came back stronger on every read.

Headline numbers

readquestionnumberverdict
primary1-NFE single draw vs adopt line 6.77325.6036PARITY-ADOPT, beats the teacher’s own single draw by 1.02
deploymentmean-of-10 @1-NFE vs AR anchor 5.80265.3675FIRES — matches the teacher’s 300-eval read (5.3645) to 3 dp
groundingfirst-step MAE vs edge line 1.98311.7039survives, improves on the teacher’s 1.9331
costsingle-stream latency vs AR greedy100 ms vs 2,157 ms~12× faster at better panel MAE
rig fine-tune4k-step rig adaptationall reads worseno ship (frozen rule) — the rig gap is not a few gradient steps

The endpoint ladder — one eval beats the anchor

The pre-reg’s modal outcome was “parity or slightly better” against the adopt line. Measured: a single 1-NFE draw scores 5.6036 — already below the AR-100k greedy anchor (5.8026), below the AR family’s own 10-draw ensemble (5.6515), and 15% below the teacher’s single draw it was distilled from. Averaging 10 student draws lands 5.3675, a statistical tie with the teacher’s mean-of-10 (5.3645, Δ 0.003 ≈ 1σ_draw) at 30× fewer expert evals. Ranks 1–4 of the leaderboard are this lineage.

Cost vs quality — the Pareto corner is empty except for the student

The micro-benchmark measured every leaderboard row on the same harness, decode flags byte-matched to the banked panel stems (single-stream b=1, the deployment-facing read; post-merge tree, where mean-of-N noise draws batch into one forward). The student’s 10 draws cost 11% extra latency over its single draw (100 → 111 ms); the AR family pays serially either way (2.2 s greedy, 8.0 s for draws-10). Nothing else on the board is within an order of magnitude of the student at equal or better MAE.

What distillation did to the draws — it compiled the mean

The teacher’s ensembling gain is −1.258 (6.623 single → 5.365 mean-of-10). The student’s is −0.236 — same fractional shape (~90% of the gain banked by draw 5) at one-fifth the amplitude, because each single student draw already sits near the mean of the teacher’s draw distribution. This is the fairness-probe finding operating in reverse: chunk-MAE rewards mode non-commitment, the 1-NFE endpoint approximates the posterior mean, so the distillation banked most of the ensembling gain into every draw. The AR family’s curve (−0.145, readout) shows the same mean-collapse from the other side: greedy AR decode already sits near its predictive mean, so draws buy little there too. Mean-of-draws is a flow-teacher superpower, and the student internalized it.

The flip side, stated plainly: the student is not a sampler. Anyone needing mode diversity — best-of-N search, multimodal planning, the golden-ticket selection machinery — stays on the Heun teacher, whose best-of-10 probe bound (3.8597) has no student counterpart.

The horizon read — compression is largest where spread is largest

The pre-registered worry was that a 1-NFE jump would degrade faster along the 50-step chunk than the 30-eval integration. The opposite: the student sits below the teacher at every horizon step (crossover_step: null), and the per-step delta widens from −0.23 at step 1 to −1.55 at step 50. Late-horizon steps carry the most draw spread, and a mean-valued prediction profits most exactly there — the same mechanism as the draws collapse, visible along the time axis.

The branch that failed: rig fine-tuning at 4k steps

The owner-steered follow-up asked whether a short fine-tune on rig data (51 episodes) could close the student’s rig-transfer gap. The pre-reg’s frozen ship rule: the rig-holdout read must improve or no checkpoint ships. It did not ship — both holdout reads ended slightly worse (single draw +0.09, mean-of-10 +0.27) while the community-panel forgetting guard barely moved (+0.12 against a +1.0 bound). The in-run probe descended the whole time; the descent was memorization of the 51 training episodes, not transfer. Diagnosis: the rig gap (11.39 on rig holdout vs 5.60 on the community panel, with state-copy at 12.05) is distribution shift — camera framing, state calibration — that 4k gentle steps on this data cannot teach. The honest next moves are rig data work or on-robot measurement (#16), not a longer fine-tune.

Where the thread stands

  • Adopted: the 30k student (fontaine_flow_snapdistill_h1024_30k_1xh100/step_030000, on fontaine-checkpoints) is the deployment-class config of this lineage — single draw as the latency floor (100 ms/frame, 1 expert eval), mean-of-10 as the quality mode (111 ms, tied with the teacher’s 300-eval read).
  • Built on it since: the golden-ticket screen used the cheap panel substrate this unlocked; the critical-frame re-pooling confirmed the board’s ordering isn’t an easy-frame artifact.
  • Open: the ☆ chunk bar (≤ 5.0) — current best 5.3675, gap 0.37; the rig-transfer gap (#16, the north star); and every panel number remains an offline proxy until a rollout-gated read exists.