# TruthScore Narratives — the tour

*Canonical page:* https://truthscore.com/tour
*This document is the complete tour: every feature of the public site, what it shows, why it
works that way, and what it connects to. The HTML version is the same content in twelve
chapters.*

Three things worth carrying into any page here: **belief is computed from evidence and never
assigned**, **repetition never moves a number**, and **every question keeps an explicit share
for "none of these answers" — quote it whenever you quote a share.**

---

## 1. What this site is

*Eight ideas that explain every screen here. Read this chapter and the rest are variations.*

Chapter page: https://truthscore.com/tour/start-here

### Everything is a claim

A reported fact and a speculative theory are the same kind of object here: a claim, with its own page, its own sources, and its own standing. Nothing is filed as “background” or “allegation” — the difference between them is how much bears on them, and that is shown rather than asserted.

**Why.** The moment a system has one bin for facts and another for theories, somebody has to decide which bin a new statement goes in — and that decision, made early and invisibly, is where most of the judgement in news actually happens. Here there is no such decision to make.

**Connects.** It is why an unproven hypothesis can sit on the same page as a physical trace without either being flattered: they are both claims, and the evidence around them is what differs.

See it live: [A claim page, with everything that bears on it](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2)

### Belief is computed, never assigned

No one types a score into this system. Every percentage you see is recomputed from the graph of support and challenge around a claim, and you can take any of them apart term by term.

**Why.** A number somebody typed can be argued with only by arguing with the person. A number that is the output of a stated procedure over stated inputs can be checked — and if you disagree, you can point at exactly which term you disagree with.

**Connects.** Adding evidence adds a link; it never edits a score. That is why the change log records connections rather than corrections, and why the claim page can show its own arithmetic.

See it live: [The arithmetic, in reader language](https://truthscore.com/method#derived) · [The same arithmetic on a real claim](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2)

### “None of the above” is always on the ballot

Every open Question carries an explicit share for the possibility that none of the listed answers is right. It is drawn last, hatched, and labelled unknown — none of the above, and it is frequently the largest bar on the page.

**Why.** A list of candidate answers with the shares adding to 100% quietly asserts that the true answer is on the list. Early in a real story it usually is not. The unknown bar is where that possibility lives, and it is why this site can be honest about a story it has barely begun to read.

**Connects.** The residual is a contender in the ranking too: a Question the fog is winning is treated as a live Question, not a dormant one.

See it live: [A live split with its unknown share](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a) · [Why the residual exists](https://truthscore.com/method#residual)

### Repetition is not evidence

When forty outlets run the same wire story, the model records forty restatements of one assertion and gives them the weight of one. Restatements are shown — who repeated what, at what remove — and they move nothing.

**Why.** Volume is the easiest thing in the world to manufacture and the thing most news interfaces are most sensitive to. Making repetition structurally visible and numerically inert is the single most important defence this design has.

**Connects.** The same rule governs attention: the front page ranks by evidence-shaped activity, and a restatement storm produces exactly zero of it.

See it live: [The rule](https://truthscore.com/method#repetition) · [How it shapes the front page](https://truthscore.com/tour/homepage-and-heat#heat-weights) · [A document, and what restates it](https://truthscore.com/source/ca125fcf)

### Nothing is deleted — a losing branch goes grey, not away

A hypothesis the evidence has abandoned is rendered dormant: greyed, at the belief floor, still on the page with everything that argued for and against it. Combinations ruled out as impossible are recorded as impossible and still shown when you try to walk them.

**Why.** The reason something was dropped is part of the record, and a story that quietly loses its early theories teaches nobody anything about how it developed. It also means you can check whether a discarded theory was discarded for a reason.

**Connects.** It is why the explorer will still assemble a world you have made impossible, and explain the impossibility instead of blocking the click.

See it live: [Dormant branches, still on the page](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a) · [Nothing is deleted](https://truthscore.com/method#deleted)

### Two clocks: when it happened, and when we learned it

Every assertion carries an event time and a knowledge time. Pages show both, and adding ?asof=YYYY-MM-DD to any URL renders the model as it stood on that day.

**Why.** The gap between the two is the fog of war, and it is content. Watching a story’s confidence form — or fail to — is only possible if the record remembers what it believed before it knew better.

**Connects.** The timeline view puts the event-time axis on screen and the knowledge-time scrubber on top of it; the change log is the same two clocks read as a stream.

See it live: [The two clocks](https://truthscore.com/method#clocks) · [Scrub this Question back a day](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a?asof=2026-07-18)

### Many narratives at once — and none of them is a folder

A narrative here is a consistent set of choices through the open Questions: pick an answer to each and you have a possible world. Dozens coexist, ranked, and every piece of evidence is shared across all of them rather than filed inside one.

**Why.** Grouping claims into “stories” as containers forces an early commitment about what belongs with what — and that commitment is usually the thing in dispute. Selections avoid it: a claim can matter to several versions of events without being owned by any.

**Connects.** It is why URLs are flat (/claim/…, never /story/…/claim/…) and why the page-to-page navigation is called a context line rather than a breadcrumb trail.

See it live: [Walk the possible worlds](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a) · [The explorer, explained](https://truthscore.com/tour/stories-and-worlds)

### What this is not

Not a fact-checker issuing verdicts, not a consensus meter, and not a publication with a house view. Nothing here is rated true or false by an editor; a number is a projection over evidence under a named lens.

**Why.** The failure mode this whole design guards against is a machine that looks authoritative and is actually just averaging opinion. Saying so plainly, in the interface and not only in the small print, is part of the guard.

**Connects.** Every share on the site names the lens that produced it, so no number can be quoted as “the site’s verdict”. The About page states the same boundary in full.

See it live: [What it is, and what it is not](https://truthscore.com/about) · [Lenses](https://truthscore.com/method#lenses)

### The shape of the site: six kinds of page

Questions (an open uncertainty and its candidate answers), claims (one statement and its standing), entities (a person, place or organisation), events (something that happened), sources (a document), and stories (a group of Questions that constrain each other). Plus three views keyed to a Question: its timeline, its narrative explorer, and its story.

**Why.** Knowing the six kinds is most of what it takes to navigate here, because every page is one of them and every link goes to one of them.

**Connects.** Everything named anywhere on this site is a link to its own page — chapter 6 is about how strictly that is enforced.

See it live: [All open questions](https://truthscore.com/questions) · [An entity](https://truthscore.com/entity/joshua-kerry--b91693b4) · [A source document](https://truthscore.com/source/ca125fcf)

---

## 2. The Question page — the heart of it

*One open uncertainty, every candidate answer side by side, and what argues for and against each.*

Chapter page: https://truthscore.com/tour/question-page

### The header: what kind of question this is

The label, then a status line: whether the answers are exclusive (at most one can be right) or an open list, how the Question came to exist, when it was promoted, and how many sources bear on it. Subject chips name what the Question is about.

**Why.** Whether the branches compete or coexist changes what the numbers mean, so it is said before any number appears. “Promoted from measurement” tells you a machine noticed a disagreement in the record — no editor picked this Question.

**Connects.** Every subject chip is a link to that entity or event; the source count links down to the provenance footer listing them all.

See it live: [A Question header](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### The context line — anchors, not breadcrumbs

Above the heading, a line naming the page’s primary anchors: part of: the surrounding story · about: Nord Stream pipeline system. Both are links.

**Why.** Breadcrumbs would claim containment — that this Question lives inside that story — and containment would be a lie here (see chapter 1). Naming anchors gives you the same orientation without asserting a hierarchy that does not exist.

**Connects.** The “part of” link leads to the story view; the “about” links lead to the entity or event pages, where this Question appears in their list of Questions in turn.

See it live: [A page with its anchors](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### The split: every branch on one screen

One bar per candidate answer, all of them, including the ones doing badly and including the negative branch. Above them, a sentence naming the lens; below them, a plain-language summary that names the leader and immediately qualifies it.

**Why.** This is the one screen no news product ships. Showing only the leading account is how a live disagreement becomes a settled story without anyone deciding it should. Belief may rank branches; it may never hide one.

**Connects.** Each bar links down to that branch’s own section, where the evidence for and against it is laid out.

See it live: [The split, live](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### The unknown bar, always last

The final bar is unknown — none of the above, drawn hatched and in a different colour because it is a different kind of thing. When the ranked narratives decline to answer a Question at all, the page says so above the bars: “2 of the 6 ranked narratives decline to answer this Question — the residual is winning it.”

**Why.** It is the room left for an answer nobody has proposed yet. A Question whose unknown share is large and growing is one where the world is talking and the evidence is not moving — which is precisely the situation where an ordinary interface would be showing rising confidence.

**Connects.** The same share travels with every quotation of this page: it is in the Markdown twin, the JSON, the share card and the JSON-LD rating explanation, because a share quoted without its residual is a misquotation.

See it live: [A large unknown share](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a) · [Why the residual is a branch](https://truthscore.com/method#residual)

### Standing chips: legs, challenges, dormancy, the floor

Under each bar, small chips count what the branch actually rests on — 0 legs · 5 challenges, dormant, at the belief floor — nothing has lifted it yet — followed by the branch’s own belief under the active lens.

**Why.** A share is a summary; the chips are the shape underneath it. Two branches at 4% are not in the same condition if one has three independent legs and the other has never been tested, and the chips are where you see that at a glance.

**Connects.** An evidentiary leg is an independent line of support — the same notion that makes repetition inert. Every chip’s subject is a link to the thing it counts.

See it live: [Branches with their standing chips](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### The sparkline: has this actually moved?

A small server-drawn chart beside each branch, with a text equivalent that says exactly what it shows — for example “flat at 21% over the last 9 recomputations”. Pointing at it reads out individual values and dates.

**Why.** Stillness is a real reading and an easy one to hide. A branch that has not moved in nine recomputations is telling you something about the evidence, and the sentence says it in words so that it survives with images off, in the Markdown twin, and for a screen reader.

**Connects.** The values come from belief snapshots in the change log — the same records the ?asof scrub replays.

See it live: [Sparklines with their readings](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Supports and challenges, side by side

Below the bars, each branch gets its own section with two columns: ▲ Supports in green and ▼ Challenges in red, every item linked to the claim or artifact it is, with its sources beneath it.

**Why.** Showing what argues against a hypothesis in the same visual breath as what argues for it is the site’s first invariant. A page that lists only the case for something has taken a side by omission.

**Connects.** Contradictions (⚡) appear on both claims involved, so a contradiction can never be visible from one side only.

See it live: [A branch with both columns](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### What kind of evidence it is

Every piece of evidence carries chips naming its kind and strength: physical-trace, document, testimony, statistical, circumstantial — and strong, moderate, weak.

**Why.** Recovered fragments and a spokesman’s denial are both evidence and are not the same kind of thing. Naming the kind lets the reader weigh what the arithmetic deliberately does not try to.

**Connects.** The kind is a property of the link between two claims, not of either claim, which is why the same claim can support one branch circumstantially and contradict another outright.

See it live: [Evidence with its kind and strength](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Independent, or just repeated

Evidence is marked as an independent leg or as a restatement, and repeated assertions show their multiplicity plainly — recorded 2× — rather than appearing twice.

**Why.** This is chapter 1’s rule made visible at the level of a single line. You can see that four outlets said a thing, and you can see that it counted once.

**Connects.** Restatement links are recorded on the source pages in both directions, so you can follow a claim back to the document that first carried it.

See it live: [A document and what restates it](https://truthscore.com/source/ca125fcf) · [Voices are counted, never weighed](https://truthscore.com/tour/claim-page#c-voices)

### The ◆ diagnostic mark: evidence that actually discriminates

Evidence bearing on exactly one live branch is marked ◆ diagnostic and sorted to the top of its list. Evidence consistent with every branch sinks, labelled as agreeing with everything.

**Why.** This is the central lesson of analysing competing hypotheses, taught by layout rather than by a lecture: the useful evidence is the evidence that would have come out differently under a different answer. A fact everybody’s theory predicts tells you nothing about which theory is right.

**Connects.** The mark is computed from the answer structure itself — which branches a piece of evidence touches — so it updates as branches are added, without anyone scoring it.

See it live: [Diagnostic evidence, sorted first](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### “If this were true…” — inferences and their critical questions

Where the model has drawn a conclusion from a branch, it shows the inference as a card: the derived claim, the named argument scheme that produced it (inferred — expert-testimony v1), the premises it rests on, and that scheme’s critical questions with their status — open, favourable or unfavourable.

**Why.** Machine-made inferences are the easiest place for a system like this to smuggle in confidence. Naming the scheme, the premises and the standard challenges to that pattern of reasoning turns an inference into something you can attack in a specific way — and an unfavourable answer withdraws it.

**Connects.** The same critical questions are collected into “What would change this” below, and the derived claim has its own page showing which inference produced it.

See it live: [Inferences with open critical questions](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a) · [Schemes and critical questions](https://truthscore.com/method#schemes)

### What would change this

A section listing the evidence that would actually move the Question: every open critical question, noting where several inferences are waiting on the same one, and the branches nothing has tested yet.

**Why.** It converts an argument into a to-do list, and it commits the model in advance: these are the places it is explicitly waiting to be corrected. It is read straight off the structure, not editorialised.

**Connects.** Answer one of these and the change appears in the change log and moves the bars above — which is exactly the loop the whole site is built to make visible.

See it live: [What would move this Question](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a#what-would-change)

### Where this leads: the ranked narratives

A strip of ranked possible worlds passing through this Question, each showing the choice it makes here and in the neighbouring Questions — including “left open” as a choice — and each a link into the explorer with those choices preselected.

**Why.** A Question is rarely alone: how you answer it constrains the answers next door. The strip is where a single split becomes a set of coherent versions of events, and where a combination that has been ruled out is announced as ruled out.

**Connects.** Before the ranking exists for a neighbourhood, the strip says so — “narrative ranking pending” — rather than rendering an empty box.

See it live: [Ranked narratives through this Question](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a#narratives) · [The explorer, explained](https://truthscore.com/tour/stories-and-worlds)

### Recent developments

The change log, filtered to this Question and written as sentences: “answer on the table: …”, “belief recomputed; unknown 67%”. Every line links its subject, and every line offers see the page as it stood then.

**Why.** It is the difference between a page that is current and a page that has a history. The “as it stood then” link is the honest version of a timestamp: instead of telling you something changed, it shows you the earlier page.

**Connects.** Those links set ?asof, the same knowledge-time scrub used by the timeline; the full log is at Changes, and the same entries are available as an Atom feed scoped to this Question.

See it live: [The whole change log](https://truthscore.com/changes) · [This Question’s developments](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a#developments)

### The provenance footer

Every source bearing on the Question, listed and linked; the active lens named with its technical key; links to the story, timeline and explorer views of the same Question; and the machine-readable twins — Markdown, JSON, Atom.

**Why.** Third invariant: every claim links to its source, and no unsourced assertion appears in public view. Gathering them at the foot means you can audit the document base of a whole Question without opening a single branch.

**Connects.** Each source page shows the reverse: what that document claims, and which other documents restate it.

See it live: [A provenance footer](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a) · [One of the documents behind it](https://truthscore.com/source/ca125fcf)

### When there is nothing there yet

A Question with no answers linked renders a single 100% unknown bar and says why: “assertions have been recorded, but nothing has been offered as an answer. That is an honest state of the record, not a missing page.”

**Why.** Every empty state on this site states its mechanism rather than apologising or vanishing. A blank section teaches the reader that the site is broken; a sentence teaches them what the model currently knows.

**Connects.** The same discipline runs through every list here — “no independent evidence yet”, “track record: not yet computed”, “narrative ranking pending”.

See it live: [A Question with nothing on it yet](https://truthscore.com/question/when-will-sama-safi-be-released--5417105b)

### Focusing a branch (and why you never need to)

With JavaScript on, controls let you collapse or focus a single branch to read it without the others. With JavaScript off, every branch is simply expanded in the page.

**Why.** The rule for every interactive element on this site: the enhancement may change what is comfortable, never what is available. Collapse is comfort; the content ships regardless.

**Connects.** Chapter 12 sets out the rule and the check that enforces it across the whole site.

See it live: [The shadow-layer rule](https://truthscore.com/tour/built-honest#shadow-rule)

### Sharing a Question

A Question pasted into a chat or a social post unfurls into a generated card showing the label and the branch bars — with the unknown share drawn last, hatched, and never dropped, over the line “computed from evidence, never assigned. Leading is not proven.”

**Why.** The share card is where a nuanced page usually becomes a headline. Guaranteeing the residual survives into the preview means the one number most likely to be stripped out is the one that cannot be.

**Connects.** When a long label needs more room, the card drops a branch row — never the unknown row.

See it live: [The Question this card would be made from](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

---

## 3. How to read the numbers

*Belief bars, the unknown residual, the floor, and the lens that every number names.*

Chapter page: https://truthscore.com/tour/reading-numbers

### The anatomy of a belief bar

A horizontal bar per candidate answer: the fill is that answer’s share under the active lens, the label is a link to the claim, and beside it sit the standing chips and a sparkline. The unknown bar closes the set.

**Why.** It is the site’s signature component precisely because it is the site’s argument: the answers are shown together, ranked but not filtered, with the ignorance included in the picture.

**Connects.** The same component is reused wherever a Question appears — the front page, search results, story pages — so it always reads the same way.

See it live: [How to read a belief bar](https://truthscore.com/method#bars)

### What the shares are shares of

The bars divide up everything that could be the case for that Question — including “none of these” — so they add to a whole, not to a hundred percent of the listed options.

**Why.** Normalising over only the listed answers is the quiet mistake that turns a shortlist into a certainty. If the shares added to 100% across the named branches, the interface would be asserting that the truth is among them.

**Connects.** This is why the residual is treated as a branch everywhere — in the ranking, the share card, the JSON and the feeds.

See it live: [A split where the unknown leads](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Leading is not proven

Wherever a top branch is named, the sentence qualifies it in the same breath: “… is currently leading — not established. The unknown residual stands at 67%.”

**Why.** A leading branch is where the current evidence points, not a finding. The phrasing is enforced across the site rather than left to whoever wrote the page, because this is exactly the sentence that erodes first.

**Connects.** The same qualification travels into the machine layer: the structured rating a search engine reads carries an explanation saying the same thing.

See it live: [The sentence in place](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### The floor: ignorance is not fifty-fifty

A hypothesis nobody has supported does not start at “maybe”. It starts near zero — the belief floor — and has to earn its way up. Branches sitting there are labelled at the belief floor — nothing has lifted it yet.

**Why.** It is what makes open hypothesis generation safe. If proposing a theory gave it standing, anyone could move the model by proposing things; because an unsupported theory has no power, proposing one costs nothing and proves nothing.

**Connects.** It is also why “untested” and “refuted” are shown as different states: the page says “Nothing supports this branch yet — untested, which is not the same as refuted.”

See it live: [The floor](https://truthscore.com/method#floor) · [Branches at the floor](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Reading a growing unknown

The unknown share rises when assertions arrive without anything to discriminate between them, and falls when evidence separates the branches.

**Why.** It is the site’s most useful single number for a reader in a hurry, because it answers a question no headline count can: is this story actually being resolved, or is it just being covered?

**Connects.** When a Question has a lot of assertion and a fat residual, the front page gives it a badge — much reported, little shown — with the counts as the whole statement.

See it live: [Much reported, little shown](https://truthscore.com/tour/homepage-and-heat#loud-vs-hot) · [The residual](https://truthscore.com/method#residual)

### Dormant, not gone

Branches the evidence has left behind are greyed and marked dormant, and they stay in the list, in rank order, with everything that was ever said about them.

**Why.** Removing them would hide the shape of the argument — and would make it impossible to tell a theory that failed from a theory nobody has looked at.

**Connects.** On pages with many, a collapse control appears with JavaScript on; the branches themselves are always present in the page.

See it live: [Dormant branches in place](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### The lens: two ways of reading the same structure

Every page has a lens control offering Evidence-weighted and Structural. It is a pair of ordinary links — ?lens=structural@1 — and the server renders the whole page under whichever you pick.

**Why.** Judgment is a view, not a fact. Making the view switchable, named and part of the URL keeps the site from having a single official number, and makes any disagreement about the arithmetic a disagreement about a lens rather than about the record.

**Connects.** Switching lenses never changes which branches exist. Belief may rank branches; it may never hide one — that holds under every lens.

See it live: [The same Question, structurally](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a?lens=structural@1) · [What each lens does](https://truthscore.com/method#lenses)

### Structural publishes counts, not percentages

Under the structural lens the percentages disappear entirely and the same rows render as counts: 1 evidentiary leg · 2 sources · 4 challenges · contested. The page says why: these are counts of how well tested a branch is, which is a different claim from how likely it is.

**Why.** Untested and contested must read as different shapes, not as different decimals. Publishing a percentage where the model only has a count would be inventing precision — so it publishes none.

**Connects.** It is the lens to use when you want to audit the record rather than read a projection over it — and, historically, it was the only lens available before the evidence-weighted one existed.

See it live: [The structural reading](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a?lens=structural@1)

### Every number names its lens

No share appears without an attribution: 21% under Evidence-weighted, and at the foot of the page the technical key it came from, log-odds@1.

**Why.** A number with no stated provenance becomes the site’s opinion the moment it is quoted anywhere else. Attaching the lens makes it quotable as what it is: the output of one named model over the record.

**Connects.** The attribution follows the number into the JSON API, the Markdown twins and the structured data — the same string, everywhere.

See it live: [A number with its lens attached](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2)

### Nothing computes belief in your browser

Interactive elements read numbers the server has already produced; none of them calculates one. The link previews, for example, receive a finished sentence rather than the parts to build it from.

**Why.** Two implementations of the arithmetic are one implementation too many: the moment a script recomputes a share, the page can disagree with the API about what the model believes.

**Connects.** It is the same reasoning that gives every page exactly one query layer feeding the HTML, the Markdown twin and the JSON.

See it live: [One query layer, three renderers](https://truthscore.com/tour/machine-layer#one-layer)

### The number is never branded

There is no “TruthScore” number on this site. The site is called TruthScore Narratives; the numbers are called shares under a named lens, and they always will be.

**Why.** Branding the default lens would turn a projection into a verdict with a trademark on it — the exact thing the About page says this is not. Keeping the brand and the arithmetic separate is deliberate and permanent.

**Connects.** It is why the lens switcher exists at all, and why new lenses can be added without the site having to change its mind about anything.

See it live: [What it is not](https://truthscore.com/about)

### Where the arithmetic is actually shown

Every claim page carries the full term breakdown behind its number: each contribution, which link it came from, how it was damped, and — separately — the contributions the engine saw and refused to count, with the reason.

**Why.** “Belief is computed, never assigned” is a claim about the system that the system has to be able to demonstrate on demand. The breakdown is the demonstration.

**Connects.** That is the next chapter.

See it live: [A full term breakdown](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2) · [The claim page](https://truthscore.com/tour/claim-page)

---

## 4. The claim page — the audit trail

*One statement, taken apart: every contribution to its standing, including the ones the engine refused.*

Chapter page: https://truthscore.com/tour/claim-page

### The statement, and what it answers

The claim’s canonical text is the page’s heading, with a context line above it naming the Questions it answers. Chips record how the source phrased it — hedged in the source, for instance.

**Why.** The canonical text is the model’s single reading of something several documents said in several ways. Recording that it was hedged keeps a cautious sentence from being promoted into a flat assertion by the act of tidying it up.

**Connects.** The documents’ actual words are further down the page, verbatim, so you can always check the tidying.

See it live: [A claim, with what it answers](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2)

### The structured reading

Where extraction produced a structured form, the page shows the claim as subject → predicate → object, with the subject and object as links to their own pages.

**Why.** It is what lets an entity page answer “what is asserted about this person” without keyword-matching their name — the relationship is stored, not inferred from the text each time.

**Connects.** The reverse view appears on the entity and event pages, as the claims they appear in.

See it live: [The reverse view, on an entity](https://truthscore.com/entity/joshua-kerry--b91693b4)

### When it happened — and admitting when that is unknown

Event time renders as the record has it: a range, a bound, or a granularity — “sometime before 2022-09-26”, “June 2022”. When there is nothing, the page says so: “No event time was recorded for this claim — the text gave nothing to anchor it to, and a guessed date would be worse than none.”

**Why.** Dates are where quiet invention is most tempting and most damaging, because a precise-looking timestamp is believed. Refusing to guess, and saying that refusal out loud, is cheaper than a wrong date and more useful than a blank field.

**Connects.** Event times are the axis the timeline view is drawn on; open bounds fade in the direction they are open.

See it live: [A claim’s recorded time](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2) · [Two clocks](https://truthscore.com/method#clocks)

### When the date itself is in dispute

A claim whose timing is contested carries a ⚡ mark and a link to the Question about when. The model does not pick between competing times; it holds both open and points at the split.

**Why.** Disagreement about when something happened is usually disagreement about what happened. Turning it into a Question with branches means it gets the same treatment as any other uncertainty rather than being resolved by whoever wrote the parser.

**Connects.** On the timeline both branches are drawn, with a “when?” link to the Question that owns the argument.

See it live: [The timeline, with its contested time](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Standing: the number, and what kind of number it is

The claim’s belief under the active lens, with the raw log-odds beside it and the words derived, never stored.

**Why.** Showing the internal quantity next to the percentage is a small act of disclosure: it says there is a model here, it has units, and the percentage is a presentation of it rather than a fact about the world.

**Connects.** The same number appears as this claim’s bar wherever it answers a Question — the claim page is where it is explained rather than merely displayed.

See it live: [A claim’s standing](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2)

### The term breakdown — the arithmetic, in public

A table of every contribution: its direction, the claim or artifact it rests on, its base weight, which independent leg it is, any critical-question factor, and the signed contribution. Above it, the starting point — the floor (−3 log-odds — an unsupported claim starts near zero, not at “maybe”) — and below it the sum.

**Why.** This is the demonstration that “belief is computed, never assigned” is a description of the system rather than a slogan. You can add the column up. If you disagree with the number, you can point at the row you disagree with.

**Connects.** Every row links to the evidence it came from, so an argument about the arithmetic immediately becomes an argument about a specific piece of evidence — which is the productive kind.

See it live: [A full term breakdown](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2#standing)

### Why the second witness counts less than the first

Contributions are damped by which independent leg they are: the first counts in full, the second is halved, the third is a third, and so on — visible in the table as independent leg #2 ⇒ ÷2.

**Why.** It is the arithmetic of diminishing returns, and it is chapter 1’s rule at the level of a single sum: a pile of similar support is worth appreciably less than its first member. Making the divisor visible means nobody has to take that on trust.

**Connects.** Restatements are not legs at all — they are damped to nothing, and marked as restatements wherever they appear.

See it live: [The leg damping, row by row](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2#standing)

### Deliberately not counted — the half of the audit that matters

A second table of the connections the engine saw and refused to count, each with its reason: “critical question answered unfavourably — the inference is withdrawn”. The page introduces it as the more important half of the audit, because it is where the rules bite.

**Why.** Any system can show its workings when the workings support the answer. Publishing the contributions that were discarded, and why, is the part that cannot be faked — and it is the only way a reader can tell that the rules do anything at all.

**Connects.** Withdrawals usually come from a scheme’s critical questions being answered badly, which is the mechanism chapter 2 describes on the Question page.

See it live: [A claim’s audit, both halves](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2#standing)

### Possible under how many versions of events

A ◇/□ line saying how many of the live narratives this claim survives in — possible under 2 of 6 live narratives — linked into the explorer with a witnessing world preselected.

**Why.** Belief tells you how well supported something is; this tells you something different and often more useful — whether there is any coherent version of events left in which it is true.

**Connects.** Click it and the explorer assembles that world for you, with every other choice it forces.

See it live: [The worlds this feeds](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### The Questions it bears on

Each Question this claim answers, rendered as a mini-leaderboard with this claim’s own bar highlighted among its rivals — and the unknown share alongside.

**Why.** A claim’s number means little without its competition. Showing the whole split here stops the claim page becoming a place where a branch can be read as though it were alone.

**Connects.** It is the same component as the front page’s cards and the search results’ Question strips.

See it live: [A claim among its rivals](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2)

### What bears on it — the support and challenge tree

A recursive view of the evidence: what supports and challenges this claim, and what supports and challenges that, shown to three levels with a note saying so and inviting you to follow any claim to see its own structure.

**Why.** Evidence is not a flat list — a challenge that has itself been challenged is in a different condition from one that stands unopposed. The depth cap is stated rather than silent, because an unlabelled cut-off would read as “this is all there is”.

**Connects.** Artifacts (a physical trace, a dataset) are rendered distinctly from claims, since they are things rather than assertions.

See it live: [A three-level tree](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2)

### Voices — counted, never weighed

Who asserted this claim, each marked independent or restatement, under the line: “Voices are counted, never weighed. How many people say a thing is structure worth seeing; it is not, by itself, a reason to believe it.”

**Why.** The count is genuinely informative — it tells you how the assertion propagated — and it is exactly the number a reader will reflexively treat as evidence. Showing it and disclaiming it in the same breath is the only honest way to publish it.

**Connects.** The reverse view is on the entity page: everything that entity is on record as having asserted.

See it live: [The voices behind a claim](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2) · [One speaker’s whole record](https://truthscore.com/entity/joshua-kerry--b91693b4)

### What the documents actually said

The verbatim span each extraction read, beside the canonical claim it became — “the text each extraction read before resolving it into this canonical claim. Quoted, never republished.”

**Why.** Every canonicalisation is a small interpretation, and interpretations should be checkable. Putting the original wording next to the tidied one lets a reader see exactly what was smoothed away.

**Connects.** The same spans appear on the source page, from the document’s side.

See it live: [A document and its spans](https://truthscore.com/source/ca125fcf)

### Claims nobody asserted

Some claims here were derived rather than reported. Those show the scheme that produced them with its version, the premises they rest on as links, and the scheme’s critical questions with their current status.

**Why.** A conclusion the machine reached is the most dangerous object on the site, so it is the most heavily labelled: named pattern, named inputs, named standard objections. Nothing derived is ever presented as though someone had said it.

**Connects.** Answer a critical question unfavourably and the inference is withdrawn — visibly, in the “deliberately not counted” table.

See it live: [Schemes and critical questions](https://truthscore.com/method#schemes)

### Sources — a provenance fact, never a verification

Every document cited for the claim, linked and dated, each chipped cited evidence.

**Why.** The wording is deliberate and it is enforced across the site. Citing a source records who said what and where; it does not certify that the claim is true, and an interface that blurs the two manufactures authority out of bibliography.

**Connects.** Each source page shows the same relationship from the other side, along with everything else that document claims.

See it live: [A cited document](https://truthscore.com/source/ca125fcf)

### Contradictions, always from both sides

A section for claims that cannot both be true with this one, under the line “Contradictions are always shown from both sides.”

**Why.** A contradiction visible from only one direction is a way of protecting a favoured claim. Rendering it on both endpoints means there is no page you can read that hides it.

**Connects.** Contradictions are also what produce impossible combinations in the explorer — the nogoods that prune worlds.

See it live: [A contradicted claim](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2)

### Who it involves, what else attaches, and where it came from

The participants (entities and events), then Also connected — “everything else the graph attaches to this node — listed so that no relationship can be hidden by the choice of sections above” — and finally an Origin line: which document it was extracted from, by which model, when.

**Why.** The catch-all is the honest admission that the named sections are an editorial choice. Any relationship the sections do not consume still appears, so a future kind of connection cannot be invisible by default.

**Connects.** The Origin line is on every detail page on the site; derived claims show their scheme and premises there instead.

See it live: [Also connected, in place](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2)

---

## 5. People, events and documents

*The hubs: who appears where, what happened when, and what each document actually said.*

Chapter page: https://truthscore.com/tour/people-and-documents

### The entity page: names, and other names

The entity’s name with a type badge (person, organisation, government, asset, place), the other spellings it has appeared under — also written as — and the separate records that were resolved into this one.

**Why.** Real coverage spells things several ways, and the merges the model made are decisions that could be wrong. Listing them means a wrong merge is visible rather than buried in an id.

**Connects.** Entities are the site’s busiest hubs: nearly every claim names at least one, and each of those names is a link here.

See it live: [An entity and its names](https://truthscore.com/entity/joshua-kerry--b91693b4)

### “Possibly the same as” — doubt as public content

Where the model suspects two records are one thing but has not decided, it says so on the page: “The model has not decided whether these are one thing or two. That doubt is shown rather than resolved silently — a wrongly merged cast would quietly rewrite every claim on this page.”

**Why.** Identity resolution is where a system like this can do the most damage invisibly: merge two people and every claim about either becomes a claim about a person who does not exist. Publishing the uncertainty makes that failure mode auditable.

**Connects.** It is the same instinct as the residual bar — the unresolved case gets a place on the page instead of being rounded away.

See it live: [An entity page](https://truthscore.com/entity/joshua-kerry--b91693b4)

### Involved in, and Statements attributed to it

Two distinct lists: the claims this entity appears in, with the standing of each, and the claims this entity is on record as having made — each marked independent or restatement · zero weight.

**Why.** Being talked about and doing the talking are different relationships, and collapsing them is how an actor’s own press becomes evidence about them. Keeping the two lists apart is what makes the second one safe to publish.

**Connects.** A third list — Questions it figures in — takes you from a name straight to the open uncertainties it bears on. The statements list is the reverse of the Voices section on every claim page, and its “zero weight” marks are the repetition rule showing its work.

See it live: [Both lists on one entity](https://truthscore.com/entity/joshua-kerry--b91693b4)

### Publishers, and the number that is not there

An entity that published documents lists them — and where a track record would go, the page says “Track record: not yet computed.”

**Why.** A reliability score beside a publisher’s name is the single most quotable number a site like this could invent, and inventing it is exactly what it must not do. Naming the gap is more honest than filling it, and more useful than hiding the section.

**Connects.** It is the same empty-state discipline as “narrative ranking pending” and “no independent evidence yet”: state the mechanism, never apologise, never fabricate.

See it live: [A publisher’s record](https://truthscore.com/entity/theguardian-com--4dbd721f)

### Structural facts, in both directions

Membership, ownership, parthood and location — rendered on both entities involved, so the subsidiary lists its owner and the owner lists its subsidiary.

**Why.** A one-directional structural fact is a fact you can only find if you already knew where to look. Rendering both ends is the linkability contract applied to the boring relationships as strictly as to the interesting ones.

**Connects.** Events the entity takes part in are listed the same way, in time order, and lead to the timeline.

See it live: [Structural facts](https://truthscore.com/entity/joshua-kerry--b91693b4)

### The event page

What happened, when — rendered as the record states it, open bounds and all — who and what took part with their roles, where it happened, and the claims made about it with their standing.

**Why.** Events are the anchors that let a story be read chronologically rather than as a pile of assertions. Keeping the time exactly as stated, including its vagueness, keeps that chronology honest.

**Connects.** An event’s ordering section (what precedes what) leads into the timeline view, and its anchoring Questions lead back to the splits it belongs to.

See it live: [An event](https://truthscore.com/event/2024-butler-assassination-attempt--a06e5c92)

### The source page: two clocks on the document itself

Publisher, publication date, and the date this system read it — published 2023-03-07 · read 2026-07-19 — plus a link out to the original.

**Why.** The gap between publication and reading is part of the fog: a document from March that was only ingested in July was not informing anything in between. The two clocks apply to documents as much as to claims.

**Connects.** Reading time is knowledge time, which is what the ?asof scrub replays.

See it live: [A document’s two dates](https://truthscore.com/source/ca125fcf)

### “A source is testimony, not proof”

That sentence sits at the top of every source page, with the rest of it: citing a source is a provenance fact — it records who said what, where — and never a verification that the claim is true.

**Why.** It is the single most load-bearing sentence on the site, because “it has a citation” is how most people decide something is established. Putting it on the document’s own page is putting it where the temptation is.

**Connects.** The same wording governs the cited evidence chip on every claim page.

See it live: [The sentence in place](https://truthscore.com/source/ca125fcf)

### What it claims — the document’s own contribution

Every claim this document produced, each shown as the canonical claim beside the verbatim span that produced it, and marked for how it landed: independent, converging with an existing claim, or contradicting one.

**Why.** It is the view that answers “what did this outlet actually add” — as distinct from what it repeated. That is the question syndication makes hard to answer and this page makes trivial.

**Connects.** Each canonical claim links to its own page, where this document appears in the Sources list. Both directions, always.

See it live: [What a document claims](https://truthscore.com/source/ca125fcf)

### The text itself is never republished

Quoted spans and a link out — never the body. The page says so, and records a content fingerprint of the text it read instead.

**Why.** Two reasons, and both matter: it is other people’s work, and a copy here would silently become the version of record while the original changed. Quote and link is the honest form.

**Connects.** The fingerprint is what lets revisions of the same document be recognised as revisions.

See it live: [A document, quoted not copied](https://truthscore.com/source/ca125fcf)

### Syndication, in both directions

Which documents this one restates, which restate it, and the ones the model suspects but has not confirmed — all linked, both ways.

**Why.** This is where the repetition rule becomes inspectable. You can start at any of forty stories and walk back to the one document doing the work.

**Connects.** Restatement is why those forty count once in every number on the site, and zero in the ranking.

See it live: [A document’s syndication](https://truthscore.com/source/ca125fcf)

### How it was read

The extraction provenance: which model read the document, when, whether the run completed, how many claims it produced — and, where an earlier reading was superseded, that it was.

**Why.** Everything on this site downstream of a document depends on an extraction that could have been wrong. Naming the run makes the dependency visible and the failure traceable.

**Connects.** The same provenance appears as the Origin line at the foot of every node the run produced.

See it live: [An extraction run](https://truthscore.com/source/ca125fcf)

### Browsing everyone and everything

Two plain tables: every entity with how many claims it appears in, how many statements are attributed to it and how many documents it published; every document with its publisher, dates, how many claims it produced and how many other documents restate it.

**Why.** They are the site’s countable view — how much of the record each thing touches. The pages are careful to say that degree is a fact about the graph and never a judgement about the thing, because a large number beside a publisher’s name would otherwise read as authority.

**Connects.** It is the same restraint as “track record: not yet computed”: publish the count, refuse the implication.

See it live: [Every entity](https://truthscore.com/entities) · [Every document](https://truthscore.com/sources)

### When a node genuinely has no neighbours

A few records — usually publishers minted at ingest whose documents have since gone — have nothing attached. Their pages say exactly that, and are marked as such for the site’s own link checker.

**Why.** A page that hides its neighbours and a page that has none are different things, and only the first is a bug. Declaring the second keeps the checker strict without pretending the corpus is tidier than it is.

**Connects.** The dead-end test reports both lists every run, so nothing is silently exempted — the next chapter is about that check.

See it live: [The dead-end test](https://truthscore.com/tour/everything-links#dead-end-test) · [Browse entities](https://truthscore.com/entities)

---

## 6. Everything links to everything

*The graph is the sitemap. No page here is allowed to be a dead end, and that is enforced.*

Chapter page: https://truthscore.com/tour/everything-links

### The graph is the sitemap

Every kind of thing in the model has exactly one canonical page, and every relationship the model can traverse renders as a link on both of its ends. If the model can get from A to B, you can click from A to B.

**Why.** A model you cannot walk is a database with a search box in front of it. The value of holding claims, sources, people and questions in one structure only reaches the reader if the reader can move through the structure the way the machine does.

**Connects.** It is the first of the two sentences this whole site is built to obey; the second is that uncertainty is the content.

See it live: [Start anywhere and keep clicking](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2)

### Every mention is a link

Any entity, event, claim, Question or source named anywhere — in a sentence, a chip, a change-log line, a search result — is a link to its page. There are no plain-text mentions of things that have pages.

**Why.** The alternative teaches readers that some mentions are clickable and some are not, and then they stop trying. Making it exceptionless is what makes the site explorable rather than merely hyperlinked.

**Connects.** It is enforced in the shared renderers rather than page by page, so a new page cannot forget to do it.

See it live: [A page where everything named is a link](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### The catch-all, so nothing can hide

Every detail page ends with Also connected: any relationship not consumed by one of the named sections above renders there.

**Why.** The sections are an editorial choice about what matters, and editorial choices go stale. The catch-all guarantees that a kind of connection added later shows up somewhere immediately, instead of being invisible until someone remembers to design a section for it.

**Connects.** It is the structural version of the empty-state rule: never let the absence of a design decision look like the absence of a fact.

See it live: [Also connected](https://truthscore.com/claim/detainees-are-held-in-israeli-prisons-in-israel--8c0150f2)

### The dead-end test

A checker crawls the rendered site, follows every link it emits, and fails the build on two things: a link that does not resolve, and any content page that renders zero links to other things. It has run over 220 pages with zero of either.

**Why.** “Everything links to everything” is a promise, and an unchecked promise about a growing site is a promise with a deadline. Mechanising it means the claim on this page is a test result rather than an aspiration.

**Connects.** It runs at every step of every build here, including the ones that only touched prose — like this tour.

See it live: [Built to stay honest](https://truthscore.com/tour/built-honest)

### Declared, never exempted

Two things a page may declare about itself: that its content is still being built, or that the thing it describes genuinely has no neighbours. Both are printed in full every time the checker runs.

**Why.** Every checking system eventually acquires exceptions. The difference between a healthy exception and a rotting one is whether it is listed out loud on every run — a silent allowlist is how a check stops meaning anything.

**Connects.** The isolated pages are the handful of publisher records described at the end of the last chapter.

See it live: [Nodes with no neighbours](https://truthscore.com/tour/people-and-documents#e-isolated)

### Addresses that survive an edit

Pages live at /kind/some-slug--a1b2c3d4. The readable slug is cosmetic; the eight characters after the dashes are the whole of the lookup. Change a label and the old URL still works — it redirects, permanently, to the new one, keeping any parameters you had set. Documents are the exception: a source’s label is a headline rather than a name, so it gets no cosmetic slug at all.

**Why.** Citation-grade URLs are the price of asking to be quoted. A link that breaks because a claim was reworded would make everything here unquotable, and the readable part is what makes a pasted link intelligible in the first place.

**Connects.** Flat addresses are also a design commitment: a claim is not filed inside a story, because stories are selections, not containers.

See it live: [A permalink at work](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Deep links into a section

The long pages carry anchors on their sections and on individual branches, evidence rows and inferences, so a link can point at the thing being discussed rather than at the top of a page.

**Why.** The pages here are long by design. Being able to send someone to the exact branch or the exact term in an audit table is what makes them arguable in public.

**Connects.** This tour uses them: the “see it live” links land on the section each point describes.

See it live: [What would change this — deep-linked](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a#what-would-change)

### A link to something without a page still goes somewhere

When a thing has no canonical page of its own, its mention resolves to a search for it rather than to a broken address.

**Why.** Same rule from the other end: the reader’s click is answered, always. Nothing on this site punishes a reader for following something the model happens to hold in an unusual shape.

**Connects.** It is why the dead-end checker can be strict about broken links — there is never a legitimate reason for one.

See it live: [Search](https://truthscore.com/search?q=nord+stream)

### Pagination you can link to

Long lists page with plain numbered links. There is no infinite scroll anywhere on this site.

**Why.** Infinite scroll is unlinkable, unciteable, and invisible to anything without a browser. Page two here is an address you can send someone.

**Connects.** The same reasoning produces the Markdown twins and the JSON API: everything that can be read should be addressable.

See it live: [The change log, paginated](https://truthscore.com/changes)

### The one-line summary any node can produce

Every node can be asked for a short standing line — for a Question, “6 branches on the table · unknown 67%”; for a claim, “belief 23% under Evidence-weighted · 0 evidentiary legs · 5 challenges”. The site serves it from its own public API, and the sentence is composed on the server.

**Why.** The sentence is composed server-side on purpose: if a preview built its own summary, the page and the API could disagree about what the model believes. Nothing in the browser is allowed to do belief arithmetic.

**Connects.** It is the same endpoint anyone else can call — the link-preview feature and an outside consumer are served identically. Preview popovers are currently switched off on this deployment; the endpoint is live either way.

See it live: [The API](https://truthscore.com/api) · [The machine layer](https://truthscore.com/tour/machine-layer)

---

## 7. The front page, and what makes something hot

*Ranked by where evidence is moving — never by how loudly something is being said.*

Chapter page: https://truthscore.com/tour/homepage-and-heat

### A wall of open questions, not a feed

The front page leads with open Questions, each shown as a card with its top branches, its unknown share, and why it is ranked where it is.

**Why.** Every news product ships a feed of the latest. Almost none ships the set of things currently unresolved, which is the more useful object and the harder one to fake. Leading with Questions makes the front page a statement about what is not known.

**Connects.** Every card is the same leaderboard component used on the Question page itself, so the front page cannot present a rosier summary than the page behind it.

See it live: [The front page](https://truthscore.com/) · [All open questions](https://truthscore.com/questions)

### The full index — and the “much asserted, little shown” sort

Beyond the front page, every open Question in one table: top answer and its share, the unknown residual, how many evidentiary legs it has, its heat and when it moved. Sortable by heat, by newest, by most evidence — and by most residual.

**Why.** That last sort is the one worth knowing about. It puts at the top the Questions with the most assertion and the least discriminating evidence: precisely the stories that feel most settled in ordinary coverage and are least settled in the record.

**Connects.** Each sort is a plain URL, so “the most unknown questions in the model” is a link you can keep.

See it live: [Sorted by what is least known](https://truthscore.com/questions?sort=residual) · [Sorted by most evidence](https://truthscore.com/questions?sort=evidence)

### What a card tells you before you click

Branch count and source count, the top two branches with their shares, the unknown share, a heat badge naming its reasons, and when it last moved.

**Why.** Enough to decide whether to open it, and never enough to substitute for opening it. In particular the unknown share is on the card, so a Question can never look more settled from the front page than it is.

**Connects.** The same card appears in search results and on story pages.

See it live: [The front page](https://truthscore.com/) · [The Question currently leading it, in full](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Latest — the change log, in brief

A slice of the most recent changes as sentences, above a count of the day by kind: 74 evidence · 164 questions · 9 inference · 66 belief · 8 housekeeping.

**Why.** It is the answer to “has anything actually happened here”, in a form that distinguishes new evidence from routine recomputation — a distinction most activity indicators deliberately blur.

**Connects.** Every line is the same rendering used on the full change log and in the Atom feed.

See it live: [The whole change log](https://truthscore.com/changes)

### Movers — and what it says when nothing moved

The largest belief shifts in the window. When there are none, the module says so and says why: “Stillness is a real reading: assertions may be arriving without anything to discriminate between them.”

**Why.** A movers list that quietly disappears on a slow day teaches the reader that something is always moving. Saying “nothing moved, and here is what that means” is more informative than the list would have been.

**Connects.** Movement is computed from belief snapshots — the same records the sparklines draw and the ?asof scrub replays.

See it live: [The front page](https://truthscore.com/)

### New questions, with their honest fat residuals

Recently promoted Questions, each with its unknown share — usually enormous, because nothing has been linked to them yet.

**Why.** A new Question is at its least informative and most interesting: it is the moment the model has noticed a disagreement and not yet resolved anything. Showing the residual rather than hiding the newness is the whole point.

**Connects.** Questions are promoted by machine when the record disagrees with itself — no editor picks them.

See it live: [All open questions, newest first](https://truthscore.com/questions?sort=newest)

### Much reported, little shown

A module for Questions where assertions keep arriving and the evidence has not moved. The copy is counts and nothing else — how many assertions, from how many sources, and the unknown share — with the note that no accusation is being made, and none is needed.

**Why.** This is the site’s anti-propaganda surface, and its restraint is the design. Naming a pattern is defensible; naming a culprit is not. The numbers say the whole thing.

**Connects.** It is only possible because heat and volume are separate quantities here — the module is precisely the gap between them.

See it live: [The front page](https://truthscore.com/) · [Repetition is not evidence](https://truthscore.com/method#repetition)

### Fog watch — too early to know

Recent events the record has barely corroborated: event time, source count, evidentiary legs, and how long it has been known. Featured, not buried.

**Why.** At the start of a story, thin is the honest state. Giving under-corroborated material a place on the front page — rather than waiting until it is safe to show — is how this site says “we do not know yet” as a headline.

**Connects.** It is the two clocks made into a module: recent in event time, thin in knowledge time.

See it live: [The front page](https://truthscore.com/) · [Two clocks](https://truthscore.com/method#clocks)

### Stories — questions that constrain each other

Groups of Questions that have to be answered together, each with its ranked possible worlds and a link to walk the leading one.

**Why.** It is the closest thing here to a “story” in the ordinary sense, and it is deliberately not a container: the group exists because a choice in one Question restricts the others, which is a fact about the model rather than an editorial grouping.

**Connects.** Following “walk the leading narrative” lands in the explorer with that world preselected.

See it live: [The front page](https://truthscore.com/) · [Stories and worlds](https://truthscore.com/tour/stories-and-worlds)

### What “hot” actually means here

Ranking is a judgement, so it is published like every other number on the site: heat is decayed, weighted activity multiplied by how close the race is, plus how far belief actually moved, plus a bonus if the lead changed. The window is 7 days and activity halves every 36 hours.

**Why.** Any ranking is an editorial act. The only honest version of one is a stated procedure a reader can disagree with specifically — which is why the formula is on the method page in words rather than described as “relevance”.

**Connects.** Every term in it is a dial in configuration, not a constant in code, precisely because the weights are a policy choice and not a fact.

See it live: [The formula, in words](https://truthscore.com/method#heat)

### The weights are the honesty rule written as numbers

A new contradiction counts 5, a ruled-out combination 4, an inference 3, a new question 3, an answer linked 2, a corroboration 1 — and a restatement counts zero, however many arrive. Corroborations from one source are capped at 3 a day.

**Why.** This is where “repetition is not evidence” stops being a principle and becomes arithmetic. A wire story running everywhere produces a great deal of activity and no heat at all.

**Connects.** These numbers are read from the same configuration the ranking uses, so this paragraph cannot drift away from the behaviour it describes.

See it live: [The weights, on the method page](https://truthscore.com/method#heat) · [The front page](https://truthscore.com/)

### Contention — and the fog as a contender

Activity is multiplied by how close the race is, with the unknown share counted as one of the runners.

**Why.** A Question where the leading branch is far ahead is less alive than one where two branches are level — and a Question the fog is winning is very much alive, which a naive closeness measure would miss entirely.

**Connects.** It is the same argument as the residual bar, applied to attention instead of to belief.

See it live: [The front page](https://truthscore.com/)

### Movement counts, and a lead change counts more

How far belief actually shifted is added directly (weighted 10), and a Question whose leading branch changed inside the window gets a further 3.

**Why.** These are the two events that most deserve a reader’s attention and are least detectable from the outside: the model changed its mind, or nearly did. Neither can be produced by publishing more of the same.

**Connects.** Both are read from belief snapshots, which means they are visible in the change log too.

See it live: [Belief changes in the log](https://truthscore.com/changes?kind=belief)

### Reasons, never a number

Heat orders the page and then explains itself in words: 🔥 13 contradictions · 3 inferences · 4 promotions. The score itself appears nowhere on the site.

**Why.** A visible score invites optimisation and tells the reader nothing. The reasons tell them exactly what happened, and are themselves links to the changes that caused it — the number is plumbing, the reasons are content.

**Connects.** Each reason is a slice of the change log, so “13 contradictions” can be read as thirteen specific entries.

See it live: [The badges in place](https://truthscore.com/) · [The changes behind one badge](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a#developments)

### The test: a syndication storm must move nothing

The ranking is unit-tested against a synthetic flood — hundreds of restatements of one source’s claims. It scores exactly zero, at any size, and a single new contradiction outranks it.

**Why.** The claim “repetition cannot push a story up this page” is either enforced or decorative. A test that fails when it stops being true is the only version worth printing.

**Connects.** The same tests check that a burst of corroborations from one source stops counting at the cap, and that a wall of “no, this is unrelated” verdicts is not activity.

See it live: [Repetition is not evidence](https://truthscore.com/method#repetition)

### The page does not reshuffle under you

Near-ties are bucketed before ordering, so two Questions with almost identical heat keep a stable order between requests.

**Why.** A front page that reorders itself on every reload is unciteable and slightly dishonest — it implies movement where there is only noise.

**Connects.** It is the same instinct as pagination you can link to: the page should be the same page when you come back to it.

See it live: [The front page](https://truthscore.com/)

### When there is no belief to rank with

If a Question has no computed distribution yet, the contention and movement terms simply do not apply, and it ranks on activity alone. Nothing is invented to fill the gap.

**Why.** Degrading to a smaller true answer is always better than completing a bigger one with guesses — the same rule that produces “track record: not yet computed” and “narrative ranking pending”.

**Connects.** It is why the front page worked before the belief layer existed, and why it will keep working when a new lens is added.

See it live: [The front page](https://truthscore.com/)

---

## 8. Search

*Finds things by meaning and by misspelling, and returns every hit with its relationships attached.*

Chapter page: https://truthscore.com/tour/search

### The box, on every page

A plain search form in the header of every page. Pressing / focuses it. It is an ordinary GET form: it works with JavaScript disabled, and the results have an address you can share.

**Why.** Search is the site’s second navigation system and it must never be the part that requires a working script. The type-ahead is an addition to a thing that already worked.

**Connects.** Because results are a plain URL, a search is quotable — /search?q=nord+stream is a citation.

See it live: [A search for “nord stream”](https://truthscore.com/search?q=nord+stream)

### Two ways of matching, unioned

Every query runs as full-text search over labels, aliases and selected text, and as name-similarity matching, with the results blended into one ranked list.

**Why.** The two find different things. Full text is precise about words; similarity is forgiving about spelling, which is what you need for names — and names are most of what anyone searches for here.

**Connects.** Each result says which branch found it, so the ranking is explainable rather than magic.

See it live: [A search for “nord stream”](https://truthscore.com/search?q=nord+stream)

### Misspelled names still find their subject

Search for Seymore Hersch — both words wrong — and the entity Seymour Hersh comes back, marked as matched by name similarity. Full-text search returns nothing for that query.

**Why.** Names in the news are transliterated, misheard and misspelled constantly. A search that only rewards correct spelling makes a research tool useless to exactly the reader who most needs it: one who half-remembers a name.

**Connects.** The same similarity matching powers the “did you mean” suggestions on an empty result.

See it live: [A search with both words misspelled](https://truthscore.com/search?q=Seymore+Hersch)

### Questions come first

At comparable text scores, an open Question outranks an entity, which outranks a claim, an event, and a source. Where a Question is close to the top, it is pinned above the list as a full card.

**Why.** The Question is the object that explains all the others — it shows the competition a claim belongs to. Landing a searcher on a Question first means they meet the uncertainty before they meet an assertion.

**Connects.** The pinned card is the same leaderboard as the front page and the Question page: top branches, unknown share, source count.

See it live: [A search that pins a Question](https://truthscore.com/search?q=nord+stream) · [The Question it pins](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Every hit arrives with its relationships

A result is never a bare title. A Question shows its top branches and unknown share; a claim its standing, its Questions and its sources; an entity its type, aliases and how many claims and statements it appears in; an event its time and participants; a source its publisher and what restates it.

**Why.** A list of titles makes you open ten tabs to find out which one you wanted. Attaching the relationships turns the results page into a working view of that corner of the model.

**Connects.** Every element of every strip is itself a link — search is a first-class part of “everything links to everything”, not an exception to it.

See it live: [Results with their strips](https://truthscore.com/search?q=nord+stream) · [One of the entities they lead to](https://truthscore.com/entity/joshua-kerry--b91693b4)

### Why this result is here

Each hit ends with the reason it matched: matched by text, matched by name similarity, or both.

**Why.** Search ranking is the one place almost every site asks for blind trust. Saying which branch found a result costs a line and makes an odd result diagnosable instead of mysterious.

**Connects.** It is the same discipline as the heat badges: rank things, then explain the ranking in words.

See it live: [Results, with their reasons](https://truthscore.com/search?q=nord+stream)

### Filter by kind

Chips across the top count the results by kind and filter to one — questions, claims, entities, events, sources — as ordinary links.

**Why.** Kind is the one filter that reliably matches what a reader is trying to do: find a person, find a document, find the argument.

**Connects.** Each filtered view is its own URL, so it can be linked and returned to.

See it live: [Entities only](https://truthscore.com/search?q=nord+stream&kind=entity)

### When nothing matches

The honest version: “The model may simply not contain this yet — it holds only what it has read, and it has read a small number of documents.” Followed by the nearest things it does contain.

**Why.** “No results” invites the reader to conclude the thing is not true or not covered. The real reason is nearly always that this is a small corpus, and saying so is both more accurate and more useful.

**Connects.** It is the empty-state rule again: state the mechanism, never apologise, never imply a fact you do not have.

See it live: [A search that matches nothing](https://truthscore.com/search?q=zzzqqqxx)

### Type-ahead that cannot disagree with Enter

With JavaScript on, suggestions appear as you type, kind-badged and keyboard-navigable, from the site’s own public suggest endpoint — using the same ordering rule as the results page.

**Why.** Sharing the ranking is deliberate: a type-ahead with its own idea of relevance would show you one thing and then hand you a different list when you pressed Enter.

**Connects.** The endpoint is public and documented, like everything else the site’s own interface uses.

See it live: [The API](https://truthscore.com/api)

### Your query is not a profile

Queries are not logged beyond ordinary access logs, not associated with a visitor, and echoed back to the page escaped. The site sets no cookies at all.

**Why.** A research tool that quietly records what you were curious about changes what people are willing to look up — and a site about contested events has a particular duty not to build that record.

**Connects.** The same policy runs through the whole site: page counting is a timestamp and a path, nothing else.

See it live: [How this site counts](https://truthscore.com/tour/built-honest#analytics)

---

## 9. What changed, and when we knew

*The change log, the event-time axis, and the scrubber that replays what was believed on any past day.*

Chapter page: https://truthscore.com/tour/changes-and-clocks

### The change log is the memory

Every action the model takes is written to a typed log — a claim recorded, a contradiction found, an inference fired, belief recomputed. As the page says: nothing is edited and nothing is deleted, so this list is also the record of what it used to think.

**Why.** It is what makes “nothing is deleted” operational rather than aspirational. A system that only shows its current state cannot be audited, because there is nothing to compare the present against.

**Connects.** Everything time-related on the site is a view of this log: the sparklines, the developments strips, the ?asof scrub, and both feeds.

See it live: [The change log](https://truthscore.com/changes)

### Every kind of change has a sentence

Log entries are rendered as English, one renderer per kind: “answer on the table: …”, “belief recomputed; unknown 67%”, “Possible worlds re-ranked — 24 narratives across 2 independent groups of questions”.

**Why.** A raw event type is unreadable, and a generic sentence hides which kinds exist. Writing one per kind — and checking that every kind has one — is what stops a whole class of change from becoming invisible.

**Connects.** The check is real: a new kind of change with no sentence, or belonging to no filter group, fails the build rather than silently vanishing from the page when someone clicks a filter.

See it live: [The change log](https://truthscore.com/changes)

### The last 24 hours, at a glance

A header counting the day by group — 74 evidence · 164 questions · 9 inference · 66 belief · 8 housekeeping — plus the newest Question.

**Why.** It separates the kinds of activity that mean different things. A day of evidence and a day of recomputation look identical in an undifferentiated count, and they are not remotely the same thing.

**Connects.** The same grouping drives the filters directly below it.

See it live: [The change log](https://truthscore.com/changes)

### Filters, and scoping to one Question

Filter by group — evidence, questions, inference, belief, housekeeping — or scope the whole log to a single Question with the only this question link on any line.

**Why.** Reading a log is only useful with a way to narrow it. Both filters are plain URL parameters, so any view of the log is an address.

**Connects.** The scoped view has a matching Atom feed, which is how you follow one Question without an account or an email address.

See it live: [Belief changes only](https://truthscore.com/changes?kind=belief) · [The Atom feed](https://truthscore.com/feeds/changes.atom)

### Every line links its subject — including the ones with no page

Each entry links whatever it is about. Entries about a ruled-out combination have no node of their own, so they link the Question whose branches they pruned.

**Why.** Without that, the single most consequential kind of entry — the one that eliminates possible worlds — would have been the only unfollowable line on the page.

**Connects.** It is the “every mention is a link” rule reaching the one place it was hardest to apply.

See it live: [The change log](https://truthscore.com/changes)

### The timeline: two clocks on one screen

Down the page, when things happened. Along the cursor at the top, when we learned them. The page says it in those words, and calls the gap what it is: the fog of war.

**Why.** Holding both axes at once is the only way to see the shape of a developing story — that the crucial fact was three months old when anyone acted on it, or that a flurry of coverage carried no new event at all.

**Connects.** Event times come from the claims themselves; knowledge times come from the change log.

See it live: [A timeline](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Thin things look thin — and say so

Sparsely corroborated entries are drawn faint and labelled thinly corroborated, with a count of how many rest on one source or none.

**Why.** Colour and opacity never carry meaning alone anywhere on this site — for colour-blind readers, for screen readers, and for anyone reading it in bright sunlight. The label is not a caption on the visual effect; it is the actual signal.

**Connects.** The same redundancy rule governs supports and challenges: ▲ and ▼ and the words, not just green and red.

See it live: [A timeline with thin entries](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Times that are open at one end

A claim recorded as “before 26 September 2022” keeps its open bound on the axis and fades in the direction it is open, tagged with how it was derived — bounded-inferred, stated-absolute — and at what granularity.

**Why.** Most reported times are ranges pretending to be points. Rendering the range as a range, with its basis, keeps the interface from converting a careful sentence into a false precision.

**Connects.** Where two such times compete, the disagreement becomes a Question of its own.

See it live: [Open-bounded times on the axis](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### When the timeline itself is in dispute

Both competing times are drawn, marked ⚡ contested, with the line: “The model does not pick between the competing times. Both are held open here” — and a “when?” link to the Question that owns the argument.

**Why.** A timeline is the most authoritative-looking object in journalism, and the place a disputed date most easily becomes settled fact. Drawing both is the only way to keep the chronology from quietly deciding the story.

**Connects.** That “when?” Question has branches, evidence and a residual like any other — the disagreement is modelled, not annotated.

See it live: [A contested time](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### The knowledge-time cursor

The marks along the top are the moments belief was recomputed, each labelled with the unknown share it recorded. Selecting one re-renders the page as the model stood then. With JavaScript on the cursor is draggable; with it off, every mark is an ordinary link.

**Why.** The interactive version is a convenience over something that already works, which is the rule for every moving part on this site. Any past state is a URL, so “what did it think last Tuesday” is a link you can send.

**Connects.** Every line in the change log offers the same thing as “see the page as it stood then”.

See it live: [The scrubber](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### What the replay actually replays

Adding ?asof= to a page renders it from the recorded snapshots — not from today’s numbers with an older date on them. Scrub to a moment before belief had ever been computed for a Question and the page says exactly that: “Belief had not been computed for this Question yet — so there are no shares to show.”

**Why.** That empty case is the one that proves the mechanism. A replay reading the live projection would happily show today’s shares under yesterday’s date, and no reader could tell. Showing nothing, and saying why, is the behaviour that demonstrates the log is really being read.

**Connects.** It works on any page with numbers, and it composes with the lens parameter — you can ask what the structural reading was on a past day.

See it live: [This Question, a day ago](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a?asof=2026-07-18) · [Two clocks](https://truthscore.com/method#clocks)

---

## 10. Stories and the narrative explorer

*Walk a possible world: pick an answer to each open Question and watch which combinations survive.*

Chapter page: https://truthscore.com/tour/stories-and-worlds

### A story is a neighbourhood, not a folder

A story here is a Question and the Questions it constrains — the group the ranker had to enumerate together because a choice in one restricts the others. The page says so: “Nothing here is inside this story; a story is a path through the graph, not a folder.”

**Why.** Every other news product decides what belongs to a story, and that decision is usually the thing being argued about. Here the grouping falls out of the structure — two Questions are in one story because the model literally cannot answer them independently.

**Connects.** It is why nothing on this site has a hierarchical address, and why the same claim can matter to several stories without being filed in any.

See it live: [A story](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### A derived title and a cast

Stories are titled from their dominant entity and event — “Andromeda yacht — Who was responsible for the Nord Stream sabotage?” — and carry a cast strip of the entities that appear most, with their appearance counts.

**Why.** The title is mechanical on purpose. A hand-written headline would be the one editorial voice on a site with none, and it would inevitably start summarising the answer.

**Connects.** Every member of the cast links to its entity page, where the same story appears among the Questions it figures in.

See it live: [A derived title and its cast](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### How much of this rests on one source

A fog gauge on the story: how many of its claims rest on a single source or none — 17 of 25 — alongside its clock strip of dated events.

**Why.** It is the single most useful summary of a story’s epistemic state, and one no publication offers about its own coverage. A story that is mostly single-sourced is a different object from one that is not, however confident the individual sentences sound.

**Connects.** The story also carries its own slice of the change log, so “what has happened in this story lately” is a question with an answer. The same fog measure drives the front page’s fog watch.

See it live: [A story’s fog](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### The ranked possible worlds

For each story, the enumerated combinations of answers, ranked, each showing what it picks in every Question — including the ones it leaves open.

**Why.** This is where competing answers become competing accounts. A branch at 21% is a number; a version of events that says this happened, at this time, therefore not that — is something you can actually think about.

**Connects.** Each world links into the explorer with its choices preselected, so a ranking is always one click from being walked.

See it live: [Ranked worlds](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a#narratives)

### Every choice is a link

In the explorer, choosing a branch is following an ordinary link; the server re-renders the whole world from the URL. With JavaScript on, the same controls re-filter instantly. With it off, everything still works.

**Why.** The most interactive thing on this site is built as hypertext first. That is not nostalgia: it is what makes a possible world addressable, shareable, crawlable and archivable rather than a state trapped in someone’s browser tab.

**Connects.** It is the shadow-layer rule at its hardest case — and the case that proves the rule is not a slogan.

See it live: [The explorer](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### “Leave this open” is one of the options

Every Question in the explorer offers leave this open — the model does not know, carrying its unknown share, and the fully agnostic world is often the top-ranked one.

**Why.** A world-builder that forces a choice on every Question would make “I don’t know” unrepresentable — and unrepresentable is how honest uncertainty disappears from an interface. Here it is a first-class selection, and the page says it is often the right one.

**Connects.** It is the residual bar again, in the one place where a reader is actively constructing a story.

See it live: [The agnostic world](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Impossible combinations are explained, not blocked

Choose two branches that cannot both hold and the page says so — naming the reason and both claims — then renders the world anyway: “The world is still rendered below, because seeing why a version of events fails is worth more than being prevented from asking.”

**Why.** Blocking the click would teach nothing and would look like the machine refusing to consider something. Explaining the impossibility, in words, with both claims linked, teaches exactly what the constraint is and lets you disagree with it.

**Connects.** These exclusions come from contradictions between claims — the ⚡ marks visible on both claim pages.

See it live: [The explorer](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### And the way out is offered

Each impossible option carries a link that switches the conflicting choice off rather than pretending both can hold.

**Why.** The alternative — leaving the reader to work out which of their selections to undo — turns a teaching moment into a puzzle about the interface.

**Connects.** Because every state is a URL, undoing a choice is just another address.

See it live: [A conflicting selection](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### A possible world is a URL

“Nothing is saved: a world is a selection, and the address bar is where it lives. Copy the URL and you have shared this exact version.” The same link renders the same world for anyone, and the page tells you where it sits in the ranking — or that it is not among the ranked worlds at all.

**Why.** It makes a version of events quotable without making it official. You can send someone the account you think is right, and they receive it with all its rivals, its shares and its residual attached.

**Connects.** Nothing is stored, so there is no account, no saved state and nothing about you to keep.

See it live: [A shareable world](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### What this version asserts

Below the picker, the world assembles: every claim the selection commits you to, with the evidence and challenges that come with each.

**Why.** It closes the loop between a set of choices and their consequences. Picking a branch is easy; reading the twelve things it obliges you to also believe is the part that changes minds.

**Connects.** Each claim links to its own page, where the whole argument sits.

See it live: [An assembled world](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Even the API refuses to tidy a world

The world endpoint returns the excluded branches and the violated constraints along with the chosen claims.

**Why.** An API that returned only what a world asserts would quietly convert a selection among rivals into a set of facts — the exact transformation this whole site exists to prevent, performed at the one layer nobody reads.

**Connects.** It is the same rule as the residual travelling into every twin and card: the awkward part goes with the number, always.

See it live: [The API](https://truthscore.com/api)

---

## 11. The machine-readable layer

*Every page has a JSON twin, a Markdown twin and a feed — and the honesty rules travel with them.*

Chapter page: https://truthscore.com/tour/machine-layer

### One query layer, three renderers

Each page’s data is assembled once, in one module, and rendered three ways: as HTML, as Markdown, and as JSON. No renderer runs its own query.

**Why.** It is what makes the twins trustworthy. If the JSON were assembled separately it would drift — and drift silently, since nobody diffs an API against a web page. Sharing the assembly makes disagreement impossible rather than unlikely.

**Connects.** It is also why the machine layer was not extra work bolted on at the end: the third renderer is a template over an object that already existed.

See it live: [A page](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a) · [The API](https://truthscore.com/api)

### Markdown twins

Add .md to any content page’s URL and you get the same content as Markdown, with absolute links and the split rendered as a table whose last row, in bold, is the unknown share.

**Why.** It is the format for reading a page somewhere else — in a notebook, a prompt, a document — without scraping HTML and without losing the structure that makes the page mean what it means.

**Connects.** This tour has one too: the whole of it, in one file.

See it live: [A Question as Markdown](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a.md) · [The whole tour as Markdown](https://truthscore.com/tour.md)

### The JSON API

A read-only, versioned JSON API over the same modules — 11 endpoints: /api/v1/question/{id8} · /api/v1/claim/{id8} · /api/v1/entity/{id8} · /api/v1/event/{id8} · /api/v1/source/{id8} · /api/v1/story/{id8} · /api/v1/world/{id8} · /api/v1/changes · /api/v1/search · /api/v1/suggest · /api/v1/peek/{id8}.

**Why.** The site’s own features consume it — the type-ahead and the link previews call the public endpoints, not private ones. A machine layer the site does not itself depend on is a machine layer that quietly rots.

**Connects.** It returns the awkward parts too: the residual, the excluded branches, the refused belief terms, the unresolved identity doubt.

See it live: [The API reference](https://truthscore.com/api) · [The OpenAPI description](https://truthscore.com/api/openapi.yaml)

### The three parameters work everywhere

Lens, as-of and world selection are query parameters on pages, twins and API endpoints alike.

**Why.** A consumer that can only fetch the default view can only ever report the default view. Making the alternatives addressable everywhere is what lets someone else check the site under a lens it did not choose.

**Connects.** The same three parameters are documented on the page, in the OpenAPI file, and in llms.txt.

See it live: [The API reference](https://truthscore.com/api)

### Structured data, and the answer that is never accepted

Every page carries schema.org markup — Claim, Person, Organization, Place, Event, Question. A Question publishes its branches as suggested answers and never sets an accepted answer.

**Why.** That field is how a search engine turns a page into a fact in a box. There is no accepted answer here, so the field stays empty — permanently, and by rule rather than by oversight.

**Connects.** It is checked mechanically: a Question emitting an accepted answer fails the build.

See it live: [A page with structured data](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### The rating that explains itself

Each enumerated answer also publishes a structured review whose explanation carries the honesty: “Belief share under Evidence-weighted (log-odds@1); unknown residual 67% — computed from evidence, not an editorial verdict. Leading is not proven, and repetition never moves this number.”

**Why.** A bare rating value is precisely how this site would be misrepresented — a number lifted into someone else’s interface as a verdict. The explanation travels with it, and a review missing one fails the build rather than warning.

**Connects.** It is the same four rules the quoting guidance states for language models.

See it live: [A Question’s markup](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Feeds — and following one Question

Two Atom feeds: everything that changed, and newly promoted Questions. The change feed can be scoped to a single Question or story. Its subtitle restates the honesty rule, so a subscriber who never visits the site still receives it.

**Why.** Feeds are how you follow something without an account, an email address or a notification permission. Scoping means you can follow one open question rather than a whole site.

**Connects.** The entries use the same sentences as the change log, with categories for the change kind and its group.

See it live: [What changed](https://truthscore.com/feeds/changes.atom) · [New questions](https://truthscore.com/feeds/questions.atom)

### Instructions for machines that quote

A file at /llms.txt stating what the site is, the URL grammar, the twins, the API — and four rules in the imperative: quote the residual with the share, name the lens, leading is not proven, repetition is not evidence.

**Why.** A large share of this site’s future readers will meet it through a summariser. Writing the quoting rules down, addressed to that reader, is the only leverage a publisher has over how it gets paraphrased.

**Connects.** The fourth rule ends by saying it plainly: restatements move no number here, and they should move none in your summary either.

See it live: [llms.txt](https://truthscore.com/llms.txt)

### Freshness that means something

The sitemap’s last-modified date for a page is the time of the most recent entry in the change log touching it — not a file timestamp.

**Why.** It makes “updated” a claim about the model rather than about the deployment. A page whose date moved is a page where something in the record actually changed.

**Connects.** It is verified against the database directly: the newest change-log timestamp and the sitemap entry must be equal.

See it live: [The sitemap](https://truthscore.com/sitemap.xml)

### The crawler file tells the truth about the gate

Right now the pages carry a no-index instruction and the robots file disallows crawling, because this site has not opened publicly yet. When it does, both flip together.

**Why.** A robots file that invites crawlers to pages marked no-index is a site whose two statements about itself disagree — and if two of them can disagree, none of them is trustworthy. They are driven by the same switch.

**Connects.** That switch also closes the write surfaces, so a deployment that declares itself public cannot be sitting over an open submission form.

See it live: [robots.txt](https://truthscore.com/robots.txt)

### Three descriptions that cannot disagree

The API reference page, the OpenAPI file and the machine-instruction file are generated from one list of endpoints.

**Why.** Three hand-written descriptions of one API are three documents that will disagree by next month, and the disagreement will be discovered by whoever trusted the wrong one.

**Connects.** Same discipline as one query layer and three renderers, applied to documentation.

See it live: [The API reference](https://truthscore.com/api) · [llms.txt](https://truthscore.com/llms.txt)

---

## 12. Built to stay honest

*The rules the code enforces on itself: works without JavaScript, no dead ends, no cookies, no verdicts.*

Chapter page: https://truthscore.com/tour/built-honest

### Everything works without JavaScript

Every page here is complete and true with scripts disabled — including the explorer, the knowledge-time scrub and the search. It is checked route by route on every build — every public route, every time, including the chapter you are reading.

**Why.** Scripts fail, are blocked, are stripped by readers and archives, and are invisible to most machines. If the canonical content lived in a script, the site would only exist for people with a working browser and no reason to distrust it.

**Connects.** It is why every interactive element on this site is described as an upgrade to something that already worked.

See it live: [A page that needs no scripts](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### What the moving parts actually add

Collapse and focus on branches; a draggable knowledge-time cursor; readouts on the sparklines; instant re-filtering in the explorer; type-ahead in search. Each replaces a link, a form or an expanded section that is already in the page.

**Why.** Named that way, each one is easy to judge: if removing it removed a fact, it was doing too much. None of them does.

**Connects.** The rule is enforced, not intended — the check strips every script and demands the page still say what it exists to say.

See it live: [The islands, in place](https://truthscore.com/)

### The charts are drawn on the server

Sparklines and bars are server-rendered SVG with text equivalents. No charting library is shipped to your browser.

**Why.** It keeps the pages light, keeps the numbers in one place, and means a chart survives into the Markdown twin, a screen reader and a printed page as a sentence.

**Connects.** Same reason nothing in the browser computes belief: one implementation of the arithmetic, on the server.

See it live: [Server-drawn sparklines](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Empty states state their mechanism

No section here says “None.” Every empty list explains why it is empty: “No independent evidence yet — 4 assertions await corroboration”, “Track record: not yet computed”, “narrative ranking pending”, “Promoted 2h ago; linking in progress.”

**Why.** On a site about uncertainty, absence is information. An empty section teaches the reader that the site is broken; a sentence teaches them what the model currently knows and does not.

**Connects.** It is audited: a page whose empty state says only “None” or “No data” fails the build.

See it live: [A page that is honestly thin](https://truthscore.com/question/when-will-sama-safi-be-released--5417105b)

### Sentences the site is not allowed to say

Certain phrasings are banned outright and checked for on every page — “probability that”, “proven true”, “we rate”, “verdict:”, “debunked”. Others are required: a leading branch always qualified, every share attributed to a lens, a derived claim always saying it was inferred and by what.

**Why.** Copy is where a careful system becomes an overconfident one, one convenient sentence at a time. Making the rules machine-checkable means they survive their author.

**Connects.** There is one deliberate exception: the About page may say “not a fact-checker issuing verdicts”, because the word is being denied. A blunt ban would have forced the truest sentence on the site off it.

See it live: [What it is not](https://truthscore.com/about)

### Colour never carries meaning alone

Support and challenge are green and red and ▲ and ▼ and the words. Thin corroboration is faint and labelled. Every bar and chart has a text equivalent.

**Why.** For colour-blind readers, screen-reader users, printed pages, bright sunlight and the Markdown twin — in all of which the colour is simply not there. Redundancy is not decoration here; it is the actual channel.

**Connects.** The theme toggle in the header switches between a light and a dark palette, both built from the same set of named colours and both checked, so neither is an afterthought. It follows your system preference until you say otherwise.

See it live: [Colour with its labels](https://truthscore.com/question/who-was-responsible-for-the-nord-stream-sabotage--fc1cf28a)

### Accessibility — and what has not been checked

Real headings, real semantic elements, labelled controls, a skip link, keyboard-operable everything, and motion that respects a reduced-motion preference. All checked mechanically on every build.

**Why.** And the honest half: colour contrast, focus order and screen-reader behaviour need a real browser, and have not yet been tested in one. The checker says so every time it runs rather than implying a clean bill of health.

**Connects.** It is the same rule the rest of the site follows — state what you do not know, in the place where someone might otherwise assume you do.

See it live: [Report a problem](https://truthscore.com/mailto:report@truthscore.com?subject=Accessibility)

### Slow pages get fixed, not cached

Every page has a query budget — ten for a content page, six for the front page — measured on each build, with the count returned in a response header.

**Why.** Caching a page that asks eighteen questions of the database hides the design problem and adds a second one: a cached page can be wrong, and on a site whose whole value is being current, wrong is expensive.

**Connects.** The budget is why the data-assembly modules exist in the shape they do — and the same shape is what makes the twins and the API free.

See it live: [The front page](https://truthscore.com/)

### The public site cannot write to anything

The application serving these pages holds a read-only database role, has no keys to any language model, and never calls the system that does the reading and reasoning. The two halves communicate only through the database.

**Why.** It makes a whole category of failure impossible rather than unlikely: nothing you do as a reader can alter the record, and no page render can invoke a model or spend anything.

**Connects.** It is also why visit counting writes to a file rather than a table — the boundary is worth more than the convenience.

See it live: [What this is](https://truthscore.com/about)

### Counting without watching

Visits are counted as a timestamp and a path. Two fields. No cookie, no identifier, no referrer, no user agent, no address — and the site sets no cookies at all.

**Why.** Knowing which Questions get read is genuinely useful for deciding what to improve. Nothing beyond that is needed, and on a site about contested events, a record of who read what is a liability to everyone including its readers.

**Connects.** There are no third-party scripts of any kind on this site, so nobody else is counting either.

See it live: [Search privacy](https://truthscore.com/tour/search#s-privacy)

### No accounts, no comments, no votes

There is nothing to sign up for and nothing to vote on. The public site is read-only in every sense.

**Why.** Belief here is computed from evidence. A voting mechanism would introduce exactly the quantity the whole design refuses — popularity — and an account system would create a record of readers for no benefit to them.

**Connects.** The thing you can share is a URL, and a URL carries the whole state: the lens, the moment, the version of events.

See it live: [A world as a URL](https://truthscore.com/tour/stories-and-worlds#ex-share)

### What is not built yet

Semantic search over meaning rather than words; a small map of a node’s neighbourhood; a second belief model to switch between; written daily digests; a “what if I discounted this term” control on the audit table; a browser-based accessibility pass.

**Why.** Listing them is cheaper than being asked, and it marks the boundary between what this site does and what it is imagined doing — a boundary that otherwise erodes in exactly one direction.

**Connects.** When the second belief model arrives it will appear in the lens switcher automatically, because lenses were built as a list rather than as a pair.

See it live: [Lenses](https://truthscore.com/method#lenses)

### If something here is wrong

Every page footer carries a report link. It goes to a person.

**Why.** A model built out of other people’s reporting will get things wrong — a bad merge, a mangled quote, a claim attributed to the wrong speaker — and the people best placed to notice are the ones being written about.

**Connects.** Corrections enter the record the way everything else does: as new evidence and new links, logged, never as a silent edit.

See it live: [Report a problem](https://truthscore.com/mailto:report@truthscore.com?subject=Problem%20report) · [The change log](https://truthscore.com/changes)

---
