1.8.1 — Restarting nodes catch themselves up
2026-08-09
A node whose job engine restarts — which every deploy causes — now reconciles itself the moment it comes back, instead of depending on a broadcast it may have been offline for or waiting out the ten-minute sweep. Built on a new engine startup-hook point any app can register on. Also adds a scoped publish-capture helper to testit that ends a class of parallel-test flakes.
Added
- Job engines have a startup hook point:
jobs.register_startup_hook("myapp.services.boot.on_engine_start")from an app'sAppConfig.ready(). Hooks run on the engine's worker pool when a runner daemon starts — never on shells, management commands, or test runs. - A hook that raises or fails to load is logged and skipped; it cannot prevent the engine from starting or delay job consumption.
testitgainsth.capture_publishes(match, side_effect=..., result=...): capture only the job publishes a test owns and forward everything else to the real publisher. Process-global publish mocks silently swallowed parallel modules' real jobs; the bundled test suites now use scoped capture throughout.
Changed
- Edge nodes converge on engine startup. A restarting node re-derives its own desired state immediately instead of waiting for the periodic sweep, closing the window where work addressed to "every runner" during a fleet restart quietly skipped the slowest machine. Honors
EDGE_CONVERGE_ENABLED, runs locally, and publishes nothing.