Repository navigation
Docs: F37 addendum — account writes through one gateway namespace, the Environment known from the token (DEV-6639) - #156
Conversation
…e Environment known from the token Matěj decided on 2026-10-04 (root decision 0186, plan DEV-6639) that the shell also writes favourites and the last Environment to the Lazurio account with the person's token through the Environment's gateway. Shaped the same day with the gateway's and DEV-6552's owners: - /.lazurio/account/<path> maps 1:1 to the Dashboard's account API with a fixed allowlist (GET environments, PUT/DELETE favourites, PUT last); - lazurio.account.v1 reuses the shell.v1 entries plus name, who, offline, last, favourites and preferences.openApps; - the requesting Environment is the verified token's azp, never a header; - scope lazurio-account replaces lazurio-environments; clients follow DEV-6552's first-party path; state is keyed by the Dashboard's user row. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review of the gateway and token parts from the gateway owner's side (lazurio-a5, DEV-6639). The addendum matches what we agreed: one namespace, allowlist,
Also restate, from point 2 of the proposal, that With those, it's fine from my side for Pablo. 🤖 Generated with Claude Code |
… before the scope, no-store on the list Review by the gateway's owner session: oauth2-proxy refreshes the ten-minute token before it expires and the proof covers it; sessions that predate the scope fall back silently until the next sign-in; GET environments keeps no-store, private and Vary: Cookie; the PUT last report sits in src/shell apart from the merge. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
From the gateway owner's side: head 2b4399c covers all three points (token refresh with a proof, the rollout note for sessions from before the scope, 🤖 Generated with Claude Code |
agentrozjedemeai
left a comment
There was a problem hiding this comment.
Approved on exact head 6657576. The F37 addendum confines account reads/writes to a fixed gateway allowlist, identifies the Environment from verified azp rather than a header, restricts lazurio-account to account routes, and retains token refresh, cache isolation and the pre-scope session rollout fallback. It keeps the token out of userland and records Dashboard → issuer → Machines → Platform delivery order. The gateway owner’s accepted 2b4399c is an ancestor of this head; the intervening commit integrates current main without changing this PR’s addendum. Docs diff/check is clean, both exact-head platform checks are green, and there are no unresolved conversations. The separate Team-grant App permission issue on root #488 does not change this account-path contract.
Status: ready for review. The gateway and token parts are being reviewed by the gateway's owner session before Pablo.
Why
Root decision 0186 (HumanAndMachines/Lazurio#488, Matěj 2026-10-04) puts favourite modules and the last Environment into the person's Lazurio account. Every Environment has its own origin, so only the Dashboard can hold them, and the shell must write them. F37 (merged in #149) defined only a read-only path for the person's Environment list. This addendum extends that path rather than adding a second one.
What changes
docs/decisions.mdgets a new addendum under F37:One namespace.
/.lazurio/account/<path>maps 1:1 to the Dashboard's/api/environment/v1/account/<path>. The gateway relays a fixed allowlist and answers404to everything else:GET environments, which replacesaccount.json;PUT/DELETE favourites/<org>/<module|repository>/<id>;PUT last.Bodies are JSON only, at most 4 KiB.
The document
lazurio.account.v1reuses thelazurio.shell.v1entries, so one parser reads both documents (F37 point 1). It adds:name,whoandofflineon an Environment entry;lastandlastBySpace;favouritesfor the requesting Environment's Organization;preferences.openApps, which is set only in the Dashboard.Organizations come from live memberships, so an Organization without an Environment keeps its avatar.
The Environment is identified by the verified token's
azp, never by a header. Each Environment's gateway has its own client at the issuer.Scope.
lazurio-accountreplaceslazurio-environments. Its clients and audience follow DEV-6552's first-party path.Identity. It goes from
subthrough introspection of the linked GitHub identity to the Dashboard's user row. Missing or colliding accounts are refused.The delivery order is restated: Dashboard → DEV-6552 S1 clients → Machines relay → Platform.
What does not change
shell.json.Verified
bun run lintis clean.bun run check:publicpasses (469 files).pr-preflightreports ready to push on 5a9a8c8.Follow-ups
lazurio-accountscope (gateway owner session, after DEV-6552 S1c).🤖 Generated with Claude Code