name: permissions-capabilities description: Work on Luxury Yacht RBAC permission checks, capability descriptors, permission-denied diagnostics, object action availability, YAML/edit/delete/scale/restart gating, and capability tests
Permissions And Capabilities
Use this when touching backend RBAC checks, capability services, permission diagnostics, frontend capability hooks, object action availability, YAML/edit gating, delete/scale/restart/trigger/suspend actions, or restricted-RBAC tests.
Read First
AGENTS.mdbackend/AGENTS.mdfrontend/AGENTS.mddocs/architecture/permissions.mddocs/architecture/shared-resource-model.mdfor object identity and refsdocs/architecture/refresh-system.mdfor permission-denied domains and diagnostics
Backend Entry Points
backend/capabilitiesbackend/resource_permission.gobackend/refresh/permissions/resource_requirement.gobackend/refresh/snapshot/permission.gobackend/refresh/resourcestream/projection_descriptors.gofor stream permission resources (primary/related resources per descriptor)backend/refresh/system/registrations.gobackend/refresh/system/permission_gate.go- Backend operation/action services under
backend/resources,backend/object_yaml*.go,backend/portforward*.go, andbackend/shell_sessions.go
Frontend Entry Points
frontend/src/core/capabilitiesfrontend/src/core/capabilities/permissionFeatures.tsfrontend/src/shared/actions/objectActionPolicy.tsfrontend/src/modules/object-panel/components/ObjectPanel/hooks/useObjectPanelCapabilities.tsfrontend/src/modules/object-panel/components/ObjectPanel/constants.tsfrontend/src/shared/hooks/useObjectActions.tsxfrontend/src/shared/components/kubernetes/ActionsMenu.tsxfrontend/src/core/refresh/components/diagnostics/diagnosticsPanelConfig.ts
Checklist
- Capability descriptors include
clusterId, group, version, kind, namespace, and name when checking a concrete object. - Do not guess
resourcefrom kind; use the injected catalog-backedResourceResolverfor GVK/GVR/scope resolution. - Backend write/action paths check permission before mutating cluster state.
- Resource-stream permission contracts stay aligned with snapshot runtime permission requirements.
- Permission specs and diagnostics filters use stable
PERMISSION_FEATURESkeys, not display labels. - Frontend action availability mirrors backend capability rules and exposes denied/pending reasons.
- UI-visible mutating actions are represented in
resolveObjectActionPolicy/ObjectActionPolicy(frontend/src/shared/actions/objectActionPolicy.ts). Include derived action ids that reuse the same backend mutation, such as fixed-replica scale variants. - Permission-denied refresh domains remain visible in diagnostics.
- Restricted-RBAC behavior degrades visibly instead of silently hiding broken domains or actions.
- Tests cover allowed, denied, and resolution-error cases.
- Non-doc changes pass
mage qc:prerelease.
Validation
Use focused checks while iterating:
go test ./backend/capabilities ./backend/refresh/snapshot ./backend/refresh/system ./backend
npm run typecheck --prefix frontend
npm run test --prefix frontend -- capabilities ObjectPanel ActionsMenu diagnostics
Then run mage qc:prerelease for non-documentation changes.