Skip to content

An intent's stage is derived from the milestones that realise it and each criterion from the evidence ledger, and it is satisfied only while every criterion has a current passing run

An intent under .ai/repo/project/intents/ states what must become true, the invariants that must stay true, the milestones that realise it and the criteria that settle it, each criterion naming the evidence that decides it. That statement is all it stores. Its stage — declared, planned, executing, verifying, satisfied — is read from the plan, and each criterion from the evidence ledger, on every read. Finished work satisfies nothing: an intent whose milestones are all DONE is verifying until every criterion has a current passing run.

declared statusdeclared status: guaranteed Declared deterministic and blocking, implemented, and naming the behavioural test that is to prove it. Whether a recorded run supports it is the evidence verdict, shown beside it.

recorded evidencerecorded evidence: stale Declared guaranteed, and not supported by a recorded run: the test is named, and no passing run of the current inputs is recorded. how evidence is recorded

Nothing about an intent is stored but its statement. A passing run while a milestone is open meets the criterion and satisfies nothing; closing the milestone satisfies it; changing the test after its run makes the evidence stale and the intent falls back to verifying, and a failing run is not evidence either, with the intent file untouched throughout. `majordomus intent list`, `intent show`, the HTTP API and the MCP tools answer from the same derivation.

What it means

An intent under .ai/repo/project/intents/ states what must become true, the invariants that must stay true, the milestones that realise it and the criteria that settle it, each criterion naming the evidence that decides it. That statement is all it stores. Its stage — declared, planned, executing, verifying, satisfied — is read from the plan, and each criterion from the evidence ledger, on every read. Finished work satisfies nothing: an intent whose milestones are all DONE is verifying until every criterion has a current passing run.

How it works

apps/majordomus-cli/src/intent.rs joins the intent to the derived status of each milestone it names and each criterion to the ledger's latest run of the test or claim it names. A run recorded against a source that has changed since is stale, and a failing run is not evidence; either leaves the criterion unmet. cancelled and superseded are the only stages the record itself can state.

How to see it

majordomus intent list                   # every intent with its derived stage
majordomus intent show intent-lifecycle  # each milestone's status and each criterion's evidence state

The same derivation answers GET /api/v1/intents and the majordomus_intents MCP tool.

What it does not cover

A criterion settled by a command or a deployment resolves but is never met, because the ledger records runs of tests and claims only (intent-command-deployment-evidence). Finishing a task does not ask whether the intent it serves is satisfied.

Why it exists

A status written into the intent would be one more record that can disagree with the plan and the evidence it summarises. Deriving it means the intent file stays byte-identical while the work around it moves, which test/cases/367_an_intent_is_satisfied_only_by_evidence.sh checks at every step.

Detail rendered from docs/claims/intent-stage-derived.md.

From the statement to the proof

  1. 1 · the public statement

    An intent's stage is derived from the milestones that realise it and each criterion from the evidence ledger, and it is satisfied only while every criterion has a current passing run

    Made on Planning, Plan.

  2. 2 · the canonical claim

    intent-stage-deriveddeclared status: guaranteed in docs/CLAIMS.yaml

    Defined in read it on this site · docs/PLANNING.md

  3. 3 · the implementation

    apps/majordomus-cli/src/intent.rs

  4. 4 · the test and the scenarios

    Test: test/cases/367_an_intent_is_satisfied_only_by_evidence.sh

  5. 5 · the recorded runs

    recorded evidence: stale how evidence is recorded

Verify it yourself

The test runs in a disposable temporary repository and asserts the behaviour, not a string in the source.

from a clone of the repository
bash test/run.sh 367_an_intent_is_satisfied_only_by_evidence

Where this claim is used

responsibilities it covers

Related claims same implementation

Searches the titles and descriptions of every page this site publishes.