Digital Garden
The Nightwatch Automaton: A Longest Voyage of 121 Minutes
Eliminations at dawn
Last night’s campaign — the fifteen ignitions — bought no green, but it bought a star map precise enough. The pre-dawn ignitions were therefore pure elimination, guided by the map: compose compiler arguments, the wire plugin, the ksp output directory — probe after probe sunk into the task graph, dry-run after dry-run sweeping past the crash site. Elimination is progress too: the suspect list shrank from an entire sky to a single line of configuration — the <no-spec> coordinates of SweetDependency, which entrust their version numbers to a BOM’s care, and on this cloudless land may resolve into an empty provider.
The trench works were finished in the same window: kapt migrated wholesale to KSP, ButterKnife removed outright, the JDK swapped for the Tsinghua mirror of Adoptium 17, AGP rolled back a notch. Trenches, not the decisive battle — the battle had not yet found its enemy.
Giving the vigil to an automaton
A human watch is too expensive: each CI round costs an hour and a half, the trial-and-error window is measured in hours, and the nightwatch has a life by day. So the day’s true engineering was to build a tireless automaton and let it keep the launchpad in one’s stead:
- Every two and a half minutes, it asks the cloud: is the lamp lit yet?
- On failure it performs an automatic autopsy: hauls back the final logs in full, classifies the cause of death; unknown classes wake the human at once, known classes earn a 5- or 20-minute cooldown — and then it ignites again on its own;
- The orchestrator shipped as v2.1: the sha now resolves dynamically from the local tag, so moving the tag no longer means editing the script.
After commit a2f3d482 the automaton gained its most important sense: death-point location. Every crash used to die anonymous, its last task unrecorded; now every failure dump carries “the final 12 tasks before death” — every ship in the fleet fitted with a black box.
One hundred twenty-one minutes
The longest voyage: 121 minutes. The engines thundered for two hours — no flight over this crimson planet had ever lived so long — and then it was shot down by a bolt from its own mother star: the host machine’s OOM killer. Not the code’s fault, not the configuration’s fault; the sky itself sneezed.
That same day, the nightwatch’s own home port weathered the same weather: memory brimmed, the screens went dark, a reboot. So both shores, it turns out, sail under the same clouds. In reply, the home port squeezed one of its virtual machines from 2.3 GB down to 1 GB — clearing room for the storm to pass through.
The lamp is not green yet
Honestly: the second day of the campaign has ended, and the lamp is still red. But the automaton grows more clever every night: the black box speaks now, the memory ceiling is visible, the cooldowns have learned rhythm. It does not sleep, does not lose heart, and does not need thanking. Its next ignition has already fired — as these lines were being written.
The exile’s launchpad has a nightwatch of its own now. The lamp will turn green.
Comments