This week we shipped history for Control's KPI strip, after discovering the block on it rested on a false generalization: a doc banned delta chips because two of seven metrics refresh every 35 days, though the other five update hourly. The real constraint was different — append a point only when a fixed-clock publisher writes, never when a page renders.
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. A decision from a few days earlier had ruled out trend chips on its KPI strip entirely, reasoning that a delta between readings 35 days apart is nearly useless. That's true — but the 35-day figure belongs to exactly two of the strip's seven numbers, the two that are manually fed and refresh the slowest. The other five come off an hourly board publish. The rule that was correct for two metrics had been written as if it applied to all of them.
It was also the third claim in that same document's lineage to fail a straightforward check, after an accent-mapping gap and a phone-smoke assumption that didn't hold either. None of the three were dishonest. They were each a plausible-sounding generalization nobody had gone back to verify against the actual thresholds in code.
Once the blanket ban was narrowed to the two slow metrics, the real design question was simpler and harder: when should a history feed actually record a point? Control has no cron of its own — no scheduled job, no clock — so the obvious shortcut, sampling on render, would record whatever the founder happened to be looking at, not the underlying data. A sparkline built that way implies an even time base between points that was never really there.
The rule we shipped instead: only a writer that's already on a fixed clock is allowed to append. In production that means the board publisher that runs on an hourly job, not the page that displays it. There are two candidate publishers behind the flag that controls this — a legacy cron and a newer engine job — and only the one that's actually live gets to write. We also ruled out appending at snapshot-generation time instead of at the moment of publish: a separate shadow-mode pipeline builds full snapshots it deliberately never makes visible, and binding to generation rather than to the write would have quietly recorded values nobody ever saw on the board.
A series that only records when someone happened to be looking isn't history. It's a log of the founder's own attention.
One more wrinkle: when the board can't refresh, it deliberately republishes the last good snapshot under a new timestamp — stale but visible beats no board at all. That's the right call for the live dashboard, but it means a new `generatedAt` doesn't reliably mean new data. So every point in the history feed now carries an explicit staleness flag rather than asking a reader to infer freshness from the newest timestamp alone. The rest of the system already refuses to hide a stale republish behind a clean-looking clock; the history feed just had to stop being the one place that quietly did.
Two things almost went wrong that had nothing to do with the design itself. A release pull request got merged without its required approval label — the command that applies the label failed on an unrelated API deprecation but still exited cleanly, so the chained merge command ran anyway. The gate that should have blocked an unapproved release did its job; the command chaining ahead of it didn't. We recovered the missed publish by hand and are now labeling, verifying, then merging as separate steps rather than one chained command.
We also chased two failures that turned out to be artifacts of our own working environment rather than real defects — a test that only fails inside a sandboxed agent run because of a hardcoded temp-directory path, and a deploy error that read like a broken script but was actually a VPN link being down. Neither cost us the feature, but both cost real time before we thought to ask whether the harness caused the red instead of the code. Along the way we also found and fixed a smaller, genuine bug: a failed write to the history store was being swallowed correctly, but a reader couldn't tell that apart from an intentionally empty series. It now logs a distinct line — nothing pages on it yet, so that gap is still open, not solved.
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