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
I1205
Identity is resolved once, in the router, and every surface reads it from there
Where it stands
devtask.issue- Readiness
- blocked 1 of its dependencies is not DONE
- Status
- BLOCKED
- Can start
- not now
- Milestone
- Milestone status
- PLANNED
- Wave
4- Waiting on
- Holds back
- Behind it in all
2- Evidence
0of2
| In the way | Subject | Detail |
|---|---|---|
| issue | I1204 | I1204 is not DONE |
Moves
plan.transitionWhat it is
- Objective
- Resolve the caller once, where the request enters, and carry the result to every surface: the HTTP API, the Cockpit's rendering, the OpenAPI document's security scheme and the MCP surface. No handler parses a cookie, and no surface decides for itself what an absent identity means.
- Why
- Authentication that is applied per handler is authentication that is forgotten on the handler added next week. One resolution point is also the only way the four surfaces can agree about who the caller is.
- Now
- I1204 issues sessions; nothing reads them outside the flow.
- Wanted
- A request carries a resolved caller — anonymous or identified — from the router onward, and a handler cannot be written that skips the resolution.
- Done when
- unknown: the record declares no `completion`
- Risk
- The Cockpit is the surface most likely to re-read the cookie for convenience. The test that forbids a second read is what keeps it honest.
Acceptance
- Exactly one place reads the session cookie, proved by a test that fails when a second appears
- The Cockpit shows who is signed in and offers sign-out, from the resolved caller rather than from its own read
- The MCP surface receives the same caller as the HTTP API for the same connection
- An anonymous caller is a value, not an absence, so no surface can forget to handle it
- Validation
cargo test --workspace --all-featuresbash test/run.sh- Evidence required
single_resolution_pointsurfaces_agree- Evidence present
- unknown: the record carries no `evidence` entries
Scope
- Touches
apps/majordomus-cli/src/httpapps/majordomus-cli/src/identityapps/majordomus-cli/src/cockpitapps/majordomus-cli/src/mcpapps/majordomus-cli/tests- Not
Roles, groups or permissions beyond identified and anonymousA second resolution in any surface- Depends on
- Priority
- p1
- 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-09-08
- Updated
- 2026-09-08
- 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.