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
I0906
Termination is graceful and proved against the real container
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
3- Waiting on
- none
- Holds back
- Behind it in all
7- Evidence
0of3
Moves
plan.transitionWhat it is
- Objective
- Handle SIGTERM and SIGINT so that a Machine that is being stopped, redeployed or autostopped finishes its in-flight responses and exits inside the platform's timeout.
- Why
- A profile with autostop and zero minimum machines means the process is terminated routinely rather than exceptionally. A server that is killed mid-response makes every deploy and every idle window a source of truncated requests.
- Now
- Stopping is cooperative for the owner's own call — workers are unblocked and joined and an in-flight response is finished — but nothing binds that to a process signal.
- Wanted
- A termination signal stops accepting new connections, finishes what is in flight, and exits within a bounded, documented timeout, proved against the production container rather than against a unit test alone.
- Done when
- unknown: the record declares no `completion`
- Risk
- A signal handler that waits for an unbounded connection never exits and the platform kills it anyway. The timeout is part of the contract and must be declared.
Acceptance
- SIGTERM and SIGINT both begin an orderly stop
- A request in flight when the signal arrives receives its complete response
- The process exits within the documented timeout and reports a non-error exit
- The behaviour is proved against the production container, not only in-process
- Validation
cargo test --workspace --all-featuresbash test/run.sh- Evidence required
sigterm_cleaninflight_finishedexit_within_timeout- Evidence present
- unknown: the record carries no `evidence` entries
Scope
- Touches
apps/majordomus-cli/src/http/server.rsapps/majordomus-cli/src/commands/serve.rs- Not
Draining application state; the served layer is read-onlyConfiguring provider kill signals unless a measurement shows the default is wrong- Depends on
- Priority
- p1
- Profile
- implementation
- Parallel safe
- true
- Owner
- unknown: the record declares no `owner`
The work so far
- Branches
- none
- Merged
- none
- Commits
0- Trunk
- master
- Sessions
- none
- Created
- 2026-09-06
- Updated
- 2026-09-06
- 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
Nothing is wrong with these records.