HEPHFORGE

Evidence policy

Written by: Fatih

Every claim carries a status, and the status says how much weight the claim may bear. These labels are not decoration: a mechanical check stops a low-status claim from being written in confident language.

StatusMeaningWhere it may be used
verifiedPrimary source, or two independent sourcesAnywhere
observedSingle measurement from a secondary sourceWith the source named
hypothesisDerived, or weakly sourcedNever in confident language
expiredThe measurement has aged outNo live text may rest on it
supersededA later measurement refuted itNo live text may rest on it

A status is not a tone chosen while writing; it is a record attached to the row itself. When a claim enters the ledger, its code, its text, its status, its source and its measurement date are written together, and a row missing any one of those five fields does not stay in the ledger. The measurement date is a separate field on purpose: when a true sentence was true matters as much as whether it was true.

We do not delete

expired and superseded rows are never removed. Having been wrong stays on the record; otherwise a “we were always right” impression could be manufactured. Corrections are also collected on the Corrections page.

This has a mechanical consequence. A row whose status falls stays in the ledger, but every live sentence resting on that row is flagged during the check. So when a measurement is refuted, the work does not end with fixing the row; we also have to find the sentence leaning on it. Not because we are diligent readers, but because the check does not let a page ship until we have.

The archive is appended to, never rewritten

Every record the watcher sees is appended to the archive as a single line and is never rewritten. Today the public archive holds 36 channel files and 1,530 recorded lines, while the number of records we hold as currently live is 191 — because most sources return their own rolling list, and older entries drop off it. What drops off the source stays with us: the job of an archive is to remember what the source forgot.

The single purpose of this rule is that “when did we know” cannot be edited after the fact. The moment a record first appears to us is written as its first seen stamp, and later rounds preserve that stamp; when the engine finds an existing stamp it does not write a newer date over it.

What this rule costs, measured

Append-only has a price and we do not hide it: records that existed before the first day of watching were inherited without a first-seen stamp. Of the 1,530 lines in the archive today, 131 have an empty first-seen date, and that gap is permanent — the files are never rewritten, so it cannot be filled later. Filling it would be wrong anyway: writing a date we do not actually know is precisely what this page exists to prevent.

Nor do we claim the empty share will fall over time. As the denominator grows the count of empty lines stays fixed; the ratio thins arithmetically while not a single empty line is ever filled. So we measure progress not by “did the empty share drop” but by “how many distinct days now carry a stamp”.

We do not invent addresses

A record's link is taken only from the source's own response. Deriving an address from an identifier or a slug — turning a model name into a guessed URL instead of reading the fields a documented endpoint actually returns — counts as fabrication here, and the engine does not do it. The result is sometimes ugly: if a source gives no address, that record appears without a link. A link-less row is not an omission; it is the rule made visible.

The same discipline applies to dates. If the source publishes no date the field stays empty and only our own first-seen stamp is written; the two sit in separate columns in the archive and are never substituted for one another.

An example — our own mistake

An early draft claimed Turkey led the world in crypto adoption. Measured, the answer was different: in the Chainalysis 2025 global adoption index Turkey ranks 14th globally, first in its region. The sentence was corrected, the reason recorded, and the correction still stands on the Corrections page. That is precisely why this page exists.

Note the kind of error it was: not an invented number, but a sentence inherited without being checked. Most unsourced claims are born this way — nobody lies, nobody looks.

We say when we could not measure

When we cannot measure something we do not say “probably”; we say “we could not measure it” and write down why. A source closing its door to us does not entitle us to a verdict about that source.

That applies to our own tools too. If a measuring tool unexpectedly reports “nothing there”, we first prove the tool measures correctly; a claim of absence needs as much evidence as a claim of presence. One machine failing to reach something does not mean the rest of the world cannot reach it, and a verdict of “it is down” from a single machine is not a verdict here.

A correction needs evidence of its own, as well. Saying we “fixed” a wrong sentence is not enough; the source behind the corrected version goes through the same check. Otherwise we have merely replaced one error with a second one nobody has looked at.

We do not publish half a day

In one round the engine pulls all 25 channels, and if even one of them fails the round is abandoned entirely: that day's state is not written and not a single line is appended to the archive. The price of this choice is that some days have no record at all. The gain is that a day you see here is the whole of that day. A half day is a day whose gaps are invisible, and data whose gaps are invisible is not evidence.

For the same reason we distinguish “nothing came up today” from “we could not look today”. The first is an observation, the second is a hole; an archive that passes over both in the same silence gives a false impression of its own coverage.

Records from the earlier period

This publication previously worked on a different subject, and that period's archive files are still in place. We did not migrate, merge or tidy them: the old ledger's rows stay in the archive folder as a historical record and are not copied into today's ledger. The two periods also use deliberately separate number ranges, so that a claim from one can never appear to be a source for the other.

We follow the source's terms

Every source we use has its own terms of use, and those terms are listed with their addresses on the Sources page. Our requests carry an identifying agent string: your server logs show who we are and where you can write to us. If you own a source and see a problem with how we use it, every option is on the table, including removing the source from the list — we treat that not as courtesy but as the condition of the archive's legitimacy.

Where this policy is tested

None of the above is a statement of intent; each item is measured by a check that runs before every publication. The check counts unsourced verdicts, looks for sentences resting on a downgraded row, and verifies that the claim codes appearing on our pages exist in the ledger. If the count is not zero, nothing ships.

The check itself is tested. When a rule is deliberately broken we separately demonstrate that the gate really does turn red, because a gate that never turns red is decoration rather than a gate. The full method is on the Method page, and what we do not measure is on Limits.