--- brief: 2 convoy: polish-dag-tiers-cost role: role-implementer title: Convoy DAG visualization for brief dependencies status: ready priority: P2 slice_dependencies: [] recommended_model: qwen-coder model_tier: local --- # Brief 2 — `Task-convoy-dag-visualization` (Epic 5) ## Goal Small DAG for `ready/in_progress` brief `sliceDependencies` in Mission control detail — Autensa benchmark row `convoy DAG visualization`. ## Files - `apps/web/components/mission-control/convoy-dag.tsx` NEW — SVG DAG (nodes = briefNumber, edges = sliceDependencies), uses `convoyBriefs` from `apps/web/server/lib/convoy/convoy-service.ts` `getConvoyBriefs`, highlights `completedBriefIds` green, `eligible` blue. - `apps/web/app/(app)/[workspaceSlug]/mission-control/page.tsx:12` — embed `ConvoyDag` in detail panel when `briefs.length >1`. - No DB migration. ## Acceptance - DAG renders for 3 briefs where `brief 2 depends [1]`, `brief 3 depends [2]` — edges drawn, no overlap. - `pnpm lint && pnpm type-check` pass. ## Prompt You are `role-implementer` brief 2. Read `plans/Plan-automation-foundation/Epic-mission-control-gates-ui/Task-convoy-dag-visualization.md`, `packages/shared/src/orchestrator/convoy-driver.ts`, `apps/web/components/mission-control/convoy-detail-panel.tsx`. Keep SVG, no external lib. ## Depends None.