Skip to content

I3255 — A command criterion is met only by a recorded passing run of exactly that command at the presented revision

Revive I2222 and I2223 from origin/chore/the-owner-packs-are-planned (ec37317fe7c, 2026-10-10, never landed): a criterion with evidence command reads current from a ledger execution receipt of exactly its ref, passing, whose inputs did not change since; stale, failing or not_run otherwise; never current on an unexecuted, deleted, forged or wrong-target receipt.

READY wave 0 · p1 · implementation profile · parallel safe

Part of command-and-deployment-criteria-are-judged — A command or deployment criterion is met by a recorded run of exactly that command, or an observation of exactly that deployment, current at the presented revision.

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

Objective

Revive I2222 and I2223 from origin/chore/the-owner-packs-are-planned (ec37317fe7c, 2026-10-10, never landed): a criterion with evidence command reads current from a ledger execution receipt of exactly its ref, passing, whose inputs did not change since; stale, failing or not_run otherwise; never current on an unexecuted, deleted, forged or wrong-target receipt.

Why

On master intent.rs maps every command criterion to IntentEvidenceState::NotDerivable (intent.rs ~1137), so intent-lifecycle's own criterion model-is-gated and any intent with a command criterion can never be satisfied (observed 2026-10-17 and on master 707a04c). Sources: chatgpt-majordomus:c196#6, chatgpt-majordomus:c288#8.

Current state

intent.rs: `command` and `deployment` arms return NotDerivable; test and claim are judged.

Desired state

Command criteria are judged from the same receipts finish and the evidence ledger read; no new store.

Scope

  • apps/majordomus-cli/src/intent.rs
  • apps/majordomus-cli/src/evidence
  • apps/majordomus-cli/tests/intent.rs
  • docs/EVIDENCE.md

Dependencies

None. This issue is a root of the graph.

What waits on this

Acceptance criteria

  • A passing receipt of the exact command at the presented revision reads current
  • A receipt of a different command, a failing run, or a run before a change to its inputs reads not current with the reason
  • intent-lifecycle#model-is-gated stops reading not_derivable
  • A command criterion whose ref is `majordomus intent explain <its own intent>` never reads current: it is a placeholder for a planned proof and reads not_derivable naming it, because intent explain exits 0 whatever it finds

Validation

  • majordomus plan validate
  • majordomus intent validate
  • cargo test --test intent

Evidence required

  • test_a_command_criterion_is_judged

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

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