T-0DLC-sdf-control-plane-read-panels
Status: closed/done · Impact: high · Complexity: large
Grow SDF from “active work” to a control-plane view: authoritative lease state, the orchestrator’s tick history, and a PR triage board — the operator’s answers to “who owns what right now”, “what did the loop do”, and “which PRs need me”. Read-only.
| Location | Role today |
|---|---|
apps/sdf/src-tauri/src/ | ontogen backend from T-UBPG; no substrate readers |
.sdlc/orchestrator-log.md | one line per orchestrate tick (gitignored runtime state) |
.sdlc/pr-cursors/ | per-PR review-comment cursors |
apps/sdlc/lib/services/dashboard/server.ts | /api/state already summarizes leases/PRs (cache view) |
Lease truth lives in git refs refs/sdlc/tasks/<id> (lease.json blobs);
task frontmatter is a derived cache (D-S30G-task-state-plane-split).
Proposed
Section titled “Proposed”Three SDF panels backed by SDF’s own Rust readers (data-at-rest and
sanctioned CLIs only, per S-0008): a lease panel reading
git for-each-ref refs/sdlc/tasks + git show <ref>:lease.json with
expiry_state semantics (600s expiring window) and phase badges; an
orchestrator feed tailing .sdlc/orchestrator-log.md; a PR board with
columns from the fixed verdict enum (CLEAN / NEEDS-RESPONSE / CONFLICTS /
CI-FAILED / MERGED / CLOSED / ERROR) plus “new comments since cursor”
markers. All exposed through the generated Transport (HTTP + IPC + MCP).
Approach
Section titled “Approach”- Rust readers: lease ref walker, orchestrator-log tail (bounded,
batched — zoo’s event-feed pattern), pr-cursor reader; PR verdicts via
sdlc pr classify-compatible data orgh(offline-degrading like--no-network). - Model as ontogen entities/ops so transports + MCP tools come generated.
- Panels: lease table (authoritative-vs-frontmatter mismatch flagged), tick feed with virtual scroll, verdict board ordered MERGED→CLOSED→CONFLICTS→CI-FAILED→NEEDS-RESPONSE→CLEAN.
- Explicit offline rendering (network_disabled treatment carried over).
Files to touch
Section titled “Files to touch”| Location | Kind | Change |
|---|---|---|
apps/sdf/src-tauri/src/ | modify | substrate readers + schema entities |
apps/sdf/src-nuxt/app/ | modify | three panels + routes |
Acceptance criteria
Section titled “Acceptance criteria”- AC-1: lease panel shows live
refs/sdlc/tasks/*state with expiry_state and phase; a stale-frontmatter mismatch renders a warning. - AC-2: orchestrator feed tails new ticks without restart.
- AC-3: PR board columns use the verdict enum verbatim and mark PRs with new review comments since their cursor.
- AC-4: same panels function in browser mode and desktop; MCP exposes the three readers as tools.
Out of scope
Section titled “Out of scope”- Any mutations (
T-DBAL). - Engine event-stream consumption (post-Engine-v0).
Dependencies
Section titled “Dependencies”T-UBPG(hard): generated transport seam.
Discovery context
Section titled “Discovery context”- Phase 5 of D-0018-sdf-control-plane-app; lease-authority and verdict enum facts from the architecture map — D-K9PX, since absorbed into D-VSLI-distributed-work-runner-architecture — and the 2026-07-16 research pass.
Depends on
Section titled “Depends on”T-UBPG