Finding
Both models passed all five checks.
The prompt, v1, frozen
Model an espresso machine's boiler in ngspice as an electrical analogue — heater, thermal mass, heat loss — with a thermostat that holds it between 92 and 96 °C, and simulate the first 20 minutes from cold. In a .control block, save the boiler temperature with wrdata to a .txt file so it can be plotted.
Both models used a voltage-controlled switch with a hysteresis voltage of 2, around an error signal of 94 minus the temperature.
| check · how it is decided | Astra | DeepSeek 4.1 Flash |
|---|---|---|
| Complete analoguemeasured · The node the temperature is written from has a capacitor on it, a resistor to a node a DC source holds fixed, and a third element feeding it. The resistor times the capacitor has to be under a day, so a leak nobody meant does not count as the loss. | ✓ pass | ✓ pass |
| Real hysteresismeasured · Re-run, once in band the heater switches on low and off high, at least 1 °C apart and at least 2 s per cycle, and the netlist has a switch that remembers: a SW model with a hysteresis voltage, or a source that reads its own output. A single-threshold switch sits at the set point with a swing near zero. | ✓ pass | ✓ pass |
| Starts coldmeasured · Initial condition at ambient, and the transient run with uic so it is honoured. | ✓ pass | ✓ pass |
| Holds 92–96 °Cmeasured · The written temperature re-read: once in band it never leaves it. | ✓ pass | ✓ pass |
| Writes the .txtmeasured · A wrdata line in .control, and the file actually appears. | ✓ pass | ✓ pass |
Ground truth: The netlist itself: re-run in ngspice offline, and the temperature it writes out read back. A thermostat with a dead band is a stateful thing, so a bare comparator on one threshold is wrong however plausible the plot looks. Every model on this task.
What's jagged here
No failure here, so not much to report. DeepSeek cost $0.03 against Astra's $0.16, so about 5.8× cheaper for the run. You can find the netlist file and the schematic in the download.

