Colophon

How this site is built.

The publish boundary, practicing what it documents.

This site is the third boundary in the lab's three-boundary model: it describes the infrastructure for anyone to read, without exposing anything the other two boundaries guard. Today that property comes from the bluntest mechanism available — the lab's data is not sent here, so there is nothing to expose.

Built by hand, on purpose

The pages you are reading are hand-authored Astro components. So is the physical layer of the interactive explorer: a curated graph of generic aliases that shows the architecture's shape without naming a single real host, address, or identifier. It does not originate in inventory.yaml, andsrc/data/graph.ts says so in its opening comment.

What is built, and what is not connected

The Publish boundary rests on two mechanisms, and both now exist. The tripwire runs in this repository, scanning build output for anything secret-shaped and failing the build on a match. The allowlist projection is built inside Describe, emitting only fields explicitly marked publishable, and it isnot wired to this site. They are the prerequisite for ever feeding this site real lab data; what guards it today is still the plain fact thatno lab data is imported here at all.

The public build never receives inventory.yaml, directly or indirectly. There is no code path in this site that reads the source file, and no generated artifact from the Describe boundary is checked in here.

The stack

The architecture is deliberately minimal. Astro 7 compiles the site to static HTML at build time: no server process, no server-side rendering, no API routes. The pages you are reading are Astro components — hand-authored prose, not generated output.

The one interactive piece is the infrastructure explorer, a React Flow island client-hydrated from a graph module compiled into the bundle. The island runs entirely in the browser and makes no requests to any lab system. It is interactive in the UI sense; it is inert in the network sense.

Astro 7React Flowhand-authored graphstatic HTML

The design system

Three typefaces carry the visual hierarchy. Instrument Serif handles the display layer: page headlines, pull quotes, and the stand lines that open each section. It is a high-contrast transitional serif that reads well at large sizes on dark backgrounds. DM Sans handles body text and UI chrome — a geometric grotesque that stays legible at small sizes without feeling clinical.DM Mono renders labels, chips, code fragments, and nav group headings: the data layer, where monospace signals precision.

The color story is copper on warm charcoal. Copper is used sparingly: active nav states, accent borders on callouts, inline links, and numbers in stat displays. Everything else recedes into a warm gray scale. The palette is dark by default, not as a stylistic gesture but because the subject matter is infrastructure running in a rack — not a product landing page in morning light.

What this site is not

The site carries no live data. Nothing it displays changes after the build runs. There is no polling loop, no webhook listener, no cron job refreshing a feed from the lab. The explorer's graph is a curated representation; its physical layer could one day be derived from the same inventory as everything else, by way of the tripwire that already scans this build and the projection now built inside Describe. The allowlist projection is not connected to it today. The tripwire is: the explorer's graph compiles into a JavaScript asset, and the scan reads those — so what is missing is the data source, not the guard.

No path runs from this site back into the lab. There is no outbound API call, no server-side handler, no form that submits to a lab system. The boundary between Publish and the two boundaries behind it is strictly one-directional: data flows out at build time, and that is the only crossing it makes.

No pipeline carries the lab's secrets toward this site; they were never compiled into it. That is a property of absence, not of a filter, and it is worth saying plainly rather than dressing it up. It also has a limit worth stating in the same breath: the build compiles what it is given, so an author who types a real identifier into a page can still publish it. The boundary holds against ingestion by construction, and against that mistake by the output tripwire, which scans this build for anything secret-shaped and fails it on a match. A scan catches what looks like a secret, not every way a person can be wrong.