Calibrate the engine
The engine is a physical model with a small number of fitted constants. Accuracy comes from the
physics being right for each architecture, not from per-model fudge factors. Read the invariants in
CLAUDE.md ("The calculation engine") before touching anything.
The model you are fitting
Per decode pass (all sequences in a batch advance one token):
weights = weight bytes / (BW × bandwidthEfficiency) gemm = 2N·batch / (TFLOPs × batchedComputeEfficiency(batch))
kv = KV bytes / (BW × kvReadEfficiency) attn = 4·heads·dim·depth·batch / (fp32 TFLOPs × DECODE_ATTENTION_EFFICIENCY[kv dtype] / kernelOverheadScale)
overhead = layers × perLayerOverheadUs × attentionScale × (1 + moeExtra × deviceScale × backendMoeScale) × deviceScale + perTokenOverheadUs × deviceScale
pass = max(weights, gemm) + max(kv, attn) + overhead + coordination(strategy, interconnect)
DECODE_ATTENTION_EFFICIENCY (fp16 KV 0.2, q8 0.1, q4 0.06 of the fp32 peak) was fit on the long-context
rows (3060 Ti 65k/98k, V100 46k with f16/q8/q4 KV, 5090 64k); it is what makes deep contexts slow down
more than their KV bytes. Fit it only on rows deeper than ~16k tokens — short rows cannot see it.
All of it lives in engine.js (shared by the site and the SDK; index.html only holds the UI).
FRAMEWORK_PROFILES[runtime]: bandwidthEfficiency, kvReadEfficiency, perLayerOverheadUs,
perTokenOverheadUs, prefillEfficiency, prefillRampTokens, prefillRampFloor,
batchedComputeEfficiency, batchRampSequences, speculation costs (specDraftStepOverheadUs,
specBatchedDrafting, specVerifyReadsKvPerToken), optional attentionOverheadScales /
moeOverheadExtra overrides, and per-backend overrides under backends (llama.cpp/Ollama on
metal: bandwidthEfficiency 0.66, moeOverheadScale 6; Intel sycl: moeOverheadScale 0.25
moePrefillScale 0.5 on llama.cpp/Ollama, 0.75 + batchedComputeScale 0.10
specDraftOverheadScale 3 on vLLM XPU).
Templates declare backend (metal, sycl); getBackendEfficiency merges the overrides.
data/lab-evidence.json + tests/lab-evidence.test.mjs: neural.download lab rows (stock /
lab-baseline / tuned) with shape checks (depth sweep, MTP ladder). Add a row there when the lab
publishes a new measured series; never put a tuned row into the gold set. npm test regenerates
data/lab-evidence.js (what the page loads) and its cache key; the rows surface as the ladder's
"Nearest measured" (stock/baseline) and "Lab tuned" rungs, in the evidence workspace, and as
result.measured in the SDK — never in calibration.
LAYER_OVERHEAD_SCALES.attention[mechanism] (GDN/KDA hybrids ≈ 2×, MLA 1.25, SSM 1.35) and
LAYER_OVERHEAD_SCALES.moeExtra (routing cost, scaled by the backend).
DEVICE_TEMPLATES[*].kernelOverheadScale (AMD ROCm/Vulkan 1.5, Intel SYCL 2, Apple M5 0.6;
CUDA/M1–M4 1), prefillEfficiencyScale (RDNA4 0.45, 780M 0.2, V100 0.15, M5 0.6, Arc Pro llama.cpp/Ollama 0.6), backend.
QUANT_FORMATS bits-per-weight (Q4_K_M 4.9, UD-IQ4_XS 4.0, NVFP4 4.5, AWQ 4.3, Q8_0 8.5 …) and
getWeightStorageOverhead (k-quant scales/metadata 1.16) — the bytes side of decode.
- Prefill:
prefillEfficiency × ramp(prompt tokens; floor, rampTokens) × moePrefillFactor (sqrt(tokens-per-expert / MOE_PREFILL_TOKENS_PER_EXPERT_REF)) × prefillEfficiencyScale, with
PREFILL_MICRO_BATCH_TOKENS (512) and CPU_PREFILL_TFLOPS (1.2) for offloaded experts.
- Expert offload (llama.cpp/Ollama
--n-cpu-moe): describeExpertOffload, overflowMode: 'experts',
EXPERT_OFFLOAD_ROUND_TRIP_US (150 µs per offloaded layer), CPU_OFFLOAD_BANDWIDTH_EFFICIENCY
(0.5 of DRAM peak for whatever spills to system RAM).
- Speculation:
SPECULATION_METHODS (acceptance, decay, draft size, KV window, memory), and
SPEC_VERIFY_COMPUTE_EFFICIENCY (0.6). Anchors: llama.cpp MTP ×1.81 (Qwen 3.8 27B, 5090), vLLM
MTP ×2.56, H100 EAGLE-3 ×2.36 at bs1 / ×1.38 at bs64, draft-model on a 3090 ×0.87.
Each constant has one physical meaning. If you find yourself wanting a constant "for Gemma" or
"for vLLM on 3090s", stop: that is a preset, data, or missing-physics problem.
Workflow
September 8 review correction: the historical llama-bench -p interpretation
in the checklist below is current implementation debt, not verified upstream
semantics. Separate pp/tg tests start tg at -d (default zero); -pg is the
combined test. See docs/refresh-review-2026-09-08.md before recalibrating
these rows. Numerical pins now use a fixed corpus in tests/fixtures/;
routine snapshot refreshes must not replace it or repin expected values.
- Baseline:
npm run audit:gold and node scripts/fit-decode-constants.mjs (add --rows for
every row). Note the generic median, within-1.5×, rmsLog, per-group medians, and violations.
- Triage the worst rows before fitting anything. For each outlier, open the raw run (the
snapshot keeps
command, promptTokens, outputTokens, kvCacheDtype, backend, splitMode,
peakVramGb, source; the Localmaxxing API row also has notes). Known data semantics:
- Decode depth = recorded
promptTokens + outputTokens/2, not contextLength — for llama-bench
rows too (measured tg falls as 1/p with -p; a depth-0 model doubled their error).
- "Weighted client wall-time throughput" / capacity probes fold a minute of prefill into tok/s —
excluded by the refresh script when prompt ≥ 32K with no prefill rate; extend that rule if a new
pattern appears.
-sm tensor / -sm row = tensor parallel in llama.cpp; -ts 1/1 means 2 of the host's GPUs.
-ctk q8_0 / --kv-cache-dtype fp8 halve KV bytes; recorded peakVramGb below the device pool
proves a fit even when the uniform byte estimate says overflow (mixed-precision UD quants).
- FP8 on Ampere, expert-parallel over PCIe, early XPU stacks: genuinely slow, not physics.
- Speculative runs are excluded from gold on purpose (
isSpeculative in the refresh script
reads structured flags, every CLI spelling, notes, and MLX "-mtp" checkpoints); a row that
beats physics on MLX/oMLX usually is one that slipped through — extend the detector.
- Prompt-processing rates above the device's dense tensor peak are prompt-cache hits; the refresh
script nulls them (
plausiblePrefillRate) so they never calibrate prefill.
--n-cpu-moe N / -ncmoe N rows carry cpuMoeLayers; the projection pins that offload. The
peak-VRAM residency shortcut only applies when the peak is ≥70% of the uniform size estimate; a
MoE checkpoint far larger than the card with a low peakVramGb was auto-fit by llama.cpp (experts
on the CPU), not a small quant. A recorded memoryGB below the template's (3 GB 1060) is the real
pool.
A run that beats the physical roofline (>1.05×) is always one of these or a preset error.
Fix the data/preset; never widen a tolerance or lower a ceiling.
- Fit:
node scripts/fit-decode-constants.mjs --grid "FRAMEWORK_PROFILES.llama_cpp.perLayerOverheadUs=35,45,55" "LAYER_OVERHEAD_SCALES.moeExtra=0.4,0.6" …
For prefill, fit on the gold rows that carry prefillTokS (obs/pred of the system prefill rate;
group by dense/MoE, prompt-length bucket, and hardware) — the Aug 2026 pass landed llama.cpp at
prefillEfficiency 0.7 / prefillRampFloor 0.4 / prefillRampTokens 1536, median 0.98, 76% within
1.5×. For a backend/runtime pair that is off on both dense and MoE rows, fit the runtime's
backends[backend] overrides rather than bending the global constants (that is how Metal got
0.66 / 6).
Rank by rmsLog but choose with judgment: median ≈ 1.0 overall and per group (runtime,
hardware, dense/MoE, depth bucket), no group sacrificed for another, constants that stay
physically plausible (a per-layer launch floor of 500 µs is not). Prefer changing the constant whose
physical meaning matches the residual pattern (e.g. MoE rows slow only on Vulkan → backend-scaled
MoE extra, not a global MoE penalty).
- Anchors: every anchor in
tests/integrity.test.mjs is a measured number with a source. If a
fit moves an anchor out of its band, either the fit is wrong or the anchor's band was (re-check the
measurement). Add an anchor whenever you calibrate on a new measured setup.
- Re-pin:
node scripts/print-regression-pins.mjs prints the values behind the exact-value tests
(four-B70 DeepSeek plan…, supplied execution assumptions…, AI handoff and Plan JSON…,
projected, optimized, and physical rates stay aligned…, and the Playwright B70 test). Update the
pinned ranges only after the physics is final, keep them tight, and say in the commit why they moved.
- Verify:
npm test, npm run audit:gold, npm run test:playwright. Then load a few plans in the
browser: the decode waterfall bands must sum to the per-token total and the "How it scales" curves
must look monotonic.
Acceptance envelope (guarded by tests)
Generic engine (no peer correction): median 0.85–1.15, ≥70% within 1.5×, ≥85% within 2×, ≤2% roofline
violations. Leave-one-out calibrated model: median 0.9–1.1, ≥85% within 1.5×, ≥92% within 2×,
optimized-target coverage ≥90%, physical coverage ≥97%. Current state (Aug 2026, 240 rows across 31
device templates): 1.02 / 92% / 96% / 0 (rmsLog 0.37; long-context rows >16k: 0.92, 93% within 1.5×);
prefill (llama.cpp, 129 rows) 0.98 / 76% / 92%. Do not regress these to make a single row fit. tests/sanity-matrix.test.mjs
adds wide physical bands across ~500 model × hardware × runtime combinations — if it fails after a
fit, a constant left the plausible range somewhere the gold corpus does not look.
Things the engine does not model yet (do not fake them with constants)
DeepSeek V4's sparse indexer, prefix caching, chunked-prefill interleaving at high concurrency,
multi-node EXO beyond the coordination term, Apple M5 Neural Accelerator throughput beyond the
derived 120/60 TFLOPS (no vendor figure). Expert offload and speculation are modeled now — calibrate
them against paired rows (same rig with/without) rather than absolute rates. If a class of runs is
systematically off because of one of these, add the physics, then re-fit.
Open calibration items (updated 2026-08-26)
- DSpark acceptance on large MoE.
SPECULATION_METHODS.dspark.acceptance
(0.78, decay 1.0, 7 tokens → 3.9 tokens/step) is fit on the Qwen 3.8 27B
DSpark drafter. On DeepSeek V4 Flash the community's own runs gain only
x1.0-1.1 (4x RTX PRO 6000: 297-346 plain vs 308-310 DSpark; accept_len 4.48
reported but verify cost eats it) and the lab's 4x B70 REAP run is 80.8 vs
a 140 stock / 266 optimized projection. Anchor: add those Localmaxxing rows
(deepseek-ai/DeepSeek-V4-Flash-0731, RTX PRO 6000 x2/x4, vLLM FP8) to the
gold set and fit a per-model or per-size acceptance, never the ceiling.
- CUDA fixed floor for 40+ layer MoE. 4x RTX PRO 6000 DeepSeek V4 Flash
projects 138 vs 297-346 measured after the TP launch split; the vLLM CUDA
per-layer overhead is the remaining term. Same rows are the anchor.
- Arc Pro XMX rates — RESOLVED 2026-08-26.
float16 held the Xe vector
rate, not the XMX matrix rate, understating dense tensor throughput ~4x;
measured SYCL prefill beat the old ceiling, so those rows were being dropped
from gold prefill evidence. Xe2 XMX does 2,048 FP16 and 4,096 INT8 ops/clock
per Xe core, which reproduces Intel's official ARK INT8 exactly and pins the
peaks at B70 183.5 / B65 98.3 / B60 98.3 / B50 85.2 (fp8 mirrors float16;
Xe2 has no FP8 datapath). Because the SYCL constants had been fit against the
understated peak, they were re-fit with it: templates gained
prefillEfficiencyScale { llama_cpp: 0.6, ollama: 0.6, default: 1 },
llama.cpp/Ollama backends.sycl.moePrefillScale 0.5 (a new backend override —
dense and MoE prefill are not off by the same factor on a stack whose
grouped-GEMM path is weaker than its dense path), and vLLM XPU
batchedComputeScale 0.40 -> 0.10. Result on the 27 Arc Pro gold rows that
carry prefillTokS: median obs/pred 1.42 -> 0.83, within 1.5x 33% -> 59%,
vLLM MoE 3.48 -> 0.95; decode is untouched (batch-1 decode is
bandwidth-bound) and the whole-corpus decode fit is byte-identical at median
0.99 / 84% / 2 violations. Arc Pro B65 is a real SKU (ARK 245796) and every
memory, bandwidth, TDP and PCIe value was already correct.
Still open here: the 6 koboldcpp llama3_8b B60 rows span 97-826 tok/s
prefill for the same model on the same card and should be triaged out of the
corpus; B70 dense prefill rests on 3 rows, one of which sets
GGML_SYCL_DISABLE_DNN=1 and so cannot see XMX at all.
- Research rows flagged
exceedsOptimizedTarget in data/lab-evidence.json
(Qwen3.8 INT4 MTP5 TP2 101.17; Muse Glimmer BF16 DFlash draft 100.37) beat
the engine's optimized target for their stack; they are shown, never used
as anchors. Revisit once the speculative multi-card XPU path has a second
measurement.
1---2name: calibrate-engine3description: Re-fit or re-anchor the planner's decode/prefill physics (FRAMEWORK_PROFILES, LAYER_OVERHEAD_SCALES, device kernelOverheadScale) against the gold-case corpus, triage outliers and roofline violations, and re-pin the exact-value regression tests. Use when predictions look wrong for a model/runtime/hardware class, when `npm run audit:gold` fails, or after changing any engine formula.4---56# Calibrate the engine78The engine is a physical model with a small number of fitted constants. Accuracy comes from the9physics being right for each architecture, not from per-model fudge factors. Read the invariants in10`CLAUDE.md` ("The calculation engine") before touching anything.1112## The model you are fitting1314Per decode pass (all sequences in a batch advance one token):1516```17weights = weight bytes / (BW × bandwidthEfficiency) gemm = 2N·batch / (TFLOPs × batchedComputeEfficiency(batch))18kv = KV bytes / (BW × kvReadEfficiency) attn = 4·heads·dim·depth·batch / (fp32 TFLOPs × DECODE_ATTENTION_EFFICIENCY[kv dtype] / kernelOverheadScale)19overhead = layers × perLayerOverheadUs × attentionScale × (1 + moeExtra × deviceScale × backendMoeScale) × deviceScale + perTokenOverheadUs × deviceScale20pass = max(weights, gemm) + max(kv, attn) + overhead + coordination(strategy, interconnect)21```2223`DECODE_ATTENTION_EFFICIENCY` (fp16 KV 0.2, q8 0.1, q4 0.06 of the fp32 peak) was fit on the long-context24rows (3060 Ti 65k/98k, V100 46k with f16/q8/q4 KV, 5090 64k); it is what makes deep contexts slow down25more than their KV bytes. Fit it only on rows deeper than ~16k tokens — short rows cannot see it.2627All of it lives in `engine.js` (shared by the site and the SDK; `index.html` only holds the UI).2829- `FRAMEWORK_PROFILES[runtime]`: `bandwidthEfficiency`, `kvReadEfficiency`, `perLayerOverheadUs`,30 `perTokenOverheadUs`, `prefillEfficiency`, `prefillRampTokens`, `prefillRampFloor`,31 `batchedComputeEfficiency`, `batchRampSequences`, speculation costs (`specDraftStepOverheadUs`,32 `specBatchedDrafting`, `specVerifyReadsKvPerToken`), optional `attentionOverheadScales` /33 `moeOverheadExtra` overrides, and per-backend overrides under `backends` (llama.cpp/Ollama on34 `metal`: `bandwidthEfficiency 0.66`, `moeOverheadScale 6`; Intel `sycl`: `moeOverheadScale 0.25`35 + `moePrefillScale 0.5` on llama.cpp/Ollama, `0.75` + `batchedComputeScale 0.10`36 + `specDraftOverheadScale 3` on vLLM XPU).37 Templates declare `backend` (`metal`, `sycl`); `getBackendEfficiency` merges the overrides.38- `data/lab-evidence.json` + `tests/lab-evidence.test.mjs`: neural.download lab rows (stock /39 lab-baseline / tuned) with shape checks (depth sweep, MTP ladder). Add a row there when the lab40 publishes a new measured series; never put a tuned row into the gold set. `npm test` regenerates41 `data/lab-evidence.js` (what the page loads) and its cache key; the rows surface as the ladder's42 "Nearest measured" (stock/baseline) and "Lab tuned" rungs, in the evidence workspace, and as43 `result.measured` in the SDK — never in calibration.44- `LAYER_OVERHEAD_SCALES.attention[mechanism]` (GDN/KDA hybrids ≈ 2×, MLA 1.25, SSM 1.35) and45 `LAYER_OVERHEAD_SCALES.moeExtra` (routing cost, scaled by the backend).46- `DEVICE_TEMPLATES[*].kernelOverheadScale` (AMD ROCm/Vulkan 1.5, Intel SYCL 2, Apple M5 0.6;47 CUDA/M1–M4 1), `prefillEfficiencyScale` (RDNA4 0.45, 780M 0.2, V100 0.15, M5 0.6, Arc Pro llama.cpp/Ollama 0.6), `backend`.48- `QUANT_FORMATS` bits-per-weight (Q4_K_M 4.9, UD-IQ4_XS 4.0, NVFP4 4.5, AWQ 4.3, Q8_0 8.5 …) and49 `getWeightStorageOverhead` (k-quant scales/metadata 1.16) — the *bytes* side of decode.50- Prefill: `prefillEfficiency × ramp(prompt tokens; floor, rampTokens) × moePrefillFactor51 (sqrt(tokens-per-expert / MOE_PREFILL_TOKENS_PER_EXPERT_REF)) × prefillEfficiencyScale`, with52 `PREFILL_MICRO_BATCH_TOKENS` (512) and `CPU_PREFILL_TFLOPS` (1.2) for offloaded experts.53- Expert offload (llama.cpp/Ollama `--n-cpu-moe`): `describeExpertOffload`, `overflowMode: 'experts'`,54 `EXPERT_OFFLOAD_ROUND_TRIP_US` (150 µs per offloaded layer), `CPU_OFFLOAD_BANDWIDTH_EFFICIENCY`55 (0.5 of DRAM peak for whatever spills to system RAM).56- Speculation: `SPECULATION_METHODS` (acceptance, decay, draft size, KV window, memory), and57 `SPEC_VERIFY_COMPUTE_EFFICIENCY` (0.6). Anchors: llama.cpp MTP ×1.81 (Qwen 3.8 27B, 5090), vLLM58 MTP ×2.56, H100 EAGLE-3 ×2.36 at bs1 / ×1.38 at bs64, draft-model on a 3090 ×0.87.5960Each constant has one physical meaning. If you find yourself wanting a constant "for Gemma" or61"for vLLM on 3090s", stop: that is a preset, data, or missing-physics problem.6263## Workflow6465September 8 review correction: the historical llama-bench `-p` interpretation66in the checklist below is current implementation debt, not verified upstream67semantics. Separate pp/tg tests start tg at `-d` (default zero); `-pg` is the68combined test. See `docs/refresh-review-2026-09-08.md` before recalibrating69these rows. Numerical pins now use a fixed corpus in `tests/fixtures/`;70routine snapshot refreshes must not replace it or repin expected values.71721. **Baseline**: `npm run audit:gold` and `node scripts/fit-decode-constants.mjs` (add `--rows` for73 every row). Note the generic median, within-1.5×, rmsLog, per-group medians, and violations.742. **Triage the worst rows before fitting anything.** For each outlier, open the raw run (the75 snapshot keeps `command`, `promptTokens`, `outputTokens`, `kvCacheDtype`, `backend`, `splitMode`,76 `peakVramGb`, `source`; the Localmaxxing API row also has `notes`). Known data semantics:77 - Decode depth = recorded `promptTokens` + `outputTokens/2`, not `contextLength` — for llama-bench78 rows too (measured tg falls as 1/p with `-p`; a depth-0 model doubled their error).79 - "Weighted client wall-time throughput" / capacity probes fold a minute of prefill into tok/s —80 excluded by the refresh script when prompt ≥ 32K with no prefill rate; extend that rule if a new81 pattern appears.82 - `-sm tensor` / `-sm row` = tensor parallel in llama.cpp; `-ts 1/1` means 2 of the host's GPUs.83 - `-ctk q8_0` / `--kv-cache-dtype fp8` halve KV bytes; recorded `peakVramGb` below the device pool84 proves a fit even when the uniform byte estimate says overflow (mixed-precision UD quants).85 - FP8 on Ampere, expert-parallel over PCIe, early XPU stacks: genuinely slow, not physics.86 - Speculative runs are excluded from gold on purpose (`isSpeculative` in the refresh script87 reads structured flags, every CLI spelling, notes, and MLX "-mtp" checkpoints); a row that88 beats physics on MLX/oMLX usually is one that slipped through — extend the detector.89 - Prompt-processing rates above the device's dense tensor peak are prompt-cache hits; the refresh90 script nulls them (`plausiblePrefillRate`) so they never calibrate prefill.91 - `--n-cpu-moe N` / `-ncmoe N` rows carry `cpuMoeLayers`; the projection pins that offload. The92 peak-VRAM residency shortcut only applies when the peak is ≥70% of the uniform size estimate; a93 MoE checkpoint far larger than the card with a low `peakVramGb` was auto-fit by llama.cpp (experts94 on the CPU), not a small quant. A recorded `memoryGB` below the template's (3 GB 1060) is the real95 pool.96 A run that beats the **physical roofline** (>1.05×) is always one of these or a preset error.97 Fix the data/preset; never widen a tolerance or lower a ceiling.983. **Fit**: `node scripts/fit-decode-constants.mjs --grid "FRAMEWORK_PROFILES.llama_cpp.perLayerOverheadUs=35,45,55" "LAYER_OVERHEAD_SCALES.moeExtra=0.4,0.6" …`99 For prefill, fit on the gold rows that carry `prefillTokS` (obs/pred of the system prefill rate;100 group by dense/MoE, prompt-length bucket, and hardware) — the Aug 2026 pass landed llama.cpp at101 `prefillEfficiency 0.7 / prefillRampFloor 0.4 / prefillRampTokens 1536`, median 0.98, 76% within102 1.5×. For a backend/runtime pair that is off on both dense and MoE rows, fit the runtime's103 `backends[backend]` overrides rather than bending the global constants (that is how Metal got104 `0.66 / 6`).105 Rank by rmsLog but choose with judgment: median ≈ 1.0 overall **and** per group (runtime,106 hardware, dense/MoE, depth bucket), no group sacrificed for another, constants that stay107 physically plausible (a per-layer launch floor of 500 µs is not). Prefer changing the constant whose108 physical meaning matches the residual pattern (e.g. MoE rows slow only on Vulkan → backend-scaled109 MoE extra, not a global MoE penalty).1104. **Anchors**: every anchor in `tests/integrity.test.mjs` is a measured number with a source. If a111 fit moves an anchor out of its band, either the fit is wrong or the anchor's band was (re-check the112 measurement). Add an anchor whenever you calibrate on a new measured setup.1135. **Re-pin**: `node scripts/print-regression-pins.mjs` prints the values behind the exact-value tests114 (`four-B70 DeepSeek plan…`, `supplied execution assumptions…`, `AI handoff and Plan JSON…`,115 `projected, optimized, and physical rates stay aligned…`, and the Playwright B70 test). Update the116 pinned ranges only after the physics is final, keep them tight, and say in the commit why they moved.1176. **Verify**: `npm test`, `npm run audit:gold`, `npm run test:playwright`. Then load a few plans in the118 browser: the decode waterfall bands must sum to the per-token total and the "How it scales" curves119 must look monotonic.120121## Acceptance envelope (guarded by tests)122123Generic engine (no peer correction): median 0.85–1.15, ≥70% within 1.5×, ≥85% within 2×, ≤2% roofline124violations. Leave-one-out calibrated model: median 0.9–1.1, ≥85% within 1.5×, ≥92% within 2×,125optimized-target coverage ≥90%, physical coverage ≥97%. Current state (Aug 2026, 240 rows across 31126device templates): 1.02 / 92% / 96% / 0 (rmsLog 0.37; long-context rows >16k: 0.92, 93% within 1.5×);127prefill (llama.cpp, 129 rows) 0.98 / 76% / 92%. Do not regress these to make a single row fit. `tests/sanity-matrix.test.mjs`128adds wide physical bands across ~500 model × hardware × runtime combinations — if it fails after a129fit, a constant left the plausible range somewhere the gold corpus does not look.130131## Things the engine does not model yet (do not fake them with constants)132133DeepSeek V4's sparse indexer, prefix caching, chunked-prefill interleaving at high concurrency,134multi-node EXO beyond the coordination term, Apple M5 Neural Accelerator throughput beyond the135derived 120/60 TFLOPS (no vendor figure). Expert offload and speculation *are* modeled now — calibrate136them against paired rows (same rig with/without) rather than absolute rates. If a class of runs is137systematically off because of one of these, add the physics, then re-fit.138139## Open calibration items (updated 2026-08-26)140141- **DSpark acceptance on large MoE.** `SPECULATION_METHODS.dspark.acceptance`142 (0.78, decay 1.0, 7 tokens → 3.9 tokens/step) is fit on the Qwen 3.8 27B143 DSpark drafter. On DeepSeek V4 Flash the community's own runs gain only144 x1.0-1.1 (4x RTX PRO 6000: 297-346 plain vs 308-310 DSpark; accept_len 4.48145 reported but verify cost eats it) and the lab's 4x B70 REAP run is 80.8 vs146 a 140 stock / 266 optimized projection. Anchor: add those Localmaxxing rows147 (deepseek-ai/DeepSeek-V4-Flash-0731, RTX PRO 6000 x2/x4, vLLM FP8) to the148 gold set and fit a per-model or per-size acceptance, never the ceiling.149- **CUDA fixed floor for 40+ layer MoE.** 4x RTX PRO 6000 DeepSeek V4 Flash150 projects 138 vs 297-346 measured after the TP launch split; the vLLM CUDA151 per-layer overhead is the remaining term. Same rows are the anchor.152- **Arc Pro XMX rates — RESOLVED 2026-08-26.** `float16` held the Xe *vector*153 rate, not the XMX *matrix* rate, understating dense tensor throughput ~4x;154 measured SYCL prefill beat the old ceiling, so those rows were being dropped155 from gold prefill evidence. Xe2 XMX does 2,048 FP16 and 4,096 INT8 ops/clock156 per Xe core, which reproduces Intel's official ARK INT8 exactly and pins the157 peaks at B70 183.5 / B65 98.3 / B60 98.3 / B50 85.2 (`fp8` mirrors `float16`;158 Xe2 has no FP8 datapath). Because the SYCL constants had been fit against the159 understated peak, they were re-fit with it: templates gained160 `prefillEfficiencyScale { llama_cpp: 0.6, ollama: 0.6, default: 1 }`,161 llama.cpp/Ollama `backends.sycl.moePrefillScale 0.5` (a new backend override —162 dense and MoE prefill are not off by the same factor on a stack whose163 grouped-GEMM path is weaker than its dense path), and vLLM XPU164 `batchedComputeScale` 0.40 -> 0.10. Result on the 27 Arc Pro gold rows that165 carry `prefillTokS`: median obs/pred 1.42 -> 0.83, within 1.5x 33% -> 59%,166 vLLM MoE 3.48 -> 0.95; decode is untouched (batch-1 decode is167 bandwidth-bound) and the whole-corpus decode fit is byte-identical at median168 0.99 / 84% / 2 violations. Arc Pro B65 is a real SKU (ARK 245796) and every169 memory, bandwidth, TDP and PCIe value was already correct.170 *Still open here:* the 6 koboldcpp `llama3_8b` B60 rows span 97-826 tok/s171 prefill for the same model on the same card and should be triaged out of the172 corpus; B70 dense prefill rests on 3 rows, one of which sets173 `GGML_SYCL_DISABLE_DNN=1` and so cannot see XMX at all.174- **Research rows flagged `exceedsOptimizedTarget`** in `data/lab-evidence.json`175 (Qwen3.8 INT4 MTP5 TP2 101.17; Muse Glimmer BF16 DFlash draft 100.37) beat176 the engine's optimized target for their stack; they are shown, never used177 as anchors. Revisit once the speculative multi-card XPU path has a second178 measurement.