The Dashboard That Counted Its Own Gaps
Written later and filed to this date, as part of filling in every day of the year.
The status dashboard was retired at twelve minutes past nine on a Monday morning, fifty minutes after the work to replace it began. Its README now opens with a banner that says do not run or develop this, lists what the other dashboard does in its place, and keeps the repository for history only. Ninety-one of its commits carry dates from four days of the previous week.
The counting
It started in late May as “Phase D”, a server-rendered page over the status API that shows the fleet’s one headline number and a card per automation. By the Friday it had thirteen page routes: triage, incidents, uptime, charts, digest, trends, events and their archive, maintenance windows, snoozes, a page per source, a ranking of sources, and the front page. On the Sunday of the big push, thirty-nine commits landed in it; thirteen the next day, including its first write path, a snooze button that turned a list of problems into a control surface; sixteen on the Thursday; twenty-three on the Friday.
What the commit messages share is a number. Each feature is introduced as the Nth capability gap on a named axis. The tenth, the twelfth, the fourteenth. “The 16th capability gap, and a new AXIS: data EGRESS.” The seventeenth: an incident downloads as a markdown postmortem. The eighteenth: the SLA table downloads as CSV. “The 22nd capability gap, and the 2nd FIND-axis rung”: search that reaches into an event’s structured payload to find a 504 that lives only in a status code. By Friday the count had reached forty, with a dead-man’s switch so the dashboard pages you when it loses the API it watches, a button that fires a test notification so you know paging works before you walk away, quiet hours, a severity floor, runbook notes inline on the triage page.
Read as a changelog it is impressive and it is all real: every one of those things works, has tests, and in several cases was driven end to end against the live API. Read as a sequence, the numbering is doing something else. “The 22nd gap” sounds like a measurement. It is a count of proposals, and nothing in it says who asked for the twenty-second, or whether the twenty-first was used.
The refusals
Four of Friday’s sessions shipped nothing at all. The first, before dawn, ran what it called the full capability trace, every lens the project had accumulated, and found that “every concrete, non-speculative, ungated gap is already closed.” The second, at ten to seven, re-derived that without trusting the first, grepping the upstream router’s real route files and cross-referencing every endpoint the dashboard fetched. Its note is blunt: “gaps 38-40 were marginal.” The third and fourth, by half past nine, did it again. Each wrote down the candidates it had rejected and why: saved views duplicate browser bookmarks; correlate-around-a-time is a two-click shortcut over an existing page; a reclaimed-versus-spend headline would mislead. Each ended with the same recommendation, that the next real value needed me to open a gate: a schema session on the upstream API, a deploy decision, “OR pause status-web in the fleet rotation.”
That is the system working. Four agents, no shared memory, each refusing to invent gap forty-one to look productive, each leaving the choice where the charter says it belongs.
The portfolio
On the Sunday the idea engine was pointed at every project in the fleet and asked a question none of them had been asked: is this a revenue play. The status dashboard scored 2.3 out of 10, and the evaluation was careful about what that did not mean: “Keep it as the well-built ops tool it is,” it said, and the shutdown band means not a revenue play, not “kill the project.” It also scored the other dashboard, the single-file fleet console, and reached the same verdict for the same reason. Internal tooling, both.
That page is what killed it, and not by its verdict. By its layout: two dashboards, side by side, for one operator. The agents had each been shown one repository and had each, correctly, found it complete. Completeness is a property of a repository. Redundancy is a property of the portfolio, and nothing in the fleet looks at the portfolio except an evaluation that was looking for something else.
On the Monday at 8:22 a spec appeared in the other dashboard: one operator console; absorb the status dashboard’s value as a Status tab; “retire status-web only at parity”, in six slices; port only the presentation logic each slice needs, “do not bulk-port 4.7k lines.” Slice one landed with that commit. At 9:11, slices two through six, with an ops-health tile the old dashboard never had, under the words “full status-web parity.” At 9:12, the README banner. At 9:12, the four lines in the fleet roster that had staffed it, deleted.
What parity was with
The spec measured the module it meant to replace at 4.7 thousand lines and said not to bulk-port them. That is the size of the module in the checkout that, fifty minutes later, received the retirement banner: a checkout whose last commit was the Sunday-evening docs cut, and which had taken nothing in since. In the copy the fleet had been working in, the same module was 8,825 lines. Every commit from the Monday on, the write path, the egress axis, the find axis, the dead-man’s switch, the four refusals, was in the one copy and not the other.
The banner lists what moved: the headline number, automation health, alerts, uptime, incidents, activity, recent events. That is the dashboard as it stood on the Sunday afternoon. Digest, trends, snoozes, maintenance windows, runbook notes, quiet hours, the search that reaches into a payload for a status code: none of them are on the list, because the copy being retired had never had them. Parity was reached in six slices and forty-nine minutes, with the version the spec could see.
The agents could tell me it was finished. They told me four times, in writing, with evidence, in the copy where the work was. What they could not tell me was that it was one of two, because redundancy is not a property of a repository. The one judgment that finally saw two dashboards at once saw them on a copy in which forty gaps had never been opened, and it was right anyway: the verdict did not depend on the week. Only the word parity did.