Skip to content

A task that names the issue or the intent it serves is briefed with what that intent asks of the work, and a handover tells the next worker when the intent moved

A worker starts from what must become true, not from an edit. A task that says which issue it executes, or which intent it serves, is handed that intent in its briefing: the statement, the invariants, the criteria this work serves with the state of their evidence, the critique of the plan and the recorded gap. Nobody copies an intent into a prompt.

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: not run 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

`majordomus start --issue <id>` (or `--intent <id>`) asks `intents.binding` what the task serves and records what was named with two pins; `majordomus context` then carries an INTENT section read from the binding on every call — statement, invariants, the served criteria with the state of their evidence, the critique and the gap — and says `unknown` when the binding cannot be read. A handover pins the binding, and `handover --resolve` answers `unchanged`, `evidence_moved` or `plan_changed` (test/cases/961). A task that names nothing is briefed with no intent, and under policy `intent.binding: off` nothing asks. The record holds names and hashes only: no stage, verdict or criterion is stored (ADR 0111).

What it means

A worker starts from what must become true, not from an edit. A task that says which issue it executes, or which intent it serves, is handed that intent in its briefing: the statement, the invariants, the criteria this work serves with the state of their evidence, the critique of the plan and the recorded gap. Nobody copies an intent into a prompt.

The briefing is read from the intent engine every time it is printed. The task record keeps only what the worker named and two hashes; no stage, verdict or criterion is stored in a task, a session or a handover (ADR 0111, rule project.an-intent-outlives-its-sessions).

How it works

majordomus start "<task>" --scope <paths> --issue <id> asks the intents.binding capability what the task serves before it writes anything. The answer's standing is bound, maintenance, exempt or refused; a refused answer to a question the worker put does not start. The record carries issue (or intent, or exemption with its reason), the standing start was told, and two pins: plan_revision and evidence_standing.

majordomus context asks the binding again and prints an INTENT section after PROFILE. Under a tight budget the section loses its gap conditions first and is never dropped whole. When the executable cannot be reached the section says standing unknown and names what was asked for, because "no intent" and "nobody could ask" are different answers.

majordomus handover writes what the task named and the two pins into the record's front matter. majordomus handover --resolve asks the binding once more and prints an Intent: line: unchanged, evidence_moved when a served criterion changed evidence state, plan_changed when the intent, a link or its critique was edited, or unknown when it cannot ask.

How to see it

majordomus-cli intent binding --issue <id>        # what a task naming that issue is bound to

test/cases/960_a_task_starts_bound_to_what_it_serves.sh starts a bound task and reads its context; test/cases/961_a_resumed_task_is_told_its_intent_moved.sh edits a criterion, a critique and the evidence between a handover and its resolution.

What it does not cover

A task that names nothing is briefed with no intent: under policy intent.binding: off nothing asks, and under advisory or required a scope-only start is resolved by its paths and recorded with its standing, but its context carries the section only when the task named an issue, an intent or an exemption. A provider episode with no task open is not bound at all (ADR 0052).

The briefing informs. It does not decide whether a criterion is met, and it refuses nothing at finish.

Why it exists

The intent engine could already say what an issue serves, and nothing asked it: the context a worker was handed named a scope and no purpose. A briefing that depends on the worker remembering to ask is a briefing most sessions never get.

Detail rendered from docs/claims/intent-in-session-context.md.

From the statement to the proof

  1. 1 · the public statement

    A task that names the issue or the intent it serves is briefed with what that intent asks of the work, and a handover tells the next worker when the intent moved

    Made on State.

  2. 2 · the canonical claim

    intent-in-session-contextdeclared status: guaranteed in docs/CLAIMS.yaml

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

  3. 3 · the implementation

    lib/intent_binding.sh

  4. 4 · the test and the scenarios

    Test: test/cases/960_a_task_starts_bound_to_what_it_serves.sh

  5. 5 · the recorded runs

    recorded evidence: not run 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 960_a_task_starts_bound_to_what_it_serves

Where this claim is used

responsibilities it covers

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