Field notes No. 1 measured how fast large models run on one Strix Halo laptop. This note asks the harder question: what happens when you leave one alone all night with real work? At 18:26 we started an unattended harness against gpt-oss-120b (MXFP4, llama.cpp Vulkan backend, resident on the same ASUS ProArt PX13 from No. 1) and went to dinner. It stopped at 08:28 the next morning, 1,245 cycles later, having answered 5,095 requests with zero transport errors, read 17.5 million tokens, generated 0.77 million, and then written a first draft of this very report. What held, what drifted, and what broke are all in the numbers below.
Overnight testing has a supervision problem: nobody is awake to judge answers. So every task in the battery is self-verifying, meaning the harness knows the correct answer before it asks and scores the reply mechanically:
| Task | What the model must do | How it is scored |
|---|---|---|
| Arithmetic | Sum 8 to 15 random 5-to-6-digit integers | Exact match against the true sum |
| Code | Write a Python function to a small spec | The harness executes the code against held-out test cases |
| Extraction | Pull four fields from a synthetic invoice into JSON | Field-by-field comparison with the planted values |
| Needle | Find a planted code in 500 to 32,000 words of filler | Exact string match |
Prompts are seeded, so the run is reproducible; answers are random per cycle, so nothing can be memorised. Every request logs wall time, token counts, throughput, and the hottest thermal zone on the machine.
| Metric | Value |
|---|---|
| Duration / cycles / requests | 14.1 h · 1,245 · 5,095 |
| Transport errors | 0 |
| Arithmetic, code, extraction accuracy | 1,254/1,254 each (3,762/3,762) |
| Needle recall, all depths | 1,244/1,253 (99.3%) |
| Tokens read / generated | 17.48 M / 0.77 M |
| Generation rate: mean · sd · p5 · p50 · p95 tok/s | 28.6 · 14.2 · 1.2 · 34.6 · 46.8 |
| Thermals: mean · peak | 70.6 °C · 75.0 °C |
| Empty responses (all recovered by retry) | 67 (1.3%) |
The fear with overnight autonomy is drift: heat soak, memory pressure, some slow rot that turns hour 11 sloppier than hour 1. It did not happen. Arithmetic, code generation and structured extraction were perfect in cycle 1 and perfect in cycle 1,245, a combined 3,762 machine-scored tasks without a single failure, including code that had to survive actual execution against held-out cases. Whatever else limits local autonomy, sustained load on this hardware is not it.
| Haystack size (words) | 500 | 1k | 2k | 4k | 8k | 16k | 24k | 32k |
|---|---|---|---|---|---|---|---|---|
| Needle misses | 0/182 | 0/139 | 0/169 | 0/150 | 2/145 | 2/164 | 3/163 | 2/141 |
All nine misses in 1,253 recall tasks sit at 8,000 words and above (roughly 7k to 27k tokens of prompt), spread evenly across the night. Below that: flawless. This is a clean, honest picture of where long-context retrieval starts costing you on a quantised local model, and it is a length effect, not a time-of-night effect.
content string when its private reasoning channel ate the completion budget. Overnight we measured the phenomenon properly: 67 empty responses in 5,095 calls, distributed across every hour from evening to dawn with no correlation to thermals or uptime. It is not a degradation mode; it is a base rate. Our mitigation, detect empty content and retry with a doubled token budget, recovered all 67. If you run harmony-format models unattended, that one guard clause is the difference between a perfect night and 67 silent no-ops.The mean of 28.6 tok/s describes almost no actual request. The median request generated at 34.6 tok/s; the 5th percentile crawled at 1.2 tok/s. The slow tail is entirely the long-context needle tasks, where the model spends its wall-clock reading a 27k-token prompt before writing fifty tokens. The lesson repeats from No. 1 but with overnight statistics behind it: for read-heavy workloads, prompt ingestion is your real budget, and a single mean throughput number will mislead your capacity planning. The machine itself never strained: 70.6 °C average, 75 °C peak, fans audible but a closed door away from a sleeping household.
Three lessons, plainly. Pinned facts hold: data you inject into the prompt survives verbatim. Unpinned facts drift: anything the model must recall about itself gets confabulated from training priors. And self-critique is cheap, effective review: a second pass by the same model caught the fabrication a human might skim past at 6 a.m. Our production conclusion is the division of labour this note itself demonstrates: the local model does the night's labour and the first draft; a human, armed with the telemetry, writes what you are reading.
The night processed 18.25 million tokens. At typical frontier-API list prices that volume of traffic runs to roughly US$60 or more; the laptop did it for about 1.4 kWh of electricity, some twelve rupees. The catalogue of work a local 120B can now own outright, unattended: bulk extraction into structured records, code generation with mechanical verification, arithmetic-grade bookkeeping checks, and retrieval over documents up to about 7k tokens with, on this evidence, effectively zero error. Reserve human or frontier-model attention for long-context retrieval, for anything where a 1.3% silent-failure base rate is unacceptable without a retry guard, and for final authorship of anything whose facts were not pinned in the prompt.
One night, one model, one machine, one quantisation. The battery is deterministic and synthetic by design; it measures reliability under load, not judgment, taste, or open-ended reasoning. Throughput figures are single-request, sequential, at the context sizes stated; batch serving and longer contexts will differ. Energy cost is estimated from the platform's sustained package power, not a wall meter. We will fix the wall meter before No. 3.