Skip to content

I3957 — No entry path or gate builds: the launcher, the gates, the test harness and the just bridge call the tree's executable and fail fast or use a release of the same generation

Change bin/majordomus-cli so a missing or stale executable exits 12 naming the explicit build for every caller, or answers through the installed release only when its build generation matches the tree; make the nine cargo-run gates of .ai/repo/ci/gates.yaml, test/lib.sh and the just bridge call the tree's executable; make the edit guard and the pre-commit guard declare their outcome instead of passing silently.

READY wave 0 · p0 · implementation profile · runs alone

Part of ordinary-commands-never-build — No ordinary command builds: every entry path fails fast or answers through a release of the same generation.

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

Objective

Change bin/majordomus-cli so a missing or stale executable exits 12 naming the explicit build for every caller, or answers through the installed release only when its build generation matches the tree; make the nine cargo-run gates of .ai/repo/ci/gates.yaml, test/lib.sh and the just bridge call the tree's executable; make the edit guard and the pre-commit guard declare their outcome instead of passing silently.

Why

The owner, 2026-10-22: ADR 0172 is replaced (by ADR 0224) and I3180 cancelled, after a pre-push timed out at ninety minutes in cargo-run gates queued behind the shared build lock, and the architecture review recorded as intent every-capability-has-one-owner-and-the-cli-never-builds.

Current state

Measured on master 2034d4a3f0b: see milestone ordinary-commands-never-build.

Desired state

Zero cargo invocations from any ordinary path with the executable missing or stale; a mismatched release refused; no silent pass.

Scope

  • bin/majordomus-cli
  • bin/majordomus-mcp
  • lib/rust_bin.sh
  • test/lib.sh
  • .ai/repo/ci/gates.yaml
  • .claude/hooks/majordomus-edit-guard
  • .githooks/
  • apps/majordomus-cli/src/command_graph/bridge.rs
  • .ai/repo/project/intents/every-capability-has-one-owner-and-the-cli-never-builds.yaml
  • test/cases/3958_no_entry_path_or_gate_builds.sh

Out of scope

  • Migrating shell domain logic

Dependencies

None. This issue is a root of the graph.

Acceptance criteria

  • A case extending the stand-in-cargo fixtures of cases 3831 and 3177 walks every command path through bin/majordomus, bin/majordomus-cli, bin/majordomus-mcp, the just bridge, each git hook and every gate, with the executable missing and then stale, and counts zero cargo invocations
  • An installed release whose build generation differs from the tree is refused, and one whose generation matches is used
  • The edit guard and the pre-commit guard name their outcome for a stale executable; neither passes silently
  • Cases 3177, 3221 and 3831 still pass, or are amended with the reason ADR 0224 gives

Validation

  • bin/majordomus plan validate
  • MJ_TEST_JOBS=2 bash test/run.sh 3958_no_entry_path_or_gate_builds

Evidence required

  • zero_cargo_case

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

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