Spec the v0 agency dashboard surface (Phase 0 dogfood — Dossier's own .claude/agents team on Dossier's own OKF; daily-standup / approve-ship loop)
task-agency-dashboard-v0-spec
Spec the v0 agency dashboard surface (Phase 0 dogfood)
One loop, three faces — ship an agentic Digital Experience Agency "in a box" (the Agency) plus an adoption-ladder readout product (the Ladder) over the OKF Company Brain, dogfood-first sequenced the agentic agency dogfood-first: Phase 0 = run Dossier's own .claude/agents team on Dossier's own OKF, through a daily-standup / approve-ship loop, before any client rollout — and that Phase 0 dogfood is the named review gate that would promote DEC-0052 from asserted to verified. This task is the Product Owner v0 spec for the dashboard surface that makes Phase 0 real.
The work (v0 spec, not the build)
- The daily report — "what it did, and what it wants to do next" (the Ploy / Factory daily-report + approve / ship / watch UX, human-governed), reading the live board (Agentic "sprint board" architecture — a git-resident OKF task board worked by bounded, hook-governed Agent SDK loops) for dispatched / in-flight /
reviewwork and surfacing each unit's diff for approval. - The governance affordances — approve / ship / watch, plus the per-team / per-action autonomy dial (deterministic → self-guided).
- The compounding return, made visible — approved work →
reconcile()(The compounding merge — the per-tenant learning loop accumulates by id + confidence instead of overwriting (okf reconcile() + opt-in reconcile in extraction/runtime)) → a git diff in the org's own history (The compounding merge — the per-tenant learning loop accumulates by id + confidence instead of overwriting (okf reconcile() + opt-in reconcile in extraction/runtime) / Adopt OKF as Dossier's canonical knowledge format). - Invariant — read-only-then-governed: the dashboard reads the board/OKF and gates every write through human approval; never an un-approved autonomous write (honors Agentic "sprint board" architecture — a git-resident OKF task board worked by bounded, hook-governed Agent SDK loops's hook-governed, human-in-the-loop discipline).
State the Phase-0 done-definition explicitly so it can be checked against DEC-0052's review gate: one real unit dispatched → executed → human-approved → compounded back via reconcile into git.
Why a task, not a fix-in-place
Owning what / for-whom / why / when + acceptance + success metrics for a new product surface is the Product Owner's job, not a hygiene fix. confidence: inferred (agent-filed from DEC-0052's named follow-up).
Coordinate, don't duplicate
Ordering-hint dependency on Author the agentic-agency runtime topology DEC + spec (OKF→persona/runbook/team; coordinator/dispatch; per-tenant fleet isolation; Atrium+board+reconcile+MCP composition) (the dashboard surfaces the runtime's dispatch/governance, so the topology should be specified alongside). Board globbed before filing: Render the board as a derived `/board` surface in @dossier/site is done (the read-only production /board) and Render the client's REAL board inline on the dev-only preview (the board sibling of DEC-0047's inline graph) is the dev-only inline preview board — neither is the agency dashboard with the approve/ship governance loop.
v0 BUILT (2026-06-20, forward-deployed-engineer) — status: review for product-owner acceptance
The spec asked for the surface; the operator chose working v0 code, and it is built + proven. The v0 agency governance dashboard ships as a non-prerendered (operator) SvelteKit route group (/operator) — see Build DEC-0064 Option D into running code — the v0 agency governance dashboard is a non-prerendered `(operator)` route group that reuses dispose.ts, gated behind DOSSIER_OPERATOR, which implements Governed disposition lives with the operator control plane (CLI now, local dashboard optional, deployed siloed service deferred) — the public `/board` deploy stays read-only and holds no mutation authority's Option D. It satisfies the spec's invariants:
- Read the board for
reviewwork + each unit's diff: the dashboard reads the live tenant board via the runtimelistReviewQueue, rendering eachreviewtask with the context to judge it (what the agent did = the task body narrative; what it proposes = the drain-emittedproposed_atomsdiff; provenance = owner/assignee/source/confidence/sovereign-file). - Approve / ship / watch, human-governed: real approve/reject affordances drive the SAME
approveTask/rejectTaskthe CLI uses (SSOT, no fork). Approve = review→done+ compound into the tenant's git history; reject = review→backlogwith a recorded reason. - Read-only-then-governed invariant: the read is always allowed; mutation is gated behind
DOSSIER_OPERATORso the public read-only/boardnever gains mutation authority — never an un-approved autonomous write (Inv 3 holds, the human disposes). - Compounding return made visible: an approve produces a real git commit in the org's own history (
dossier(board): approve … → done — compounded by human), proven live against the RBA dogfood tenant.
NOT in v0 (carried forward): the per-team/per-action autonomy dial (deterministic→self-guided) and the daily-report digest ("what it did, and what it wants to do next" as a narrative) — v0 is the approve/ship/watch queue; the dial + digest are the product-owner's next slice. The deployed siloed control-plane service stays deferred behind Governed disposition lives with the operator control plane (CLI now, local dashboard optional, deployed siloed service deferred) — the public `/board` deploy stays read-only and holds no mutation authority's trigger.
WATCH face BUILT (2026-06-20, forward-deployed-engineer) — daily-report digest slice landed
The carried-forward watch / daily-report digest is now built as a read-only (operator)/activity ledger — see The WATCH face — a read-only compounding-return ledger over the board snapshot + the tenant git trail. It narrates the loop's compounding return over time from two REAL sources joined by one new runtime read (readActivityLedger, the SSOT — the app never re-derives): the board snapshot (status + approved-by/claimed_by provenance) + the tenant's own git log (dossier(board): commits). The digest narrative ("since task-data-estate-assessment-northwind → done (commit fb5cf00, compounded by dakota), and the watch surface reflected it (2 compounded · 1 approve event · the green HUMAN trail row), then the tenant was restored to baseline. STILL carried forward: the per-team/per-action autonomy dial (explicitly a LATER slice, DEC-0052) — the watch surface is the readout, not the control.