Source code of the measurement instruments behind frankbueltge.de — the experiments of Die Akte der Gegenwart ("The File of the Present") by Frank Bültge.
These are practice-based experiments — attempts and first approaches on the way toward artistic research, not a finished work. The reason this code is public is the one principle the whole lab is built on: make it verifiable. Every measurement step should be open to inspection — no claim without evidence, no AI output without verification. You should be able to read exactly how a number on the site was produced, and reproduce or contest it.
This repository is a one-way export of the pipelines/ directory of the (private) website
repository. The website itself — presentation, drafts, design notes — stays separate. What lives
here is only the auditable method: how the world is measured each night.
Each instrument is an independent Python pipeline that runs as a nightly GitHub Actions workflow. A run fetches its sources, computes its measurement, and commits a versioned JSON snapshot back into the site repository. Git is the archive: there is no live read from cloud services at request time, and committed daily records are never edited — corrections happen only in the presentation layer. Source failures are recorded honestly ("measurement omitted"), never silently bridged.
Secrets are never stored here. API keys are injected at runtime via GitHub Actions secrets
(${{ secrets.* }}) and read from the environment; the repository history has been scanned and
contains none.
The Protocol — the minutes of the world. A deterministic daily register of ~13 global
measurements (CO₂, sea ice, conflict, fires, refugees, …), written from templates, not from a
language model. The nightly Python pipeline lives in protokoll/; the deterministic
TypeScript renderer that turns each measurement into register prose lives in
protokoll-render/ (agenda.ts, render.ts, befund.ts) — its exact output
strings are pinned under test (render.test.ts), so the wording can be audited and can never drift
silently. The renderer is extracted from the website and depends on its Astro context, so it is
shown for inspection rather than as a standalone runnable.
Counter-Measurement (Gegenmessung) — instruments that measure what power leaves in the dark and make it checkable:
| Instrument | Folder | Measures |
|---|---|---|
| The Consensus (I) | consensus/ |
how much "independent" news consensus is in truth one source, copied many times over |
| The Correction (II) | revision/ |
numbers you reacted to that were inflated — then quietly revised down |
| The Tell (III) | tell/ |
signals that give away what an official record tries not to say |
| The Pattern (IV, capstone) | pattern/ |
structural patterns across the counter-measurements |
| The Ghost Fleet | ghost-fleet/ |
deliberate AIS disabling by vessels, counted |
| The Redaction | redaction/ |
what was removed from the official public record |
| The Round Number | round-number/ |
digit-forensics: implausibly round official figures, put on trial |
gegenmessung/ is the shared nightly runner that orchestrates the
counter-measurement instruments.
On AI as material: the lab experiments with data and AI (incl. symbolic / neuro-symbolic methods). The only condition is verifiability — every AI step is transparent (model, prompt, procedure disclosed) and its output is verified or flagged as an estimate. The Protocol is the deliberate exception: its prose is fully deterministic by design.
Each instrument is a standalone package (see its pyproject.toml). Typically:
cd protokoll
python3 -m venv .venv && source .venv/bin/activate
pip install -e '.[dev]'
pytest -qThe adapters fetch the latest available data; there is intentionally no backfill — a back-dated record carrying today's readings would be a lie in the archive.
Upstream data sources keep their own terms; attribution and provenance are disclosed per instrument. If you build on a measurement, cite Die Akte der Gegenwart / frankbueltge.de.