---
id: ATS-PFM-CSH-001
scope: CAP-PFM-CSH-001
product_area: platform
module: console-shell
revision: 2
status: proposed
approved_by: null
approved_at: null
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
scenarios:
  - id: ATS-PFM-CSH-001-01
    title: Access resolves before the working frame appears
    level: browser
    proves:
      - BR-CAP-PFM-CSH-001-03
      - AS-JNY-PFM-CSH-001-01
    preconditions: A signed-in console user starts with a fresh browser.
    steps: 'Observe the initial page and requests, then reload.'
    expected: >-
      The security context is requested first; the working header, menu and page wait for its
      answer.
    negative: false
    data_needs: A development account with console access.
    bound_to:
      - >-
        react-console:e2e/dev/initialisation.dev.spec.ts#asks the Platform exactly one thing first,
        and shows nothing until it is answered
      - >-
        react-console:e2e/dev/initialisation.dev.spec.ts#asks again on a reload, still before
        anything else
    provenance: test
    source: >-
      react-console:e2e/dev/initialisation.dev.spec.ts#asks the Platform exactly one thing first,
      and shows nothing until it is answered
  - id: ATS-PFM-CSH-001-02
    title: Retry recovers from an initial access-request failure
    level: browser
    proves:
      - BR-CAP-PFM-CSH-001-04
    preconditions: The first context request fails and the next can succeed.
    steps: Start the console and select Try Again.
    expected: The separate failure view offers retry and sign-out; a successful retry opens the console.
    negative: true
    data_needs: A controlled failed response followed by a valid answer.
    bound_to: []
    provenance: proposed
    source: 'react-console:components/console/console-boot-screens.tsx:consoleBootScreens'
  - id: ATS-PFM-CSH-001-03
    title: Refused access and missing setup have distinct explanations
    level: unit
    proves:
      - BR-CAP-PFM-CSH-001-04
    preconditions: One session has no effective access; another build lacks required settings.
    steps: Render the two start-up conditions.
    expected: >-
      The access refusal identifies the account and offers sign-out; the setup view identifies
      missing settings.
    negative: true
    data_needs: Refused access and incomplete configuration inputs.
    bound_to: []
    provenance: proposed
    source: 'react-console:components/console/console-boot-screens.tsx:consoleBootScreens'
  - id: ATS-PFM-CSH-001-04
    title: A fallback workspace has a dismissible explanation
    level: browser
    proves:
      - BR-CAP-PFM-CSH-001-05
    preconditions: The remembered workspace has become unavailable.
    steps: 'Open Rhythm, inspect the context notice and dismiss it.'
    expected: >-
      The notice explains the changed starting context and disappears when dismissed while the
      console remains usable.
    negative: false
    data_needs: A controlled refusal for the remembered workspace.
    bound_to:
      - >-
        react-console:e2e/controlled/tenant-unavailable.controlled.spec.ts#falls back to the default
        tenant, with a word of explanation, rather than refusing access
    provenance: test
    source: >-
      react-console:e2e/controlled/tenant-unavailable.controlled.spec.ts#falls back to the default
      tenant, with a word of explanation, rather than refusing access
  - id: ATS-PFM-CSH-001-05
    title: Sample amounts use the fixed conversion and rounding policy
    level: unit
    proves:
      - BR-CAP-PFM-CSH-001-07
    preconditions: Canadian dollars are selected for sample display.
    steps: Convert an amount from the base and back; format regular and compact values.
    expected: >-
      Conversion uses the fixed rate and cent rounding; display uses the specified ordinary and
      compact precision.
    negative: false
    data_needs: Amounts on either side of a rounding boundary.
    bound_to: []
    provenance: proposed
    source: 'react-console:components/console/console-provider.tsx:useMoney'
evidence:
  - >-
    react-console at baf6dae: app/(console)/layout.tsx,
    components/console/{console-shell,site-header,console-boot-screens,console-provider}.tsx,
    lib/auth/messages.ts, docs/migration/02-information-architecture.md §1.
  - >-
    services-platform at ad3f6a6: modules/security/aws/api/access.routes.ts (getMySecurityContext,
    getMySecurityContextInTenant: the answer the frame waits for; MOD-PFM-SEC).
---

# Use a consistent console frame — acceptance

## Coverage

The table separates scenarios with test bindings from proposed proof. A binding records a static examination of the test; it does not record a passing product test run.

| Rule | Acceptance scenario |
|---|---|
| `BR-CAP-PFM-CSH-001-03` | `ATS-PFM-CSH-001-01` (bound) |
| `BR-CAP-PFM-CSH-001-04` | `ATS-PFM-CSH-001-02` (proposed), `ATS-PFM-CSH-001-03` (proposed) |
| `BR-CAP-PFM-CSH-001-05` | `ATS-PFM-CSH-001-04` (bound) |
| `BR-CAP-PFM-CSH-001-07` | `ATS-PFM-CSH-001-05` (proposed) |
