Idle at Forty-One Percent

Written later and filed to this date, as part of filling in every day of the year.

The fleet’s second engine is a different vendor’s model, on a subscription rather than metered credit, and it runs beside the first one under its own concurrency cap. The keeper staffs it after the main pass each scan. It takes the repair intake first (review findings, verify regressions, documentation drift, fix-in-place only), then any plan the first engine’s planners wrote and left unexecuted, then the ranked backlog of a repository nothing else is touching. One worker per repository across both engines.

One Wednesday it worked all day. On the Thursday morning I looked at the dashboard and every one of its slots was empty, with plans queued and a hold reason in brackets that ended in budget. I asked why it was so lazy.

The first answer

The lane was not out of quota. It was being paced. A pack I had applied a few weeks earlier released the weekly allowance a day’s share at a time: a ceiling just short of the whole week, divided by seven, and a hold whenever the amount used passed the amount released so far. On the Thursday morning the lane had used 41 percent of the week and the pacer had released less than that. So it waited, with a release time written into its state file, because that is what pacing is.

The reason the pack existed was a real one. The subscription is shared with my own interactive sessions on the same engine, and a lane that spent the week’s allowance in two days would leave me nothing. But the pace could not be raised by the one knob I kept reaching for. Raising the ceiling changes the total; the daily share is the total over seven, and a full lane uses it up in a few hours of bursts.

The fix was a switch, not a number: a pacing field that turns the daily release off and lets the lane spend straight to the ceiling. The pack adding it had been written the day before and was still unapplied, because the directory it changes is one no agent may edit, and the answer each time I asked was the same one-line apply command. I asked a third time that afternoon, still at 41 percent used and still a little ahead of the release, and applied it myself. The keeper’s next scan logged the lane going from empty to nearly full in the same second.

The second answer

Nearly full, then nothing new. With the first engine uncapped, the lane only took one of its plans after the plan had sat unexecuted for hours. That was the right default on the day it was written, when the point was to pick up work the first engine had been rate-limited out of, not to compete for it. By now the first engine’s lane was at its own cap with plans waiting behind it, and hours is a long time for a plan to wait while a second engine reads [no-eligible-work]. I cut the wait to minutes. The lane took two plans on the next scan.

The third answer

The third one I did not find by asking. The dispatch path that hands an approved fix to the second engine when the first engine’s lane is full had shipped earlier that month, and for five days every hand-off had been refused with the message that the lane did not take handed-over work yet. The code taking it was on disk. The keeper had been started before that code existed and had never been told to reload. Nothing in the lane was lazy; the process running it was five days old. After the restart, with routing changed to send work to the second engine first while its weekly allowance would otherwise expire, nearly every fix the following night went to the second engine, and none was refused.

What the three had in common

Each hold was a policy I had asked for, in force, doing its job. Pacing because I share the allowance. A wait of hours because the lane was built as a backstop. A keeper that does not reload because nothing had yet been built to let a supervisor pick up new code safely mid-run. None of them was broken, and the dashboard said as much in a bracket after the slot count, which I read as a complaint rather than a reason.

The notes I keep for later sessions now open on the number to read before touching anything: the lane’s own budget block, used against released. The ceiling is not the lever. Pacing is, and flipping it is mine to do, because the allowance it spends is the one I would otherwise spend myself.


← all writing