A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live
I1504
One development transition is a capability, end to end
Where it stands
devtask.issue- Readiness
- ready no dependency and no gate holds it; nobody has started it
- Status
- READY
- Can start
- startable
- Milestone
- Milestone status
- ACTIVE
- Wave
0- Waiting on
- none
- Holds back
- Behind it in all
3- Evidence
0of3
Moves
plan.transitionWhat it is
- Objective
- Declare one development transition — the plan's `done` — as a single `capability!` of kind command in the plan module, with a typed input schema, benchmark cases and a registered ledger event, and point lib/plan.sh at it instead of letting it write the YAML itself.
- Why
- This is the smallest change that tests the architecture ADR 0040 states, and the audit's own conclusion is that the first phase of work is not UI. Nothing in the target flow is new infrastructure: the capability macro, the input schemas, the generated OpenAPI, the MCP bridge and the Cockpit's schema-generated runner form all exist and all work — what is missing is an arrow from a development transition to any of them. The registry today has three command capabilities and not one of them is about development, which is why `tools/call majordomus_plan_done` answers `unknown tool`: there is no capability for a plan transition, and that error message is the architecture in one line. If this lands cleanly every later phase is the same shape, and if it does not, nothing later would have worked either.
- Now
- Plan transitions exist only in lib/plan.sh, which writes the issue YAML directly. The Rust side reads the same records through plan.* and, since the audit's base, through devtask.issue and devtask.milestone, and writes nothing. .ai/repo/development-semantics-baseline.txt carries `backing:plan` as an accepted entry.
- Wanted
- Moving one issue to done is decided in one place. The CLI, the MCP tool, the HTTP route, the OpenAPI operation and the Cockpit's generated form are each a projection of that one declaration, none of them hand-written, and the shell tool calls it the way lib/context.sh and lib/capture.sh already call the Rust binary.
- Done when
- unknown: the record declares no `completion`
- Risk
- High value, contained blast radius. The real risk is scope: a branch that ports lib/plan.sh wholesale proves nothing and cannot be reviewed. One transition, or stop.
Acceptance
- The MCP tool exists and tools/call moves an issue to done
- A non-GET operation for the transition appears in the generated OpenAPI without anyone editing the document
- The Cockpit's existing generic runner drives it with no file under apps/majordomus-cli/src/cockpit changed
- lib/plan.sh no longer writes the issue YAML itself
- test/cases/99_plan_capabilities.sh still holds the two engines to byte equality
- The development-semantics gate reports one fewer entry and refuses the baseline's return
- Validation
bin/majordomus-cli capabilities validatebin/majordomus-cli generate --checkbash test/run.sh 99_plan_capabilitiesmajordomus plan validate- Evidence required
transition_is_a_capabilityprojection_not_handwrittentwo_engines_still_agree- Evidence present
- unknown: the record carries no `evidence` entries
Scope
- Touches
apps/majordomus-cli/src/capability/builtin/plan.rsapps/majordomus-cli/src/plan.rsshare/events.yamllib/plan.sh.ai/repo/development-semantics-baseline.txttest/cases- Not
The other transitions. Start and verify follow the same shape once this one is proved; widening before it is proved is the failure this issue is designed to catch.Any Cockpit page. The existing generic runner must drive the new capability with no Cockpit source edited; if it cannot, that is the finding.A second project model. The canonical records stay where they are and keep their shape.- Depends on
- none
- Priority
- p0
- Profile
- deep-work
- Parallel safe
- false
- Owner
- unknown: the record declares no `owner`
The work so far
- Branches
- none
- Merged
- none
- Commits
0- Trunk
- master
- Sessions
- none
- Created
- 2026-09-11
- Updated
- 2026-09-11
- Started
- unknown: the record declares no `started_at`
- Verified
- unknown: the record declares no `verified_at`
- Completed
- unknown: the record declares no `completed_at`
Synchronisation
- Adapter
scripts/github-sync- Repository
- unknown: the derived plan's header carries no repository
- External issue
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
- State there
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
Findings
| Level | Code | Message | Reproduce |
|---|---|---|---|
| WARN | scope_conflict | shares apps/majordomus-cli/src/capability/builtin/plan.rs with I1512; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares apps/majordomus-cli/src/capability/builtin/plan.rs with I1800; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I1980; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I1990; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I1997; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares apps/majordomus-cli/src/capability/builtin/plan.rs with I1999; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2059; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2114; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2282; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2410; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2411; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2412; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2413; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2653; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2713; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2714; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2716; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2717; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2718; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares apps/majordomus-cli/src/capability/builtin/plan.rs with I2720; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2723; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2731; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2734; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares apps/majordomus-cli/src/capability/builtin/plan.rs with I2740; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares apps/majordomus-cli/src/plan.rs with I2742; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2747; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2760; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | shares test/cases with I2786; they may not run concurrently | majordomus plan validate |