Skip to content

v0.3.0 — Production Readiness

Choose a tag to compare

@Zedmor Zedmor released this 21 Mar 23:49
· 1275 commits to main since this release

v0.3.0 — Production Readiness

162 commits across 6 phases. From a working prototype to a system that runs multi-hour autonomous sessions with dispatch safety, self-managing pipelines, and error resilience. 962 tests (up from 338 in v0.2.0).


Workflow Control Plane

Complete rework from message-inferred coordination to explicit workflow state. 12 new modules, 17 tasks, validated across solo/pair/manager-led/multi-manager topologies.

  • Capability model — topology-independent planner/dispatcher/executor/reviewer/orchestrator roles
  • Workflow state model — task lifecycle states, ownership types, dependency semantics, runnable/blocked criteria
  • Orchestrator runtime — visible tmux pane for workflow decisions, orchestrated + non-orchestrated modes
  • CLI/API control surface — batty task create/update/assign/review/merge/archive/rework commands
  • Runnable-work resolver — compute runnable/blocked/review tasks from board state
  • Review and merge state machine — explicit review disposition driving task transitions
  • Structured completion packets — standardized engineer output with branch/commit/test/artifact evidence
  • Dependency-aware nudges — state-based interventions targeting the correct role
  • Workflow observability metrics — runnable count, blocked count, review age, idle-with-runnable signals
  • Config-driven workflow policies — WIP limits, escalation thresholds, intervention toggles
  • Cross-topology validation — validated across solo, pair, manager-led, multi-manager, renamed-role topologies
  • Rollout modes — Legacy (default), Hybrid, WorkflowFirst with backward-compatible migration

Intelligence Layer

Self-aware team operations with periodic reporting, post-run analysis, failure detection, and reusable configurations.

  • Periodic standups — configurable interval, board-aware content (assigned tasks, blocked items, review queue age), delivery via Telegram or file
  • Run retrospectives — event log analyzer computes per-task cycle time, failure/retry counts, escalation frequency; batty retro CLI command; auto-generates when all board tasks complete
  • Failure pattern detection — rolling window of failure events, repeated pattern detection (same engineer, same file, same error class), configurable threshold notifications
  • Team templates — batty export-template saves team config as reusable template, batty init --from bootstraps from saved templates

Operational Hardening

Targeted reliability fixes from dogfooding observations.

  • batty doctor — diagnostics command with worktree validation, branch consistency, board-git cross-reference, --fix for safe automated cleanup
  • Daemon log rotation — automatic rotation and size management for daemon and event logs
  • Resume decision logging — structured logs for stop/start resume decisions
  • Prompt template refresh — battle-tested prompt updates for all roles
  • Pipeline starvation detection — alert when idle engineers exceed available work
  • Test deflaking — stabilized timing-sensitive tests

Hardened Runtime

Decomposed daemon.rs from 9,249 lines into dedicated modules. 62 tasks shipped.

  • Module decomposition — merge, status, interventions, dispatch, delivery, launcher, telemetry, standup, retrospective, failure tracker, telegram bridge all extracted to dedicated modules
  • Typed command layers — GitCmd and BoardCmd wrappers replacing raw shell-outs
  • Delivery reliability — message delivery confirmation, retry with escalation, failed delivery tracking
  • Agent lifecycle — context exhaustion detection, agent restart with re-injection, stuck task detection and escalation
  • Board integrity — board-git consistency checks, orphan branch cleanup, auto-unblock stale dependencies, dependency visualization
  • Daemon operations — hot-reload on binary change, graceful shutdown with state snapshot, startup preflight checks
  • Observability — agent health summary, run cost estimation, task cycle time tracking, performance regression detection, machine-readable batty status --json, batty export-run
  • Board CLI — batty board list, batty board summary, batty inbox purge

Stability & Predictability

Integration tests, coverage expansion, nudge system, and error types. 20 tasks shipped.

  • Integration test suite — harness for tmux-free daemon testing; triage, owned-task, review, dispatch, utilization intervention tests; multi-intervention choreography; edge cases
  • Test coverage expansion — status.rs, doctor.rs, merge.rs, interventions.rs, nudge.rs, event log, config validation all covered
  • Prompt-sourced nudges — ## Nudge sections in role prompts, combined nudge+intervention messages, per-role nudge intervals
  • Planning directives — configurable review/escalation/utilization guidance via markdown hooks in team config
  • Domain error types — GitError, BoardError, TmuxError, DeliveryError enums replacing anyhow in core paths

Production Readiness

Dispatch safety, pipeline self-management, agent flexibility, and error resilience for confident hands-off operation.

  • Dispatch guard — block assignment to engineers with active board items (todo/in-progress/review)
  • Ticket-scoped branches — eng-1-N/<task_id> naming prevents branch collision across concurrent tasks
  • Board-aware dispatch queue — WIP enforcement, stabilization delay, worktree readiness checks, persisted queue state
  • Board replenishment intervention — nudge architect when todo queue drops below threshold
  • Pipeline starvation fix — board-aware idle counting, manager-working suppression, 5-minute hard cooldown
  • Kiro agent backend — integrate kiro-cli as alternative agent alongside Claude Code and Codex
  • Codex session resume — resume sessions by ID after context exhaustion
  • Orchestrator log beautification — ANSI color coding by intervention type (triage/review/dispatch/escalation/utilization), visual hierarchy with dimmed timestamps and highlighted references
  • Telegram delivery reliability — retry logic, connection handling, outbound message deduplication
  • Unwrap cleanup — zero production unwraps in daemon.rs and task_loop.rs with regression guard tests
  • Shell-out error context — .context() on all external command invocations with command/args/purpose
  • Docs refresh — intervention docs, daemon module map, clippy cleanup, README update

Full changelog: v0.2.0...v0.3.0