Build Log
Alloy home page: real vitals, live Arc data, layout uniformity
July 20, 2026
Wired the Alloy home page's dashboard cards to real data end-to-end and fixed a bug where a brand-new open Arc was invisible on the dashboard.
What shipped
products/alloy/components/SystemStatePanel.tsx — centered stat values, translated Forge Energy/Pressure/Network into risk-colored status words (Stable/Elevated/Critical, Online/Offline), removed Latest Slug and Wrap State fields, uniform uppercase title with no leading icon
products/alloy/lib/vitals.ts (new) — shared energyStatus()/pressureStatus() risk-color thresholds, used by SystemStatePanel and TopRail
products/alloy/components/TopRail.tsx — Forge Energy header now shows a real EQ bar visual (fixed stagger pattern, real forgeEnergyPct controls how many bars are lit) instead of a static 'Not connected' badge when an Arc is active; logo enlarged
products/alloy/components/SignalSummaryPanel.tsx — rebuilt to Normal/Warning/Critical 3-column layout with vertical dividers, real per-session spin-count bucketing (0/1-2/3+), icon moved off the title row
products/alloy/components/EvidenceHealthPanel.tsx (new) — donut ring + Healthy % + Status + Total Items + At Risk, computed from real lib/evidence.ts listEvidence() kinds (positive vs. duplication_created/missed_reuse), stacked below Signal Summary
products/alloy/components/ActiveWorkpiecePanel.tsx — now prefers a real, currently-open Postgres Arc (liveArc prop) over the file-based 'most recent session on disk' fallback; added real Current Arc Step (step N of 7 + phase name, no fabricated ETA/%), real Product name via workpieces.productId -> products.name, fixed Resume Arc to deep-link with ?arc=<id>, enlarged bracket image, uniform button styling, title now wraps instead of truncating
products/alloy/components/ForgeArcStatusPanel.tsx — now hooked to the same real Arc data as ActiveWorkpiecePanel: per-step status (Complete/In Progress/Pending) derived from arc.phase position, per-step Time from the real phase_transition event occurredAt, color-coded step numbers; falls back to static reference links when no Arc is active
products/alloy/app/page.tsx — threads activeArc/activeArcEvents/activeArcWorkpiece/activeArcProduct into ActiveWorkpiecePanel and ForgeArcStatusPanel; computes evidenceAtRiskCount for EvidenceHealthPanel
“figure out how to make it look like the prototype”