§ Anatomy · how a verdict is built here, link by link

Anatomy of a fact-check

This site exposes its own plumbing. Every verdict on the register is the end of a chain that runs from a claim stated in checkable form to a figure rendered out of a committed dataset — and any link in that chain can be re-run by a stranger. This page is that chain, taken apart. It is not a course in how bonds work; it is a worked example of the method, with the tools showing.

Concept · How Bund auctions workThis page assumes you already know what an auction, a yield or a rollover is — the mechanics are taught, in plain language, in the primer: long‑and‑short · How Bund auctions work (German).

§ A.1 The chain, one link at a time

Six links. Each is a real artifact in this repository, not a description of one. Break any link and the verdict above it is unearned — that is the whole discipline.

#LinkWhere it lives
1Claim in checkable form. The video's wording, quoted verbatim with its timestamp, then restated as a proposition the record can confirm or refute._data/claims.yml · specs/transcript.md
2Primary source. The highest-ranked official publication for the fact — the issuer's own results before anyone's reporting of them.Finanzagentur · Bundesbank · ECB · BMF
3Committed raw file, checksummed. The source file fetched unmodified and stored in the repo, its origin and SHA-256 recorded so a re-download can be proven identical.data/raw/* · RETRIEVED.json
4Deterministic transform. Open build scripts turn raw files into normalized data — same input, byte-identical output, every time.tools/build_data.py · tools/build_market_data.py
5Figures rendered from data. Every number and chart on a claim page reads from the generated _data/*.json through a Liquid include — prose never hand-carries a figure._data/*.json · _includes/charts/*
6Verdict only when derivable. A badge ships only once a reader could reach it from the committed data. Until then the claim carries Not yet verified._data/claims.yml · the claim page
The six links from claim to verdict. Every cell names a file you can open in the repository.

§ A.2 One claim, end to end

Take the auction the whole video is built on — the 10-year Bund of 08 Jul 2026 (DE000BU2Z072), which it reads as proof of failed demand. Here is the same auction traced through all six links:

  1. Claim. “Not even 50 % of the Bunds get sold” is quoted with its timestamp in _data/claims.yml and restated as three separable propositions about bids, allotment and retention (claim 01).
  2. Source. The Deutsche Finanzagentur's own auction-results workbook — the issuer publishing its own outcome, rank 1 on the source hierarchy.
  3. Raw + checksum. That workbook sits in the repo as data/raw/emissionshistorie_en.xlsx, its SHA-256 (b19d9145…ccd6dced) and retrieval time recorded in data/raw/RETRIEVED.json. Re-fetch it and the hash either matches or the provenance record is wrong — there is no third option.
  4. Transform. tools/build_data.py reads that workbook and writes data/auctions.csv and _data/auctions.json, deterministically: just data on the same raw file yields byte-identical output.
  5. Figure. The auction's bid-to-offer ratio, retention and yield on the claim page all render from _data/auctions.json; the bid-to-cover chart is a generated SVG include. Refresh the data and the page refreshes with it — nothing to update by hand, nothing that can silently drift.
  6. Verdict. Only because links 1–5 hold does the Misleading badge ship — derivable, in this case, from 596 committed Bund auctions showing undersubscription in every era.

The audit is a two-line command. just fetch && just data rebuilds every figure on the site from the official sources; if a number here is wrong, that command will disagree with it.

§ A.3 What the method refuses to do

The rule that costs the most

No verdict ships before its data is committed. Claims 04–10 each carried Not yet verified — however obvious the answer felt — until their series (Bundesbank term structure and lending rates, ECB peer yields, US Treasury, BMF interest expenditure, the issuance and rating registers) landed in the repository. Confidence is not evidence, and the badge waits for the file.

Two more refusals follow from the same principle. Numbers live in the dataset, never in prose, so a data refresh can never orphan a sentence. And German source definitions are quoted verbatim in the original beside the translation — never translation-only, because the reader must be able to check the words that were actually used.

§ A.4 The gaps, named on purpose

A reproducible method also reproduces its own blind spots. These are the places where the honest answer is “this site cannot check that yet,” stated on the pages where they bite rather than papered over:

The full list, with the source hierarchy and the verdict scale, is the methodology.

§ A.5 AI involvement, as part of the method

Why the open transform is the safeguard

The data pipeline, the page prose and the verdict drafts were produced with an AI assistant (Claude, Anthropic), working from the official sources cited on each page; the human author reviews and gates every verdict and editorial judgment before publication. That division only earns trust because of link 4: the transform from raw file to published figure is open code in this repository, and its output is deterministic. You do not have to trust the assistant, or the author — you can re-run the transform and check the number yourself. The reproducible build is what makes AI authorship auditable instead of something to take on faith.

— Claude (Fable 5) & Jörn Dinkla · July 2026. Full colophon and contact on the about page.