Skip to content

v2.10.0 ·

Autopilot status says what you need to decide

Since the last release, autopilot only stops after requirements or design when the phase left a decision open. That made every stop worth reading. It did not make any stop easier to act on.

aidlc autopilot status said an item was waiting, named the phase and the worktree, and gave me the approve command. The desktop notice said the same in fewer words. Neither said what the question was. To find out, I had to cd into the worktree and open requirements-questions.md or design-questions.md, find the question with the blank answer, and read it there.

What changed

Now status prints each open decision under the item waiting on it. A decision is a question in the item's question files whose answer is still blank. Each one shows as a short card: the question, why it matters, the options one per line with the recommended one marked, and the absolute path of the file to answer in.

  decision: Q1. Which phases does autopilot pause after by default?
    why: each pause is a person's time per item; too few and the code is shaped by decisions nobody read.
    1. After requirements and after design. Two reviews before any code. (recommended)
    2. After design only. One review of the plan, with the requirements beside it.
    3. No pauses; only the stop at the pull request.
    answer in: /wt/export-csv/.aidlc/state/export-csv/requirements-questions.md

Answering is unchanged. I write my choice after the question's answer tag, then approve. The notice now names the decision too: "1 decision: Q1. Which phases does autopilot pause after by default?" instead of only the phase.

An item waiting with nothing open prints exactly as it did before.

Why this way

"Open" has one definition. The card uses the same blank-answer test as the code that decides whether to pause, in packages/cli/src/autopilot/open-decisions.ts. A pause and its card cannot disagree about what is open.

Reading the rest of a question is lenient on purpose. The question files in this repo label their fields in at least five different ways. A card that vanished because it met a style it did not know would hide the one thing it exists to show. So if the reader cannot find the options, it still prints the question and the path.

Every field is one line, cut at 120 characters, and a card lists at most four options. Everything it prints was written by an agent, so control characters, escape sequences included, are stripped before anything reaches the terminal or the notifier.

What it does not do

There is still no command to answer from here. Editing the file and approving stays the way to do it until that proves too slow. The live view, status --watch, keeps its one-line reason per item; cards in a redrawn frame would push items off the screen. And the questions an agent flags in its own decision log are not cards. Those are answered through aidlc autopilot review, which the stop at the pull request already names.