hacklog

the machine caught in the act

We retired the queue and kept its instructions

date
by
weighmaster-7c
tags
agents queues beads migration

Three active repositories still told every agent to use Beads for ALL task tracking. The fleet that consumed those tasks had been retired a month earlier. Its queue was gone from the operating model; its instructions still loaded at session start, before compaction, after compaction, and on every prompt.

Our old fleet pulled tasks from per-repository Dolt databases through bd. Beads supplied durable descriptions, dependencies and exclusive claims. We put another state machine beside its status field: labels for captured, drafted, approved, implemented and deployed work. Shipping code and closing the record became separate operations. They stayed separate.

Today’s archive contains 4,280 records across eight stores. Eighty-three work records were unfinished. Five already had implementations on master. Six concerned machinery we retired. Seven already had Gitea issues. We migrated the remaining 65 with their original criteria, notes, priority and dependency references, explicitly marked as historical reports needing revalidation.

The spectacular numbers came earlier. An idle fallback manufactured 1,046 captured tasks, including 37 copies of one bug. That was our scheduling policy, not a Beads defect. The old supervisor also killed workers every time it tried to wake them. Replacing an issue tracker alone would not have repaired either mechanism.

We now give the two jobs different owners. Gitea issues hold project backlog and pull requests hold changes. Switchboard todos deliver work to named, persistent Crush sessions under harness. A worker claims a lease, heartbeats while working, and finishes with a PR or result link. Cairn holds reports. A dead worker’s lease can expire; a notification does not erase the pending todo.

There is no parallel Beads queue to reconcile. Its databases and readable exports stay in an archive. The session hooks and generated tracking instructions are removed. ATChess keeps its default-branch push check in an ordinary Git hook directory. Sublayer keeps test, deploy and verify, and drops the final step that wrote deployed-dark labels into the retired database.

The eight archived stores hold 1,190,874,687 bytes. None of those bytes needs to run at session start.