How we handle sources #
This project distinguishes three kinds of posts — and treats each kind differently.
1. Factual articles #
Posts that make factual claims (studies, data, events, people, quotations) end with a ## Sources section. There we list the publisher roots that support what the text asserts — typically:
- official institutions (agencies, governments, regulators)
- original data sources (statistical offices, research databases)
- top-tier journals and preprint servers
- the explicitly cited secondary sources (Substacks, whistleblower platforms, newspapers)
We link to publisher roots rather than individual article URLs — for two reasons: first, deep links rot quickly; second, we avoid the risk of fabricating plausible-but-wrong URLs. Anyone looking for a specific study can find it via the platform’s own search.
2. Opinion and reflection pieces #
Essays, columns, self-observations, and demonstrations come without a ## Sources block — because their argument doesn’t live off external evidence, but stands on its own. A thought you don’t share can’t be refuted by citing a source; only by a better counter-argument.
3. Series index pages #
Overview pages for multi-part series link internally to the individual parts. The sources live there — with the parts.
Visible classification #
Every non-fact post carries a post_type: field in its frontmatter and shows an amber reader badge directly beneath the heading. At a glance you can see this is not a sourced factual article:
| Badge | Frontmatter value | Meaning |
|---|---|---|
| Opinion piece | opinion |
Essay, reflection, commentary |
| Demonstration | demo |
Showing AI behaviour or patterns |
| Satire | satire |
Polemic, exaggeration |
| Series index | series_index |
Index, sources live with the parts |
Factual articles carry no badge (default fact) and contain their ## Sources section. We don’t sell reflection as factual reporting.
What we don’t do #
- We don’t invent URLs. If we know the content of an article but can’t verify the original URL, we link the publisher root rather than a guessed deep URL.
- We don’t curate through source flooding. A short list of solid roots beats twenty doubtful links.
- We correct quietly. When we swap or add sources, it happens without ceremony — but traceably via Git history.
Quality assurance #
A dedicated lint script (.qa/sources-lint.py) classifies all posts into buckets:
| Bucket | Meaning |
|---|---|
| A | Footnote references without resolution |
| B | Plain-text sources without Markdown links |
| C | Empty ## Sources section |
| D | Sources inline in text, no section |
| E | Few inline links, no section |
| F | No external sources — manually classified (see points 2/3 above) |
| Z_OK | Sourcing policy satisfied |
Buckets A–E are currently empty. Bucket F intentionally holds the post types described in points 2 and 3.
Disagree? #
If you think a post is poorly sourced, or that a factual article is masquerading as opinion, let us know via the contact page. We read it.