---
id: ADR-PFM-CSH-004
title: Shared Builders Define Console Destinations
product_area: platform
module: console-shell
revision: 1
status: proposed
design_intent: confirmed
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
decision: >-
  Declare console destinations in the shared route tree and build links through
  its guarded builders.
constrains:
  - DOM-PFM-CSH-003
  - DOM-PFM-CSH-002
  - WF-PFM-CSH-008
origin: >-
  react-console:docs/url-architecture.md#1. Rules, rule 6 and #5. lib/routes
  (decided by Andrew 2026-10-14; final acceptance 2026-10-15)
alternatives:
  - option: Let each screen write its own paths
    why_not: >-
      Independent path strings can diverge among menus, references and redirect
      callers.
consequences:
  - 'Navigation, references and redirects share destination definitions.'
  - A new page requires a declared route node.
  - Other surfaces use the library’s builders outside the console frame.
supersedes: []
evidence:
  - >-
    react-console at baf6dae: lib/routes/{definitions,build,match}.ts;
    lib/routes/__tests__/guards.test.ts
---
# Shared Builders Define Console Destinations

## Context

Menu entries, references and redirects need a common destination vocabulary to remain consistent as pages move.

## Decision

Declare routes in the shared tree and construct console links with its builders. Static tests check route coverage and path naming.

## Alternatives Considered

Independent path strings allow different callers to drift when a destination changes.

## Consequences

New pages need route definitions. Builders and registry readers share the same address structure. A passing static guard supports the inspected paths rather than certifying all runtime behavior.
