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
runtime-lifecycle
One usable server per checkout starts, attaches, stops and reports its state without races or hidden kills
8issuesdevtask.milestone
3readydevtask.milestone
0blockeddevtask.milestone
0activedevtask.milestone
5completedevtask.milestone
The milestone
devtask.milestone- Title
- One usable server per checkout starts, attaches, stops and reports its state without races or hidden kills
- Outcome
- Entering a checkout, opening the Cockpit, or starting any number of MCP clients converges on one server for that checkout, which is taken over only when it is dead, stops in order when asked, removes only its own lease, reports a typed state every surface reads, and stays up while any surface uses it.
- Status
- ACTIVE
- Rank
0- Depends on
- none
- Waiting on
- none
- Holds back
- none
- Record
.ai/repo/project/milestones/runtime-lifecycle.yaml- Its issues
- Every issue of this milestone
Where the work is
- Ready
- Blocked
- —
- Waiting
- —
- Active
- —
- In review
- —
- Completion blocked
- —
- Complete
- Cancelled
- —
What holds the most back
No unfinished issue holds another back.
What may run at the same time
Every issue
| Readiness | Status | Issue | Title | Wave | Priority | Waiting on | Holds back |
|---|---|---|---|---|---|---|---|
| complete | DONE | I2126 | A server busy with tool calls is never taken over as if it were dead | 0 | p1 | — | 1 |
| complete | DONE | I2127 | A server that lost its lease hands its sessions on and ends | 0 | p1 | — | 1 |
| complete | DONE | I2128 | A lease is removed only by the process that holds it, and serve stop stops the server in order | 0 | p1 | — | 0 |
| complete | DONE | I2129 | The lease timings the policy declares are the ones the mcp and serve elections use | 0 | p2 | — | 1 |
| complete | DONE | I2131 | A server in use through the Cockpit or HTTP is not stopped as idle, and a checkout keeps one address | 0 | p1 | — | 1 |
| ready | READY | I2700 | A lease probe asks a cheap liveness route, and a server holding another lease token is not taken for the leaseholder | 1 | p1 | — | 0 |
| ready | READY | I2701 | The idle timeout is declared beside the other server timings, and serve --idle overrides the declaration | 1 | p2 | — | 0 |
| ready | READY | I2702 | A checkout keeps one address across restarts, because its server binds a port derived from the checkout | 1 | p1 | — | 0 |
Findings
| Level | Code | Message | Reproduce |
|---|---|---|---|
| WARN | scope_conflict | I2700: shares test/cases with I2701; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | I2700: shares docs/MCP.md with I2702; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | I2700: shares test/cases with I2706; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | I2700: shares test/cases with I2708; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | I2700: shares apps/majordomus-cli/src/capability/builtin/health.rs with I2709; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | I2701: shares apps/majordomus-cli/src/cli.rs with I2702; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | I2701: shares test/cases with I2706; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | I2701: shares test/cases with I2708; they may not run concurrently | majordomus plan validate |
| WARN | scope_conflict | I2701: shares test/cases with I2709; they may not run concurrently | majordomus plan validate |