Source: docs/pantheon/PRD.md · branch athena/prd-v3.1-wave-2-sequencing
v3.1 · 2026-05-05

Pantheon Hub — Product Requirements Document

Version: 3.1 (Wave-2 sequenced) · Date: 2026-05-05 · Author: Athena

This is the single canonical PRD for Pantheon Hub. It supersedes and absorbs: - pantheon/docs/pantheon/PRD.md v1.0 (2026-03-02 — pre-constellation, predates fleet rebuild) - pantheon/docs/pantheon/DASHBOARD-BIBLE.md (2026-03-26 — vision + architecture decisions) - constellation-athena/docs/specs/pantheon-hub-navigation-restructure.md (2026-04-17 — page architecture) - constellation-athena/docs/specs/pantheon-hub-v2-session-plan.md (2026-04-22 — implementation plan) - constellation-athena/docs/specs/pantheon-hub-prd-2026-04-28.md (2026-04-29 — PM MVP scope cut) - constellation-athena/docs/specs/planning-view-reference.md (2026-04-22 — planning surface details) - constellation-athena/docs/specs/athena-subpage-architecture.md (2026-04-08 — Athena page detail) - constellation-athena/docs/audits/pantheon-hub-project-mapping.md (2026-04-08 — comprehensive map)

Source documents move to pantheon/docs/pantheon/archive/superseded-2026-04-30/ on consolidation.


1. Problem

Multi-agent work across multiple machines and surfaces creates a visibility problem. Without a central coordination layer:

The Hub exists to solve this. Every agent reports to the Hub. Every project lives there. Every decision lands there. The operator opens one URL and sees the fleet.


2. Vision

The Pantheon Hub is a strategic portfolio command surface — not an ops console, not a project management tool. It exists to answer three questions:

  1. Where are my resources going? (current state — agents, projects, costs, dispatches)
  2. Where should they be going? (strategic — Athena directives, priorities, milestones)
  3. What is producing value and what is consuming it? (financial — Plutus oversight)

The primary user is Boas / Kairos (human operator) working with Athena (strategic AI counsel). Agents (the constellation) consume the Hub for context and write to it as they work. The Hub is the gravitational center — every surface else (Discord, Claude Code sessions, Arsenal, war rooms, n8n) reports here.

Hierarchy

Portfolio (all projects at a glance)
  └── Project (strategic container — long-lived, multi-repo, multi-agent)
        ├── Repos (1..N per project, e.g. hub+spoke patterns)
        ├── Clients (downstream consumers / customers)
        ├── Constellations (agent groups working on the project)
        ├── Tasks (live fleet_tasks scoped to project)
        ├── Milestones (planned + in-progress + complete, descending)
        ├── Decisions (war_room_decisions FK'd to project)
        ├── Artifacts (briefs, mockups, fleet_shares deep-links)
        ├── Activity (event timeline across all repos)
        └── Strategy Docs (athena/metis-authored prep, athena-012)

3. Users + Stakeholders

Role Identity Use of Hub
Operator (Kairos) Boas Kristjánsson — sole human creator Decision-maker. Reads Overview + Portfolio + Athena page daily. Sets priorities. Reviews dispatches.
Athena CEO / strategic arbiter Owns Hub product direction. Writes assessments, directives, project priorities. Single agent authorized to write agent_priorities.
Atlas Fleet ops / topology / Argus Reads Argus findings tab. Manages skill inventory + fleet tables.
Metis PM owner / research / proposals Owns Themis-PM (file→table bridge). Writes proposals, research deliverables.
Pantheon (agent) Hub backend Owns Express routes + Supabase services.
Apollo Hub frontend Owns React dashboard + brand compliance.
Hermes Intelligence / monitoring Reads dispatch queue. Logs intelligence findings.
Plutus Financial oversight Reads cost data. Writes budget reports.
Hades Security / credentials Reads guard rail status. Logs auth events.
Proteus Schema / pipeline Owns DDL. Manages migrations.
Mnemosyne Knowledge / memory Indexes session transcripts. Provides Aion query surface.

The Hub is human-in-the-loop by design. Agents execute, research, monitor; Kairos approves, steers, decides. There is no path to autonomous merge. Even the Night Shift protocol operates against a queue Kairos pre-approved.


4. Architectural Principles

These are non-negotiable design commitments.

  1. Live data only. No mocks in the dev runtime. No MSW handlers active. If a section can't show real data yet, it says "Not connected" — never displays template content. Origin: 2026-04-28 fleet policy after Hub v3 0 ACTIVE on real backend because MSW shapes diverged.

  2. Append-only everywhere. Events, war room outputs, decisions, chronicle entries, audit trails. Nothing is mutated. Reproducibility, time-travel debugging, trustworthy audit by construction.

  3. Projects are the gravitational center. Everything is a projection within project context. The flat 39-item repo dump becomes ~25 meaningful projects with repos nested inside.

  4. Goal-backward planning. Set an epic / end-goal with Athena. Build roadmap backwards. Progress reflects distance to goal, not phase-count.

  5. Descending roadmap. Future goals at top, completed work sinks. The destination leads.

  6. Protocol-agnostic planning layer. GSD, Superpowers, or whatever comes next wraps underneath. The Hub does not assume a specific execution protocol.

  7. Depth through navigation, not density. Top-level shows health + activity signals. Details live one click deeper. No page requires scrolling 30 items to find one.

  8. Every agent page is an operations console. Not a profile card. Open Hermes → see active monitors, pending research, recent findings — not a static description of what Hermes is.

  9. Real data or honest "Not connected". Mock data in production creates false confidence.

  10. Pantheon brand SSOT. JetBrains Mono primary, dark-only, phosphor accent #7CE4C9. Defined in constellation-apollo/projects/pantheon/pantheon.brand.json. Never cross-wire with Galdr (EB Garamond / Iron Manuscript) or boas-dev (JetBrains Mono dual-mode).

  11. Single PR per task. No bundling. Scope-hygiene rule from 2026-04-25.

  12. 3-surface deploy smoke after every restart. Backend curl + frontend HTML render + bundle hash check. Backend-only smoke false-positives on stale SPA.

  13. Offline-capable, Supabase-optional. Hub must work from a laptop without internet (SQLite local). Supabase is the productization path (offering Pantheon to clients), not a hard dependency.

  14. Wire existing gods, do not add new ones. The roster is sufficient. Priority is connecting them — provisioning runtimes, closing dispatch loops — not expanding the cast.

  15. Zod at all boundaries. Every external input validated before processing. Hard-fail on invalid data; never clean up afterward.


5. Page Architecture

The Hub has three navigation sections: COMMAND (the daily heartbeat), CONSTELLATION (per-agent ops consoles), SYSTEM (infrastructure visibility).

COMMAND
  ◈  Overview        /                Fleet pulse + activity + alerts
  ◇  Portfolio       /portfolio       Projects, clients, engagements
  ⚔  War Room        /war-room        Active + historical sessions

CONSTELLATION
  ✦  Athena          /athena          Strategic governance, assessments
  ⬢  Atlas           /atlas           Fleet ops, skills, Argus, enforcement
  ◇  Metis           /metis           Strategic research, proposals
  ⚡  Hermes          /hermes          Intelligence, monitoring, feeds
  ☀  Apollo          /apollo          Creative output, deliverables
  $  Plutus          /plutus          Costs, budgets, financial oversight
  ☢  Hades           /hades           Security, credentials, guard rails
  ⚙  Proteus         /proteus         Infrastructure, pipelines, compliance
  ◑  Mnemosyne       /mnemosyne       Knowledge graph, memory, Aion

SYSTEM
  ♡  Pulse           /pulse           Health rings, probe history
  ⊕  Fleet           /fleet           Machines, agents, connectivity
  ◉  SSOT            /ssot            Fleet table browser
  ▶  Dispatch        /dispatch        Pipeline, work items, ask_human

5.1 COMMAND Section

Overview (/)

The page Boas opens first. Answers: "Is everything OK? What happened? What needs attention?"

Layout: - Fleet status bar (top): online agent count, machine count, Pulse status, active war rooms, critical Argus findings - Activity feed (left, 60% width): cross-agent event stream, time-sorted, max 20 items - Attention panel (right, 40% width): Argus findings, stale agents, ask_human pending, pipeline blocked - Active work (right, below Attention): live war rooms + active fleet_tasks - Constellation status (bottom, full-width): 9 agent dots, color = last_seen recency, click → constellation page

Data sources (all real): /api/agents, /api/pulse, /api/argus-status, /api/war-room/sessions?phase=active, /api/cross-agent-feed, /api/pipeline?status=waiting_approval, /api/dispatch-responses?status=pending, /api/active-tasks.

Portfolio (/portfolio)

Strategic project + client view. Three collapsible sections, each showing project cards:

Filters: lifecycle (active/maintenance/archived), priority (focused/critical/planning/paused), type, sort (activity/progress/name).

Each card surfaces: project name, workspace badge, lifecycle chip, priority chip, owner agent, current milestone, progress bar (milestones complete / total), last-activity timestamp (max of: commits, war_room_sessions, fleet_tasks updates), repo count, brief excerpt, deep-link to detail page + latest share.boas.dev artifact + latest war room session.

Project Detail (/project/:slug)

Sticky header with progress ring (Athena assessment score if available, milestone-derived otherwise), project name, priority + lifecycle badges, subtitle stats. Below: Overview Strip (epic goal display + edit, Athena assessment row conditional, milestone progress bar, focus derivation).

Tab structure (PR-v3-03 8-tab refactor, merged 2026-04-25 PR #21): flat URL /project/:slug/:tab. 8 canonical tabs, classified by purpose (group classification is visual badge only, not URL prefix):

Tab Group Source Status
overview Strategic brief_markdown (≥300 chars per project, goal + open-work hint) live
decisions Operational /api/v3/projects/:slug/entries?type=decision (canonical EntriesResponseV3) live
milestones Strategic fleet_portfolio_milestones FK'd to project partial — milestones table populated for some projects
sessions Operational war_room_sessions.project_id live
artifacts Operational fleet_shares.project_id deep-links + war room reports live
code Reference fleet_project_repos repo grid live
tasks Operational /api/fleet-tasks?project_id={UUID} filtered (B1 + B2 shipped 2026-04-29) — sorted active→blocked→pending→complete→cancelled, then priority, then created_at desc. Columns: slug · status dot · title · status · priority · target · age_days · source A1 in DRAFT (PR #31) — code ready, smoke gated on B1 verify
issues Reference (placeholder — repo-level issues not yet wired) not connected

Generic EntriesTabList consumes canonical /api/v3/projects/:slug/entries?type= per PR #19 contract. Fallback ?view=raw-docs renders Wave-2 filesystem-scanner view per spec §13 v3-06 escape hatch.

Supersession sidebar widget (Q5) renders on every project page — sidebar layout only (NOT breadcrumb, NOT modal, NOT inline chain walker). Surfaces the supersession chain for the project's canonical research/context entries.

Strategy Docs tab (athena-012, post-Hub-functional, blocked on PM MVP closure + Hub auth) — would slot as a 9th tab between artifacts and code, scoped private + agent-accessible. NOT in current 8-tab spec.

Empty Tasks tab shows clean empty-state, NOT <NotConnected> (project IS connected, just no tasks). <NotConnected> reserved for tabs whose backing data path is genuinely absent (Issues today).

War Room (/war-room)

Session history + governance decisions. Active sessions pinned to top with live indicator. Otherwise unchanged from current implementation — well-structured against real war_room_* tables.

5.2 CONSTELLATION Section

Every constellation page follows the same shell:

The Activity tab is universal — events filtered by agent_id. Recent commits, war room participation, task completions.

Per-agent domain tabs:

Agent Tabs
Athena Assessments · Directives · Priorities · Activity
Atlas Argus · Skills · Fleet Tables · Activity
Metis Research · Proposals · War Room · Activity
Hermes Intelligence · Dispatch · War Room · Activity
Apollo Gallery · Brand · War Room · Activity
Plutus Costs · Budget · Optimization · Activity
Hades Findings · Guard Rails · Audit · Activity
Proteus Pipeline · Pulse · Compliance · Dependencies · Activity
Mnemosyne Knowledge · Decisions · Sessions · Activity

Honest "Not connected" placeholders where real data path absent today: Metis (Arsenal-isolated, no Hub registration), Hermes Intelligence (Arsenal queue not yet wired), Apollo Gallery (Dropbox mockups path not yet wired), Apollo Brand (table needed), Plutus Budget (config system needed), Plutus Optimization (logic needed), Hades Findings (security_findings table needed), Hades Guard Rails (state surface needed), Mnemosyne Knowledge (Aion CLI integration).

Athena chat shell stays as a placeholder. Don't make it prominent — it doesn't work yet (Mastra agent backend not provisioned).

5.3 SYSTEM Section

Pulse (/pulse)

Health monitoring. Replaces "System" naming — Pulse is the actual health system with ring probes. 6 health rings with status (healthy/degraded/critical), findings list with severity, 30-day trend sparklines per ring, "Check Now" button. All real from pulse_reports table.

Fleet (/fleet)

Machine + agent inventory. Machines section: hostname, type, location, last_seen, CPU/RAM/disk sparklines (24h). Agents section: name, role, machine, model, last_seen, current priority. Each agent row links to its constellation page. All real.

SSOT (/ssot)

Fleet table browser. Lookup tool — fleet_agents, fleet_services, fleet_repositories, fleet_credentials, fleet_machines, fleet_naming_conventions. Works as-is.

Dispatch (/dispatch)

Pipeline + human-in-the-loop. ask_human queue at top (most urgent), active work items by stage, dispatch log, dispatch sessions. All real from pipeline + dispatch tables.


6. Data Model

Core project model — fleet_projects_registry

-- Naming: fleet_projects_registry (not fleet_projects, not fleet_portfolio_projects)
-- Renamed 2026-04-25 to avoid collision with cornerstone fleet_projects (Supabase project registry).

CREATE TABLE fleet_projects_registry (
  id              uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  slug            text NOT NULL UNIQUE,
  name            text NOT NULL,
  project_type    text NOT NULL CHECK (project_type IN
                    ('client-engagement','agent-constellation','internal-initiative','subsystem')),
  workspace       text NOT NULL CHECK (workspace IN
                    ('Agency','Products','Constellation','Personal')),
  status          text NOT NULL CHECK (status IN
                    ('proposal','active','maintenance','shipped','shelved','archived')),
  priority        text CHECK (priority IN ('focused','critical','planning','paused')),
  owner_agent     text,
  brief_markdown  text,
  created_at      timestamptz NOT NULL DEFAULT now(),
  updated_at      timestamptz NOT NULL DEFAULT now()
);

Renamed columns from earlier draft: lifecycle → status, type → project_type. 4-value project_type enum: client-engagement (3 rows), agent-constellation (10 rows), internal-initiative (renamed from earlier product + roadmap, 9 rows), subsystem (4 rows). Coverage today: 26 rows after Athena PRD-Ath2 (2026-04-29, registry expansion shipped) + fleet-backup-redesign (2026-04-30, v31.0 ratification PR #33). Workspace distribution: Products 13, Constellation 10, Agency 3 (Personal unused so far).

-- Repo membership (M:N)
CREATE TABLE fleet_project_repos (
  project_id  uuid NOT NULL REFERENCES fleet_projects_registry(id) ON DELETE CASCADE,
  repo_name   text NOT NULL,
  role        text CHECK (role IN ('primary','secondary','subsystem','archive')),
  PRIMARY KEY (project_id, repo_name)
);

-- Milestones (descending roadmap, goal-backward)
CREATE TABLE fleet_portfolio_milestones (
  id           uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  project_id   uuid NOT NULL REFERENCES fleet_projects_registry(id) ON DELETE CASCADE,
  title        text NOT NULL,
  target_date  date,
  status       text NOT NULL DEFAULT 'planned' CHECK (status IN
                 ('planned','in_progress','complete','missed','cancelled')),
  ordering     int NOT NULL DEFAULT 0
);

-- Project dependencies
CREATE TABLE fleet_portfolio_dependencies (
  project_id              uuid NOT NULL REFERENCES fleet_projects_registry(id) ON DELETE CASCADE,
  depends_on_project_id   uuid NOT NULL REFERENCES fleet_projects_registry(id) ON DELETE CASCADE,
  kind                    text CHECK (kind IN ('blocks','informs','shares_repo')),
  PRIMARY KEY (project_id, depends_on_project_id)
);

Foreign-key bridges (existing tables, optional FKs)

Strategy docs (post-Hub-functional)

Per backlog/pantheon-hub--strategy-docs-surface.md (athena-012, blocked on PM MVP closure + Hub auth):

CREATE TABLE fleet_documents (
  id              uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  project_id      uuid REFERENCES fleet_projects_registry(id),
  document_type   text CHECK (document_type IN
                    ('meeting-prep','negotiation-prep','client-profile','sector-delta',
                     'decision-record','strategy-narrative','post-meeting-debrief')),
  title           text NOT NULL,
  body_markdown   text NOT NULL,
  author_agent    text NOT NULL,
  meeting_id      uuid REFERENCES meetings(id),
  access_class    text CHECK (access_class IN ('private','internal','shared')) DEFAULT 'private',
  tags            text[] DEFAULT '{}',
  created_at      timestamptz DEFAULT now(),
  updated_at      timestamptz DEFAULT now()
);

RLS: anon SELECT only when access_class='shared'. Service-role full access. Single-user (Boas) authenticated access via Supabase Auth.

Themis-PM bridge

File backlog ({repo}/backlog/{area}--{slug}.md) is the authorship surface. The fleet_tasks table (Pantheon Supabase) is the dashboard / query surface. Themis (Metis-owned subsystem) mirrors files → table on schedule. One-way bridge — Themis reads files, writes table, never writes back.

Agents author via files. Hub reads via table. Cross-repo task views query the table. Marshal dispatch reads files (authority) but cross-checks table for recency.


7. Surfaces / Integration Points

Dashboard

React 19 + Vite SPA, served by Hub Express server. shadcn/ui + Tailwind CSS. TanStack Query + query key factory. 6 routes (Portfolio, Athena, Fleet, Dispatch, System/Pulse, Project Detail). Pantheon brand applied via pantheon.brand.json token bridge.

REST API

~70 endpoints on http://localhost:3847/api/. Bearer token auth for protected endpoints; localhost bypass for dev. v3 API parallel mount at /api/v3/* during PR-v3 cutover (2026-04-25):

MCP

Stdio transport. Context management (hub-set-context), telemetry (hub-task-start, hub-task-complete, hub-ping), repository management, planning sessions, pipeline operations, system diagnostics. Stateless per-request — no session state persisted.

This is how agents authenticate as themselves at session start. Boas's CLAUDE.md per-repo files reference hub-set-context + hub-ping + hub-task-start as session-start conventions.

Discord (OpenClaw)

Kronos and Hermes connected via OpenClaw sandboxes for Discord-side operations. Connection from Docker sandbox to Hub via host.docker.internal:3847.

Pipeline (Arsenal Dispatch)

Work items enter via REST or MCP, flow through stages with typed outputs + transition audit, dispatch to Arsenal's /execute endpoint when reaching execution stage. Arsenal HTTP server is Phase 65 pending — Pantheon's side of the loop is closed; Arsenal cannot yet receive dispatched work items.


8. Sequencing

Current wave: PM MVP (in flight, 2026-04-28 → )

Goal: project/task logging surface up and running with REAL data, fastest path. Operator mandate: "smallest viable, ship fastest."

Ground truth (verified 2026-04-30T13:00Z against remote master + Pantheon Supabase): - fleet_projects_registry exists, 26 rows (25 post-Ath2 + fleet-backup-redesign 2026-04-30) - fleet_tasks.project_id FK exists, 94.9% coverage (35 NULL of 683 rows). Decay from 95.5% is task accretion outpacing re-scan, not regression. - All 26 brief_markdown ≥ 300 chars (verified — distribution 301–961 chars, mean ~365) - Themis-PM file→table mirror works (pnpm scan in metis-themis/) - Hub frontend Portfolio + Project Detail render real backend (PR #19 + #23 merged 2026-04-25; PRD-A3 portfolio render fix shipped PR #30 2026-04-29) - Hub backend /api/fleet-tasks?project_id={UUID} LIVE (PR #29 merged 2026-04-29) - Project list/detail surface id: string UUID per card (PR #32 merged 2026-04-29) — required for Tasks tab to call useFleetTasks({project_id}) - MSW stripped from dev runtime (PR #28 merged 2026-04-29) - PR-v3-03 8-tab L3 + /review operator dashboard SHIPPED (PR #21 merged 2026-04-25) — 3 review queues live (sensitivity, curation, taxonomy_unknowns), 27 seeded curation rows - PR-v3-02a 3 LOW nits cleanup SHIPPED (PR #24, pantheon-007 resolved)

MVP task status (as of 2026-04-30T13:00Z):

ID Title Owner Status Evidence
PRD-M1 Themis handoff adapter project_id resolver + backfill Metis SHIPPED commit b79eafc 2026-04-29, coverage 32%→88.4%→95.5%→94.9%
PRD-Ath1 Athena brief_markdown augmentation to ≥300 chars Athena SHIPPED All 26 briefs verified ≥300 chars 2026-04-30
PRD-Ath2 Athena registry expansion Athena SHIPPED 19→25 rows 2026-04-29; +1 (fleet-backup-redesign) 2026-04-30 = 26
PRD-B1 /api/fleet-tasks?project_id= filter Pantheon SHIPPED PR #29 merged 2026-04-29
PRD-B2 Surface project.id UUID in /api/v3/projects responses Pantheon SHIPPED PR #32 merged 2026-04-29 — required to unblock A1 (gap missed in original PRD §1.3)
PRD-A2 MSW strip from dev runtime Apollo SHIPPED PR #28 merged 2026-04-29
PRD-A3 Fix portfolio renders 0 cards from real backend Apollo SHIPPED PR #30 merged 2026-04-29
PRD-A1 Apollo Tasks tab wired to fleet_tasks Apollo SHIPPED PR #31 merged 2026-04-30 (squash 146a9e6). Smoke verified end-to-end: /api/fleet-tasks?project_id={uuid} filter live, project.id UUID consumed by TasksTab container, sort respects spec across full live enum vocabulary. v3.0.2 patch normalized sort enums (STATUS_ORDER accepts complete\|completed\|done; PRIORITY_ORDER accepts lowercase + qualitative tags critical\|high\|medium → P0\|P1\|P2). Bundle 542 KB / hash ceaa1a6e. PM MVP wave-1 CLOSED.

Acceptance for PM MVP closure: - [x] /portfolio renders 26 real project cards (no MSW fallback) — PRD-A3 fix landed - [x] Click any card → /project/:slug Tasks tab populated with real fleet_tasks rows — PRD-A1 merged - [x] Each project's Tasks tab row count matches SELECT count(*) FROM fleet_tasks WHERE project_id = (SELECT id FROM fleet_projects_registry WHERE slug=$1) — verified post-merge against pantheon-hub (200-row cap, sort transitions match spec) - [x] All 26 brief_markdown ≥300 chars - [x] Zero MSW handlers active in dev runtime — PRD-A2 stripped - [ ] 3-surface deploy smoke green on hub launchd restart — verify on next restart (Wave-2) - [ ] fleet_tasks.project_id NULL count ≤ 12 — currently 35; rerun pnpm scan post-A1 (Wave-2)

PM MVP wave-1 CLOSED. All UI deliverables shipped; remaining acceptance items (deploy-smoke automation, NULL count drop) are Wave-2 ops.

Deferred (filed to backlog, NOT gating Wave-1)

Wave-2: Hub Functional (in flight, 2026-05-05 → )

Goal: Boas opens Hub and uses it end-to-end without crashes, dead-renders, or undisclosed-mock surprises. Stable URL + auth come last in the wave; structural correctness first.

Sequencing principle: structural truth before cosmetics. Each task either closes a regression, removes a silent-degrade, or wires a real-data surface. Order = dependency-respecting, not priority-ranked — every item is "required to call Wave-2 done."

Wave-2 ship list

ID Title Owner Status Evidence / Notes
PRD-W2-01 Portfolio → project-detail crash fix (regression) Apollo PR OPEN PR #36 boas-dev/infra-pantheon (commit f965f16). FE adapter adaptProjectDetailResponse + RouteErrorBoundary wrapping <Outlet />. Click-through verified across 3 projects post-fix.
PRD-W2-02 Backend /api/v3/projects/:slug shape extension Pantheon-ops DRAFT Handoff filed 2026-05-05_apollo-to-pantheon-ops_v3-projects-detail-shape-extension.md. Populate 5 missing product fields: assessment (Athena prose / agent_priorities), vision, current_milestone (FE contract {name, percent, gate, owner, eta}), next_action (top open directive), reflection.{decisions_delta, commits_delta, sessions_delta, milestones_delta}, counters.open_questions. Closes silent-null window opened by W2-01 adapter.
PRD-W2-03 athena-013 retirement Pantheon-ops DRAFT Ship or formally retire /api/v3/projects/:slug/strategic-counts + /supersession-chain. Currently 109 console 404s, boundary-trapped post-W2-01. Either implement and remove the noise, or document as deprecated and have FE stop calling.
PRD-W2-04 fleet_tasks.project_id NULL count ≤ 12 Metis (Themis-PM) OPEN MVP closure gate. Currently 35 NULL of 683. Run pnpm scan post-A1 then audit residual; promote remainder to internal-initiative or split out as untriaged.
PRD-W2-05 3-surface deploy smoke automation Pantheon OPEN Wire launchd post-restart hook validating: (a) /api/v3/projects 200 + non-empty, (b) frontend route bundle hash, (c) one project-detail click-through HTTP 200. Today manual — automate before W2-08 to catch shape regressions on every Hub restart.
PRD-W2-06 Replace mock data with "Not connected" placeholders Apollo OPEN Cross-Hub honesty pass. Specifically: Apollo Gallery (Dropbox mockups not wired), Apollo Brand (table needed), Plutus Budget/Optimization, Hades Findings/Guard Rails, Mnemosyne Knowledge. Eliminates Hub's last lie surfaces. Pulled from Wave-3 since structural correctness is Wave-2 scope.
PRD-W2-07 Per-project theme injection on /project/:slug Apollo OPEN Reads {slug}.brand.json per project. Lane C unblock progress: display-register-companion ratified mono-only 2026-05-05 (1 of 3 closed); per-agent palette + production variant remain Lane-C-internal. Pulled forward from Wave-5 since the Lane C work is already in apollo's backlog.
PRD-W2-08 Auth surface — single-user Supabase Auth Pantheon + Hades OPEN Magic-link or password. Required before private-content surfaces (strategy docs, financial views, security findings). Gates W2-09.
PRD-W2-09 Production URL — stable hostname Hades + Pantheon OPEN TBD: hub.pantheon.local? hub.boas.dev internal? Today localhost:3847 only. Closes "Boas can log in at a stable URL."

Wave-2 acceptance

Out of scope for Wave-2 (deferred to Wave-3+)

Wave 3: Constellation Ops Consoles

After PM MVP + Hub Functional. Per nav-restructure spec §CONSTELLATION:

Task Owner
Refactor 9 constellation pages to ops-console layout (header + stats strip + tab bar) Apollo
Standardize Activity tab — events filtered by agent_id Apollo + Pantheon
Per-agent domain tabs (Athena Assessments/Directives/Priorities, Atlas Argus/Skills/Fleet Tables, etc.) Apollo + Pantheon
Athena Priorities tab inline edit (POST /api/agents/:id/priorities) Pantheon
Replace mock data with "Not connected" placeholders where real data absent Apollo
Strategy Docs tab on project detail (per athena-012) Pantheon + Apollo + Athena

Wave 4: System Section

Task Owner
Rename System → Pulse route + sidebar Apollo
Move Dependencies into Proteus page (absorb DependencyPage into Proteus's tab) Apollo
Fleet page — machines + agents inventory with sparklines Apollo + Pantheon
Dispatch page — ask_human queue + active work items + dispatch sessions Apollo + Pantheon

Wave 5: Cosmetics Resume

After structural truth lands. Only then:

Long-horizon (post-MVP, separate roadmaps)


9. Acceptance — Long-Term

Pantheon Hub is "complete" when:


10. Out of Scope (current wave)

Item Why deferred
Themis scan daemon (launchd plist, 4×/day) Manual scan works; daemon is v1.1. Ops concern, not MVP-blocking.
fleet_tasks.project_id NOT NULL constraint Add post-MVP after PRD-M1 backfill held permanent.
Other 7 tabs on Project Detail (Decisions/Milestones/Sessions/Artifacts/Code/Issues/Overview-data) Tasks tab is the PM core. Other tabs render <NotConnected> until backing data exists; that's correct, no work needed for MVP.
~~/review operator inbox~~ SHIPPED PR #21 (PR-v3-03, 2026-04-25). 3 queues live: sensitivity, curation (27 seeded rows from mnemosyne adapter 2026-04-25), taxonomy_unknowns (derived from curation_queue.queue_reason='type_ambiguous').
Constellation ops consoles /{agent} × 9 Wave 3. Not PM core.
Athena sub-pages (/athena/assessments etc.) Governance layer above MVP. Wave 3+.
Harvester v1 (n8n + classifier + adapters) Different system (knowledge ingestion). Separate roadmap.
agent_priorities, fleet_portfolio_milestones extras, fleet_portfolio_dependencies, athena_assessments data tabs Tabs hidden until tables are populated. Post-MVP.
Mastra deliberation, sprint UI, dashboard variant decisions Not PM core. Post-MVP.
Naming collision (fleet_projects cornerstone vs fleet_projects_registry PM registry) Documented + flagged. Rename = post-MVP discussion.
Strategy docs surface (athena-012) Blocked on PM MVP closure + Hub functional auth.
Multi-user / per-project ACL Single-user Boas + agents only at v1.

11. Constraints (non-negotiable)

  1. Live data only. Memory feedback_no-mockups-live-only (2026-04-28). PRD-A2 strips MSW from dev runtime.
  2. Pantheon brand. JetBrains Mono + dark + #7CE4C9. Memory feedback_brand-ssot-cross-wire-3way. SSOT lives in constellation-apollo/projects/pantheon/, NOT pantheon/docs/.
  3. 3-surface deploy smoke. Backend curl + frontend HTML route + bundle hash. Memory feedback_deploy-smoke-must-include-frontend.
  4. PM discipline. Each PRD-NN task = one fleet_tasks row tied to pantheon-hub project_id. Memory feedback_pm-system-discipline.
  5. Single PR per task. No bundling. Memory feedback_clean-branch-scope-applies-during-cadence.
  6. No --no-verify. No new dependencies for MVP scope.
  7. Append-only data. No mutation of events, decisions, audit trails, chronicle entries.
  8. Cross-room dispatch coordinator-only. Memory feedback_cross-room-coordinator-only. Per-room workers stay in their rooms.
  9. Live data verification before claims. Memory feedback_athena-quality-bar-self-qa (2026-04-30) — Athena MUST inspect rendered artifacts before surfacing links.

12. Roles

Agent Role This Wave
Athena (CEO) Owns PRD, signs off scope, writes brief_markdown content, authors strategy docs PRD consolidation + Ath1 (shipped) + Ath2 (shipped)
Metis (PM owner) Owns Themis-PM, scan operations, project resolver M1 (shipped) + future v1.1 daemon
Pantheon (Hub backend) Owns Express routes + Supabase services B1 (shipped) + B2 (shipped)
Apollo (Hub frontend) Owns React dashboard + brand compliance A2 (shipped) + A3 (shipped) + A1 (DRAFT, last MVP task)
Hephaistos (review) PR review, scope-hygiene enforcement Reviews each PR open
Proteus (schema) Owns DDL, migrations, RLS Schema decisions: pantheon-005, pantheon-006, project_id NOT NULL post-backfill
Hades (security/auth) Vault, credentials, future Hub auth surface Auth wiring (next wave)
Atlas (fleet ops) Argus, skills, war room tooling Ops console wiring (Wave 3)

13. Open Decisions

These are tracked as athena/decisions backlog items, blocked on data signal or operator input:


14. References

Authoritative source documents (current PRD inherits from these)

Adjacent / supporting

Out of scope

Operational SSOTs (non-PRD, but consulted for accuracy)


15. Change Log

Date Version Change
2026-05-05 3.1 Wave-2 sequenced. §8 "Next wave" expanded into 9-task ship list (PRD-W2-01..09) with explicit acceptance gates. PRD-W2-01 (portfolio→detail crash fix) PR OPEN as boas-dev/infra-pantheon#36 commit f965f16 — FE adapter + RouteErrorBoundary wrapping <Outlet />. Root cause: backend {project, hero, tabs} vs FE-expected {project, assessment, vision, current_milestone, next_action, reflection, counters} shape mismatch (MSW masked, PRD-A2 strip exposed). PRD-W2-02 backend extension handoff filed apollo→pantheon-ops; athena→atlas forward filed for wr-atlas dispatch. PRD-W2-03 retires athena-013 (109 silent 404s, now boundary-trapped). PRD-W2-04 + W2-05 promoted from PM-MVP-acceptance-gates-not-yet-met. PRD-W2-06 ("Not connected" placeholders) + W2-07 (per-project theme) pulled forward from Wave-3/5. Display-register-companion decision closed mono-only same session (apollo 9069edc, anchors §10 + 2026-04-22 devlog option-1 recommendation).
2026-04-30 3.0.2 PM MVP wave-1 CLOSED. PRD-A1 merged via PR #31 (squash 146a9e6). Sort enum normalization patched in useV3Data.ts:258-279STATUS_ORDER adds complete: 3; PRIORITY_ORDER rewritten lowercase with qualitative-tag aliases (critical/p0 → 0, high/p1 → 1, medium/p2 → 2, low/p3 → 3); statusKey()/priorityKey() helpers .toLowerCase() inputs. Live vocabulary documented inline. Filed athena-013 (backend stub 404s) + themis enum migration as Wave-2 follow-ups.
2026-04-30 3.0.1 Drift correction after self-QA. Real state of MVP closure: 7/8 PRD-NN tasks shipped; only PRD-A1 in DRAFT (PR #31). Added PRD-A3 + PRD-B2 (gap discoveries 2026-04-29). project_type enum corrected (4 values not 5). Registry rows 26 (was 25). fleet_tasks coverage 94.9% (was 95.5%). PR-v3-03 8-tab L3 + /review operator dashboard SHIPPED (was listed as out-of-scope). pantheon-007 nits cleanup RESOLVED. Local repo flagged 6 commits behind remote master.
2026-04-30 3.0 Consolidated from 8 source documents. Single canonical PRD. Sources archived.
2026-04-29 2.3 PM MVP scope cut from 23 tasks to 5. Live verification invalidated v2.1 + v2.2 framings.
2026-04-22 2.x v2 session plan: 5 waves, project data model, cross-room coordination, Lane B endpoints shipped (8).
2026-04-17 nav-spec Navigation + per-page architecture authored.
2026-03-26 bible-1 DASHBOARD-BIBLE created from session JSONL mining. AD-01..AD-11.
2026-03-02 1.0 Original PRD — pre-rebuild, predates constellation. v17.0 "The Bridge".

End of PRD. This document is the single source of truth for Pantheon Hub product requirements. Implementation work references this document for scope, sequencing, and acceptance.