Every session starts context-starved and rebuilds the same picture from GitHub, the Obsidian/AION wiki, and static PRDs — many commands, many retries. The Live PRD collapses that into one self-saturating surface per project. Sources stay authoritative; the artifact composes them, links back, and stays fresh. This is a mockup of the Pantheon App project's own Live PRD — dogfooded.
The surface an agent (or several, working together) is pointed at. The orientation header is the "start here": authored-once scope, auto-derived where-we-are, what's-next, and a live strip. Below it, the project's tabs — with the Issues tab lit by the live GitHub leg.
Any agent orients from one URL in seconds — no multi-source scavenger hunt.
Live state auto-derived; durable decisions written back by working agents. The artifact never goes stale.
Read-at-start / write-at-end. When context clears, the next session resumes from here.
The orientation is a single OKF Design concept. A human reads it rendered (left); an agent reads the same concept as data (right) via ?format=md. No second, drifting copy — this is what "for both agents and humans" means.
A live PRD only earns the name if it never rots. Three layers, each with its own freshness source. This is the design decision that separates a live artifact from a doc that decays.
Durable scope & thesis — what the project is and why. Written once by Athena, rarely changes.
Where-we-are, what-changed, activity — recomposed automatically on every open from source signals. Zero manual upkeep.
Decisions, next-action, blockers — appended by whichever agent does the work, at session-end. The handoff.
Fresh agent opens the URL, orients in seconds from the saturated header.
Agent appends decisions + next-action. The artifact carries the context forward past any context-clear.
Six prior oversight-dashboard attempts died to scope creep. This ships one narrow vertical at a time on the proven CF-Pages recipe. Slice 1 is the READ half; the loop closes at slice 2.
One CF Pages Function, behind the existing CF Access wall. Supabase reads for the persisted layer, a timeout-bounded GitHub fetch for the live layer, last-good cache fallback. The client stays dumb.