Skip to content

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.

LocationRole today
apps/sdf/src-tauri/src/ontogen backend from T-UBPG; no substrate readers
.sdlc/orchestrator-log.mdone 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).

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).

  1. 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 or gh (offline-degrading like --no-network).
  2. Model as ontogen entities/ops so transports + MCP tools come generated.
  3. Panels: lease table (authoritative-vs-frontmatter mismatch flagged), tick feed with virtual scroll, verdict board ordered MERGED→CLOSED→CONFLICTS→CI-FAILED→NEEDS-RESPONSE→CLEAN.
  4. Explicit offline rendering (network_disabled treatment carried over).
LocationKindChange
apps/sdf/src-tauri/src/modifysubstrate readers + schema entities
apps/sdf/src-nuxt/app/modifythree panels + routes
  • 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.
  • Any mutations (T-DBAL).
  • Engine event-stream consumption (post-Engine-v0).
  • T-UBPG (hard): generated transport seam.

T-UBPG


← Back to Tasks