Nagi-ENORMOUS-Burst (27B, research release)
Burst answers several simultaneous decisions, one per control, from one forward pass. A game tick that sets a pump and two gates costs one forward instead of three. Each control gets a closed set of options and returns a probability distribution over them, like every Nagi model.
This repository holds a rank 8 LoRA adapter on
Qwen/Qwen3.8-27B (revision 1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0,
Apache-2.0), plus the base tokenizer files at that revision. It continues
Nagi-ENORMOUS and was trained on both the one-question
(K-call) format and the Burst format, so the same weights serve both. Burst was called Chord during research.
| Status | Research release. Readout variant A: controls rendered in the canonical (declared) order, one forward. Chosen by a selection rule frozen before any evaluation data, from the offline gates only |
| Weights | LoRA r 8, α 16, 54,394,880 parameters; training arm T-dual, step 417; adapter_model.safetensors sha256 b137a98649457f1dab6c84074255a34a9785bdba1c63df579ab5c0b0a9c3caed |
| Serving path measured | H100 80GB, BF16, adapter merged in place, eager attention with the fused Gated-DeltaNet kernels (fla-core 0.5.2, causal-conv1d 1.7.0), request micro-batching |
| SDK | nagi-decisions ≥ 0.6.0, load_enormous_burst() |
| Report | Burst benchmark report · Burst page · Game Arena |
| License | Apache-2.0 (same as the base model and the Nagi SDK) |
Use
# pip install "nagi-decisions @ git+https://github.com/nagisanzenin/nagi.git@v0.6.0"
from nagi import load_enormous_burst # 80 GB GPU; downloads the pinned base + this adapter
nagi = load_enormous_burst() # BF16, adapter merged in place (the measured path)
state = ("RULES: keep the boat level.\ntick 3: water 0.4 m\n\n"
"CONTROLS (set together each tick): upper_gate = closed | open; lower_gate = closed | open; pump = down | idle | up.")
questions = {
"upper_gate": {"type": "choice", "instructions": "Choose the upper_gate setting.",
"criteria": {"closed": "upper gate stays closed this tick", "open": "upper gate is open this tick"}},
"lower_gate": {"type": "choice", "instructions": "Choose the lower_gate setting.",
"criteria": {"closed": "lower gate stays closed this tick", "open": "lower gate is open this tick"}},
"pump": {"type": "choice", "instructions": "Choose the pump setting.",
"criteria": {"down": "pump water out", "idle": "leave pump idle", "up": "pump water in"}},
}
out = nagi.system_one(state, questions, mode="burst") # one forward for all three controls
print({qid: a["choice"] for qid, a in out["answers"].items()})
print(out["burst"]) # slot order used, its source ("controls_line" here), forwards = 1
mode="kcall"(the default) asks one question per forward on the same weights.- Control order matters (see Limitations). The SDK always renders controls in one canonical order: an explicit
control_order, else the state'sCONTROLS (set together each tick):line, else the control ids sorted by code point. Keep the order your environment declares, and keep it fixed. All numbers on this card were measured with the declared order. permutations="cyclic"or"all"(experimental) averages over slot orders at one forward per order. It is not part of this release: the permutation-averaged variant B failed its latency and order-residual gates (below).- Choice questions with 2–26 options per control. Inputs up to 4096 tokens are accepted; training prompts were at most 862 tokens for Burst rows (cap 1,024) and 730 for K-call rows (cap 768). Nothing is silently truncated.
- Without the SDK: render the prompt with
nagi.render.render_burst_promptwith the controls in the canonical order, apply the chat template withenable_thinking=False, run one forward, and read slot k at the last token of[k](the token before the k-th□), restricted to the letters of that slot's options.burst_config.jsonrecords the exact strings. Any other control order is unevaluated (see Limitations).
How it was trained
- Init: the released Nagi-ENORMOUS adapter (step 500). Continued for 417 updates (AdamW, lr 3e-5, warmup 10, seed 1729, effective batch of 12 units per update).
- Each update mixed recipe replay (2 policy + 2 language rows, to keep ENORMOUS's skills), closed-loop game rows, and 6 multi-control states from 11 synthetic "multi-options" genres: 3 as Burst rows (K = 3 slots, control order shuffled per row) and 3 as K-call rows. 2,502 multi-control states in total. Two genres (tugboat, excavator) were held out.
- Targets use a canonical tie rule: when several joint actions are optimal, the first in the genre's control order, then option order.
Evaluation
Every gate, threshold and claim below was preregistered before any Burst evaluation data existed. Numbers are copied from the frozen release receipts (rounded for display). Intervals are 95% unless named otherwise. The unit of independence is the state (offline) or the seed index (realtime).
1. Offline release gates (variant A = the released readout)
| Gate | Estimate [bound] | Rule | Verdict |
|---|---|---|---|
| G1-SDK: SDK order canonicalization | 500 / 500 frozen states give identical token ids for all 6 client listing orders (explicit order, CONTROLS line and sorted-id fallback), and identical served joint actions in the job | 500 / 500 | PASS |
| G2: multi-control quality vs K-call of the same weights (MA1 acceptable, 780 decision instances, 13 genres) | MA1 0.479 (Burst) vs 0.485 (K-call); Δ̂ −0.005, one-sided 97.5% lower bound −0.045 | bound > −0.06 | PASS |
| G3: collective "up" bias vs K-call (200 Rotorwash-Ramp states, 20 seeds) | Δ̂ −0.015, one-sided 97.5% upper bound +0.002 | bound ≤ 0.15 | PASS |
| LAT: decision latency p50 at 3 concurrent streams, one-sided 97.5% upper bound | Snake Rush 216.3 ms [UB 219.5]; Rotorwash-Ramp 247.7 ms [UB 269.0]; Booster Gauntlet 196.2 ms [UB 263.6] | UB ≤ 300 ms on every game | PASS |
| Validity (renderer parity, prompt bytes equal the screened player, serving parity, completeness) | all checks true | all true | PASS |
Not released: variant B (permutation-averaged over the cyclic orbit, M = K forwards). It failed LAT (p50 1,039 ms on Booster Gauntlet, UB 1,063 ms; 774 ms on Rotorwash-Ramp, UB 788 ms) and the order-residual gate (φ_B 9.0%, upper bound 13.2% > 10%). The frozen selection rule therefore chose A.
2. Arena v3 realtime vs Jev (fresh seeds)
Three fail-first real-time games (Snake Rush, Rotorwash-Ramp, Booster Gauntlet), 4 Hz (250 ms ticks), 60 s cap, 3 concurrent streams per H100, the same seeds for both players. Fresh seed indices 10–33 (n = 24 per game), never used to select this model. A player "wins" a head-to-head when it fails later than the other on the same game and seed (ties count ½). Θ is the mean over the three games of the per-game win rate.
| Test (Burst vs Jev, fresh indices 10–33) | Estimate | Rule | Verdict |
|---|---|---|---|
| Validity: exact replay of every round, all cells valid, serving path identical across shards | replay 174 / 174 exact; 0 void rounds | all true | PASS |
| R-RT (release gate): Θ | 0.674 [0.577, 0.770] (t on 24 per-seed means) | lower bound > 0.35 | PASS |
| C1 (headline): Θ > 0.5 | lower bound 0.577; sign-flip p = 0.0018 | lower bound > 0.5 and p ≤ 0.025 | PASS |
| C2, Booster Gauntlet | W = 0.979, lower bound 0.925, p = 1.0e−5 | Holm over 3 games | PASS |
| C2, Rotorwash-Ramp | W = 0.583, lower bound 0.337, p = 0.270 | Holm over 3 games | not significant |
| C2, Snake Rush | W = 0.458, lower bound 0.253, p = 0.736 | Holm over 3 games | not significant |
Absolute level on the same fresh rounds (labelled estimates, no hypothesis test). RMST = mean survival time capped at 60 s, with a 95% t interval. Ladder position maps survival onto the median failure times of three scripted reference players: 0 = naive, 0.5 = heuristic, 1 = planner (Snake Rush 13.75 / 27.75 / 49.88 s, Rotorwash-Ramp 11.14 / 24.49 / 45.83 s, Booster Gauntlet 12.53 / 24.63 / 43.83 s), clipped to [0, 1.2]; the receipt gives its mean without an interval.
| Game | Burst RMST (s) | Jev RMST (s) | Burst ladder (mean) | Jev ladder (mean) | Median level at failure, Burst / Jev |
|---|---|---|---|---|---|
| Snake Rush | 9.33 [7.15, 11.52] | 10.67 [7.93, 13.40] | 0.026 | 0.060 | 1 / 1 |
| Rotorwash-Ramp | 23.08 [20.68, 25.47] | 21.50 [17.30, 25.69] | 0.431 | 0.343 | 3 / 2 |
| Booster Gauntlet | 22.00 (every round reached the 22.0 s wall; no interval) | 12.26 [10.64, 13.88] | 0.392 | 0.064 | 3 / 2 |
In-play decision latency as served in the realtime runs (H100, 3 streams, all 34 rounds per game): p50 248.6 ms
(Snake Rush), 263.9 ms (Rotorwash-Ramp), 289.5 ms (Booster Gauntlet); 0 stale replies and 0 control expiries. The
release receipts record p50 only (no p90 / p99). Jev was called through its public API (version jev-1.13.0, the
same version as the earlier Arena v3 board); its latencies are not comparable with an H100 serving path and say
nothing about its size or hardware.
3. Research-phase results that stay failed (Chord P1, same weights, 2026-09-26)
These were preregistered for the earlier Chord decision. They are disclosed, not passed retroactively.
| Measure | Result | Status |
|---|---|---|
| Order sensitivity: joint action changes when the slot order is rotated by one (500 states) | 26.0% [18.4%, 34.3%] | REJECT-ORDER (> 10%), stays failed |
| Single-decision quality, Chord − K-call (MA1) | +0.000 [−0.040, +0.040] | A1 non-inferiority at −0.02 not shown (FAIL) |
| Lockstep Rotorwash v2, compute-matched against K-call's 3 forwards | R −0.101 [−0.165, −0.043]; survival −43.1 s; 24 / 24 rounds ended on the ceiling | deficit, disclosed |
| Retention vs Nagi-ENORMOUS | recipe-dev language and policy passed; Arena retention INCONCLUSIVE; public suite not tested | disclosed |
Claims
Each claim is allowed by the preregistration only because its test passed.
- One forward decides all K controls (design fact).
- Latency: p50 216.3 ms (Snake Rush), 247.7 ms (Rotorwash-Ramp) and 196.2 ms (Booster Gauntlet) at 3 concurrent streams on H100 (merged BF16, fused kernels); one-sided 97.5% upper bounds 219.5 / 269.0 / 263.6 ms. In play: p50 248.6 / 263.9 / 289.5 ms. Measured on H100 only; no claim for other hardware.
- Multi-control quality: non-inferior to K-call of the same weights within 0.06 on MA1 (Δ̂ −0.005, one-sided 97.5% lower bound −0.045; 780 instances, 13 synthetic genres).
- Order: through the SDK, answers do not depend on the order in which the client lists controls. The SDK renders
the declared order (explicit
control_order, else the CONTROLS line, else sorted ids). The model itself changes its answer on 24.8% [17.5%, 32.2%] of states when the control order is rotated (Chord P1 REJECT-ORDER; not passed). - Realtime vs Jev, estimate: survived longer than Jev in 67.4% [57.7%, 77.0%] of head-to-heads (24 seed indices × 3 games).
- Realtime vs Jev, superiority: outperforms Jev in realtime head-to-heads on the three-game Arena v3 suite (C1 passed). Per game, only on Booster Gauntlet (win rate 0.979); on Rotorwash-Ramp (0.583) and Snake Rush (0.458) the difference from Jev is not significant.
- Absolute realtime level: the RMST, ladder and level estimates in section 2, with the anchor definition above.
What this release does not claim: an order-invariant model; better single-decision accuracy than K-call; any lockstep advantage; any result for K ≥ 5 controls or for games outside the three-game suite; that Burst beats Jev on Snake Rush or Rotorwash-Ramp, or in general; anything about Jev's size or hardware; any GPU other than H100; that Chord P1 REJECT-ORDER or A1 passed.
Limitations
- Order sensitivity (model level). Without canonicalization, rotating the control order changed the joint action
on 24.8% [17.5%, 32.2%] of 500 states on this serving path (Chord P1 measured 26.0% [18.4%, 34.3%]; that gate stays
failed). The SDK removes this by always rendering the declared order, but only for that order: a client that
declares a different
control_order, or writes its own CONTROLS line, changes the model input. Clients that do not use the SDK must present controls in the canonical order to get the evaluated behaviour; other orders are unevaluated and flip roughly 25% of answers. All quality numbers are for the canonical order only. - Lockstep deficit. In the Chord P1 lockstep Rotorwash v2 test, compute-matched against K-call's three forwards, Burst lost: R −0.101 [−0.165, −0.043], survival −43.1 s, and all 24 rounds ended on the ceiling. Burst's advantage is latency; when time does not matter, K-call on the same weights did better.
- Ceiling pathology in realtime. 12 of the 24 fresh Rotorwash-Ramp rounds (50%) ended with a ceiling crash, which meets the preregistered ≥ 50% disclosure flag (Jev: 2 of 24). The offline bias gate (G3) detects only gross, systematic climb bias and passed; it does not rule out this failure mode. (Count taken from the round records' crash-cause field.)
- Training provenance. A preregistered pause rule at update 125 fired during training and the owner overrode it. Retention against Nagi-ENORMOUS: recipe-dev language and policy passed, Arena retention was inconclusive, and the public four-system suite was not re-tested for these weights.
- In-domain games. All three Arena v3 games are flagged in-domain: related game data were in training. The Arena results are not evidence of transfer to unseen games.
- Measurement limits. Booster Gauntlet has a 22.0 s wall: Burst reached it in every fresh round, so its Booster RMST has no interval and ties compress win rates among strong players. On Snake Rush, Burst's survival (RMST 9.33 s) is below the naive reference player's median (13.75 s); the model is weak at that game in absolute terms.
- The Booster Gauntlet win comes from not crashing, not from landing. An audit after the gates passed found that Burst never landed a hop: every one of its 34 Booster rounds ended at the 22 s hop timeout with the booster still climbing. The fail-first ranking (later failure ranks first) rewards that. Under a stall-proof scoring (hops landed plus touchdown credit, no time term; not preregistered) Burst and Jev tie on Booster (0.500), and on Rotorwash-Ramp and Snake Rush together Burst is non-inferior to Jev, not better (0.521 [0.378, 0.663]). The Arena v3 page carries the same caveat.
- Realtime conditions. All realtime results are for this protocol (4 Hz, 250 ms ticks, stale replies after
1,000 ms rejected, 3 streams per H100 with filler traffic). Jev was pinned by version string (
jev-1.13.0); its answers are not deterministic across calls (an answer fingerprint changed between identical requests), so version, not fingerprint, was the pin. The Jev client region was not recorded. - Ties. The tie convention (first optimal joint action in control order, then option order) is learned only from targets and never stated in the prompt; on held-out genres it is unproven.
- Held-out genres are weak. On the two held-out synthetic genres, joint accuracy is low for every interface (MA1 acceptable 0.17 Burst vs 0.18 K-call in Chord P1; 2 genres, so their intervals are not meaningful).
- Scope. K = 3 controls in the offline sets and in training; the Arena suite has K = 1, 3 and 4. K ≥ 5, free-form controls and real deployments are unmeasured.
- Serving path. Latency and parity were measured with the adapter merged in BF16 on H100 with fused kernels. Unmerged LoRA, other GPUs, quantization or different batching can change near-tie answers and latency.
- Calibration. Temperature 1.0 is not learned calibration; probabilities can be overconfident on new domains.
- Everything in the Nagi-ENORMOUS card about the base model and its limits applies here too.
Files
| File | What |
|---|---|
adapter_model.safetensors, adapter_config.json |
the LoRA adapter (PEFT 0.21.0) |
tokenizer.json, tokenizer_config.json, vocab.json, merges.txt, chat_template.jinja |
base tokenizer and chat template at revision 1d4bf0f2 (unchanged) |
burst_config.json |
readout strings, slot rule, serving path, variant |
LICENSE |
Apache-2.0 |
Links
- SDK and code: https://github.com/nagisanzenin/nagi
- Burst benchmark report: https://github.com/nagisanzenin/nagi/blob/main/bench/burst/README.md
- Burst page: https://nagisanzenin.github.io/nagi/burst/
- Game Arena (Arena v3 replays): https://nagisanzenin.github.io/nagi/arena/
Citation
@misc{nagi_enormous_burst_2026,
title = {Nagi-ENORMOUS-Burst: one-forward multi-control decisions},
author = {Nagisanzenin},
year = {2026},
url = {https://huggingface.co/nagisanzeninz/Nagi-ENORMOUS-Burst}
}