I2849 — release next raises from the trunk the repository names, never from a branch name written in the tool
When `majordomus release next` (capability release.next) is given no --base, it measures the landing against the remote-tracking ref of the trunk this repository names, through the one rule the delivery report already uses (delivery::revision::trunk_ref), and refuses by name when the trunk cannot be told.
DONE wave 0 · p0 · implementation profile · parallel safe
Objective
When `majordomus release next` (capability release.next) is given no --base, it measures the landing against the remote-tracking ref of the trunk this repository names, through the one rule the delivery report already uses (delivery::revision::trunk_ref), and refuses by name when the trunk cannot be told.
Why
Found by the code truth-sweep of master 707a04c7ce8 on 2026-10-17: the --base default was the literal `origin/master` in two places (cli.rs default_value and NextInput::base's unwrap_or), while worktree::identity::detect_trunk states the trunk is never hard-coded. In an adopting repository whose trunk is `main` the command refused, or answered about a ref that is not its trunk. The release seat ruled it P0 for v1.0.0-alpha.1.
Current state
--base defaults to `origin/master` on the command line and in the capability input.
Desired state
--base is optional on every surface; absent, release.next resolves it with delivery::revision::trunk_ref (the remote's default branch, else the identity's trunk, else the only remote-tracking branch), and a repository where none resolves is refused with the reason and the remedy (name it with --base).
Scope
- apps/majordomus-cli/src/capability/builtin/release.rs
- apps/majordomus-cli/src/commands/release.rs
- apps/majordomus-cli/src/cli.rs
Out of scope
- The other places the trunk name is written as a literal: planned as I2843 (one accessor plus a ratchet scan).
Dependencies
None. This issue is a root of the graph.
Acceptance criteria
- In a clone whose remote default branch is main, release.next with no base raises from origin/main
- A named base is used as named
- A repository whose trunk cannot be told is refused, naming --base
Validation
- bin/majordomus plan validate
- cargo test --lib -- capability::builtin::release:: commands::release::
- MJ_TEST_JOBS=4 bash test/run.sh 1060_the_version_is_allocated_at_landing
Evidence required
- unnamed_base_is_the_trunk_test
Evidence
| covers | type | command | result | at commit |
|---|---|---|---|---|
| unnamed_base_is_the_trunk_test | ci | validate run 39192952944 at master dd4c0a87cba: rust (1-3) runs cargo test --lib, including capability::builtin::release::an_unnamed_base_is_the_trunk_the_repository_names and a_landing_whose_trunk_cannot_be_told_is_refused; bash test/run.sh 1060_the_version_is_allocated_at_landing locally | success; case 1060: 3 passed, 0 failed, 0 skipped on master dd4c0a87cba | dd4c0a8 |
Timeline
- started
- 2026-10-19T15:29:31Z
- verified
- —
- completed
- 2026-10-19T15:29:52Z
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/I2849.yaml. Read it back with majordomus plan show I2849.