Roadmap

A rolling engineering roadmap in thematic workstreams across Now / Next / Later. Priorities, not dates.

The GitHub milestones mirror the Now tier and are the source of truth for what's actively in flight; everything below Now is directional and will churn. Canonical copy lives in ROADMAP.md.

Now

The active milestones — what we're building next.

Failure UX & recovery — epic #493

Every failure leads with a classified cause and a path forward, not a raw wrapper.

Engine correctness

The engine must route and terminate exactly as authored — no silent mis-routes, no phantom "Done" on an unresolved gate.

Epic #308 closeout

Harden build_product against the structural and process gaps surfaced by the case-study runs.

SWE-bench first score

Get a real, published benchmark number.

Recently shipped

Workstreams that landed across v0.46.0 → v0.54.0. See the changelog for detail.

Transport boundary v0.46.0

The core is now fully UI-agnostic: TUI, Slack (trackerbot), and a terminal REPL (trackerchat) are first-class transport peers on one tracker.ConfigEngine path, with a transport/conformance suite a new transport runs to prove correctness. Plus mid-run steering (Config.SteeringChan) and per-run cost estimate. Contract: Transports.

Embedding surface completeness v0.47.0

The event surface an out-of-process control plane drives Tracker through is complete: NDJSON StreamEvent payload parity with activity.jsonl and a lossless ActivityEntry reader, gate lifecycle events (#509) and turn_metrics attribution (#508), paused_billing as a first-class resumable RunManager.RunPaused state, submit-time variable-availability validation (#505), and a bounded/async event-handler seam.

Policy, hygiene & coherence v0.48.0

A fail-closed pre-execution tool-call guardrail hook (#506), an injectable diagnostic sink (#449, tracker.SetDiagnosticLogger), and gate identity on the interviewer callback (GateAware).

Coverage & API stability v0.49.0

Golden-trace fixtures pin the five previously-unverified handler/terminal contracts, and docs/api-stability.md plus an exported-surface golden snapshot (#462) guard the root tracker package against accidental signature change.

Run capture & cost correctness v0.50.0 – v0.52.0

A finished run is reconstructable from the executed spec + verbatim provider request bodies + per-call/turn/session identity + a run.json manifest (#519; tracker run-json backfills archived runs), with a batch of cost-accuracy fixes (provider-aware cache-write pricing, per-(provider,model) TokenTracker, failover pricing) and capture-file security hardening (0600 + O_NOFOLLOW, .tracker/ excluded from bundles). A library caller gets the same capture from the Config.Capture seam (#530). v0.52.0 shipped the unpriced/--max-cost signal (#518). The published-price provenance + drift guard that briefly lived in tracker has since moved to dippin as part of the pricing retirement below (#558) — tracker no longer maintains a price table.

Security-boundary docs & test-fidelity v0.53.0 – v0.54.0

The writable_paths jail gained its reference docs — Linux security primitives (#284), a 9-class reviewer audit checklist (#285), and the “freeze and prove” security-PR process pattern (#286), plus a Landlock ABI-v3 kernel-version correction. On the engine side, tracker verify-tests --race adds a Go race-detector fidelity gate (#489, partial; fuzzy heuristics split to #532), the no-progress detector now keys on workspace edits (#531), and the parallel fan-in join hint moved onto the typed Outcome.SuggestedNextNodes channel (#451).

Declared inputs, pricing source-of-truth & reliability hardening v0.55.0 – v0.60.1

Workflows can now declare a typed inputs signature (a dippin inputs block, dippin ≥ v0.51): the library introspects it (DescribeInputs), validates values with structured per-input errors (ValidateInputs), and binds them at run start (Config.Inputs) — a missing required input fails closed before any node runs instead of the agent inventing work (#553). File and secret inputs are staged to a 0600 file under .tracker/inputs/ and ${inputs.<name>} resolves to the path only, so a secret never enters a prompt, the provider wire, the trace, or the checkpoint (#555); build_product takes its spec this way, so a host can drive the flagship build headlessly. LLM prices are now sourced from dippin-lang/pricing — tracker retired its own price table (#558). Plus a batch of reliability fixes clients hit hardest: RunManager.Cancel unblocks a parked webhook gate and workdir isolation no longer collides on sanitized keys (#551/#552), server Retry-After is honored on 429 retries (#549), a pipe-to-shell denylist bypass was closed (#554), and the checkpoint temp write is O_NOFOLLOW-hardened (#559, partial).

Next

Directional. Expected to promote to Now as the milestones above close.

Parallel-first resilience

Cost & efficiency

First-run & product polish

Load-bearing refactors

Later

Backlog. Real, but not scheduled.

Sandbox breadth

Security documentation & process

Structural & cosmetic refactors

Product & positioning

The 1.0 question