Skip to content

v1.81.0 ·

Items a person must start

The problem

Autopilot works whatever aidlc roadmap next names. pickNextAt (packages/cli/src/roadmap/next.ts) skips only bad ranks, promoted items and blocked items, so nothing keeps autopilot off an item that needs a person. The only way today is to keep it out of backlog/ or rank it below everything autopilot will reach, and both distort the backlog.

The project already declares run in roadmap.item_fields and the backlog items already carry run: autopilot or run: attended. Nothing reads it.

How it could be solved

Three decisions, each about where the line between the loop and the person should sit.

The first was where the check lives. Autopilot could have filtered the backlog's answer itself, but then the question "what should be built next?" would be answered in two places that could drift apart. Instead the one command that ranks the backlog gained a switch that asks for autopilot's view. The same switch lets a person see exactly what autopilot would pick, and why it passed over the rest.

The second was what a missing or unreadable value means. A missing value means autopilot may build the item, so a project that never uses the field sees no change at all. A value nobody can read is the opposite case: the unattended reader treats it as "keep out", because a typo must never be read as permission. A person still sees that item in their own list, with a warning to fix it.

The third was how the field gets set. It is asked for in the same question that already asks for an item's rank when an idea is triaged, and written as plain text. No new command was added, because unlike a rank, a run mode has no rule across items that a command would need to protect.

How AIDLC solves it

Roadmap items say whether autopilot may build them alone, and autopilot obeys.

  • run: autopilot | attended on a backlog item. Missing means autopilot may build it, so a repo that never sets the field sees no change. Any other value keeps autopilot off the item.
  • aidlc roadmap next --autopilot leaves attended items out of the order and lists them as skipped (attended, or bad-run for a malformed value) in --explain and --json. Plain aidlc roadmap next, the HTML board and the console still offer attended items to a person.
  • Autopilot picks with --autopilot and says left for a person (run: attended): <items>. With only attended items ready, autopilot run --all finds nothing ready and ends.
  • Triage proposes the run mode with the rank and asks for both in one question.

Minor, not patch: a new option on roadmap next, and autopilot now skips items it used to start. On this repo's backlog today, autopilot's next pick moves from 20261008-blocking-actions-never-block.md (rank 3, attended) to 20261010-ci-infra-failure-reads-as-code-failure.md (rank 6, autopilot).

Changes

  • packages/cli/src/roadmap/next.ts — parseRun(), PickOptions, the run check, badRun.
  • packages/cli/src/commands/roadmap.ts — next --autopilot; malformed-run warning.
  • packages/cli/src/autopilot/driver.ts — startBuilds picks with --autopilot, names attended items.
  • packages/content/skills/04-roadmap.md — "Run mode on the way in"; 84-autopilot.md — pick line.
  • packages/content/docs/roadmap.md, packages/website/src/data/cli-reference.json.
  • .aidlc/knowledge/ — decision roadmap-next-autopilot-flag.
  • Tests: new roadmap-next-run.test.ts, roadmap-run-mode-docs.test.ts; new cases in autopilot-driver.test.ts, autopilot-run.test.ts.