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
I1015
A surface with no server behind it is not offered as if it had one
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
6- Evidence
2of2
Moves
plan.transitionWhat it is
- Objective
- Make the exposure of backend-only surfaces — the API console, live status, runtime reads — follow from availability metadata, and prove both projections behave correctly.
- Why
- The published site has no server. A link to a runtime console on it is a broken promise, and the usual fix is a check on the page's own address, which is a rule hidden where nobody will find it.
- Now
- web::Availability is ServedOnly, PublishedOnly or Both and ProjectionRoute::linkable() answers from it alone. The running-server side is exercised by test/cases/89_web_surface.sh and apps/majordomus-cli/tests/projections.rs. The static side, missing when this was measured on 2026-09-10, is check 18 of scripts/site-check: it reads every route the projection declares served-only from the generated OpenAPI, refuses a published page that links one, and requires each to be named on /docs/api/ as needing a server. The site job runs it on every build. Measured on master b4a781c668, 2026-10-07.
- Wanted
- Exposure follows from availability metadata alone, and there is a test for each projection that keeps it that way.
- Done when
- unknown: the record declares no `completion`
- Risk
- This is the check that quietly rots, because a broken link on a published page fails nothing. The test for it has to run on every build.
Acceptance
- A backend-only surface is offered as usable only where a backend is available, decided from metadata
- The static build contains no active link to a runtime-only surface
- Where mentioning an unavailable surface is useful, it is shown as unavailable rather than omitted silently or linked
- Both cases are tested — the static build and a running server with the API present
- Validation
bash test/run.shscripts/cockpit-probe- Evidence required
availability_drives_exposureboth_projections_tested- Evidence present
availability_drives_exposureboth_projections_tested
Scope
- Touches
apps/majordomus-cli/src/http/swagger.rs- Not
Any decision made from a hostname, an address or a build flag inside a pageRendering a dead destination as if it were live- 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-07T13:30:04Z
- Started
- 2026-09-06T17:35:07Z
- Verified
- 2026-10-07T13:30:01Z
- Completed
- 2026-10-07T13:30:04Z
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.