docs(guides): add Roles & Permissions guide [PLT-2039]#1096
Draft
pmdroid wants to merge 1 commit into
Draft
Conversation
Document the three built-in operator roles (Org Admin, Project Admin, Project Member) and the full organization- and project-level permissions matrix, derived from the authorization model and the built-in role catalog. Also adds a changelog entry announcing RBAC general availability.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a customer-facing Roles & Permissions guide documenting the three built-in operator roles and the full permissions matrix.
Closes part of PLT-2039.
What's here
app/en/guides/roles-permissions/page.mdxapp/en/guides/_meta.tsxapp/en/references/changelog/page.mdx2026-07-24Where the matrix comes from
Every cell was derived from the implementation, not from the dashboard UI:
apps/coordinator/arcade/authz/model.fga— the authorization model (which relations resolve tocoveredvsadmin)apps/coordinator/arcade/app/admin/services/rbac_catalog.py— the built-in role catalog and the Project Member bundleCorrections made against the internal draft this started from:
members_readiscovered(Project Member can see it);invitations_readisadmin-only. The draft granted Members a View on both.deployments_create/update/delete); the draft's role card said so but the matrix had no row.executions_read: admin). Missing entirely, and it is the privacy-sensitive one — past calls with their inputs and outputs.model.fga:67-81); the draft mentioned this in prose but omitted the rows.readanddeleterelations exist, for every role.Also added a callout that a Project Member can read secrets and run any tool — a trusted builder role, not a read-only one.
Verification
vale app/en/guides/roles-permissions/page.mdx— 0 errorspnpm test— 767/767 passing (includes internal + broken link checks)_meta.tsxkey validation passed, Ultracite applied no fixesTwo things reviewers should know
1. The changelog entry is gated on the rollout, not on this PR. PLT-2038 — flipping
operator-authzON across all existing production orgs — is still in Backlog. Merging the GA announcement before that lands would advertise something most orgs do not have yet. The guide page itself is safe to ship independently; happy to split the changelog into its own PR if that is cleaner.2. User Sources needed a code fix to match what this page documents. The
user_sources_*relations existed inmodel.fgabut were absent from the permission enums, the AuthZEN wire map, the role catalog, and the router gating — so that API was governed only by legacy project membership and ignored the role matrix. Fixed in a separate monorepo branch (pascal/plt-2039-user-sources-rbac), which also adds a reverse model-to-enum boot assertion so a dead model relation cannot go unnoticed again. This page's User Sources row describes the post-fix behavior, so that change should land before this page is published.🐕 Written by Kyoto, an AI agent, on Pascal's behalf —