Colophon
How the panta-rhei.site observatory is built — stack, workflow, and current site facts.
What this page records
This page describes how the Observatory is built — the people, the workflow, the static-site stack, the search index, the metadata pipeline, the design system, and a snapshot of site facts from the most recent build.
If you want to know how to use the site, see About this Site. If you want licenses, fonts, third-party assets, and acknowledgements, see Credits.
Authorship and build responsibility
Built by Thorsten Fuchs and Anna-Sophie Fuchs. Built without an agency. Editorial responsibility for every published surface rests with the named authors.
The site has no marketing budget, no growth-engineering layer, and no external content team. Every page is shaped to research-record standards.
Development workflow
AI-assisted development workflow under human authorship and editorial control. Day-to-day work pairs the authors with Claude and Codex-class assistants for drafting, refactoring, and review. Every change passes through a named author before it lands on main.
The repository’s commit history records who authored each change. AI-assisted commits are co-attributed in the commit trailer; nothing is published without a human reviewer’s sign-off.
Static site architecture
Static site built with Jekyll (Liquid templates, Markdown content, YAML/JSON data manifests). The full source tree is open and reproducible; cloning the repository and running bundle exec jekyll build produces the exact site you see.
Data-driven generation drives most of the volume:
- Lane pages are templated from
_data/lanes.yml+ per-lane data manifests. - Publication pages are templated from
_data/publications/*.ymland the publication-classes registry (_data/publication_classes.yml). - FAQ pages are templated from
_data/faqs/*.yml(one file per layer). - Route pages (cross-cutting reader paths) are templated from
_data/routes/*.yml. - PDF / Markdown dossiers are generated by the dossier pipeline from the same source content as the rendered pages, so they cannot drift.
Build stack
| Layer | Tool | Role |
|---|---|---|
| Generator | Jekyll | Page rendering, collections, plugin lifecycle |
| Templating | Liquid | Per-page composition |
| Markdown | Kramdown | Markdown → HTML with table / math / footnote extensions |
| Syntax highlighting | Rouge | Code blocks in monographs and TauLib pages |
| CSS | Sass (SCSS) | Token-based design system, compiled per build |
| JS | Vanilla ES, no framework | Drawer, modal, observers (≤ 30 KB total) |
| Search | Pagefind | Static-site search index, generated post-Jekyll |
| Sitemap | jekyll-sitemap | /sitemap.xml |
| Build CI | GitHub Actions | bundle exec jekyll build → Pagefind → fingerprint → deploy |
| Hosting | GitHub Pages | Static origin behind Cloudflare |
| Edge | Cloudflare Worker | Cache headers, redirects, observability |
Two project-specific plugins are bundled in _plugins/:
asset_fingerprint.rb— content-hashes/assets/css/*.cssand/assets/js/*.jsafter Jekyll’s write phase so thecache-control: public, max-age=31536000, immutablepolicy at the edge is safe.site_facts.rb— generates the build-time stats rendered in §10 below.
Search stack
Site search is powered by Pagefind, a client-side static-site search engine. The index is generated against _site/ after Jekyll completes its build and ships as a /pagefind/ directory served alongside the rest of the site.
Properties:
- Privacy-preserving. The search index is fetched in chunks by the browser and queried locally — nothing is sent to a server.
- Lane-aware. Each page declares its lane via a
data-pagefind-filter="lane"span (set by_layouts/default.html), so the search modal’s filter chips (All / Corpus / Results / Verify / Program) can narrow the result list client-side without rebuilding the index. - Metadata-rich. Page-type, publication-type, anchor-paper, status, date, tags, and topics are emitted as
data-pagefind-metaspans, so future query syntax can target them.
The search modal itself is rendered by _layouts/default.html (one overlay shared across the site) with an IA-doctrine empty state (Quick Access + Common Starting Points + Site Help), a scope hint, and the result-list filter chips. The full empty-state structure is documented in the About this Site section.
Metadata and research graph
Every page emits structured metadata at three layers:
- Front matter — Markdown front matter (lane, type, status, last_updated, summary, right_rail) drives layout decisions and renders in the right rail.
- Pagefind filter/meta spans —
data-pagefind-*attributes injected by_layouts/default.htmlfor search-time faceting. - JSON-LD — emitted by
_includes/seo-jsonld.htmlper the page-type registry (_data/page_types.yml). Page types map to Schema.org types (Article, Book, FAQPage, WebPage, Person, Organization, CollectionPage, Dataset).
The research graph is a separate authority/provenance layer — a local manifest of every Monograph, Paper, Note, person, repository, and dataset, and the persistent identifiers (DOI, ORCID, OSF, GitHub, Wikidata) that describe each entity. The manifest source lives at _data/research_graph.yml (shipped in W1); the public surface lands in Research Graph (W6).
PDF / Markdown dossier generation
Each long-form publication ships in three forms:
- the rendered web page (canonical),
- a PDF dossier — typeset for print and archival reading, generated from the same source content,
- a Markdown dossier — the page’s source content in portable Markdown with stable headings and embedded math, suitable for offline reading or quoting.
The PDF pipeline produces named results (predictions, falsification packs, conspectuses) under /assets/downloads/. Right-rail “Download PDF” and “Download Markdown” buttons surface the dossier links on every page that has them. The dossier scope is registered in _data/dossier_scope.yml.
Design system
The design system is encoded as Sass tokens under _sass/ and CSS custom properties at :root. Anchors:
- Typography: serif display stack (Iowan Old Style → Palatino → Georgia, OS-resident, no network), Inter variable for UI/body (single self-hosted
.woff2), mono for code and ledger affordances. - Color tokens: Panta Blue 50–950 (ink + plate), Paper 50–200 (page ground), τ-spectrum (the four-layer cosmological → terrestrial → biospheric → noospheric signal used in lane signals and the closing footer spine).
- Lane signals: each lane has a dedicated accent color drawn from the τ-spectrum; lane navigation, OG plates, and breadcrumbs all key off the same token.
- Spectral perimeter: the 4 px τ-spectrum sliver at the top of the footer (and at the bottom of OG cards) is the program’s signature closing affordance — the “closing spine.”
- Master constant typography: the program’s master constant renders in Display Garamond italic, bracketed by gold hairlines, with a mono caveat beneath. This treatment is a brand-level constant; no other element uses it.
The full design system is documented at Brand.
Site facts at last build
This page renders these facts at build time from _plugins/site_facts.rb (which walks the site source tree). They re-compute on every build, so what you see below is current as of the deploy.
| Fact | Value |
|---|---|
| Build timestamp (UTC) | 2026-05-27T20:54:08Z |
| Release version | v4.0 |
| Manifest hash | 07ea80a150b3 |
| Total pages | 13820 |
| FAQ entries | 73 |
| PDF dossiers | 12 |
| Markdown dossiers | 0 |
| Pagefind index size | (see /pagefind/ — measured outside Jekyll) |
| Build time (Jekyll generation, seconds) | n/a (measured outside Jekyll) |
Pages per lane
| Lane | Pages |
|---|---|
| Discover | 11 |
| Program | 107 |
| Agenda | 280 |
| Corpus | 3176 |
| Results | 1645 |
| Verify | 59 |
| Impact | 78 |
| Engage | 16 |
Publications by class
| Class | Count |
|---|---|
| Monograph | 14 |
| Hinge paper | 10 |
| Research note | 12 |
| Research dossier | 0 |
| Research code | 7 |
The publication-class taxonomy follows _data/publication_classes.yml (W1 doctrine groundwork). Class assignments will tighten as the W7 publication taxonomy migration completes — until then, the counts here are derived from publication_type + URL prefix.
Accessibility and performance posture
Posture, not a claim of compliance:
- Keyboard navigation — every interactive control (header nav, footer search, modal close, page-tools drawer, accordion toggles) is reachable by Tab, dismissible by Esc, and shows a visible focus ring (
var(--focus-ring)token, shipped in polish-W4). - Focus rings — uniform 2 px outline + 2 px offset across all interactive surfaces; verified after the polish-W4 sweep against keyboard navigation paths.
- Reduced motion —
prefers-reduced-motion: reducecollapses transitions to instant transforms. - Touch targets — interactive controls maintain ≥ 36 px minimum dimension on mobile.
- No dark-mode toggle — the site has a single light theme. The Observatory’s visual identity (paper ground, ink type) is part of its voice; a dark variant would change that voice.
- CSS / JS budget — fingerprinted CSS bundle ≤ 60 KB compressed; JS ≤ 30 KB compressed. No frontend framework, no client-side router, no analytics dependency.
- Privacy — search runs locally (Pagefind), analytics are cookieless and IP-anonymised (Umami), newsletter handled by Buttondown. Full disclosure on Datenschutz.
Known gaps (transparency, not policy):
- Color-contrast audit of accent-on-accent hover states is not exhaustive; spot-checked on the lane signals and master constant block.
- No automated visual-regression suite at this scale; we run targeted playwright snapshots before each release and review diffs by hand.
Credits and licenses
Third-party assets, open-source dependencies, fonts, and content licenses are recorded on Credits. Site content is Creative Commons Attribution 4.0; the formalization library TauLib is Apache 2.0.
Site architecture white papers / Observatory blueprint
The architectural decisions behind this site — lane taxonomy, page-type registry, publication classes, footer doctrine, search modal doctrine, research-graph doctrine — are recorded as doctrine documents in the program atlas. The current canonical set (v5) covers:
- IA Doctrine v5 — information architecture, lane and footer pattern, search modal, About / Colophon / Research Graph requirements.
- Publication Taxonomy v5 Supplement — the 4-class publication taxonomy (Monographs, Papers, Notes, Dossiers) plus Research Code.
- Release Lines + Formalization Surfaces v5 Addendum — Corpus and TauLib release line schemas, proof-package states, citation status.
These documents are the source for the implementation in this repository. When a doctrine surface looks under-specified, the doctrine is the ground truth and the site is the projection.