Skip to content

I0005 — Implement the plan command surface

Give a worker one command that answers what is ready, why something is blocked, what the graph looks like, and that moves an issue through its lifecycle while refusing illegal transitions.

DONE wave 4 · p0 · implementation profile · runs alone

Part of M000 — Milestone and DAG driven development.

Objective

Give a worker one command that answers what is ready, why something is blocked, what the graph looks like, and that moves an issue through its lifecycle while refusing illegal transitions.

Why

A model nobody can query is a filing cabinet. The command is how a fresh session with no conversation history finds its work.

Current state

The engine existed with no interface.

Desired state

majordomus plan validate, status, list, show, ready, blocked, waves, graph, next, body, start, verify, evidence and done all read the one model.

Scope

  • lib/plan.sh
  • bin/majordomus
  • docs/CLI.md

Out of scope

  • Any network call; the CLI never leaves the machine

Dependencies

What waits on this

Acceptance criteria

  • plan start refuses an issue that is not READY
  • plan done refuses while a required evidence token has no evidence
  • plan evidence refuses a token the issue does not require
  • plan evidence refuses without a command or an artifact
  • every subcommand answers --help and an unknown one exits 2

Validation

  • bash test/run.sh 43_plan_command

Evidence required

  • command_test

Evidence

coverstypecommandresultat commit
command_testtestbash test/run.sh 43_plan_command1 passed, 0 failed2dd5915

Risk

Low

Timeline

started
2026-09-04T03:12:50Z
verified
2026-09-04T03:12:51Z
completed
2026-09-04T03:12:53Z

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I0005.yaml. Read it back with majordomus plan show I0005.