Skip to content

Keep the plan as milestones and issues the tool can validate

Declare milestones as outcomes and issues as execution contracts, and let the tool say what is ready and what is blocked.

described Repository knowledgeintermediatemaintaineragentwrites state

Situation

The plan lives in a tracker nobody reads from the repository, or in a document whose status column is a matter of opinion. What is ready to start and what is blocked is an argument, not a query.

Scenario

setup: plan-model
given:
  - 'a canonical project model with one milestone and two issues, the second depending on the first'
steps:
  - id: validate
    run: ['plan', 'validate']
    note: 'every record parses, every reference resolves, the dependency graph is acyclic'
    expect:
      exit: 0
      stdout_contains: ['milestone', 'issue', '0 failure']
  - id: what-is-ready
    run: ['plan', 'ready']
    note: 'the issues nothing blocks'
    expect:
      exit: 0
      stdout_contains: ['I0001']
  - id: what-is-blocked
    run: ['plan', 'blocked']
    note: 'the issues waiting on another'
    expect:
      exit: 0
      stdout_contains: ['I0002']
then:
  - 'status is derived from the records and git, never written into them'
  - 'an issue cannot be marked done without the evidence its milestone requires'

Outcome

Milestones and issues are files under .ai/repo/project/; plan validate refuses a dangling dependency or a cycle, and plan ready and plan blocked are computed from the same records every time.

No scenario yet

This use case is described, not proved: it names its commands and rules, and nothing executes it. It cannot be more than described until a scenario is added.

Why the tool knows this

The chain from this page to the code: the use case names commands, rules and claims; each rule is dispatched from the registry and each claim names the test that proves it; the scenario above executed the commands. Nothing in this chain is prose about intent.

The rules that make it hold

Guarantees exercised

Related use cases

Computed from what they share: claims, rules, commands, category, applications. Nobody maintains this list.

The moments this answers