Why we measured ourselves rather than the field
Everything written about content decay says the same three things: audit regularly, fix broken links, keep pages current. It is all true and none of it is checkable, because the people writing it are not showing you a corpus. So we measured ours, wrote each check as a script that leaves a committed artifact, and published what came back including the parts that do not flatter us.
The corpus is 348 published pieces across nine subject areas. Every figure below is the output of a script in the repository this site is built from, and every one of those scripts writes a file you could regenerate. Where a number here disagrees with its artifact, the artifact is right and this page has gone stale, which is itself the subject.
The pattern in all four findings is the same and it is the reason any of this is worth writing down. Not one of them was visible by reading. They were invisible until something counted, and they had been true for weeks.
Finding one: ten pages carried a figure nobody could check
This section originally said seventy pages, and it was wrong for five days. The scan's rupee pattern had no word boundary before "Rs", so it matched the last two letters of ordinary words: "for years,", "two developers," and "40 hours," were each counted as a published price. Sixty of the seventy were words. Corrected on 2026-09-03, together with the matcher and a regression test naming each phrase that used to match. The finding survives at a sixth of the size, and the correction is the more useful half of it.
Across the corpus, ten pages carried money figures with nothing behind them: market rates, hosting prices, model token prices, currency ranges. All ten sat in content families that have no field for a source, so there was nothing behind any of the numbers and a reader had no way to check one.
Some were probably sound. Some were about targets that move several times a year and were likely wrong already. From the page you could not tell which, and that was the actual defect. A figure a reader cannot check is worth less than no figure, because it invites a decision the writer has not earned.
The cause is ordinary and worth naming, because it is the shape most content debt takes. Our long-form tier requires a source structurally and the test suite fails without one. The short answer tier was written before that discipline existed and has no such field. The rule was real, it was enforced, and it was enforced on only part of the corpus.
- Volatile figures age worst. Anything priced per unit of usage changes on the supplier's schedule, not yours.
- Market ranges are the hardest kind to source and the easiest to absorb from somewhere else without noticing you did.
- Stable figures are the least urgent and still unattributable, which means they cannot be defended when challenged.
All ten are now closed, and the fix was structural rather than editorial. The short-answer tier gained a source field, and the rule that arrived with it is that we do not copy a third-party price at all: we link to the page that publishes it. A number copied in July is wrong by October with nothing on the page to say so, while a link is right every time somebody clicks it.
Finding two: 58 of 209 titles were too long to display
A search result gives a title roughly sixty characters before it truncates. Our layout appends a fourteen character suffix to every page, which leaves forty six. Measured across 209 short-answer entries, 58 exceeded that and eight were long enough to be cut outright.
The cause turned out to be a single sentence pattern. The worst offenders all begin "What is the difference between X and Y", which spends thirty two characters before reaching a word anybody would type into a search box. The question is well written for a reader who has already arrived and badly written for the result that has to earn the arrival.
The fix was to separate the two jobs: the heading keeps the full question, and the title gets its own shorter form. The useful part is that the shorter form is usually a better match for the query as well, because people search for the comparison rather than for the sentence about it.
All 58 were cleared on 2026-08-31 and the ceiling is now zero. Zero is the better ceiling, because a new entry with an overlong question fails the build in the commit that adds it, while the author still has the page open.
An external crawl of the same site found three over-length titles, because it sampled a hundred pages out of roughly three hundred and fifty. The same site, measured two ways on the same day, reported three problems or fifty eight depending on the coverage of the tool. Read any audit's sample size before its findings.
Finding three: citations were already stale when published
We check external sources by hand before publishing and record the date each was read. When we finally wrote a script to re-open all of them, it found two citations pointing at addresses that redirect. Both were in pieces that had been live for days, and both had been checked by a person at the time of writing.
The likeliest explanation is not that they decayed in two days. It is that the documentation had already been reorganised before we cited it, and a person clicking a link that lands on the right page has no way to notice a redirect happened. A browser hides exactly the thing being checked.
There are three ways to get this check wrong, and all three destroy good sources rather than bad ones. Deleting a citation because a script got a 403 throws away a live page behind a bot shield. Condemning a link on a failed HEAD request throws away pages that answer HEAD with a 404 and serve perfectly on GET. And a trailing carriage return on a Windows-authored list makes every request fail, so the run reports the entire corpus as dead.
The current state is twenty external sources, nineteen resolving and one behind a bot shield that a person confirmed by hand, with that confirmation recorded so nobody repeats it or mistakes it for rot. What no script can check is whether a page still says what we said it said, which is the reason every source carries the date it was read.
Finding four: quotable, self-contained, and not concrete
The last one is the most interesting because it fails on the dimension nobody thinks to measure. We check whether each short answer is liftable by an answer engine: short enough to quote whole, self-contained enough to survive being cut from its page, and carrying at least one concrete thing worth quoting.
| Property | Passing | Share |
|---|---|---|
| Quotable length, 55 words or fewer | 193 of 200 | 97% |
| Self-contained opening | 197 of 200 | 99% |
| Carries a number or a named thing | 94 of 200 | 47% |
| All three | 88 of 200 | 44% |
The first two are close to solved and the third is not, which is a specific and useful result. The corpus is disciplined about the things that are easy to see when you reread a paragraph, and undisciplined about the thing that is only visible when you ask what somebody would actually quote. Fifty three percent of our answers are well formed and say nothing anybody would lift.
That is the failure mode of writing that has been edited for smoothness rather than for substance, and it is worth pointing at because it is invisible to every other check. It passes a spell check, a readability score, a plagiarism check and a human skim.
The shape of all four
None of these was found by reading. Every one was invisible until something counted, and every one had been true for weeks while people looked at the pages. That is the argument for measurement over review, and it is not an argument about diligence: the pages were reviewed.
- The defects were uniform and boring, which is exactly what a reviewer's attention slides off.
- Three of the four are only visible in aggregate. One long title is nothing; fifty eight is a pattern with a single cause.
- The fourth is only visible against a definition. Nobody notices a missing concrete anchor until somebody writes down what one is.
- All four grow on their own. Every new page can add to each count, and nobody rereads a page they wrote in March.
So each check is now a script with a committed artifact, and two of them carried a ceiling that could only ever go down. That is deliberately weaker than a rule that forbids the problem: a rule that fails a build on every existing page is a rule somebody deletes on a deadline. A ceiling that cannot rise makes the debt visible, stops it growing, and lets it be paid off in the order that matters. Both of those ceilings reached zero on 2026-08-31, at which point they stopped being ceilings and became rules.
The uncomfortable part is that all four checks were written after the content, which is why the numbers are what they are. If you are starting a corpus now, the cheap version of this entire piece is to write the checks first.
There is a fifth finding this page did not have room for when it was written, because it had not happened yet: one of these four checks was itself wrong, and reported six times more of a problem than existed. A check written after the content is still a thing somebody wrote, and it can be wrong in the direction that looks like diligence. That is its own piece.
What this does not cover
- This is one corpus, ours, on one stack. The four failure modes are probably general and the proportions certainly are not, and nothing here is a survey of anybody else's content.
- Every check measures structure rather than quality. A concrete anchor can be a date, a self-contained opening can still be a dull sentence, and a resolving link can point at a page that has been rewritten. None of that is detectable automatically.
- The citability thresholds are ours: 55 words for quotable, one concrete anchor for substance. They are defensible rather than derived, and different thresholds would give different percentages.
- The money-figure matcher is deliberately broad and catches numbers that are not prices, so the 118 figures are an upper bound on the problem and the 70 pages are the number that matters.
- We cannot measure whether any of this affected how the pages perform in search, because the corpus has not been indexed long enough for a clean before and after. Every number here is about the content, not about its results.
- Publishing your own audit selects for the findings you were willing to publish. We have tried to include the unflattering ones and cannot prove we found them all.
Sources
- whatscene.in answer corpus, 200 short-answer entries. Each opening answer measured for quotable length, a self-contained opening and the presence of a concrete anchor, then probed against the server HTML with no JavaScript executed. Run: scripts/citability.mjs, recorded in content/CITABILITY.md.
- whatscene.in published money figures, whole corpus. Every published passage scanned for figures that could read as a price, split by whether the content family it sits in has a source field at all. The matcher is shared with the test that holds the ceiling, so the two cannot drift. Run: scripts/price-claims.mjs, recorded in content/PRICE-CLAIMS.md.
- whatscene.in external citations, long-form tier. Every cited URL re-opened with a browser user agent and classified. HEAD is used only as a cheap first pass and never allowed to condemn a link; any non-2xx is re-checked with a real GET. Run: scripts/link-check.mjs, recorded in content/LINK-CHECK.md.
- whatscene.in title lengths, 209 short-answer entries. Rendered title length computed as the entry title plus the fourteen character suffix the layout appends, counted against the sixty character budget. Run: tests/meta-description.test.ts, measured 2026-08-25.
Revisions
- 3 September 2026 Corrected finding one. It said seventy unsourced pages; the real number was ten. The scan's rupee pattern had no word boundary, so it counted the last two letters of ordinary words as prices. The matcher and this page were both wrong for five days.
- 3 September 2026 Recorded the outcomes. Both ceilings reached zero on 2026-08-31: the untraceable figures and the over-length titles are closed rather than merely capped.
- 26 August 2026 First published, from the committed artifacts of five measurement scripts.
This page is revised in place rather than replaced, so its address does not change.