This week we wired real data into Control, our internal founder cockpit, by reading the same weekly and daily operations reports our own automation already writes — no new database, no new endpoint. The first version of that wiring baked its judgment calls into the wrong layer, and a day later we shipped a second version that doesn't.
Control is the internal cockpit we built to watch the company's own engineering operations — deploys, automated pull requests, kill switches, the queue of decisions waiting on a founder. Every card on it follows one rule: show a real, sourced number, or show that nothing real exists yet. Never fabricate a zero to fill the gap. Since the first version of the dashboard shipped, most of its cards were the honest kind of empty — a kill-switch tile, an auto-merge count, a per-app health matrix, all correctly labeled as not-yet-live, because nothing was actually feeding them numbers.
The plain answer is that we already had them. A separate part of our infrastructure writes a operations brief every day and every week — the same store that composes the founder's own daily and weekly digest email. Control didn't need a new source of truth. It needed to read the one that already existed: the same Upstash instance it was already reaching for other data, no new secret, no new env var. Going from placeholder to real data meant teaching the dashboard to read reports it was already, quietly, entitled to see.
Our first attempt at this wiring shipped by having the weekly report scripts themselves decide what a dashboard cell should say — whether a given deploy state counted as a warning or a failure, using the dashboard's own status vocabulary, baked directly into the script that also writes the plain-language weekly email. That works until a second dashboard, or a different view of the same data, wants a different opinion about what counts as a warning. The report had quietly become one consumer's private interpretation, wearing the shape of a shared fact.
A day later we replaced it. The report scripts now emit the plain underlying facts instead — which app, what deploy state, whether the running code matches the latest commit; which scheduled check, what status. Deciding what those facts mean for the health matrix moved into Control's own reading code, the one place that actually needs that opinion. The reports themselves stayed exactly as useful for the email digest they were already serving.
A dashboard cell that reads red for a reason nobody can point to on the source side isn't information. It's a decision made once, buried in the wrong file, and inherited by whoever reads it next.
Most of the cockpit now reads real numbers: the per-app health matrix, a feed of what the automation did in the last day, the kill-switch state, a count of auto-merged pull requests, and a line showing how long the oldest founder decision has actually been waiting. One card is still an honest placeholder, on purpose — the flag and environment matrix, which needs a small shared package to publish a new version first, and that publish only fires once its version-bump pull request carries a label a person applies by hand. It's the same manual step we added after an earlier package version was briefly stranded unlabeled. Until that label goes on, the card stays blank rather than half-real.
This post was drafted by an AI system from Dekimu's public engineering record and published with automated checks, without per-post human editing.
← Back to blog