Submatter/.convoys/polish-dag-tiers-cost/brief-4-preflight.md
Randall Stillwell e3af2c33e6 feat(polish): cost caps + DAG + tiers + preflight + checks panel
- Cost caps: budget_caps table, MTD spend ledger, tRPC budgets router, orchestrator pause on cap
- DAG viz: convoy-dag.tsx SVG for brief dependencies in Mission Control
- Automation tiers: manual|assist|auto per convoy, orchestrator respects manual
- Preflight: connected-repos preflight endpoint
- Checks panel: forge checks stub in detail panel
- Budget caps schema + tRPC router + Settings UI stub

Convoy: .convoys/polish-dag-tiers-cost

Co-authored-by: orchestrator
2026-08-25 20:33:10 -05:00

1.2 KiB

brief convoy role title status priority slice_dependencies recommended_model model_tier
4 polish-dag-tiers-cost role-implementer Repo preflight check before clone ready P2
qwen-coder local

Brief 4 — Task-repo-setup-preflight (Epic 3)

Goal

POST /api/connected-repos/preflight checks git ls-remote + worktree writability before clone, UI shows result — Autensa benchmark row repo setup preflight.

Files

  • apps/web/server/routers/connected-repos.ts — add preflight procedure input:{url} → git ls-remote url (timeout 5s) + fs.access(WORKER_WORKTREE_BASE, W_OK), returns {ok, reason}. Reuse forge adapters.
  • apps/web/app/(app)/[workspaceSlug]/settings/repos/page.tsx — call preflight on paste, show green/red before create.

Acceptance

  • Invalid URL https://nope.invalid/repo.git → ok:false reason: ls-remote failed; valid https://github.com/octocat/Hello-World.git → ok:true.
  • pnpm lint && pnpm type-check pass.

Prompt

You are role-implementer brief 4. Read plans/Plan-automation-foundation/Epic-connected-repos/Task-repo-setup-preflight.md, apps/web/server/routers/connected-repos.ts, apps/worker/src/git/worktree.ts. Keep timeout small, no creds leak.

Depends

None.