ChaosCypher v0.4.3: When a Clean Restart Lost More Work Than a Crash
v0.4.3 adds nothing new. No new features, no breaking API changes, no schema migrations: 54 commits since v0.4.2, 23 of them changing shipped code. Most of them are in the queue and the extraction pipeline, and most of those share one trait. The work was lost, counted twice, or quietly downgraded, and nothing reported it. A clean restart was worse than kill -9 Stopping a worker gracefully…
ChaosCypher v0.4.3 introduced nothing new, featuring no new functions, breaking API changes, or schema migrations. Out of 54 commits since version 0.4.2, 23 altered existing code in the system's queue and extraction pipeline. Most of these changes resulted in duplicate work, underreporting, or improper downgrading, rendering a clean worker restart worse than forcefully terminating the process. A graceful shutdown, on the other hand, resulted in the interruption of tasks that a hard kill would have recovered.
During shutdown, tasks that were canceled received the status "cancelled," which prevented the requeue script and retry_task from resurrecting them. This led to a recovery contract that ran in reverse: a SIGKILL left tasks recoverable, while a polite restart terminated them. This issue was one of four queue-recovery defects present in the release, each appearing functional at first glance.
Recovery mechanisms spent an excessive amount of the retry budget per cycle, and requeue_atomic.lua would increment attempts beyond the worker's claim-time increment. Tasks with a maximum of five retries and the retry_on_crash option would receive only three dispatches, resulting in premature termination after five attempts. The affected operations, execute_workflow, execute_step, export_graph, and export_by_sources, relied solely on the queue budget for recovery.
If a heartbeat lapsed, subsequent tasks would be marked as abandoned, leading to duplicate executions.
Another issue occurred when a re-delivered chunk task finished a job one chunk early. The short-circuit that made re-running an extraction chunk safe only caught completed rows, causing duplicate deliveries and multiple terminal writes and job-counter increments. These issues have been rectified, ensuring that queued work comes back only once, as promised.
Additionally, some graph edges had justifications stored, which were now blanked or trimmed to two sentences. This change ensures that when users read the justification for an edge, they receive a reason or nothing, rather than the model's scratchpad. Lastly, a sandbox bypass in the MCP and a read-only mode that failed to enforce sandbox containment when content was supplied were fixed.
The guards now enforce read-only mode unconditionally in both the server and processor, preventing destructive actions and ensuring proper containment.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.