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

I2701

The idle timeout is declared beside the other server timings, and serve --idle overrides the declaration

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
1
Waiting on
none
Holds back
none
Behind it in all
0
Evidence
0 of 1
A move writes the repository: it stamps one field of this issue's record and appends one event to the ledger, and a commit will carry both.
The same moves from a terminal

majordomus plan start I2701

majordomus plan verify I2701

majordomus plan done I2701

What it is

Objective
Declare the server's idle timeout under policy.yaml server: beside the lease timings, validate it by the policy schema, and make every server that starts stop after the declared time unless serve --idle says otherwise.
Why
Split from I2129 on 2026-10-14. I2129 made the declared lease timings the ones mcp and serve elect by, and its desired_state said 'Not done here' of the idle timeout as a declared server key, while its acceptance criteria still required it, so it could never close. The idle timeout is the one server timing a repository cannot declare: a compiled constant, absent from policy.yaml server:. Baseline audit of 2026-10-09 at master 1fb8d6be44, lifecycle drift 1.
Now
DEFAULT_IDLE_SECONDS (900, apps/majordomus-cli/src/cli.rs) is the clap default of serve --idle and serve ensure --idle, and env enter passes it to the server it starts (apps/majordomus-cli/src/commands/env.rs). .ai/repo/policy.yaml server: declares probe_timeout_seconds, bind_grace_seconds, join_timeout_seconds, busy_grace_seconds and read_deadline_seconds (lease::Timings, apps/majordomus-cli/src/lease.rs); the policy schema (share/schemas/majordomus/policy/policy.v1.schema.json) knows no idle key.
Wanted
policy.yaml server: may declare the idle timeout (server.idle_seconds) and the policy schema validates it; a server started by serve, serve ensure or env enter without --idle stops after the declared time, an absent key keeps 900 s, and --idle given on the command line overrides the declaration. docs/MCP.md lists the key with the other server timings.
Done when
unknown: the record declares no `completion`
Risk
unknown: the record declares no `risk`

Acceptance

  • The idle timeout is a declared policy key validated by the policy schema, and serve --idle overrides it
  • A server started without --idle under a declared idle timeout of a few seconds stops after the declared time, not after 900 s
Validation
bin/majordomus plan validatecargo test --test serve_lifecycle
Evidence required
idle_timeout_declared_test
Evidence present
unknown: the record carries no `evidence` entries

Scope

Touches
apps/majordomus-cli/src/cli.rsapps/majordomus-cli/src/commands/serve.rsapps/majordomus-cli/src/commands/env.rsapps/majordomus-cli/src/policy.rs.ai/repo/policy.yamlshare/schemas/majordomus/policyapps/majordomus-cli/tests/serve_lifecycle.rstest/casesdocs/MCP.md
Not
The lease timings the elections read, which I2129 delivered
Depends on
Priority
p2
Profile
implementation
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-10-14
Updated
2026-10-14
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

LevelCodeMessageReproduce
WARNscope_conflictshares apps/majordomus-cli/src/cli.rs with I2702; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares test/cases with I2706; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares test/cases with I2708; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares test/cases with I2709; they may not run concurrentlymajordomus plan validate