Skip to content

CAP-PFM-CSH-010Enter the workspace named by a link

Markdown

CAP-PFM-CSH-010

Enter the workspace named by a link

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
Destination pages use the workspace named by the address.Refusals distinguish missing, inaccessible and unavailable workspaces.
Surfaces
console
Intent sources
react-console:docs/url-architecture.md#2.2 The context of the URL's tenant (decided by Andrew 2026-10-14; final acceptance 2026-10-15)react-console:docs/url-architecture.md#6. Tenant from the URL (decided by Andrew 2026-10-14; final acceptance 2026-10-15)

Controls

22 controls apply, from the corpus control catalogue.

TC-AVL-001 TC-AVL-004 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-001 TC-PI-001 TC-PI-002 TC-PI-004 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

10 rules, 8 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
Workspace content waits until the access context matches the address workspace exactly, and an answer naming a different workspace fails entry.
origin: react-console:docs/url-architecture.md#2.2 The context of the URL's tenant (decided by Andrew 2026-10-14; final acceptance 2026-10-15)
invariantconsoledocumented
react-console:docs/url-architecture.md#2.2 The context of the URL's tenant
02must prove
Proposed
An unknown workspace identifier produces the workspace not-found presentation.
origin: react-console:docs/url-architecture.md#6. Tenant from the URL (decided by Andrew 2026-10-14; final acceptance 2026-10-15)
validationconsoletest
react-console:e2e/mock/url-architecture.mock.spec.ts#an id no tenant has shows not found
03must prove
Proposed
A non-staff person who cannot reach the named workspace remains on the access-denied presentation.
origin: react-console:docs/url-architecture.md#6. Tenant from the URL (decided by Andrew 2026-10-14; final acceptance 2026-10-15)
permissionconsoletest
react-console:components/console/__tests__/tenant-id-gate.test.tsx#leaves anyone else on the access-denied page
04must prove
Proposed
A denied destination links back to the current workspace, otherwise the first other reachable workspace, and offers no return workspace when none is available.
origin: react-console:docs/url-architecture.md#6. Tenant from the URL (DEF-CRM-0545) (decided by Andrew 2026-10-14; final acceptance 2026-10-15)
calculationconsoletest
react-console:components/console/__tests__/tenant-id-gate.test.tsx#leads to another tenant they can reach when they are in none, never the refused one
05must prove
Proposed
An out-of-service workspace uses the unavailable presentation, offering HQ to staff or another reachable workspace to other users.
validationconsoletest
react-console:components/console/__tests__/tenant-id-gate.test.tsx#says the workspace is unavailable, never no access, with the way back for staff
06
Proposed
The gate retains its last refusal for ten seconds across remounts and can request access again on a later visit.
lifecycleconsoleobserved
07
Proposed
Immediately after leaving for HQ, entry to the workspace just left waits six seconds before retrying if its address remains active.
lifecycleconsoleobserved
08must prove
Proposed
An entry failure outside the recognized refusal cases displays the failure message.
validationconsoleobserved
09must prove
Proposed
A fresh direct load reuses the boot request’s answer for the address workspace rather than issuing a second gate request.
origin: react-console:docs/url-architecture.md#6. Tenant from the URL (decided by Andrew 2026-10-14; final acceptance 2026-10-15)
policyconsoleobserved
react-console:lib/security-context/provider.tsx:pendingUrlAnswer, openTenantId
10must prove
Proposed
The gate decodes the workspace identifier and compares its lowercase value.
validationconsoleobserved

Scenarios

IdGivenWhenThenProvenance
01The address names an unknown workspace.Workspace entry is attempted.The gate displays not found.test
react-console:e2e/mock/url-architecture.mock.spec.ts#an id no tenant has shows not found
02A customer user cannot reach the requested workspace but can reach another.The gate evaluates the refusal.Access is denied with a return route to the reachable workspace.observed
react-console:components/console/tenant-id-gate.tsx:TenantIdGate, deniedReturnTenant
03The destination workspace is out of service.Entry is attempted.The gate explains unavailability rather than missing authority.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.