DEV Community

Matthew Gladding
Matthew Gladding

Posted on • Originally published at gladlabs.io

What we shipped on 2026-05-30

Today we caught a silent killer in our automation stack. Seven daily maintenance jobs--including analyze_topic_gaps and detect_duplicate_posts--had stopped firing for nearly four days, while sub-hour jobs continued to run without complaint. The issue lived in the scheduler: register_job was attaching an IntervalTrigger without a next_run_time, so every worker restart forced the 24-hour cadence to re-anchor to boot time. This meant under active development with frequent restarts, the job's next fire was perpetually pushed past the latest boot and never ran. We fixed it by anchoring those interval jobs to the persisted plugin_job_last_run_<name> epoch, ensuring they resume correctly after a restart instead of relying on the process clock. (PR #797)

The rest of the day was spent completing the site_config constructor-DI migration. We introduced a process-wide AppContainer accessor and routed the final four ambient-singleton modules through it, deleting their per-module globals and emptying the WIRED_MODULES list entirely. We threaded every production caller through services/bootstrap.py::build_container, making that the single chokepoint for the main lifespan, CLI _lifecycle, and Prefect di_wiring. It was a cleanup of abstraction layers, but it removes the reliance on hand-coded factories of global state. (PR #788)

Separately, we patched a content-gen stall caused by the reasoning model glm-4.7-5090 returning an empty JSON object. The model was spitting tokens into a reasoning_content channel instead of the main content field, causing our structured-JSON calls to raise and kill run_sweep. We added a fallback to strip the thinking wrapper and recover from reasoning_content. (PR #789)

Shipping these updates leaves us with a system where the graph composes against a live atom catalog, not hand-coded factories.

Auto-compiled by Poindexter from today's commits and PRs. See the work: github.com/Glad-Labs/poindexter.

Sources

Top comments (0)