feat(web): symphony kanban page with workflow-run drill-through#5
feat(web): symphony kanban page with workflow-run drill-through#5
Conversation
Adds /symphony route to @archon/web that renders the Symphony orchestrator's running, retrying, and historical dispatches as a kanban board on top of Phase 3's /api/symphony/* surface. Cards group by lifecycle (default), tracker state, or repository, poll every 5s via TanStack Query, and deep-link each workflow_run_id into Archon's existing /workflows/runs/:runId page. Includes typed client + transform utilities (cards keyed by dispatch_key, with live-state-wins dedup against stale terminal dispatch rows), bun-test coverage for transform/group/client, and Inbox icon nav entry between Workflows and Settings. Types are sourced from packages/web/src/lib/api.generated.d.ts after regenerating against a server with ~/.archon/symphony.yaml present. Phase 4 of the archon-symphony consolidation (docs/symphoney-legacy/plans/2026-04-30-archon-symphony-consolidation.md). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Warning Rate limit exceeded
To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (16)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Review rate limit: 0/1 reviews remaining, refill in 36 minutes and 8 seconds.Comment |
Summary
/api/symphony/*into the Archon server, but operators had no UI — managing the autonomous tracker dispatcher meantcurl-ing JSON.symphoney-codex/web/Next.js workspace and unblocks Phase 5 retirement of that repo./symphonyroute to@archon/webthat renders running, retrying, and historical dispatches as a kanban with lifecycle / tracker-state / repository group-by, polls every 5s via TanStack Query, and deep-links each card to Archon's existing/workflows/runs/:runIdpage for execution detail.POST /api/symphony/issuesexists); no per-issue detail sheet; no SSE streaming (5s polling is the v1 contract); no idle column (no idle-issue listing endpoint); no React Testing Library (tests stay at the lib boundary).UX Journey
Before
After
Architecture Diagram
Before
After
Connection inventory (list every module-to-module edge, mark changes):
@archon/webSymphonyPage/api/symphony/*<Link>/workflows/runs/:runId/symphonyroute@tanstack/react-queryLabel Snapshot
risk: lowsize: Mwebweb:symphonyTest plan
bun --filter @archon/web test— 25 new tests acrosstransform,group,client(live state vs. stale terminal dispatch dedup, lifecycle column ordering, dispatch_key serialisation, error path)bun run type-check— green across all packagesbun run lint --max-warnings 0— greenbun run format:check— green/symphonyrenders, the live APP-293 completed dispatch appears with correctView Run → /workflows/runs/ba375719…deep link, group toggle (Lifecycle / Tracker state / Repository) rebuckets without errors, no console errorsbun --filter @archon/web generate:typesagainst a server with~/.archon/symphony.yamlmounted;SymphonyStateResponse | SymphonyDispatchRow | …now inapi.generated.d.tsKnown pre-existing failure: 3
@archon/workflowsDAG loader tests fail ondev(unrelated to this PR; reproduces on a clean stash). Tracked in repo memory.🤖 Generated with Claude Code