Skip to content

A plan drafted from an intent is a proposal, checked by the plan's own validators before any record is written

A plan drafted from an intent is a proposal, checked by the plan's own validators before any record is written

majordomus://adr/adr-0191proposed idd-planchatgpt-project

it references

referenced by

191. A plan drafted from an intent is a proposal, checked by the plan's own validators before any record is written

Context

intent-planning's invariant says Majordomus judges records and does not generate a plan; ADR 0144 lets intents.propose write only a bare intent. The owner asked repeatedly (2026-10-04, 10-09, 10-11, 10-16) that the gap and the plan be derived. The drafting design was planned on 2026-10-10 (owner packs) and never landed.

Decision

Majordomus drafts gaps and plans read-only from the intent, the evidence and the plan; a draft is judged in memory by the same plan and intent validators; only a checked draft accepted by a person (or by a policy the owner declares) is written, as one repository_mutation capability. A model may author a draft; it never decides.

Alternatives rejected

  • Keep generation a non-goal and hand-write every plan
  • Let an agent write and execute its own plan
  • A separate planner or plan store

Consequences

intent-planning's non-goal changes; ADR 0144 is extended (propose stays bare); drafting gets an identity scheme shared with replanning.

Sources

Promoted on 2026-10-18 from the owner's ChatGPT project (workspace chatgpt-majordomus, issue I3100). The owner has not accepted it; it is proposed for the owner's decision.

  • chatgpt-majordomus:c146#5
  • chatgpt-majordomus:c185#4
  • chatgpt-majordomus:c205#2

Where this comes from

canonical file
.ai/repo/adrs/0191-a-plan-drafted-from-an-intent-is-a-proposal-checked-by-the-plan.md
identity
adr-0191
also served as
MCP resource majordomus://adr/adr-0191 · majordomus entity show adr/adr-0191 · GET /api/v1/entity?uri=majordomus://adr/adr-0191
in the Cockpit
/cockpit/objects/adr/adr-0191

This page is generated from the file above by scripts/generate-site-data; editing the page changes nothing, editing the file changes every surface. The relations above are edges of docs/generated/graph.json, which the executable writes from the same index.

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