---
id: CON-PFM-CSH-004
name: Application
feature: FEAT-PFM-CSH-04
product_area: platform
module: console-shell
revision: 2
status: draft
product_intent: proposed
implementation_evidence: partially-observed
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
definition: >-
  An application is a Rhythm product whose availability and personal access determine whether its
  work is offered in the console. Individual tasks within it can require additional authority.
owned_by: MOD-PFM-CSH
synonyms:
  - Rhythm application
  - product application
not_to_be_confused_with:
  - The licence and operational records used to decide availability
  - A customer-defined application grouping in metadata
  - A permission governing a particular task
facets:
  - name: Application key and console sections
    meaning: A shared mapping associates a product application with the sections the console presents.
    used_for: Connecting Platform application answers with console presentation.
  - name: Available to the workspace
    meaning: >-
      Availability expresses whether the workspace can use the product under the applicable
      commercial and operational decisions.
    used_for: Distinguishing an unavailable product from a personal permission refusal.
  - name: Opened by the person
    meaning: >-
      Personal application access determines whether the product is offered to this person in the
      workspace.
    used_for: Supporting different responsibilities within one organization.
  - name: Always-available applications
    meaning: >-
      Some applications have a licence-exempt baseline, while operational withholding remains a
      distinct consideration.
    used_for: Separating licence requirements from operational availability.
  - name: Applications not yet built
    meaning: >-
      A domain without backend permission aliases uses synthetic console permissions when enabled,
      subject to explicit denies.
    used_for: Supporting console work before all service permission mappings exist.
  - name: Application unavailable page
    meaning: A page-level explanation represents product unavailability.
    used_for: Explaining why a direct destination cannot open.
  - name: Applications page
    meaning: A read-only administrative view explains the workspace’s product availability.
    used_for: Helping administrators understand what the organization can use.
  - name: Refresh after a refusal
    meaning: >-
      Application answers can be refreshed when a request reveals that the current answer has become
      stale.
    used_for: Keeping the menu and access presentation current.
relationships:
  - to: CON-PFM-CSH-002
    statement: Enabled applications contribute to the navigation sections a person is offered.
    provenance: observed
    source: 'react-console:lib/console/use-visible-nav.ts:visibleSections'
  - to: CON-PFM-CSH-003
    statement: An address associates a destination with its application domain.
    provenance: observed
    source: 'react-console:lib/console/domains.ts:findDomainByPath'
  - to: CON-PFM-CSH-001
    statement: The common frame hosts the application check around page content.
    provenance: observed
    source: 'react-console:components/console/console-shell.tsx:ConsoleShell'
lifecycle:
  - state: available
    meaning: >-
      Workspace availability and personal application access permit the product to be offered; task
      permissions still apply.
    how_it_changes: Commercial or operational decisions and personal access changes can alter the answer.
  - state: unavailable
    meaning: The combined application answer does not permit this product to be offered to the person.
    how_it_changes: A change in workspace availability or personal application access can restore it.
acted_on_by:
  - CAP-PFM-CSH-014
  - CAP-PFM-CSH-015
  - CAP-PFM-CSH-016
  - CAP-PFM-CSH-017
visible_to:
  - ACT-PFM-001
  - ACT-PFM-002
  - ACT-PFM-004
  - ACT-PFM-006
evidence:
  - >-
    react-console at baf6dae: lib/security-context/{entitlements,application-refusal,provider}.ts*,
    lib/console/{application-guard,domains}.ts, lib/authz/{guard.tsx,evaluate.ts},
    components/console/{application-route-gate,application-unavailable}.tsx,
    components/configuration/applications/**, lib/applications/**,
    e2e/mock/application-access.mock.spec.ts, e2e/dev/hq-licensing.dev.spec.ts.
  - >-
    services-platform at ad3f6a6: docs/proposals/application-access-and-entitlements.md (built and
    accepted by Andrew 2026-10-15; §6.4, §7, §10.1), docs/security/application-access.md,
    docs/licensing.md §2 and §9, modules/security/aws/api/access.routes.ts,
    modules/tenants/aws/api/tenant-applications.routes.ts,
    modules/licensing/db/{applications,tenant-applications}.table.ts.
supersedes: []
---

# Application

## What It Is

An application is a Rhythm product that an organization may use, such as CRM, Membership or Accounting. In the console it is also a boundary around groups of work. Product availability and personal application access determine whether that work is offered, while individual destinations can still require their own permissions.

Two different questions contribute to the application answer. Workspace availability concerns the organization's commercial and operational position. Personal application access concerns the signed-in person's role in that workspace. Keeping these questions distinct allows the console to explain a product that is unavailable without suggesting that an ordinary permission grant would make it available.

## What It Is Not

An application is not a licence record. Contracts, overrides and the decision that combines them belong to Operations. The console consumes the resulting answer. A customer-defined custom application is also different: it groups the organization's own record types and is defined by metadata.

Application access does not describe every action inside the product. A person may be able to enter an application while lacking authority to read a particular resource or change a record. Conversely, having a resource permission does not establish that the workspace may use the product at all.

## How It Is Used

Most people experience applications through the work offered in their menu. Administrators also need an explanatory view of the organization's products, especially when a colleague's link reaches work that cannot open. Rhythm staff manage commercial and operational decisions elsewhere and expect the customer console to reflect the resulting availability.

A useful explanation separates product availability from personal authority. It also recognizes that an answer can change during a session. A request refusal can reveal that the console's existing application list is stale, so refreshing that list is part of maintaining an understandable working experience. Refreshing application presentation does not itself grant new authority to data.

## Its Facets

**Product identity and presentation.** An application key connects Platform's answer with console sections. One product can support several sections, and a shared section can reflect more than one product.

**Workspace and personal access.** Availability concerns the workspace; application access concerns the person. Licence exemptions are a baseline within availability, distinct from operational withholding. Individual permissions remain relevant after these application checks.

**Incomplete service integration.** Some console domains do not yet have backend permission aliases. Their synthetic console permissions support the current product structure, but this interim arrangement needs explicit limits and should not be confused with completed service enforcement.

**Explanation and freshness.** The unavailable page addresses a direct destination that cannot open. The Applications page gives administrators a broader explanation. Refresh connects those presentations with an application answer that may change while the console remains open.

## How It Relates

Applications influence navigation and the page-level checks associated with console addresses. Security owns the context that combines personal authority with workspace application answers. Operations owns the commercial and operational records used to calculate availability. Metadata owns custom groupings of customer-defined records.

This division keeps the console from becoming a second licensing authority. The console explains and presents the answer while services retain responsibility for enforcing access when work is requested.

## What It Could Become

The product should complete the agreed renewal-warning experience and decide where administrators encounter it during ordinary work. The product should give unavailable destinations an explanation consistent with the administrative availability view. Feature-level application settings are carried in context but need a product decision before they control additional console experiences.
