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
I0904
The listen address is one fact with two projections
Where it stands
devtask.issue- Readiness
- complete completion is recorded and every required evidence token is present
- Status
- DONE
- Can start
- not now
- Milestone
- Milestone status
- ACTIVE
- Wave
2- Waiting on
- none
- Holds back
- Behind it in all
20- Evidence
3of3
Moves
plan.transitionWhat it is
- Objective
- Make the deployment bind an externally reachable interface on the port the canonical object declares, without changing the loopback default that local use depends on, and without the port existing as a literal in more than one place.
- Why
- A server bound to 127.0.0.1 inside a Machine is unreachable, and the usual repair is to hardcode 0.0.0.0:8080 in three files. The port is a fact of the deployment object; the container, the provider configuration and the process must all read the same one.
- Now
- bind() defaults to loopback and warns when the bound address is not loopback, because a non-loopback bind exposes this repository's layer to every host that can reach the interface. The default port is a constant in cli.rs.
- Wanted
- Local invocation is unchanged. A hosted process binds the declared address deliberately, the warning stays for the accidental case, and the port appears once as canonical data.
- Done when
- unknown: the record declares no `completion`
- Risk
- Weakening the loopback default for everyone would expose local repositories on shared networks. The hosted path must be an explicit mode, not a lowered default.
Acceptance
- The deployment port is stated once in the canonical object and consumed by the process, the container projection and the provider configuration
- The local default remains loopback and the existing warning still fires for an unintended non-loopback bind
- A hosted bind is expressed as intent rather than by suppressing the warning
- A test proves the hosted configuration binds a reachable address and the local default does not
- Validation
cargo test --workspace --all-featuresbash test/run.sh- Evidence required
single_port_sourcehosted_bindlocal_default_unchanged- Evidence present
single_port_sourcehosted_bindlocal_default_unchanged
Scope
- Touches
apps/majordomus-cli/src/http/server.rsapps/majordomus-cli/src/commands/serve.rsapps/majordomus-cli/src/cli.rs- Not
Graceful shutdown, which is I0906Any change to what the server serves- Depends on
- Priority
- p0
- 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-10-14T09:04:57Z
- Started
- 2026-10-14T09:04:46Z
- Verified
- unknown: the record declares no `verified_at`
- Completed
- 2026-10-14T09:04:57Z
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.