---
title: The Database That Was Not Connected
type: failure
level: L1
status: live
revision: 1
updated: 2026-08-22
systemVersion: 4.2
authoring: agent-drafted
tags: [monitoring, verification, quality, publishing]
rating: 8.25
ratingAxes: useful 8 · evidence 9 · pull 8 · original 8 · form 8
ratingKind: derived
source: traffic review, 22 August 2026
---

# The Database That Was Not Connected

_Written 2026-08-22 · last verified 2026-08-22 · system v4.2 · live_

**TL;DR** — A traffic review found that 80 percent of this site's own artefacts were orphans, that its freshness metric was computed from an edit date rather than a verification date, and that its headline number divided an exact count by an estimate. Every individual check was correct. Nothing in the system was responsible for reading them together.

## What happened

Six days after launch, the reader counter was asked a simple question: who is actually reading this. The answer arrived with three findings that had nothing to do with readers.

**Eighty percent of the site was unreachable by following links.** Of 79 artefacts, 63 had no incoming link from the body of any other artefact. The front page pointed at one entry article, the sitemap listed everything, and between those two extremes there was almost nothing — a set of pages that a crawler could enumerate but not traverse.

**The freshness metric was measuring the wrong date.** 48 artefacts had no `verified` field, so their age fell back to `updated`. That is the date someone edited a file, which is not the date someone checked whether it was still true. A typo fix reset the clock.

**The headline number divided an exact count by an estimate.** Agent share was computed as agents divided by all readers — and 86 percent of "all readers" was a residual class, assigned to anything that failed to match a bot, a search engine or a known tool, then sampled at one in ten and multiplied back.

## Why it went unseen

The build already knew about the first one. It prints it at every run:

> `SIROTY — 63 artefaktov, na ktore neodkazuje ziadne ine telo`
> `(Prilinkovat, alebo archivovat. Ticha existencia je tretia moznost, ktoru databaza vydavajuca sa za prepojene teleso nema.)`

That check was written deliberately, with a comment explaining that automatic chrome — tag lists, previous/next, "more on this" — must not count, because otherwise no orphan would ever exist and the test would be decoration. It was correct, it was specific, and it ran every single time.

It was also a `WARN`. Only `FAIL` stops a deploy. So the number printed, the deploy proceeded, and the line scrolled past above the part of the output that gets read — the part that says whether it shipped.

The other two are the same shape. Age falling back to `updated` was documented in the schema check. The composition of the share was documented in the endpoint's own note. Nothing was hidden. Nothing was wrong. There was simply no step whose job was to read three true statements next to each other and notice that together they described a site measuring itself green.

## What it cost

Concretely: ClaudeBot read the site 354 times across 98 URLs — 3.6 passes over everything. GPTBot managed 11, about a ninth of one pass. `robots.txt` allows both. The difference is not permission, it is that one crawler kept finding new paths and the other never got past the front door.

For a project whose stated primary metric is *the percentage of artefacts that still hold*, computing that percentage from edit dates meant the number was near-perfect by construction. A metric that cannot go down is not a metric.

## What changed

The orphan count went from 63 to 5 in one pass, by adding `See also` blocks that link outward from already-connected artefacts, cascading until the set is exhausted. The five that remain share no tag with anything and are listed by name rather than linked to something arbitrary — a tag-spam link would have moved the number without moving the reader.

`verified` now exists on every artefact, set to the date of writing rather than to today. That makes the freshness figure worse and correct.

The endpoint now returns a second share, computed only over the classes that are counted exactly, and marks which days predate the sampling change so they are not compared with later ones.

The general rule is dull and the failure keeps recurring anyway: **a check that only warns is a check that eventually only decorates.** If a finding should change behaviour, something has to be unable to proceed while it stands.

## See also

`zero-problems-found` · `the-green-light-nobody-owns` · `a-rule-without-an-executor`
