Skip to content

CAP-PFM-CSH-016Refresh application choices when access changes

Markdown

CAP-PFM-CSH-016

Refresh application choices when access changes

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
Recognized application refusals trigger an updated answer.Failed or outdated refreshes do not replace the current workspace context.
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/proposals/application-access-and-entitlements.md#7.1 The person's applications (built and accepted by Andrew 2026-10-15)

Controls

19 controls apply, from the corpus control catalogue.

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

Permissions

KeyChecked atScope
platform.security-self.readapitenant

Business Rules

7 rules, 6 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
A forbidden request naming lost application permission or licensing prompts an application refresh and notifies each registered refusal listener once.
origin: services-platform:docs/proposals/application-access-and-entitlements.md#6.4 Console integration, item 4 (built and accepted by Andrew 2026-10-15)
no proof recorded yet
lifecycleconsoletest
react-console:e2e/mock/application-access.mock.spec.ts#brings the launcher up to date instead of leaving it offering what is gone
02must prove
Proposed
Other refusal statuses or codes do not notify application-refresh listeners.
no proof recorded yet
validationconsoletest
03must prove
Proposed
A visible tab regaining focus or visibility requests applications after at least five minutes since the last recorded read.
origin: services-platform:docs/proposals/application-access-and-entitlements.md#6.4 Console integration, item 4 (built and accepted by Andrew 2026-10-15)
no proof recorded yet
lifecycleconsoleobserved
04must prove
Proposed
Application refresh replaces applications and features while retaining roles, permission rules and reachable workspaces.
origin: services-platform:docs/proposals/application-access-and-entitlements.md#7.1 The person's applications (built and accepted by Andrew 2026-10-15)
no proof recorded yet
invariantconsoleobserved
05must prove
Proposed
Concurrent refresh calls reuse one request, and failures leave the existing application list without a separate error screen.
no proof recorded yet
lifecycleconsoleobserved
06must prove
Proposed
A refresh response is discarded when a workspace change supersedes the request.
no proof recorded yet
invariantconsoleobserved
07
Proposed
A context without a selected workspace performs no application refresh.
policyconsoleobserved

Scenarios

IdGivenWhenThenProvenance
01CRM is offered but a request is refused for lost application access.The refusal triggers a refresh.CRM leaves navigation while other offered applications remain.test
react-console:e2e/mock/application-access.mock.spec.ts#brings the launcher up to date instead of leaving it offering what is gone
02An application refresh is pending for the old workspace.The person enters another workspace before that answer arrives.The old result does not replace the new workspace’s application choices.observed

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.