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

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
0 of 2
In the waySubjectDetail
issueI1204I1204 is not DONE
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 I1205

majordomus plan verify I1205

majordomus plan done I1205

What 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.