Skip to content

I3246 — The evidence half of a gap is drafted from the ledger, and a second draft at one commit is the same

Revive I2217 from origin/chore/the-owner-packs-are-planned (ec37317fe7c, 2026-10-10, never landed): a read-only intents.draft_gap (`intent draft gap <intent>`) prints a majordomus.gap/v1 record whose criterion states are derived from the evidence at the presented commit, each observation citing the ledger execution or claim it read. Port the record byte-identical first, then update its current_state to master.

READY wave 0 · p1 · implementation profile · parallel safe

Part of an-unmet-criterion-is-drafted-into-work — An unmet criterion is drafted into work from the evidence, and the draft is the same on every run.

Ready. Every dependency is done, so majordomus plan start I3246 will be accepted.

Objective

Revive I2217 from origin/chore/the-owner-packs-are-planned (ec37317fe7c, 2026-10-10, never landed): a read-only intents.draft_gap (`intent draft gap <intent>`) prints a majordomus.gap/v1 record whose criterion states are derived from the evidence at the presented commit, each observation citing the ledger execution or claim it read. Port the record byte-identical first, then update its current_state to master.

Why

The owner asked from 2026-09-15 to 2026-10-16 that Majordomus find what is not true instead of a person writing it. On master a gap is hand-written and intent_review.rs only judges it; the draft was planned on 2026-10-10 on a branch that never reached master. Proposed in ADR 0191 (A plan drafted from an intent is a proposal, checked by the plan's own validators before any record is written); ADR 0192 (Replanning is bounded, idempotent and never weakens its intent) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c205#2.

Current state

apps/majordomus-cli/src/intent_review.rs judges gap records under .ai/repo/project/gaps/; capability/builtin/intents.rs declares list, record, validate, coverage, preflight, binding and propose; nothing drafts a gap.

Desired state

intents.draft_gap is pure over IntentView, the evidence index and the ledger; its output passes intent validate's gap checks unchanged; nothing is written.

Scope

  • apps/majordomus-cli/src/capability/builtin/intents.rs
  • docs/PLANNING.md
  • apps/majordomus-cli/src/intent_review.rs
  • apps/majordomus-cli/src/intent.rs
  • apps/majordomus-cli/src/evidence/ledger.rs
  • apps/majordomus-cli/src/commands/intent.rs
  • apps/majordomus-cli/src/cli.rs
  • apps/majordomus-cli/tests/intent.rs
  • .ai/repo/project/issues

Dependencies

None. This issue is a root of the graph.

What waits on this

Acceptance criteria

  • A drafted gap validates with no finding
  • Every state that is not unknown cites an observation that resolves
  • Two runs at one commit print byte-identical output and leave the tree clean

Validation

  • majordomus plan validate
  • majordomus intent validate

Evidence required

  • test_the_gap_is_drafted_from_the_ledger

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Timeline

started
—
verified
—
completed
—

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/I3246.yaml. Read it back with majordomus plan show I3246.

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