Support support_page canonical How the panta-rhei.site observatory is built — stack, workflow, and current site facts.
support pagecanonical

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/*.yml and 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/*.css and /assets/js/*.js after Jekyll’s write phase so the cache-control: public, max-age=31536000, immutable policy 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-meta spans, 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 spansdata-pagefind-* attributes injected by _layouts/default.html for search-time faceting.
  • JSON-LD — emitted by _includes/seo-jsonld.html per 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 motionprefers-reduced-motion: reduce collapses 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.