Skip to content

docs(design): rule the user-secret scope selector and correct D8 (RIG-3655) - #1169

Open
rigel-mintaka wants to merge 2 commits into
mainfrom
compass-server/rig-3655-d9-scope-selector
Open

docs(design): rule the user-secret scope selector and correct D8 (RIG-3655)#1169
rigel-mintaka wants to merge 2 commits into
mainfrom
compass-server/rig-3655-d9-scope-selector

Conversation

@rigel-mintaka

@rigel-mintaka rigel-mintaka commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

This PR is part of a stack containing 2 PRs:

  1. main
  2. "docs(design): rule the user-secret scope selector and correct D8 (RIG-3655)" (this PR)
  3. feat(server): scope user-secret writes per caller (RIG-3655) #1187

D9 closes the record's wire-surface open question: SetSecretRequest and
DeleteSecretRequest gain a SecretScope selector defaulting to USER scope, so
a credential a user sets is not resolved by another user's agents. Tenant
scope stays admin-gated per D8's matrix, checked at the RPC edge where
requireUser already holds the caller's role.

Also corrects a factual error in D8: it claimed the two tenant-coordinate
writes were already admin-gated at the door. They are not — classifyProcedure
returns authenticatedOpen for both verbs and requireUser never reads UserRole.
Left uncorrected, D8 plus the tenant-pinned verb would have made SetSecret
reachable only by the bootstrap admin, with no role-promotion path to grant it
back.

Refs RIG-3655

Co-authored-by: Matt Wilkinson matt@rigel.build

@linear-code

linear-code Bot commented Sep 12, 2026

Copy link
Copy Markdown

RIG-3655

@trunk-io

trunk-io Bot commented Sep 12, 2026

Copy link
Copy Markdown

Merging to main in this repository is managed by Trunk.

  • To merge this pull request, check the box to the left or comment /trunk merge below.

After your PR is submitted to the merge queue, this comment will be automatically updated with its status. If the PR fails, failure details will also be posted here

@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://compass-server-rig-3655-d9-s.compass-eng-docs.pages.dev

Deployed from compass-server/rig-3655-d9-scope-selector at 95db14c.

Changed pages:

rigel-mintaka and others added 2 commits September 12, 2026 23:17
…-3655)

D9 closes the record's wire-surface open question: SetSecretRequest and
DeleteSecretRequest gain a SecretScope selector defaulting to USER scope, so
a credential a user sets is not resolved by another user's agents. Tenant
scope stays admin-gated per D8's matrix, checked at the RPC edge where
requireUser already holds the caller's role.

Also corrects a factual error in D8: it claimed the two tenant-coordinate
writes were already admin-gated at the door. They are not — classifyProcedure
returns authenticatedOpen for both verbs and requireUser never reads UserRole.
Left uncorrected, D8 plus the tenant-pinned verb would have made SetSecret
reachable only by the bootstrap admin, with no role-promotion path to grant it
back.

Refs RIG-3655

Co-authored-by: Matt Wilkinson <matt@rigel.build>
Review found the amendment did not carry its own ruling into the normative
text. The ledger-delta prose claimed DL-361 and DL-363 were amended in place
when the diff left both rows untouched, so the ledger asserted the pinned
tenant coordinate and D9's scope selector at once. Both clauses are now edited
and marked superseded in part, in the record table and DECISIONS.md alike.

A5's SetSecret and DeleteSecret bullets and the T5 task index still instructed
the tenant-pinned handler D9 replaces; an implementer reading them would have
built the wrong thing. The dependent DeleteSecret open question is resolved.

Corrects a wrong reassurance about existing rows: a re-set writes a new
user-scoped row and does NOT retire the tenant row, which keeps resolving for
every other user until an admin deletes it. A regression test pins that.

Restores three Global Constraints bullets an earlier edit in this branch
dropped by accident.

Refs RIG-3655

Co-authored-by: Matt Wilkinson <matt@rigel.build>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant