Skip to content

v1.45.0 ·

The backlog works itself

The problem

Unattended mode lets one agent finish one item with nobody watching, but nothing starts the agent, opens the pull request, waits for CI, merges, releases and moves to the next item. A person does each of those by hand, which is the bottleneck the item exists to remove.

How it could be solved

Three decisions, each about what a loop with nobody watching must never decide for itself.

The first was whether the driver should be an agent. It is a plain script. It makes no judgement calls: the order of work comes from the backlog, the work comes from an agent following written rules, and the release comes from the release tools. The script only puts them in sequence, which is why it can be tested end to end with every outside call faked.

The second was how much it may do when something breaks. A failed check gets one more try; a second failure puts the item on hold. A failure in the middle of a release gets no retry at all: the queue stops and waits for a person, because a half-finished release is the one state a loop must not paper over.

The third was what stays with the maintainer. The script will not choose how much an agent is allowed to do on the machine, and it will not turn its own schedule on. Until a person writes the agent command into the configuration and adds the schedule, it does nothing but say so.

How AIDLC solves it

A script can now work through the agreed backlog on its own. Every few minutes it takes the next agreed item, gives it to an agent in a separate copy of the code, and waits. When the agent has finished and tested the work, the script opens a pull request; when the checks pass, it merges, writes the release notes entry, and publishes a release — one at a time, never two at once. Then it moves on.

It stops itself when it should. A file named STOP halts everything. An item that costs more than a set limit is stopped and put on hold. An item whose checks fail twice is put on hold with the reason. When GitHub or the agent says "slow down", it waits, longer each time. If anything goes wrong during a release, it stops and leaves it for a person rather than trying again.

Two things stay with the maintainer on purpose: how the agent is allowed to act on the machine, and turning the schedule on. Until both are set, the script does nothing.