Skip to main content
605Buzz

How we handle trust

We ship four trust artifacts, none of them cryptographic certificates. They cover what a reader, a researcher, and a regulator actually ask about a local-news source.

1. A public corrections ledger

Every correction lands at /corrections with a diff (what changed), a timestamp, and a link back to the original article. Retracted articles serve a 410 Gone tombstone that points at the correction record. The ledger is the trust artifact — the record of when we were wrong and how quickly we said so.

2. A stamped approval tier — which mostly says “nobody reviewed this”

Every article stores an approval tier, and the honest reading of that tier is the point of this section. There are two kinds of article on this site and they carry very different stamps.

Machine-assembled articles — everything the live desks publish, which is essentially the whole site — are stamped tier1-auto-publish. That tier means exactly what it says: the article published automatically, with no editor in the loop. There is no reviewer name, no review timestamp, and no approval gesture recorded, because no review took place. The feeds report this as humanReviewed: false, and the article page prints “Published automatically from public-record data — not yet reviewed by an editor.” If you are auditing this site, that flag is the one to read.

Hand-written articles — a small number of posts written by a person and reviewed in a pull request — additionally record the approval gesture that cleared them (a cool-off window, a retype-confirm, or a second factor) in their source frontmatter. Those are the only articles on this site for which a human approval record exists.

3. Tamper-evidence on the ingest chain

The public sources we ingest from (SD Department of Labor WARN notices, county permit portals, etc.) land in an append-only table with a SHA-256 hex hash over the canonical-JSON payload. Anyone with the raw ingest row can independently verify the payload wasn't modified after we received it. This is a hash chain, not a signature chain — no keys, no verifier UX. If cryptographic non-repudiation is needed for a specific consumer later, it layers on the same hash columns.

4. An editing pass we withdrew, and why

A template writes every article. Between Aug. 9 and Aug. 18, 2026 a language model also edited 37 articles for length and order afterwards, bounded by a program rather than by instruction: the edited text was compared against the template's own output and rejected if it introduced a figure, date, name or URL the template did not carry, dropped one it did, lost a source link, lost a sentence stating what the record does not say, or broke the article's shape. Most drafts were rejected. The 37 that passed are listed at /edited and are the only ones of that kind. The shortening pass described below is a different mechanism and is listed on the same page.

This section used to end by saying the check was the point — that “we told the model not to hallucinate” is not a verification claim, and that what was verifiable here was narrower and actually true. The first half of that still stands. The second half did not survive being tested.

The program compared tokens, not claims. It could tell that every number in an edited article also appeared somewhere in the template's text — but not that the number was still attached to the same thing, not that a figure had been assembled out of digits already present, not that a sentence had been negated, and it never checked whether a name had been removed at all. Those are differences a reader would care about and the check could not see, so it was not the guarantee this page described.

We withdrew the editing pass rather than keep describing it that way. The 37 keep the template's own text in their version history, so what the model changed is on the record. No person reviewed either version.

5. What replaced it, and why the claim is different

A language model shortens some articles now, and the difference from the pass above is not a better checker — it is that there is nothing left to check. The model never sees a blank page. It is shown the article's sentences, each with a number beside it, and its entire reply is a list of numbers to delete. It cannot write, rephrase, reorder or add text, because the published article is reassembled from the sentences that remain, byte for byte as the template wrote them.

That is why this section can make a claim the last one could not. Before, a program compared the model's prose against the template's and asked whether anything had been invented — a question about text, answered by matching tokens, which is the part that turned out to be weaker than it read. Now no token can be invented, because no new token exists: every word in a shortened article is a word the template wrote. A figure cannot be assembled from digits, a name cannot be swapped, and a sentence cannot be negated, since none of those can happen without writing something.

What remains checkable is what was removed, and that is a question about a list of numbers rather than about prose. Sentences carrying a caveat, an attribution, a statement of what the record does not say, or the link to the source are marked and cannot be deleted at all. The article is checked again after the cut, and refused if it lost a figure or a link that made the record what it is. A person asks for each edit, states why, and approves the result before it publishes — that request is counted whether or not anything is published, and the change is filed on the corrections ledger as a rewording, because the words changed and the public record did not.

Why not signed cryptographic receipts?

We prototyped Ed25519-signed article receipts in July 2026 and removed them at MVP after a security review — the crypto layer carried more operational surface (key rotation, verifier UX, pkcs8 secret management) than a solo pre-revenue product repays. See the trade-off writeup on GitHub . If MAU crosses ~1k, or a specific enterprise consumer needs signed non-repudiation, the schema is shaped to add signing back without a migration.