Skip to content

CAP-PFM-CSH-014Apply the workspace and person’s application access

Markdown

CAP-PFM-CSH-014

Apply the workspace and person’s application access

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

KindCapabilityProduct areaPlatformModuleConsole Shell and NavigationRevision2

Read atreact-console baf6dae3services-platform ad3f6a65

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Application availability and action authority remain separate.Unknown or restricted authority does not invent access.
Surfaces
console
Intent sources
services-platform:docs/proposals/application-access-and-entitlements.md#6.4 Console integration (built and accepted by Andrew 2026-10-15)services-platform:docs/licensing.md#9. How a licence reaches the permission check (Andrew, 2026-10-14)

Controls

24 controls apply, from the corpus control catalogue.

TC-AVL-001 TC-AVL-005 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-LOG-001 TC-LOG-004 TC-LOG-005 TC-MON-001 TC-MON-003 TC-PI-001 TC-PI-005 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-TEN-004 TC-VEN-001 TC-VEN-002 TC-VEN-003

Permissions

KeyChecked atScope
platform.security-self.readapitenant
platform.application.accessapitenant
crm.application.accessapitenant
console.accessconsoletenant
console.systemconsoletenant

Business Rules

11 rules, 10 to be proved before approval. A rule's product intent is derived from its origin: 0 confirmed by a product decision, the rest inheriting this capability's proposed.

IdRuleKindEnforced atProvenance
01must prove
Proposed
Only applications listed in the security context enable their mapped console domains, for staff and customer users alike.
origin: services-platform:docs/proposals/application-access-and-entitlements.md#6.4 Console integration, items 1 and 3 (built and accepted by Andrew 2026-10-15)
no proof recorded yet
policyconsoletest
react-console:lib/security-context/entitlements.test.ts#enables only the domains of the applications the context lists
02must prove
Proposed
Platform enables Configuration, Security, Maintenance, Tools and Eligibility; its Accounting, Commerce and Events keys map to their console names, and Publications, Advertising or Subscriptions can enable Publications.
no proof recorded yet
calculationconsoletest
react-console:lib/security-context/entitlements.test.ts#lets any of several applications switch a shared domain on
03must prove
Proposed
A staff wildcard permission grant cannot enable a domain absent from the listed applications.
origin: services-platform:docs/proposals/application-access-and-entitlements.md#6.4 Console integration, item 3 (built and accepted by Andrew 2026-10-15)
no proof recorded yet
permissionconsoletest
react-console:lib/security-context/entitlements.test.ts#gives a staff wildcard no domain the applications did not give
04must prove
Proposed
Allowed backend permissions grant their mapped console keys, including multiple console keys for one backend permission.
no proof recorded yet
calculationconsoletest
react-console:lib/authz/__tests__/authz.test.ts#maps aliases onto registry keys
05must prove
Proposed
A console domain with no backend aliases receives its item keys while enabled unless denied, and adding any alias makes its mapped authority decisive.
no proof recorded yet
calculationconsoletest
react-console:lib/security-context/entitlements.test.ts#grants a keyless domain's item keys when its application is enabled
06must prove
Proposed
At least one listed application supplies console access, staff identity supplies console system access, and an enabled domain supplies its domain access key subject to explicit denial.
no proof recorded yet
calculationconsoleobserved
07must prove
Proposed
In normalized console checks, explicit denies override grants, prefix wildcards cover descendant permissions and keys without covering authority fail.
no proof recorded yet
calculationconsoletest
react-console:lib/authz/__tests__/authz.test.ts#grants exact keys and prefix wildcards, and denies win
08must prove
Proposed
A permission request with unknown entitlements is refused.
no proof recorded yet
invariantconsoletest
react-console:lib/console/application-guard.test.ts#refuses a page that asks for something when there are no entitlements at all
09
Proposed
Feature values are copied from the context and do not independently enable application domains.
origin: services-platform:docs/proposals/application-access-and-entitlements.md#6.4 Console integration, item 5 (built and accepted by Andrew 2026-10-15)
policyconsoletest
react-console:lib/security-context/entitlements.test.ts#reads features from the context rather than granting them all
10must prove
Proposed
A scoped permission reveals its surface when no record is checked, permits only its named records when scope is checked, and does not narrow an existing workspace-wide grant.
no proof recorded yet
permissionconsoletest
react-console:lib/security-context/entitlements.test.ts#holds the key on that object and nowhere else
11must prove
Proposed
While deriving console permissions, a backend allowed key takes precedence over a contradictory stale deny rule and is not added to the derived denied set.
no proof recorded yet
calculationconsoletest
react-console:lib/authz/__tests__/backend-aliases.test.ts#lets allowed win over a stale deny rule, because allowed is the authority

Scenarios

IdGivenWhenThenProvenance
01A staff wildcard grant accompanies a context listing only CRM.The console derives its application domains.CRM is enabled and other unlisted applications remain disabled.test
react-console:lib/security-context/entitlements.test.ts#gives a staff wildcard no domain the applications did not give
02An enabled domain has no backend aliases but one item is explicitly denied.Console permissions are derived.The domain’s other keys are granted while the denied item remains refused.test
react-console:lib/security-context/entitlements.test.ts#lets a deny rule take one keyless key away

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.