ADR-0016 — The black hole as a station (Estação Fim da Linha)
Status: Accepted (2026-10-10). Supersedes ADR-0002 for the site.
Context
The black hole was the original 400.wtf: a persistent full-page background that
survived every navigation (ADR-0002). The civic redesign parked it in
packages/black-hole (plan §6) because a 300k-particle dark backdrop behind
daylight editorial pages contradicted the new identity and its performance
budget.
Decision
- Bring the engine back as a station: Estação Fim da Linha, “the end of the
line”, on the red line (category
rendering), full-bleed on the night surface. Not a background anymore. - Keep the original engine: time-driven (
uTime) spin, as committed. The experimental steady-state rework left uncommitted in the old checkout was tried and rejected: the original reads better as a station. - Engine additions: a configurable
palette(raw RGB uniforms, so values match the original shader constants), ayawargument to orbit the camera, atimeOffset(start further along the clock), anddispose(). - Interaction, scoped to the stage: the stage is tall (
stageHeight: 160svh) and the view pins under the header while it passes; the camera dive maps onto that pinned stretch and continues past the disk’s plane to look at it from underneath (offset 0 → 1.6,minTargetbelow zero). Drag turns; a click spins with inertia; ←/→ when focused (prevents the page’s station nav). ArtifactFrame clips withoverflow: clipso sticky works inside it. - Palette from DS tokens:
--ds-actionon night (lifted transit blue) far out, signal yellow at the horizon, a paper rim. - Cost control: renders only while intersecting and the tab is visible; low
tier (100k particles, DPR 1.5) on coarse pointers or ≤4 GB memory; reduced
motion holds a settled frame (60 s into the clock);
?og-capturetoo. pnpm oglaunches Chromium with software WebGL so the station’s share image and preview can be captured headless.
Consequences
- The persistent-runtime code (
usePersistentBlackHole.ts,BlackHole.vue) stays in the package for reference but is unused by the site. - The disk forms from nothing, like the original background. The clock starts on the first rendered frame, which is when the stage first comes into view.