A front page with no model in the loop.
A source-linked AI news briefing: publisher headlines, transparent source labels and a searchable archive. Automatically collected and ranked; not independently fact-checked.
The front page you are reading is built entirely by tools/digest.mjs and
tools/harvest.mjs — no API key, no model, nothing generated. That is not a
fallback state; it is the whole design going forward. This branch of the repository runs
the digest and the wire and nothing else, permanently, which is what makes it something a
reader can rely on rather than something that happens to be working today.
That was not always true. From 17 August through 12 September 2026 this paper also ran an
AI-written Edition tier — 18 of them, archived and
unchanged at archive.html. Every one of those
18 pages still exists exactly as published: same URL, same prose,
same sources, same rule this whole paper is built on — a published story never changes
(rule 3). What stopped is new ones. The editorial pipeline's own credential expired for nine
days before anyone noticed, because the workflow's failure alert was wired to a job that only
runs when the pipeline succeeds — see RELIABILITY.md. Generating new AI editions
now lives on the editorial-ai branch, for anyone who wants to run it with their
own key. This branch does not depend on it existing at all.
The archived editions were each produced by the same pipeline, the same editorial rules and the same validator. A run worked through four stages. First it researched each beat against the day's candidate stories, following every lead to a primary source. Second it drafted, applying the house style and refusing to print any claim it could not verify. Third it validated: the edition was checked against a schema, a sourcing policy and a style linter, and a run that failed was not published. Fourth it committed the JSON to git and pushed.
Two rules mattered more than the rest, and still govern how those pages read today. No claim ran without a source, and lead stories carried at least two that were not rewrites of each other. Nothing was invented — not a URL, not a quotation, not a number, not a date.
On images: this paper never republished other people's press photography, because it had no licence to. The art on every archived story is generated from that story's identifier, which is why it is abstract and why it never changes.
The obvious limitation, for the archived tier: an automated pipeline can be confidently wrong. It can misread a benchmark, miss the context that makes a funding round unremarkable, or pick up a claim that a human editor would have recognised as a press release in a wig. Its mitigations were the source tiers, the confidence label printed on every story, and the fact that every source was one click away. That limitation does not apply to what runs now — the digest and the wire below make no claim to have understood anything, only to have counted it.
Current selection uses a hard 48-hour publication window relative to collection time, rejects undated and future leads, excludes recognizable buying guides and sponsored URLs, and limits each publisher group to five items. A separately maintained source-review list can surface important announcements with explicit context; reading a source does not independently reproduce its claims. Date-only newsroom dates are normalized to midnight UTC for ordering, not presented as exact publication times.
The digest: no model at all
The front page runs without a model or API key. tools/harvest.mjs collects headlines and descriptions from public feeds;
tools/digest.mjs clusters near-duplicate coverage of the same event, scores each
cluster on recency, source attribution, publisher coverage overlap, whether it
repeats a previous digest, then keeps fresh clusters within topic and publisher limits.
The front page prefers the highest-ranked multi-publisher item for its lead when one exists; otherwise it uses the highest-ranked eligible item. It is still an automatic choice, not a human judgement of importance.
The honest way to describe the limits: the digest claims only to have counted and sorted,
never to have read or verified the full articles. Every headline is a source's own title,
never rewritten, and every item links straight to where it was reported. When a publisher feed provides a complete, relevant sentence, a deterministic text selector prints that sentence as a short, attributed excerpt. It rejects cut-off feed text; no model fills the gap or writes a new claim. A digest item says multiple-publisher coverage when its cluster has at least two publisher groups and a primary or established-newsroom source. Shared headlines do not prove independent reporting or factual accuracy. Corporate publications with the same parent count as one group. Single-source vendor announcements and research preprints are labeled explicitly. The legacy data field named confirmed means coverage overlap only; it is never presented as fact-check certification.
The illustrated front page uses original, deterministic artwork from this repository. The pictures are thematic illustrations, not photographs of the reported events. What the digest cannot do matters as much as what it can. It cannot tell whether a claim is true, only whether more than one publisher is making it. It has no "why it matters" field, on purpose — writing one would be the pipeline inventing an opinion it does not have. And its clustering works on shared words in a headline, not meaning, so two outlets covering the same event in very different language will often show up as two separate, single-source items rather than one multi-publisher cluster. That is a real limitation of counting words instead of understanding them, and it is stated here rather than hidden.
The wire: newest headlines
Underneath the digest, on the front page, is the wire — the lowest tier and
the one with no judgement in it at all. tools/harvest.mjs pulls headlines straight
from roughly 30 public RSS feeds and a handful of topic searches, keeps whatever is plausibly
about AI, and shows the most recent ones, exactly as their publisher wrote them. Nothing is
clustered, nothing is ranked by importance, nothing is confirmed against a second source. A
single busy feed cannot fill the whole page — all arXiv categories share one publisher cap —
and publisher-marked sponsored content is excluded. Each row labels its source type, including
self-reported company posts and research preprints. Beyond that, this is a raw feed of the newest
items and nothing more. Checking the destination and headline does not verify the claims.
This is deliberate: the wire is what keeps the site from going dark. It needs no API key and no model, so if the digest itself stops — an outage, a run that failed its own checks — the wire keeps refreshing on its own schedule and the front page still shows what happened today. It is labelled as unverified everywhere it appears, and every headline links straight to the publisher that wrote it. Treat it exactly like a stack of newspapers on a desk, not like reporting.
The weekly review: archived, not running
The weekly review read what the paper had already published over the
trailing 7 days and reported on itself: which of its own declared threads moved, which
questions it asked and had not yet answered, and which stories it corrected. Every sentence
was either copied verbatim from a field an edition already carried, or a plain count — it
made no API call and touched no network, same as the digest. But everything it had to say
came from Edition continuity fields, so it moved to editorial-ai along with the
tier that produces them. The reviews it already wrote are unchanged at
weekly.html.