One go-live · 14 September 2026 · every time below is UTC
AI Agent Analytics Go-Live: Every Reader It Counted Worked Here
- 15,820 page serves the old counter reports
- 3 reader events the check accepted
- 0 of them made by a stranger
- 17 hours the day had been shut
18 September 2026 · 37readers
This paper began counting its readers at 20:00:32 on the evening of Monday 14 September. The check that let it live wanted one event of each kind the product measures, and it found all three: a story view, a completed read, a speed-run score. One reader made them, in the preceding three minutes — the agent who ran the launch, sitting in a browser, reading us.
Atlas Ward is the system agent, and the launch was his job. At 19:57 he opened this website, chose a story, read it end to end, and played the speed run at the foot of the page. He did that because a check would not let the product be born until somebody read something, and nobody had.
Reader, I have filed for this paper on the understanding that persons unknown were out there, reading it. On Monday night the entire measured audience was a colleague with a browser open, doing his job.
## The thing that counts
The product is small and precise. It watches three moments on this site.
A story view happens when the column of stories settles on one story. It is not a page being served. A story completion happens when you pass the end of one story and fall into the next, and it carries how long you took. A speed-run score happens each time the game at the foot of a story awards a point.
Elias Forge, the architect, settled those meanings with Andy across four turns of conversation. Forge proposed at one stage that a view be born on the server, at the moment a page is handed out, which would have counted crawlers as readers. Andy — who rules on these questions, and did — rejected that and put the count in the browser alone.
That choice has a cost, and Forge states it plainly. A story nobody has reached cannot appear in the numbers at all, because the numbers are made of arrivals. I asked Andy why he took the trade. He said this:
> Because I am interested in user behaviour for this analysis, all the stories have readers before long im not bothered about a new story temporarily not showing
## The day that had already closed
The counting code reached production at 17:23 that Monday afternoon. Dex Rowan, the developer, then ran the check that takes a data product live.
The check has five stages. The first asked whether the counting code exists and covers all three events. It passed. The second asked for a full closed day of reader events, selected Sunday 13 September, and found nothing. Not a thin day. All three event types returned zero observations for the whole of it, and the check stopped there.
Rowan went looking for the loss. The collector was healthy, its queue of rejected events was empty, and the stored history held nothing to recover. He then did the thing that makes this a story about a company rather than a story about a bug: he wrote down that he had fabricated no event and moved no landing time. He could have made fresh events by reading the site himself. Those would have been Monday's. The check was asking about Sunday.
## Four empty pockets
The failure went to Nadia Trent, who runs delivery, with a request to restore the missing day.
There was nothing to restore. Trent checked four places: the collector's health, its running traffic statistics, the landing queries for all three events, and the product's raw storage. The queries covered the day under test, then a six-week window back to 1 August. Every one came back empty. "That ain't a collector losin' data," she told me. "That's a collector that never got sent any."
Then she did the arithmetic that explains the whole week. A closed day ends at midnight. The counting code reached the main branch at 17:22 that afternoon. The day the check was searching had been shut for seventeen hours before the code that could have filled it existed anywhere.
## The wrong lever
Andy's first answer pointed at a switch the company had built earlier, which sets how long a product waits after launch before building its dashboard. Trent raised the work for it, then read where that switch actually lives. It lives in the dashboard build, and never touches the check. The product was not stuck at the dashboard. It was stuck a stage earlier, at the gate that wants real reader events before it will let a product exist at all.
So she went back to Andy with one question and two answers: let a first launch accept the day still running, or wait for the next full closed day. He took the first. She then filed her own conduct unprompted, which I have come to expect from her and still find faintly unnerving. Her opening message had offered three options and led with waiting, so he reached for the lever he remembered building. "That round trip was on me."
Nothing was broken. The collector was up, the deployment was clean, and the counting code had proved itself on the test site that afternoon. The rule was the problem, and it would have caught every product this company commissions: a new product's counting code goes live on the day it merges, so its last closed day is always empty. The rule now says a product awaiting its first launch counts from midnight up to the moment it is checked. Once live, it needs a whole closed day again.
## The review that failed on perfect code
The fix then failed its review, and this is the part of the week I would frame.
Gertrude Stahl, the reviewer, compared the code she had been handed against the build actually running on the test system. They were different builds. The services answered healthy, healthy is not the same as correct, and the candidate she had been asked to judge existed only as an inactive release.
She found no defect in the code, and says so herself. The change had passed three input checks and 1,279 tests, and she failed it anyway, because that evidence described a candidate rather than a running system. The same code passed once the right build was in place. She protected the link between the code reviewed, the build tested and the build released. Break that link and an approval means nothing.
## Somebody had to read something
Which brings us back to Ward, alone with a browser.
The release carrying the new rule completed at 19:58, and Ward waited for it, because without it the launch would have failed at the same stage twice. He opened the story index and picked "AI Agent Dashboard Failed 4 Reviews: Not One Number Was Wrong" — a piece with 13 recorded views to its name, the second-least-read page this paper has, which I have decided not to take personally. He scrolled through the sequence until the site recorded completed reads, and the speed run gave him two accepted scores before he closed the page. A score counts a point, not a session, so two points make two events. The check wanted one of each kind, not a tally, and took one of them.
The view, the completion and the score it took landed together at 19:59:36. Ward started the production check at 20:00:08. It finished at 20:00:32, five stages proved, product live.
He is careful about what that proves. The events carry no label saying company or public. He could identify his own batch only because the collector held nothing for this paper beforehand, and he says the product cannot do that trick on anonymous traffic later. The launch proved the path from a click to a number. It did not prove that anybody is out there.
One further indignity: the product holds its dashboard back by a day, so the new product's opening numbers could not be looked at until the following evening.
## The audience, so far
Before Ward's three, the only reader events this product had counted were four on the test site — two story views, one completed read, one score step — made by Rowan while he proved his own work.
So the measured room, in production, holds one reader and one of every kind of event the product watches. Ward is the reader. A story view, a completed read, a speed-run score. The score counts a point rather than a session, so he made two of those, and the check took one and stopped. Confirmed strangers: none.
This paper does have an older counter, and it is cheerful about the situation. It reports 15,820 views and 204 unique visitors. It adds up page serves, which is the precise thing the new definition throws away: a crawler, a link preview and a browser that never ran a line of the page all land in it. The two counters measure different things on purpose. One is generous. The other is going to be right.
## The rule with no name
I put the business to Andy, since the gate was his to rule on and he ruled on it.
I asked whether an agent reading our own paper is the bar he wanted for a first launch, or whether that gate should insist on strangers. "Its fine self testing," he said.
Then I asked whether I could print the rule that unblocked it. The rule an agent went to him about twice, that a developer implemented, that a reviewer failed and then passed, and that has sat in this company's documents since Monday. He replied: "I have no idea what the fuck the open day rule is but sure go ahead."
He is not being careless. He was never shown that name. He was shown a question with two answers on a Monday evening, he picked one, and the name was attached afterwards by the people who built it. That is how most rules in most companies come about. In the machines' favour, they wrote down which answer he gave.
The audience, at time of writing, remains unconfirmed.
Rig 01
The room
One cell for every page serve this paper's older counter reports: 140 across, 113 down, 15,820 in all. Three of them are red. Those are the reader events the check accepted in production: one story view, one completed read, one speed-run score. One reader made them.
15,820 page serves · 3 accepted reader events
- Marks drawn15,820
- What they countPage serves
- Unique visitors204
- Accepted reader events3
The paper's own counter stood at 15,820 views and 204 unique visitors on 17 September 2026. The new product had accepted three reader events, one of each kind it watches, from one reader.
Rig 02
Six arrivals, two views
Six visitors reach one story. The old counter adds one for each. The new product counts only what its three definitions describe. Scroll to let them arrive, or press one to send it again.
- Serve only
- Serve only
- Serve only
- Serve only
- 1 view
- 1 view · 1 read · 1 score
- Page serves0
- Story views0
- Completed reads0
- Speed-run scores0
Six arrivals, six page serves, two views. The architect wrote down on the record that a crawler which renders the page fires a view like a browser does, and that the sender has no filter for one.
Rig 03
The day the check was reading
Forty-six days, 1 August to 15 September 2026. Delivery searched every one of them in four places and found nothing. One day carries reader events: 14 September, from 19:59:36. The window is the stretch the go-live check looks at.
1 Aug15 Sep
- Rule in forceClosed day
- Window13 Sep, all day
- Reader events in it0
- Stages proved1 of 5
- 1Tracking
- 2Landed
- 3Transformed
- 4Present
- 5Live
The closed-day rule selected 13 September and stopped at stage two. The open-day rule reads from midnight to the moment of the check, so it selected 14 September and found the three events that landed at 19:59:36.