Skip to content
Cockpit0.29.0
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

WaveTogetherSerialised by scope
1—
1—
1—

Every issue

ReadinessStatusIssueTitleWavePriorityWaiting onHolds back
completeDONEI2126A server busy with tool calls is never taken over as if it were dead0p1—1
completeDONEI2127A server that lost its lease hands its sessions on and ends0p1—1
completeDONEI2128A lease is removed only by the process that holds it, and serve stop stops the server in order0p1—0
completeDONEI2129The lease timings the policy declares are the ones the mcp and serve elections use0p2—1
completeDONEI2131A server in use through the Cockpit or HTTP is not stopped as idle, and a checkout keeps one address0p1—1
readyREADYI2700A lease probe asks a cheap liveness route, and a server holding another lease token is not taken for the leaseholder1p1—0
readyREADYI2701The idle timeout is declared beside the other server timings, and serve --idle overrides the declaration1p2—0
readyREADYI2702A checkout keeps one address across restarts, because its server binds a port derived from the checkout1p1—0

Findings

LevelCodeMessageReproduce
WARNscope_conflictI2700: shares test/cases with I2701; they may not run concurrentlymajordomus plan validate
WARNscope_conflictI2700: shares docs/MCP.md with I2702; they may not run concurrentlymajordomus plan validate
WARNscope_conflictI2700: shares test/cases with I2706; they may not run concurrentlymajordomus plan validate
WARNscope_conflictI2700: shares test/cases with I2708; they may not run concurrentlymajordomus plan validate
WARNscope_conflictI2700: shares apps/majordomus-cli/src/capability/builtin/health.rs with I2709; they may not run concurrentlymajordomus plan validate
WARNscope_conflictI2701: shares apps/majordomus-cli/src/cli.rs with I2702; they may not run concurrentlymajordomus plan validate
WARNscope_conflictI2701: shares test/cases with I2706; they may not run concurrentlymajordomus plan validate
WARNscope_conflictI2701: shares test/cases with I2708; they may not run concurrentlymajordomus plan validate
WARNscope_conflictI2701: shares test/cases with I2709; they may not run concurrentlymajordomus plan validate