---
id: ADR-PFM-CSH-006
title: Application Lists Refresh as Snapshots
product_area: platform
module: console-shell
revision: 1
status: proposed
design_intent: confirmed
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
decision: >-
  Keep application access as a snapshot refreshed after coded refusals or aged
  visible-tab returns, with workspace-ticket checks before data installation.
constrains:
  - DOM-PFM-CSH-004
  - STATE-PFM-CSH-003
  - WF-PFM-CSH-005
  - SVC-PFM-CSH-console-shell
origin: >-
  services-platform:docs/proposals/application-access-and-entitlements.md#5.3
  and #6.4 item 4 (built and accepted by Andrew 2026-10-15); scope open
  (OQ-PFM-CSH-005)
alternatives:
  - option: Push changes to open consoles
    why_not: >-
      A push channel is not present and cannot remove the authorizer-cache race
      by itself.
  - option: Ask on every focus or every page
    why_not: >-
      Every focus event would produce a refresh request for infrequently
      changing data.
consequences:
  - An open menu can lag behind authority changes.
  - Silent refresh failure retains the held list.
  - Narrow refresh retains earlier roles and permission rules.
supersedes: []
evidence:
  - >-
    react-console at baf6dae:
    lib/security-context/{provider.tsx,application-refusal.ts}
  - >-
    services-platform at ad3f6a6:
    docs/proposals/application-access-and-entitlements.md §5.3
---
# Application Lists Refresh as Snapshots

## Context

An open tab can outlive licensing or personal-access changes, and Platform itself uses cached authorization data.

## Decision

Retain a snapshot, refresh applications after coded refusal or an aged-tab return, and install only results valid for the current workspace ticket. Services remain responsible for request authorization.

## Alternatives Considered

Push updates need a delivery channel. Refreshing on every focus adds a request for every window switch without eliminating server-cache delay.

## Consequences

Silent failure retains the previous list. Narrow refresh leaves roles and permission rules unchanged. Product still needs to settle the returning-tab refresh scope.
