---
id: ATS-PFM-CSH-002
scope: CAP-PFM-CSH-002
product_area: platform
module: console-shell
revision: 3
status: proposed
approved_by: null
approved_at: null
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  rhythm-v2-docs: 25e253cb434aac6603ee294e3ca197ab6c4bfd0b
scenarios:
  - id: ATS-PFM-CSH-002-01
    title: Rendered layouts distinguish full and standard width
    level: unit
    proves:
      - BR-CAP-PFM-CSH-002-01
    preconditions: Two layout fixtures use the default and standard width choices.
    steps: Render both fixtures and inspect their outer and inner containers.
    expected: >-
      Default width fills the workspace; standard width centers a capped inner
      column.
    negative: false
    data_needs: Independent fixture inputs for the variants listed in this case.
    bound_to:
      - TST-PFM-CSH-002
    provenance: test
    source: >-
      react-console:components/console/__tests__/page-layout.test.tsx#fills the
      workspace when no width is given
    category: invariant
    test_sources:
      - >-
        react-console:components/console/__tests__/page-layout.test.tsx#fills
        the workspace when no width is given
      - >-
        react-console:components/console/__tests__/page-layout.test.tsx#centers
        a standard page in a capped inner column, with the page's classes on
        that column
    action_evidence:
      provenance: test
      source: >-
        react-console:components/console/__tests__/page-layout.test.tsx#fills
        the workspace when no width is given
    assertion_evidence:
      provenance: test
      source: >-
        react-console:components/console/__tests__/page-layout.test.tsx#fills
        the workspace when no width is given
  - id: ATS-PFM-CSH-002-02
    title: Enumerated screens declare the expected page width
    level: unit
    proves:
      - BR-CAP-PFM-CSH-002-03
    preconditions: >-
      Source fixtures include the specified configuration lists, Tasks and field
      editor.
    steps: Inspect each screen’s root layout declaration.
    expected: >-
      The enumerated lists select standard width; Tasks and the field editor
      retain full width.
    negative: false
    data_needs: Independent fixture inputs for the variants listed in this case.
    bound_to:
      - TST-PFM-CSH-001
    provenance: test
    source: >-
      react-console:components/console/__tests__/page-layout-adoption.test.ts#configuration
      lists render at the standard width
    category: rule
    test_sources:
      - >-
        react-console:components/console/__tests__/page-layout-adoption.test.ts#configuration
        lists render at the standard width
      - >-
        react-console:components/console/__tests__/page-layout-adoption.test.ts#the
        Tasks screen renders at the full width
      - >-
        react-console:components/console/__tests__/page-layout-adoption.test.ts#the
        field editor renders at the full width
    action_evidence:
      provenance: test
      source: >-
        react-console:components/console/__tests__/page-layout-adoption.test.ts#configuration
        lists render at the standard width
    assertion_evidence:
      provenance: test
      source: >-
        react-console:components/console/__tests__/page-layout-adoption.test.ts#configuration
        lists render at the standard width
  - id: ATS-PFM-CSH-002-03
    title: Leaving the designer restores an expanded arrival state
    level: browser
    proves:
      - BR-CAP-PFM-CSH-002-05
    preconditions: Desktop navigation is expanded before the designer opens.
    steps: Open the contact form designer and then leave for the contacts list.
    expected: >-
      The designer collapses navigation while open; departure restores
      expansion.
    negative: false
    data_needs: >-
      An isolated browser context with the stated identity, workspace and
      response fixtures.
    bound_to: []
    provenance: proposed
    source: 'react-console:docs/page-layouts.md#Pages that collapse the sidebar'
    category: transition
    test_sources: []
    action_evidence:
      provenance: proposed
      source: 'react-console:docs/page-layouts.md#Pages that collapse the sidebar'
    assertion_evidence:
      provenance: proposed
      source: 'react-console:docs/page-layouts.md#Pages that collapse the sidebar'
  - id: ATS-PFM-CSH-002-04
    title: Folding adds usable space and retains centering
    level: browser
    proves:
      - BR-CAP-PFM-CSH-002-06
    preconditions: 'Standard and full-width pages are opened at a 1,920-pixel viewport.'
    steps: >-
      Use the button fold cases and the separate keyboard fold case; measure the
      remaining workspace.
    expected: >-
      The standard page stays centered and full-width content fills the enlarged
      workspace.
    negative: false
    data_needs: >-
      An isolated browser context with the stated identity, workspace and
      response fixtures.
    bound_to:
      - TST-PFM-CSH-010
    provenance: test
    source: >-
      react-console:e2e/layout/page-layouts.spec.ts#contact types stays standard
      and centred
    category: boundary
    test_sources:
      - >-
        react-console:e2e/layout/page-layouts.spec.ts#contact types stays
        standard and centred
      - 'react-console:e2e/layout/page-layouts.spec.ts#sidebar collapsed at 1920'
      - >-
        react-console:e2e/layout/page-layouts.spec.ts#the keyboard shortcut
        collapses it too
    action_evidence:
      provenance: test
      source: >-
        react-console:e2e/layout/page-layouts.spec.ts#contact types stays
        standard and centred
    assertion_evidence:
      provenance: test
      source: >-
        react-console:e2e/layout/page-layouts.spec.ts#contact types stays
        standard and centred
  - id: ATS-PFM-CSH-002-05
    title: A fresh load ignores the preceding fold choice
    category: transition
    level: browser
    proves:
      - BR-CAP-PFM-CSH-002-07
    preconditions: The sidebar was collapsed and its cookie was written.
    steps: Reload the console after changing the fold choice.
    expected: >-
      The desktop sidebar starts expanded; record the previous cookie without
      treating it as a restored preference.
    negative: false
    data_needs: >-
      A fresh browser context, isolated account fixtures and controlled
      responses for the listed transitions.
    bound_to: []
    provenance: proposed
    source: >-
      rhythm-v2-docs:specs/platform/console-shell/planning/capabilities/CAP-PFM-CSH-002-give-each-page-the-room-it-needs.md
    test_sources: []
    action_evidence:
      provenance: proposed
      source: >-
        rhythm-v2-docs:specs/platform/console-shell/planning/capabilities/CAP-PFM-CSH-002-give-each-page-the-room-it-needs.md
    assertion_evidence:
      provenance: proposed
      source: >-
        rhythm-v2-docs:specs/platform/console-shell/planning/capabilities/CAP-PFM-CSH-002-give-each-page-the-room-it-needs.md
  - id: ATS-PFM-CSH-002-06
    title: Keyboard folding changes the standard page workspace
    category: interaction
    level: browser
    proves:
      - BR-CAP-PFM-CSH-002-06
      - BR-CAP-PFM-CSH-003-05
    preconditions: Contact Types is open on a wide desktop.
    steps: Press the sidebar command shortcut and measure the standard column.
    expected: >-
      The workspace grows while the column remains centered within its new
      bounds.
    negative: false
    data_needs: >-
      A fresh browser context, isolated account fixtures and controlled
      responses for the listed transitions.
    bound_to:
      - TST-PFM-CSH-010
    provenance: test
    source: >-
      react-console:e2e/layout/page-layouts.spec.ts#the keyboard shortcut
      collapses it too
    test_sources:
      - >-
        react-console:e2e/layout/page-layouts.spec.ts#the keyboard shortcut
        collapses it too
    action_evidence:
      provenance: test
      source: >-
        react-console:e2e/layout/page-layouts.spec.ts#the keyboard shortcut
        collapses it too
    assertion_evidence:
      provenance: test
      source: >-
        react-console:e2e/layout/page-layouts.spec.ts#the keyboard shortcut
        collapses it too
  - id: ATS-PFM-CSH-002-07
    title: Docking the assistant preserves both page-width calculations
    category: boundary
    level: browser
    proves:
      - BR-CAP-PFM-CSH-002-06
    preconditions: Standard and full pages are available at the enumerated wide viewports.
    steps: >-
      Dock Jazz beside each page and measure against the remaining content
      workspace.
    expected: >-
      The standard column is centered and capped; every full page spans the
      narrower workspace.
    negative: false
    data_needs: >-
      The pinned route and page fixtures; browser measurements use a fresh
      demonstration context at each tested viewport.
    bound_to:
      - TST-PFM-CSH-010
    test_sources:
      - 'react-console:e2e/layout/page-layouts.spec.ts#Jazz AI docked'
    provenance: test
    source: 'react-console:e2e/layout/page-layouts.spec.ts#Jazz AI docked'
    action_evidence:
      provenance: test
      source: 'react-console:e2e/layout/page-layouts.spec.ts#Jazz AI docked'
    assertion_evidence:
      provenance: test
      source: 'react-console:e2e/layout/page-layouts.spec.ts#Jazz AI docked'
evidence:
  - >-
    react-console at baf6dae:
    components/console/{page-layout,collapse-sidebar,console-shell}.tsx,
    components/ui/sidebar.tsx, lib/layout/page-width.ts, docs/page-layouts.md,
    components/console/__tests__/page-layout*.ts*,
    e2e/layout/page-layouts.spec.ts.
  - >-
    rhythm-v2-docs at 25e253cb434aac6603ee294e3ca197ab6c4bfd0b: capability,
    related capabilities, domain objects, client lifecycles, workflows and prior
    OpenAI examinations; continuation coverage limitations are recorded in
    FND-PFM-CSH-052.
coverage:
  rule: covered
  transition: 'gap: FND-PFM-CSH-052'
  validation: 'gap: FND-PFM-CSH-052'
  permission: 'gap: FND-PFM-CSH-052'
  edge: 'gap: FND-PFM-CSH-052'
  failure: 'gap: FND-PFM-CSH-052'
  boundary: covered
  concurrency: 'gap: FND-PFM-CSH-052'
  invariant: 'gap: FND-PFM-CSH-052'
  interaction: 'gap: FND-PFM-CSH-052'
coverage_notes:
  rule:
    provenance: proposed
    source: >-
      ATS-PFM-CSH-002-01; ATS-PFM-CSH-002-02; ATS-PFM-CSH-002-03;
      ATS-PFM-CSH-002-04; ATS-PFM-CSH-002-05; ATS-PFM-CSH-002-06;
      ATS-PFM-CSH-002-07
    reason: >-
      Every mandatory rule has a proving scenario, including shared interaction
      cases; bindings identify execution separately.
  transition:
    provenance: unknown
    source: FND-PFM-CSH-052
    reason: >-
      The associated lifecycle has additional transitions beyond the specified
      cases.
  validation:
    provenance: unknown
    source: FND-PFM-CSH-052
    reason: >-
      No dedicated scenario establishes this category; applicability and the
      required fixtures need review.
  permission:
    provenance: unknown
    source: FND-PFM-CSH-052
    reason: >-
      The named permission keys still need a complete allowed, denied and scope
      matrix across their enforcement boundaries.
  edge:
    provenance: unknown
    source: FND-PFM-CSH-052
    reason: >-
      No dedicated scenario establishes this category; applicability and the
      required fixtures need review.
  failure:
    provenance: unknown
    source: FND-PFM-CSH-052
    reason: >-
      No dedicated scenario establishes this category; applicability and the
      required fixtures need review.
  boundary:
    provenance: proposed
    source: ATS-PFM-CSH-002-04
    reason: >-
      The listed scenarios specify this category; their bindings separately
      identify existing executable evidence.
  concurrency:
    provenance: unknown
    source: FND-PFM-CSH-052
    reason: >-
      No complete scenario matrix covers repeated events, overlapping reads or
      superseded answers for this capability.
  invariant:
    provenance: unknown
    source: FND-PFM-CSH-052
    reason: Associated object invariants remain without explicit proving scenarios.
  interaction:
    provenance: unknown
    source: FND-PFM-CSH-052
    reason: >-
      Related-capability combinations remain unspecified beyond the interactions
      listed.
design_obligations:
  - artifact: STATE-PFM-CSH-004
    provenance: documented
    source: >-
      rhythm-v2-docs:specs/platform/console-shell/design/state-models/STATE-PFM-CSH-004-side-menu-fold.md
    transitions:
      - ordinal: 1
        from: expanded
        to: collapsed
        provenance: test
        source: >-
          react-console:e2e/layout/page-layouts.spec.ts#the keyboard shortcut
          collapses it too
        disposition: 'gap: FND-PFM-CSH-052'
      - ordinal: 2
        from: collapsed
        to: expanded
        provenance: observed
        source: 'react-console:components/console/app-sidebar.tsx:NavSectionItem'
        disposition: 'gap: FND-PFM-CSH-052'
      - ordinal: 3
        from: expanded
        to: collapsed-by-page
        provenance: documented
        source: 'react-console:docs/page-layouts.md#Pages that collapse the sidebar'
        disposition: 'gap: FND-PFM-CSH-052'
      - ordinal: 4
        from: collapsed-by-page
        to: expanded
        provenance: observed
        source: 'react-console:components/console/collapse-sidebar.tsx:CollapseSidebar'
        disposition: 'gap: FND-PFM-CSH-052'
      - ordinal: 5
        from: collapsed-by-page
        to: expanded
        provenance: inferred
        source: >-
          react-console:components/console/collapse-sidebar.tsx:CollapseSidebar
          (restore on unmount)
        disposition: 'gap: FND-PFM-CSH-052'
    note: >-
      The finding carries exhaustive transition execution coverage; overlapping
      scenario examples do not close the remaining lifecycle matrix.
interactions:
  - capability: CAP-PFM-CSH-001
    provenance: unknown
    source: FND-PFM-CSH-052
  - capability: CAP-PFM-CSH-003
    provenance: proposed
    source: ATS-PFM-CSH-002-06
workflow_obligations: []
---

# Fit the page to the available workspace: Capability Test Specification

## Coverage

The coverage map describes specified proof, not a passing run. Each mandatory rule below has a scenario or an explicit finding; a proposed scenario remains an execution obligation even when its expected outcome follows the pinned implementation.

| Mandatory Rule | Scenarios or Finding |
|---|---|
| `BR-CAP-PFM-CSH-002-01` | `ATS-PFM-CSH-002-01` |
| `BR-CAP-PFM-CSH-002-03` | `ATS-PFM-CSH-002-02` |
| `BR-CAP-PFM-CSH-002-05` | `ATS-PFM-CSH-002-03` |
| `BR-CAP-PFM-CSH-002-06` | `ATS-PFM-CSH-002-04`, `ATS-PFM-CSH-002-06`, `ATS-PFM-CSH-002-07` |
| `BR-CAP-PFM-CSH-002-07` | `ATS-PFM-CSH-002-05` |

Restoration requires both expanded and already-collapsed arrival fixtures, departure while manually reopened, and independent mobile navigation. Width measurement must also include the docked assistant.

## Interactions With Related Capabilities

The workspace grows while the column remains centered within its new bounds.

The interaction rows cite the contracts they exercise. Related combinations without a complete case remain in the coverage finding, together with cross-capability workflows and permission boundaries. A helper assertion is bound only for its stated outcome; the full browser handoff remains proposed until a suite checks it.


Pinned source and exact test anchors are recorded in frontmatter. Test bindings record static assertion review and use the executable-suite register; no product test result is inferred from that review. The prior planning and design examinations supply context, while this continuation records the remaining proof obligations explicitly.
