Control Tower
control-tower-ui · ui-foundation
UI Foundation

A calm, read-only window onto the Control Tower.

The backend is the source of computed truth. This UI consumes only the 12 frozen UI-contract endpoints, fails closed on envelope drift, and keeps the internal read token entirely server-side. No financial logic runs in the browser.

Read-only
Token is server-side only — browser never sees X-Internal-Read-Token.
Schema control_tower.ui_contract.v1
Lookup KIND_WINDOW_SCHEMA
Period window
UI date selection — no business inference
YYYY-MM-DD
Defaulted to current calendar month

These dates are forwarded verbatim to the local proxy as period_start and period_end. They carry no financial meaning — the backend is the source of computed truth.

Live read surface · Status overview

Status overview

/api/control-tower/status-overviewCONTROL_RUN_UI_STATUS_OVERVIEW2026-05-01 → 2026-06-01defaulted period
Missing artifact

No artifact for this kind/period. The backend has not produced this read model for the selected window yet.

Contract metadata
kind
CONTROL_RUN_UI_STATUS_OVERVIEW
schema_version
control_tower.ui_contract.v1
lookup_strategy
KIND_WINDOW_SCHEMA
snapshot_seq
fingerprint
volatile_uuid_required
false
Diagnostic details
period_start
2026-05-01
period_end
2026-06-01
schema=control_tower.ui_contract.v1lookup=KIND_WINDOW_SCHEMAread-onlyno execution · no reconciliation · no final truth
Live read surface · Safety contract

Safety contract

/api/control-tower/safety-contractCONTROL_RUN_UI_SAFETY_CONTRACT2026-05-01 → 2026-06-01defaulted period
Missing artifact

No artifact for this kind/period. The backend has not produced this read model for the selected window yet.

Contract metadata
kind
CONTROL_RUN_UI_SAFETY_CONTRACT
schema_version
control_tower.ui_contract.v1
lookup_strategy
KIND_WINDOW_SCHEMA
snapshot_seq
fingerprint
volatile_uuid_required
false
Diagnostic details
period_start
2026-05-01
period_end
2026-06-01
schema=control_tower.ui_contract.v1lookup=KIND_WINDOW_SCHEMAread-onlyno execution · no reconciliation · no final truth
Live read surface · Module status

Module status

/api/control-tower/module-statusCONTROL_RUN_UI_MODULE_STATUS2026-05-01 → 2026-06-01defaulted period
Missing artifact

No artifact for this kind/period. The backend has not produced this read model for the selected window yet.

Contract metadata
kind
CONTROL_RUN_UI_MODULE_STATUS
schema_version
control_tower.ui_contract.v1
lookup_strategy
KIND_WINDOW_SCHEMA
snapshot_seq
fingerprint
volatile_uuid_required
false
Diagnostic details
period_start
2026-05-01
period_end
2026-06-01
schema=control_tower.ui_contract.v1lookup=KIND_WINDOW_SCHEMAread-onlyno execution · no reconciliation · no final truth
Live read surface · Artifact health

Artifact health

/api/control-tower/artifact-healthCONTROL_RUN_UI_ARTIFACT_HEALTH2026-05-01 → 2026-06-01defaulted period
Missing artifact

No artifact for this kind/period. The backend has not produced this read model for the selected window yet.

Contract metadata
kind
CONTROL_RUN_UI_ARTIFACT_HEALTH
schema_version
control_tower.ui_contract.v1
lookup_strategy
KIND_WINDOW_SCHEMA
snapshot_seq
fingerprint
volatile_uuid_required
false
Diagnostic details
period_start
2026-05-01
period_end
2026-06-01
schema=control_tower.ui_contract.v1lookup=KIND_WINDOW_SCHEMAread-onlyno execution · no reconciliation · no final truth
Live read surface · Source health

Source health

/api/control-tower/source-healthCONTROL_RUN_UI_SOURCE_HEALTH2026-05-01 → 2026-06-01defaulted period
Missing artifact

No artifact for this kind/period. The backend has not produced this read model for the selected window yet.

Contract metadata
kind
CONTROL_RUN_UI_SOURCE_HEALTH
schema_version
control_tower.ui_contract.v1
lookup_strategy
KIND_WINDOW_SCHEMA
snapshot_seq
fingerprint
volatile_uuid_required
false
Diagnostic details
period_start
2026-05-01
period_end
2026-06-01
schema=control_tower.ui_contract.v1lookup=KIND_WINDOW_SCHEMAread-onlyno execution · no reconciliation · no final truth
Live read surface · Operator queues

Operator queues

/api/control-tower/operator-queuesCONTROL_RUN_UI_OPERATOR_QUEUE_SUMMARY2026-05-01 → 2026-06-01defaulted period
Missing artifact

No artifact for this kind/period. The backend has not produced this read model for the selected window yet.

Contract metadata
kind
CONTROL_RUN_UI_OPERATOR_QUEUE_SUMMARY
schema_version
control_tower.ui_contract.v1
lookup_strategy
KIND_WINDOW_SCHEMA
snapshot_seq
fingerprint
volatile_uuid_required
false
Diagnostic details
period_start
2026-05-01
period_end
2026-06-01
schema=control_tower.ui_contract.v1lookup=KIND_WINDOW_SCHEMAread-onlyno execution · no reconciliation · no final truth
Live read surface · Founder attention

Founder attention

/api/control-tower/founder-attentionCONTROL_RUN_UI_FOUNDER_ATTENTION_SUMMARY2026-05-01 → 2026-06-01defaulted period
Missing artifact

No artifact for this kind/period. The backend has not produced this read model for the selected window yet.

Contract metadata
kind
CONTROL_RUN_UI_FOUNDER_ATTENTION_SUMMARY
schema_version
control_tower.ui_contract.v1
lookup_strategy
KIND_WINDOW_SCHEMA
snapshot_seq
fingerprint
volatile_uuid_required
false
Diagnostic details
period_start
2026-05-01
period_end
2026-06-01
schema=control_tower.ui_contract.v1lookup=KIND_WINDOW_SCHEMAread-onlyno execution · no reconciliation · no final truth
Live read surface · Blockers

Blockers

/api/control-tower/blockersCONTROL_RUN_UI_BLOCKERS2026-05-01 → 2026-06-01defaulted period
Missing artifact

No artifact for this kind/period. The backend has not produced this read model for the selected window yet.

Contract metadata
kind
CONTROL_RUN_UI_BLOCKERS
schema_version
control_tower.ui_contract.v1
lookup_strategy
KIND_WINDOW_SCHEMA
snapshot_seq
fingerprint
volatile_uuid_required
false
Diagnostic details
period_start
2026-05-01
period_end
2026-06-01
schema=control_tower.ui_contract.v1lookup=KIND_WINDOW_SCHEMAread-onlyno execution · no reconciliation · no final truth
Live read surface · Warnings

Warnings

/api/control-tower/warningsCONTROL_RUN_UI_WARNINGS2026-05-01 → 2026-06-01defaulted period
Missing artifact

No artifact for this kind/period. The backend has not produced this read model for the selected window yet.

Contract metadata
kind
CONTROL_RUN_UI_WARNINGS
schema_version
control_tower.ui_contract.v1
lookup_strategy
KIND_WINDOW_SCHEMA
snapshot_seq
fingerprint
volatile_uuid_required
false
Diagnostic details
period_start
2026-05-01
period_end
2026-06-01
schema=control_tower.ui_contract.v1lookup=KIND_WINDOW_SCHEMAread-onlyno execution · no reconciliation · no final truth
Live read surface · Drilldown index

Drilldown index

/api/control-tower/drilldown-indexCONTROL_RUN_UI_DRILLDOWN_INDEX2026-05-01 → 2026-06-01defaulted period
Missing artifact

No artifact for this kind/period. The backend has not produced this read model for the selected window yet.

Contract metadata
kind
CONTROL_RUN_UI_DRILLDOWN_INDEX
schema_version
control_tower.ui_contract.v1
lookup_strategy
KIND_WINDOW_SCHEMA
snapshot_seq
fingerprint
volatile_uuid_required
false
Diagnostic details
period_start
2026-05-01
period_end
2026-06-01
schema=control_tower.ui_contract.v1lookup=KIND_WINDOW_SCHEMAread-onlyno execution · no reconciliation · no final truth
Live read surface · Next safe actions context

Next safe actions context

/api/control-tower/next-safe-actions-contextCONTROL_RUN_UI_NEXT_SAFE_ACTIONS_CONTEXT2026-05-01 → 2026-06-01defaulted period
Missing artifact

No artifact for this kind/period. The backend has not produced this read model for the selected window yet.

Contract metadata
kind
CONTROL_RUN_UI_NEXT_SAFE_ACTIONS_CONTEXT
schema_version
control_tower.ui_contract.v1
lookup_strategy
KIND_WINDOW_SCHEMA
snapshot_seq
fingerprint
volatile_uuid_required
false
Diagnostic details
period_start
2026-05-01
period_end
2026-06-01
schema=control_tower.ui_contract.v1lookup=KIND_WINDOW_SCHEMAread-onlyno execution · no reconciliation · no final truth
Live read surface · Latest

Latest

/api/control-tower/latestCONTROL_RUN_UI_PRE_UI_BACKEND_CONTRACT2026-05-01 → 2026-06-01defaulted period
Missing artifact

No artifact for this kind/period. The backend has not produced this read model for the selected window yet.

Contract metadata
kind
CONTROL_RUN_UI_PRE_UI_BACKEND_CONTRACT
schema_version
control_tower.ui_contract.v1
lookup_strategy
KIND_WINDOW_SCHEMA
snapshot_seq
fingerprint
volatile_uuid_required
false
Diagnostic details
period_start
2026-05-01
period_end
2026-06-01
schema=control_tower.ui_contract.v1lookup=KIND_WINDOW_SCHEMAread-onlyno execution · no reconciliation · no final truth
Frozen contract

12 read-only endpoint families

One thin server-side proxy per family. Each call attaches the internal read token on the server. The browser never reaches the backend directly.

Contract
Latest control run
GET
/api/control-tower/latest
envelope kind
CONTROL_RUN_UI_PRE_UI_BACKEND_CONTRACT
Contract
Status overview
GET
/api/control-tower/status-overview
envelope kind
CONTROL_RUN_UI_STATUS_OVERVIEW
Contract
Module status
GET
/api/control-tower/module-status
envelope kind
CONTROL_RUN_UI_MODULE_STATUS
Contract
Source health
GET
/api/control-tower/source-health
envelope kind
CONTROL_RUN_UI_SOURCE_HEALTH
Contract
Operator queues
GET
/api/control-tower/operator-queues
envelope kind
CONTROL_RUN_UI_OPERATOR_QUEUE_SUMMARY
Contract
Founder attention
GET
/api/control-tower/founder-attention
envelope kind
CONTROL_RUN_UI_FOUNDER_ATTENTION_SUMMARY
Contract
Blockers
GET
/api/control-tower/blockers
envelope kind
CONTROL_RUN_UI_BLOCKERS
Contract
Warnings
GET
/api/control-tower/warnings
envelope kind
CONTROL_RUN_UI_WARNINGS
Contract
Drilldown index
GET
/api/control-tower/drilldown-index
envelope kind
CONTROL_RUN_UI_DRILLDOWN_INDEX
Contract
Artifact health
GET
/api/control-tower/artifact-health
envelope kind
CONTROL_RUN_UI_ARTIFACT_HEALTH
Contract
Safety contract
GET
/api/control-tower/safety-contract
envelope kind
CONTROL_RUN_UI_SAFETY_CONTRACT
Contract
Next safe actions context
GET
/api/control-tower/next-safe-actions-context
envelope kind
CONTROL_RUN_UI_NEXT_SAFE_ACTIONS_CONTEXT
Safety contract

What this UI will never do

Hard rules that hold across every block. The static guard script enforces them mechanically on every change.

No execution

The UI never marks payments, never reconciles, and never finalises any read model as truth.

No client recompute

FX, 50/50, amount_due and Real Profit are never derived in the browser. The backend stays authoritative.

Server-side token

X-Internal-Read-Token is read only by the Next.js server. No NEXT_PUBLIC variant exists.

Fail-closed envelope

Missing, non-string, or wrong envelope kind ⇒ safe local error envelope. The backend payload is never mutated.