Skip to content

CAP-PFM-CSH-006Find a destination in the application menu

Markdown

CAP-PFM-CSH-006

Find a destination in the application menu

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationPartially observed

KindCapabilityProduct areaPlatformModuleConsole Shell and NavigationRevision3

Read atdocs-2 fb280683react-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
Staff browse a stable application and tool structure.Menu state helps staff locate their current work.
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)react-console:docs/url-architecture.md#5. lib/routes (decided by Andrew 2026-10-14; final acceptance 2026-10-15)docs-2:.forge/context/RS-20/planning.changeset.json#revision 2; finalized.approval (Andrew Ryan, 2026-10-23T01:23:36.443Z; approvalId 846d23adfdaddf891729e33fee72850a4c1d588517d40f29a4a78d264262ae53)

Controls

20 controls apply, from the corpus control catalogue.

TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-CRY-001 TC-CRY-002 TC-CRY-003 TC-CRY-004 TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-PI-001 TC-PI-005 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-VEN-001 TC-VEN-002 TC-VEN-003

Permissions

KeyChecked atScope
console.accessconsoletenant
tools.tasks.viewconsoletenant
tools.queries.viewconsoletenant
tools.reports.viewconsoletenant
platform.security-self.readapitenant

Business Rules

13 rules, 7 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
01
Proposed
The main menu presents application sections in registry order, then Websites, with Tasks, Queries and Reports & Dashboards grouped as Tools.
policyconsoleobserved
react-console:components/console/nav-config.ts:primaryNav, toolLinks, applicationLinks
02must prove
Proposed
A section with an application domain appears only when that domain is enabled, retains only permitted entries and disappears when no entries remain.
origin: services-platform:docs/proposals/application-access-and-entitlements.md#6.4 Console integration, item 1 (built and accepted by Andrew 2026-10-15)
no proof recorded yet
permissionconsoletest
react-console:lib/console/__tests__/registries.test.ts#hides domains the user cannot access and keeps what they can
03must prove
Proposed
Links and tools with a permission require it, while links without a permission remain visible to signed-in users.
no proof recorded yet
permissionconsoletest
react-console:lib/console/__tests__/registries.test.ts#filters tool and settings links by permission
04must prove
Proposed
The static primary navigation retains an application section only when at least one registered destination is implemented.
no proof recorded yet
policyconsoleobserved
react-console:components/console/nav-config.ts:primaryNav, hasBuiltItem
05
Proposed
A visible application section retains its planned entries, whose destinations display placeholders.
policyconsoleobserved
06must prove
Proposed
Outside filtering, opening a section closes the others and the current page’s section opens automatically, including after delayed custom navigation arrives; filtering opens all matching sections.
no proof recorded yet
lifecycleconsoleobserved
07must prove
Proposed
Navigation highlights the current entry and descendants unless exact matching is requested, and highlights its containing section in collapsed mode.
origin: react-console:docs/url-architecture.md#5. lib/routes (decided by Andrew 2026-10-14; final acceptance 2026-10-15)
no proof recorded yet
calculationconsoleobserved
08
Proposed
Choosing a collapsed section expands navigation and opens that section.
lifecycleconsoleobserved
09must prove
Proposed
The filter matches trimmed text without case sensitivity, keeps all entries of a matching section title, expands retained sections and highlights the first matching text.
no proof recorded yet
calculationconsoleobserved
react-console:components/console/app-sidebar.tsx:filterSections, Highlight
10
Proposed
Escape and the clear control reset the filter, and an empty result displays a message containing the entered text.
validationconsoleobserved
react-console:components/console/app-sidebar.tsx:SidebarFilter, NoMatches
11
Proposed
Websites has neither an application nor a permission check in this menu and relies on its owning service for authority.
permissionconsoleobserved
12
Proposed
The flattened menu retains the first occurrence of a repeated destination for placeholder lookup and page naming.
invariantconsoleobserved
13must prove
Proposed
In workspace application navigation, Accounting sits immediately after CRM in the application registry, while every other registry entry retains its relative order from before the move.
origin: RS-20
no proof recorded yet
policyconsoledocumented

Scenarios

IdGivenWhenThenProvenance
01The current workspace does not offer Membership.The person inspects the main navigation.The Membership section is absent.test
react-console:e2e/mock/application-access.mock.spec.ts#an application the organization does not have is absent from the sidebar
02The administrator opens Regions in Configuration.The page finishes loading.The sidebar and breadcrumb represent Configuration, CRM and Regions.test
react-console:e2e/mock/url-architecture.mock.spec.ts#Configuration › CRM › Regions loads with its place in the sidebar and the breadcrumb
03The current page belongs to a section that is initially closed.Navigation evaluates the page location.Its containing section opens.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.