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.
- #487 — shipped: billing/quota exhaustion is a recoverable
paused_billingterminal (checkpoint + preserved WIP +tracker -rresume), not a fatal abort. - #492 — shipped: failures lead with a classified cause + remediation via
tracker.ClassifyFailure. - #489 — partial: verify-milestone test-fidelity. Concrete parts shipped — duplicate test-body detection (
tracker verify-tests) and ago test -racegate (--race, v0.54.0); the fuzzy fidelity heuristics are split to design-first #532. - Still open: #486 (provider/model failover) and the #488 preserve-by-default refinement.
Engine correctness
The engine must route and terminate exactly as authored — no silent mis-routes, no phantom "Done" on an unresolved gate.
- #348 — shipped: goal-gate retry now re-enters the gate node so a remediated tree is re-judged, and a human "accept" marks the gate
validation_overriddenrather than ending in a silent success. No known routing defects remain open.
Epic #308 closeout
Harden build_product against the structural and process gaps surfaced by the case-study runs.
- #308 — the epic: structural & process gaps beyond #233.
- #304 — shipped: budget-by-cost ceiling + a no-progress detector, with per-node turn count demoted to a backstop. Follow-up #531 (v0.53.0) refined the detector to key on workspace edits rather than raw tool-call activity, catching a tight-looping agent the old heuristic missed.
- #307 — document
build_productvssuperspec, backport the spec-coherence preflight, resolve theexamples/vsworkflows/duplication.
SWE-bench first score
Get a real, published benchmark number.
- #465 — first scored SWE-bench Verified run: empty
model_patchsmoke debug → full Verified run → publish the score.
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.Config → Engine 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
- #420 — branch-scoped retry, context, and fix-attempt counters.
- #427 — sub-node turn checkpointing for mid-node resume.
Cost & efficiency
- #353 — review fan-out cost asymmetry: one reviewer burned 32% of a run duplicating a 42-second finding.
First-run & product polish
- #456 — first run fails:
build_producthard-exits withoutSPEC.md; ship a graceful path. - #457 — README information architecture: release-note walls before examples.
- #458 — show the TUI: screenshot / GIF in the README and homepage hero.
- #459 — positioning: lead with the trust story (budget caps, tamper-evident audit log).
Load-bearing refactors
- #393 — claude-code / ACP parsers bypass typed
AgentNodeConfigaccessors. - #449 — route the remaining raw
log.Printf/fmt.Printfdiagnostics through a real logger (the embeddable library packages already route throughSetDiagnosticLoggeras of v0.48.0). - #396, #450, #451 — shipped with the transport-boundary workstream (config-struct threading, public-API split).
Later
Backlog. Real, but not scheduled.
Sandbox breadth
- #279 — rescope
overrideAlreadyRecordedto checkpoint generation. - #280 — file-scoped Bash enforcement for
writable_paths. - #281 — per-OS enforcement on macOS (Sandbox) / FreeBSD (Capsicum).
Security documentation & process
- #284 — Linux security primitives reference doc.
- #285 — 9-class audit checklist for
writable_pathschanges. - #286 — "freeze and prove" pattern for security PRs.
Structural & cosmetic refactors
- #395 — collapse pervasive near-identical duplication (engine emits, llm adapters).
- #398 — extract inline
prompt:/command:bodies into testable sidecar files. - #452 —
write_enriched_sprint.go(1,250 lines) is a domain workflow embedded inagent/. - #453 — split the 1,687-line
tracker_doctor.gointo unit-testable checks. - #454 — group handler-specific
Outcomefields into sub-structs. - #455 — repo hygiene sweep.
Product & positioning
- #460 — naming & discoverability: "tracker" is ungoogleable.
- #461 — Dippin adoption path: editor support, pipeline gallery.
- #463 — run-flag surface (~36 flags) needs presets / progressive disclosure.
- #464 —
tracker-swebench+tracker-conformancein-repo read as research clutter.
The 1.0 question
- #462 — API stability policy shipped (
docs/api-stability.md+ exported-surface golden snapshot). Remaining for v1.0: the actual no-breaking-changes commitment, benchmark cadence, and extending the surface snapshot to the supported sub-package types.