Skip to content

v2.21.0 ·

Autopilot skips an item that is not ready, and says why

Autopilot could not tell a ready roadmap item from an unready one. It started whatever came next in the backlog, and found out the item had no acceptance criteria only after a run had been spent building and parking it. On another project I tried it on, none of seven inbox items were ready without criteria written by hand.

What changed

Before autopilot starts an item, it now checks that the item is ready to build. Ready means three things. The item has at least one acceptance criterion line. At least one of those lines names a file path in backticks. And every path they name exists in the repository, or its parent folder does, because a criterion is allowed to name a file the work will create.

An item that fails is skipped, and the run says why, once a pass:

skipped:
  20261026-bare.md: not ready: no AC-n lines

An item whose criterion names scr/new.ts instead of src/new.ts gets a line of its own, naming the criterion and saying that scr/new.ts does not exist. That is the case I cared about most. A typo in a folder name is easy to write and easy to miss, and it costs a whole run to discover.

Triage shows the same reason. When you move an item into the backlog for autopilot, you get a warning on the spot, while you still remember what you meant. Triage still moves the item. It warns, it never refuses, because a person may know better than a mechanical rule.

A plain aidlc roadmap next, without the autopilot flag, does not run the check at all. A person picking an item reads it first.

Why it bends in three places

The main risk was a check so strict that it refuses items a person would happily build, and then nothing runs. So before writing the rule down, I ran it over this repository's own 216 roadmap items. Two of the six backlog items failed on paths that were not typos: one used a glob, one a placeholder like an instance name in angle brackets. One finished item failed on a reference to another item's criterion, which looks like a path and is not.

So a path with a glob or a placeholder is checked only up to the folder before it, and that folder must exist. A criterion reference, a URL, and anything absolute or climbing out with two dots is not treated as a path, and is never looked up on disk. After those changes, every backlog item that has criteria reads as ready.

What it does not do

It checks presence and shape, not quality. A vague criterion that happens to name a real file passes. A bare file name with no folder always passes. And a criterion whose only path sits on a wrapped second line fails with "no AC names a file path", though no item in this repository wraps one today. The reason names exactly what to fix, which is the point.