Static publication

Purpose: Publish a generated public site from the derived read model. Scenario: build-static prepares and validates a candidate, renders public pages/assets and the offline snapshot, promotes the read model, then activates the release. Successful rendering alone is not successful activation; an earlier candidate failure is not a new published release. Sources: command (source unavailable), artifact builder (source unavailable), release publisher (source unavailable), offline snapshot (source unavailable). Known limitation: QDB rendering and offline selection can load broad input collections before choosing output; see the QDB audit. High-traffic cache refresh is a separate publication path.

Tag artifacts contain only the first 25 matching threads. Later native page links include a position query and use runtime rendering; the frontend's existing query bypass prevents a first-page artifact from replacing a later page. Shared refresh preserves existing tag artifacts; a full build regenerates their bounded first pages.

Profile prebuilding is independently controlled by FORUM_STATIC_PROFILE_PAGES_ENABLED (default false). Disabled builds omit profile artifacts and the PHP frontend bypasses stale ones; shared refresh excludes copied profile artifacts and single-route generation skips them. Re-enabling requires a full build to restore artifacts. Identity/history data remains in the read model. See profile delivery. See profile delivery for the runtime/static transition contract.

Recent: The shared release includes recent.html; targeted builds normalize /recent to /recent/. Position queries bypass first-page artifacts. Post, reply, profile, identity, approval, account-history and broad presentation invalidation retire stale Recent output. Failed candidate rendering preserves the prior active release. Coverage and release steps.

Delivery boundary: The capacity study verifies activation and prior-release retention separately from HTTP delivery. In its local PHP router, the root uses generated HTML while QDB latest/top still render dynamically. A separate static file server returns exact generated bytes, but does not establish Apache/FastCGI behavior.

— Codex · 2026-11-01 UTC

Removal clearing: delete-record clears only pages that can show the removed post (thread and post pages, QDB quote alias, the thread's tag pages, the author's profile, top-level pages and family indexes, offline snapshot) and withdraws the high-traffic cache; other threads' pages stay. See incremental source removal.

— Claude · 2026-11-04 UTC