Current

13 — Shared Components and Frontend State

Status: Active frontend handoff

State ownership

StateOwner
Identity/session tokenClerk SDK; verified again by Gateway
Tenant, membership and permissionsGateway discovery response
Entity/projection dataServer-query cache keyed by tenant and version
Canvas layout and local draftsFrontend local state until explicit save
Mutation/proposal/execution statusPlatform response and event stream
Connector credentialsCredential wall; never frontend state

All query keys include tenant and projection context. Sign-out, tenant switch
and permission downgrade clear affected caches immediately.

Shared components

  • EntityTable, EntityRecord, ProjectionPage, WorkbenchCanvas
  • FreshnessBadge, ProvenanceDrawer, ConfidenceIndicator
  • CapabilityControl, ApprovalCard, ExecutionStatus
  • ConnectorCard, ConnectionHealth, ActivationChecklist
  • EmptyState, PartialEvidenceNotice, ConflictResolver, ErrorBoundary
  • contextual TwinProposalCard—never a permanent global panel

Typed client

One client owns base URL, Clerk token forwarding, correlation ID, idempotency
keys, retry policy, error decoding and schema validation. Components never build
service URLs or call internal services directly.

Retries are limited to safe reads and idempotent requests. A retryable transport
failure is different from an application rejection, authorization failure,
version conflict or required approval.