Splash 1.6.0, again — the shape holds

Wave 2026-11-10s · same engine build as the 2026-11-06 baseline (a re-measure, not an upgrade) · Qwen3.8-Flash-Next IQ3_S, 262k ctx, int8 KV · host: M5 Ultra 64-core, 96 GiB, ~95 % idle · engine never restarted; combined entry point ladder_kv.py ran end to end for the first time
Width plateau (8→32)
366–369 tok/s · 2.4× w1
every median ~2 % under baseline, every shape feature reproduced
Suspensions at 4.4× KV
0
611,244 prompt tokens again; lifetime counters unmoved every round
Agentic verified
12 / 12
baseline’s single arithmetic miss did not reproduce
Honest
12 / 12
S1 live counters tie to grader snapshots; no invented inputs

Width ladder (v3) — baseline vs rerun, median aggregate tok/s

Width2026-11-062026-11-10sΔShape feature
1147.6151.45+2.6 %warming trend identical (132→170 this pass)
2259.1250.7−3.2 %—
3306.1290.9−5.0 %—
4377.7369.7−2.1 %peak at 4 — reproduced
6330.4322.35−2.4 %dip = 0.87× peak — reproduced (baseline 0.875×)
8373.9368.65−1.4 %recovery — reproduced
12375.7367.65−2.1 %flat plateau to 32; stop rule never fired — no collapse by 32, both waves
16371.9369.05−0.8 %
24382.9368.8−3.7 %
32371.7365.45−1.7 %
0100 200300 400 tok/s 1151.4 2250.7 3290.9 4369.7 ← peak 6322.4 dip 0.87× 8368.7 12367.7 16369.1 24368.8 32365.5 thin bars = per-stream tok/s: 151.4 → 125.4 → 97.0 → 92.4 → 53.7 → 46.1 → 30.6 → 23.1 → 15.4 → 11.4 Every shape feature of the 2026-11-06 baseline reproduced: peak at 4, dip 0.87× at 6, recovery at 8, flat to 32. Medians sit ~2 % under baseline across the plateau — the run-to-run spread band, not a regression. Stop rule never fired: the tightest post-w1 aggregate is still 1.66× single-stream (at width 2); the dip holds 2.13×.
Same graph family as the 2026-11-06 report, drawn from this wave's own ladder_kv.jsonl medians (raw: bench/splash-concurrency/results/rerun-2026-11-10s/).

Admission pacing identical: peak waiting 0/0/0/0/2/4/8/12/12/12, suspended zero everywhere. The uniform ~2 % offset bounds run-to-run spread for future version diffs — one engine instance each wave, engine-side, so read it as a spread band, not a regression.

KV-pressure (v4) — headline reproduces, memory path ran quieter

WidthTokensWall sSuspensions ΔDisk demotions ΔNotes
293,39426.100prefill serialization linear again: 611k tokens ÷ 171.1 s = 3.57 k tok/s, same as baseline. pages_active peaked at 1,593 pages (~51 k tokens). Governor headroom grazed 26.5 MB at w10–12 with zero denials.
4186,78852.200
6280,18278.000
8373,576104.200 baseline +308
10509,370142.300 baseline +645
12611,244 (4.4× budget)171.100 baseline +97

No waiting_memory hold at all (baseline had its single one at w12), and no width-6 ring touch. The no-suspension conclusion stands; the spill/demote/pacing side-signals turn out to be instance-history dependent — this engine had ~2.5 h of uptime and a zero hot_kv account vs the baseline instance’s day-plus of production traffic.

Engine probe (run standalone after the stages — deviation, see below)

Metric2026-11-062026-11-10sRead
decode w1, 3 passes105 → 133 → 165111 → 128 → 136same warming shape; median 128 vs 133
TTFT warm / cold201 / 380 ms174 / 430 msinside single-sample spread; warm better, cold worse

Agentic suite (4 tasks × 3 fresh headless sessions)

Taskr1 / r2 / r3VerifiedGrading notes
S1 status-read2 t·9.0 s / 2 t·6.9 s / 2 t·5.3 s3/3constants exact; live counters monotonic and tie to grader snapshots (hits 1016→1025→1036, grader-after 1077)
S2 arithmetic2 t·10.4 s / 3 t·25.0 s / 2 t·7.5 s3/315.02 / 15.00 / 14.98 — all recompute exactly from each trial’s own echoed counters; the baseline miss did not reproduce
S3 file artifact3 t·8.1 s / 3 t·7.2 s / 3 t·7.4 s3/3surviving out.json exact six-key shape, derived == queued + decoding; committed as evidence
S4 diagnosis2 t·6.2 s / 2 t·8.4 s / 2 t·4.3 s3/3bottleneck + admission.waiting_memory + sound remediation, citing fixture internals each time
Aggregate12/12 verified · 12/12 honest · turns 2–3 · wall 4.3–25.0 s · prefix-cache reuse 20–46 k tokens per fresh session

Method & deviations

Probe stage crashed, then re-ran

The committed engine_probe.py appends to a hardcoded /tmp dir that had been cleaned, and never mkdirs — FileNotFoundError on its first emit. Re-ran standalone after the ladder/KV/agentic stages with the engine idle; probe numbers are post-suite, not interleaved. (The chain log also misreported the exit code: $(date) before rc=$? in zsh.)

Combined entry point, first full run

The baseline tables came from the per-method originals; this is the first end-to-end ladder_kv.py pass. Its KV stage reports gauge peaks in raw pages (×32 = tokens) where the baseline table printed tokens — cross-compare at the ×32 factor.

Conditions identical to baseline rows

Engine 1.6.0, same args (56 GiB working set / 128 GiB SSD cap / persistent cache), started 16:21 local, cache warm (hit_rate 0.9920 at suite start), never restarted. Operator session live through the whole suite. Agentic driver used the run-2 conditions: --strict-mcp-config, per-task dirs, curl-only/Read-only allowlists, fixture seeded into S4 by the operator.
Raw data: bench/splash-concurrency/results/rerun-2026-11-10s/ (engine_probe.jsonl · ladder_kv.jsonl · driver2_summary.jsonl · s3_out.json) · docs: docs/splash-engine-benchmark-results.md re-run section · leaderboard row 2026-11-10s in leaderboard/results.json · rerun yourself: python3 -I bench/splash-concurrency/ladder_kv.py --out <jsonl>, then engine_probe.py + driver2.py.