---
id: FAS-PFM-CSH-04
title: Application access in the console acceptance
feature: FEAT-PFM-CSH-04
product_area: platform
module: console-shell
revision: 1
status: proposed
product_intent: proposed
source_sha:
  rhythm-v2-docs: 25e253cb434aac6603ee294e3ca197ab6c4bfd0b
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
capabilities:
  - CAP-PFM-CSH-014
  - CAP-PFM-CSH-015
  - CAP-PFM-CSH-016
  - CAP-PFM-CSH-017
scenarios:
  - id: FAS-PFM-CSH-04-01
    title: An unavailable destination leads to an understandable overview
    kind: behaviour
    exercises:
      - CAP-PFM-CSH-014
      - CAP-PFM-CSH-015
      - CAP-PFM-CSH-017
    relies_on:
      - ATS-PFM-CSH-015-04
      - ATS-PFM-CSH-015-07
      - ATS-PFM-CSH-017-03
    preconditions: >-
      An association administrator can view Applications while Membership is
      unavailable.
    steps: >-
      Open Members directly, follow View Applications and inspect the Membership
      row.
    expected: >-
      The blocked page explains application unavailability; the overview
      identifies the organization’s state without presenting the destination as
      authorized.
    negative: false
    data_needs: >-
      An isolated browser context and run-owned association fixtures;
      deterministic authority, response and clock variants where specified.
    bound_to: []
    test_sources: []
    provenance: proposed
    source: >-
      rhythm-v2-docs:specs/platform/console-shell/planning/features/FEAT-PFM-CSH-04-applications-in-the-console.md
    action_evidence:
      provenance: proposed
      source: >-
        rhythm-v2-docs:specs/platform/console-shell/planning/features/FEAT-PFM-CSH-04-applications-in-the-console.md
    assertion_evidence:
      provenance: proposed
      source: >-
        rhythm-v2-docs:specs/platform/console-shell/planning/features/FEAT-PFM-CSH-04-applications-in-the-console.md
  - id: FAS-PFM-CSH-04-02
    title: A coded refusal corrects the existing launcher
    kind: interaction
    exercises:
      - CAP-PFM-CSH-014
      - CAP-PFM-CSH-016
    relies_on:
      - ATS-PFM-CSH-016-01
      - ATS-PFM-CSH-014-06
    preconditions: >-
      CRM and Membership are offered; CRM is then withdrawn in the mock
      authority response.
    steps: >-
      Trigger the application refusal by navigating to Tasks without reloading
      the browser.
    expected: >-
      CRM leaves the sidebar and Membership remains after the application
      refresh.
    negative: false
    data_needs: >-
      An isolated browser context and run-owned association fixtures;
      deterministic authority, response and clock variants where specified.
    bound_to:
      - TST-PFM-CSH-011
    test_sources:
      - >-
        react-console:e2e/mock/application-access.mock.spec.ts#brings the
        launcher up to date instead of leaving it offering what is gone
    provenance: test
    source: >-
      react-console:e2e/mock/application-access.mock.spec.ts#brings the launcher
      up to date instead of leaving it offering what is gone
    action_evidence:
      provenance: test
      source: >-
        react-console:e2e/mock/application-access.mock.spec.ts#brings the
        launcher up to date instead of leaving it offering what is gone
    assertion_evidence:
      provenance: test
      source: >-
        react-console:e2e/mock/application-access.mock.spec.ts#brings the
        launcher up to date instead of leaving it offering what is gone
  - id: FAS-PFM-CSH-04-03
    title: A returning tab replaces applications without replacing other authority
    kind: lifecycle
    exercises:
      - CAP-PFM-CSH-014
      - CAP-PFM-CSH-016
    relies_on:
      - ATS-PFM-CSH-016-03
      - ATS-PFM-CSH-016-05
      - ATS-PFM-CSH-016-08
    preconditions: >-
      The tab has an aged list and a subsequent context answer changes
      applications, features, rules and roles.
    steps: >-
      Return the visible tab at the refresh threshold and inspect the installed
      context and menu.
    expected: >-
      Applications and features change; the previous roles, rules and reachable
      workspaces remain, with the documented full-context refresh disagreement
      still open.
    negative: false
    data_needs: >-
      An isolated browser context and run-owned association fixtures;
      deterministic authority, response and clock variants where specified.
    bound_to: []
    test_sources: []
    provenance: proposed
    source: >-
      rhythm-v2-docs:specs/platform/console-shell/planning/features/FEAT-PFM-CSH-04-applications-in-the-console.md
    action_evidence:
      provenance: proposed
      source: >-
        rhythm-v2-docs:specs/platform/console-shell/planning/features/FEAT-PFM-CSH-04-applications-in-the-console.md
    assertion_evidence:
      provenance: proposed
      source: >-
        rhythm-v2-docs:specs/platform/console-shell/planning/features/FEAT-PFM-CSH-04-applications-in-the-console.md
  - id: FAS-PFM-CSH-04-04
    title: Product availability and task grants remain separate
    kind: permission
    exercises:
      - CAP-PFM-CSH-014
      - CAP-PFM-CSH-015
      - CAP-PFM-CSH-017
    relies_on:
      - ATS-PFM-CSH-014-05
      - ATS-PFM-CSH-015-01
      - ATS-PFM-CSH-015-02
      - ATS-PFM-CSH-017-12
    preconditions: >-
      Fixtures vary enabled CRM, contact-view authority and overview-view
      authority independently.
    steps: Visit the contact destination and Applications overview in each fixture.
    expected: >-
      Application absence wins over task denial; an enabled but unauthorized
      task is refused, and the overview requires its own view authority.
    negative: true
    data_needs: >-
      An isolated browser context and run-owned association fixtures;
      deterministic authority, response and clock variants where specified.
    bound_to: []
    test_sources: []
    provenance: proposed
    source: >-
      rhythm-v2-docs:specs/platform/console-shell/planning/features/FEAT-PFM-CSH-04-applications-in-the-console.md
    action_evidence:
      provenance: proposed
      source: >-
        rhythm-v2-docs:specs/platform/console-shell/planning/features/FEAT-PFM-CSH-04-applications-in-the-console.md
    assertion_evidence:
      provenance: proposed
      source: >-
        rhythm-v2-docs:specs/platform/console-shell/planning/features/FEAT-PFM-CSH-04-applications-in-the-console.md
  - id: FAS-PFM-CSH-04-05
    title: Customer application facts exclude staff commercial detail
    kind: regression
    exercises:
      - CAP-PFM-CSH-017
    relies_on:
      - ATS-PFM-CSH-017-11
    preconditions: >-
      A permitted customer administrator reads fixtures with grant, withholding
      and suspension.
    steps: Read the administrator application API after each fixture is established.
    expected: >-
      The answer retains readable application facts while excluding overrides,
      staff identities and staff-authored commercial reasons; withholding is
      reported as unlicensed.
    negative: false
    data_needs: >-
      An isolated browser context and run-owned association fixtures;
      deterministic authority, response and clock variants where specified.
    bound_to:
      - TST-PFM-CSH-035
    test_sources:
      - >-
        services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#answers
        each application with its key, name, licence state and dates, operation
        state and availability
      - >-
        services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#carries
        no override at all, which is where every commercial detail would be
      - >-
        services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#names
        nobody: not the staff member who decided, nor anyone who changed a state
      - >-
        services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#says
        a withheld application is simply not licensed, never that Rhythm
        withheld it
      - >-
        services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#says
        a suspended application is unavailable without saying why Rhythm stopped
        it
    provenance: test
    source: >-
      services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#answers
      each application with its key, name, licence state and dates, operation
      state and availability
    action_evidence:
      provenance: test
      source: >-
        services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#answers
        each application with its key, name, licence state and dates, operation
        state and availability
    assertion_evidence:
      provenance: test
      source: >-
        services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#answers
        each application with its key, name, licence state and dates, operation
        state and availability
evidence:
  - >-
    rhythm-v2-docs:specs/platform/console-shell/planning/features/FEAT-PFM-CSH-04-applications-in-the-console.md
  - >-
    rhythm-v2-docs:specs/platform/console-shell/design/tests/ATS-PFM-CSH-014-offer-exactly-the-applications-the-workspace-and-the-person.md
  - >-
    rhythm-v2-docs:specs/platform/console-shell/design/tests/ATS-PFM-CSH-015-say-plainly-when-a-page-belongs-to-an-application-the.md
  - >-
    rhythm-v2-docs:specs/platform/console-shell/design/tests/ATS-PFM-CSH-016-keep-the-menu-current-when-what-a-person-may-open-changes.md
  - >-
    rhythm-v2-docs:specs/platform/console-shell/design/tests/ATS-PFM-CSH-017-see-which-applications-the-organization-has-and-why-one-is.md
---

# Application access in the console acceptance

## What the Feature Must Do as a Whole

This suite connects context-derived application authority, destination refusal, refreshed menu choices and the administrator’s overview. It examines a change during an existing session as well as fresh entry. The cases distinguish organization availability from a person’s task authority so the launcher and explanations can be judged together.

The five scenario kinds are cumulative. Proposed cases remain executable work to assign; bound cases name the exact assertions reviewed and record no passing product run.

## Interactions Between Capabilities

A coded service refusal can update offered applications while retaining the other access snapshots. Product absence takes precedence over task denial, and the overview has its own guard. Customer response redaction is an API assertion; it does not prove every browser explanation or a full refresh of withdrawn roles.

## Regression Record

| Revision | Change | Scenarios | Reason |
|---|---|---|---|
| 1 | initial | all | Establish cumulative acceptance from the pinned capability contracts and existing executable evidence. |
