Deck — CI & Build v1 (offload observability)

# CI & Build — proposed Overdeck page (mockup)

Same shell, tokens and components as the approved Overview v2. This is the page the sidebar's CI & Runners item opens — extended into a full offload control plane so today's incident (idle debian1 behind a wedged laptop queue, a 127 storm, epoch races) is both visible and operable. A per-machine fleet strip shows load, running builds and 24h throughput for every host; builds sit in one global queue dispatched to the least-loaded builder (debian1, debian2, …), and the laptop only takes overflow when every builder is overloaded and the queue is longer than the builder count. Hover a machine for a summary; click for the full detail modal — per-core load, memory/swap, network, disk and temperature. Every action shown is a typed controller verb, not a raw file/lock toggle.

Deck
Overview Inbox5 Map
Operations
Plans1▶ 1⛔ Agents8 CI & Build2 Bots4
Health
Limits & Spend Gates Scoreboard
☀ Light◐ Dark

## CI & Build

offload: available · rev 4192 laptop ● load 16 · debian1 ● load 3.9 · fallback-lease none
Search or command… `⌘K`
▲
Cluster capacity idle while the queue is stalled
debian1 idle (load 3.9, 8 free slots) but 6 builds have waited >3h in the cluster queue · dispatch to debian1 wedged by a slot held with a dead owner (pid 2987388, start-mismatch) · laptop wrongly spilled 1 build while the cluster was not overloaded.
231
builds routed remote 24h
96% of heavy builds · 9 local
98.3%
remote success
4 transient-retried, 0 stranded
3h12m
oldest queued
SLO 5m breached · p95 8s
37
exit 127 last 24h
capability drift · host debian1
2
epoch-discarded jobs
completed remote, result dropped
6.4m
longest pull-back
no progress telemetry · WAN
Machines · 1 builder online, 1 joining · one global queue, dispatched by free capacity · click a card for full detailfleet settings →
laptopworkstationspill on · stale
load16.0 / 16 · saturated
1
running
1/4
slots
9
24h
full toolchainrunner: gate revoked
debian1builder · primarydispatch wedged
load3.9 / 8 · 49%
0
running
0/8
slots
214
24h
tsc · vitest · pnpmplaywright
debian2builder · joiningenrolling
load— · enrolling
—
running
0/8
slots
—
24h
capability probe pending

#### Offload control history →

available
draining
maintenance
restoring
degraded
desired / observedavailable / available
revision4192
local-fallback leasenone (remote-only)
reconcilerhealthy · 3s ago
dispatchwedged · debian1 slot-0
laptop spillON (stale)
spill ruleall builders overloaded & queue > builders
host capability
tsc 5.9.3 vitest pnpm disk 91G playwright browsers

#### Cluster queue one global FIFO · dispatch → debian1 · oldest 3h12m · p95 8s · 6 waiting

# | Key | Repo | Owner | Wait | State
--- | --- | --- | --- | --- | ---
1 | tsc-2279 | multideal | claude·2279 | 3h12m | queued
2 | vitest-3341 | multideal | claude·3341 | 3h08m | queued
3 | build-1187 | platform | codex·1187 | 2h51m | queued
4 | tsc-4410 | zync | claude·4410 | 1h20m | queued
! | dispatch to debian1 wedged — slot-0 held by dead pid 2987388 | — | reconcile

#### Remote jobs (debian1) rb-* units →

Job | Repo | Snapshot | Stage | rc | Pulled | Publish |
--- | --- | --- | --- | --- | --- | --- | ---
rb-8f2a1c | multideal | e3b1@4188 | building | — | — | — | log ↗
rb-7c0e93 | platform | a91f@4190 | pull-back | 0 | 4.2 GB · 6.1m | staged | log ↗
rb-6b1d40 | multideal | c4d2@4191 | published | 0 | 310 MB · 41s | promoted | log ↗
rb-5a9f22 | multideal | c4d2@4180 | discarded | 0 | — | epoch < mirror | log ↗
rb-4e77b0 | zync | 1f8e@4179 | failed | 127 | — | tsc not found | log ↗

#### CI runners workflows →

Runner | Host | Labels | Service | Job
--- | --- | --- | --- | ---
md-debian1 | debian1 | multideal-gate | listening | idle
md-laptop | laptop | gate revoked | listening | idle
platform-1 | debian1 | self-hosted | listening | #312 · 4m

multideal #4821✗ e2e-checkout · 14m
queue oldest0 waiting

#### Incidents all →

Capability missing — 37× exit 127
host `debian1` · missing `playwright browsers` · new admissions paused for this class
first 09:14 · auto-resolves when probe passes
Remote-idle / queue-stalled
6 builds waiting >3h, remote 6 slots free · ghost slot-0
SLO 5m · fires 3h12m
Epoch race — 2 jobs discarded
shared mirror `multideal` · completed remote, result dropped
retried locally · needs per-job workspace (I2)
Mockup for approval. Panels map 1:1 to the review's missing signals; actions map to typed controller verbs (box-drain/restore, admission-reconcile, job-retry, host-quarantine) — no raw lock/config toggles from the UI. Approve to fold into the Overdeck v1 plan + attach this file.