Skip to content

Strategy Goals

Oleg Miagkov edited this page Jul 13, 2026 · 2 revisions

Strategic goals (P1–P5)

Source: docs/strategy/roadmap.md. Delivered in waves. ← Overview

Legend: ✅ done · 🚧 in progress · ⬜ planned · 🟢 partial

Goal Value Wave Status
P1 Trust Layer — our moat highest 1
P3 Multi-provider autonomy high 1
P5 Cost transparency high 1
P2 GitHub App (issue → autonomous PR) high (distribution) 2
P4 Cloud / teams high (revenue) 3 🚧

✅ Wave 1 — closed

PR #361 + a series of follow-ups. Every task is independently shippable; all carry tests.

P1 — Trust Layer

Every build emits a verification-report.json and a UI-visible report.

  • verification-report.json contract + written on every build.
  • ✅ Out-of-scope edit detection (qa/scope_check.py) → out_of_scope_edits.
  • confidence + uncertainty via the SDK and runtime paths.
  • ✅ QA trust-report screen in the task overview (IPC + VerificationReportPanel, i18n en/fr).
  • The report carries: verdict · tests · diff · out-of-scope · confidence · uncertainty.

P3 — Multi-provider autonomy

A single AUTO_CODE_AUTONOMY toggle (off/claude/safe/bold) governs all agents.

  • ✅ The coder respects the autonomy level.
  • ✅ Planner gate for non-Claude providers (#392).
  • ✅ Runtime factory logs the autonomy level per session (#404).
  • ✅ Autonomy toggle in settings UI → injects env into the build.
  • ✅ Docs lead with AUTO_CODE_AUTONOMY; ADR-006 → Accepted.

Deeper non-Claude provider parity is a separate roadmap: Non-Claude autonomy.

P5 — Cost transparency

See what a build cost (by phase/role); per-spec budget cap; cheap-model routing.

  • ✅ Model/provider per phase in token_stats.json.
  • ✅ Cost aggregation wired into stats (#389).
  • ✅ "Cost by Phase" breakdown in the live Model Usage dashboard (#407).
  • ✅ Budget guard AUTO_CODE_COST_LIMIT (USD) — stop/warn (#406).
  • ✅ Route trivial subtasks to Haiku by default (#408).

⬜ Wave 2 — P2 GitHub App (not started)

Assign an issue to Auto Code → it runs spec→plan→code→QA and opens a PR with the trust report (P1) attached.

Reusable (~75%): GitHub client, branch/PR creation, full build, CI+JSON, webhook scaffold.

Remaining:

  • ⬜ GitHub App auth: installation tokens + webhook signature verification (the only genuinely missing primitive).
  • issues.assigned webhook handler.
  • ⬜ Issue → spec directory.
  • ⬜ Build orchestration issue→branch→build→PR (reuse).
  • ⬜ PR report comment (depends on P1) + status check.

🚀 Start with: GitHub App auth + issues.assigned handler.


🚧 Wave 3 — P4 Cloud / teams

Browser-based multi-user access with per-workspace isolation, roles (owner/editor/viewer), run history, and team workflows. "Cloud" = a self-hosted multi-user server (data stays in the perimeter), not a public SaaS. One codebase, two modes (single/team) via CLOUD_MODE.

Present: FastAPI scaffold (auth/JWT/bcrypt, agent_runner, websocket, ORM, migrations, web-frontend). Missing: multi-tenancy, per-user isolation, run persistence, OAuth repositories.

UI decision: the cloud is built on a new shared libs/ui package (.lazyweb design), not the old apps/web-frontend.

Track C — cloud backend (data): ⬜ not started

  • ⬜ C1 Workspace + roles + require_workspace_access (migrations 003–004). Additive, unblocks the rest.
  • ⬜ C2 Per-workspace execution isolation.
  • ⬜ C3 Run persistence (AgentExecution).
  • ⬜ C4 Specs: FS as source of truth + ORM cache/audit.
  • ⬜ C5 Realtime / PTY stream to the browser.
  • ⬜ C6 OAuth repositories.
  • ⬜ C7 Team workflows (invites/members/shared specs).

Track D — libs/ui design system (desktop + web): 🚧 underway

  • 🟢 U0 foundation: tokens, ThemeProvider, AppShell, primitives, Storybook 10 (#411, #413).
  • 🟢 U2 canonical screens: TaskDetail via IPC, card meta row (#396, #403).
  • 🟢 U3 chrome: toolbar — search/filters/view switch (#405).
  • 🟢 U4 states: skeleton + empty state (#410).
  • ⬜ U5 remaining sidebar views · U6 new views (terminals, agent-inspector, insights, roadmap, sessions) · U7 cleanup of the old Sidebar.

Order: C and D run in parallel; U0 depends on nothing — start there. Keep the old apps/web-frontend until fully replaced.