The Four Pipeline Phases
Liza organizes 13 roles across four sequential phases. Every phase uses adversarial doer/reviewer pairs: nothing advances without an independent reviewer issuing a binding approval.- Specification
- Architecture
- Coding
- Integration
The specification phase decomposes your goal into structured epics and user stories.
Many-to-one transition: multiple user stories consolidate into a single architecture task via
liza proceed.Pipeline Flow
Master planning pairs reuse the same doer and reviewer roles with
decomposition-root: true when a planning task would otherwise fan out into too many parallel tasks. They do not add new roles.The Blackboard (state.yaml)
The blackboard is the single source of truth for the entire multi-agent system. Every agent reads from it, writes to it, and is bound by what is in it. You can observe it directly — there is no separate monitoring layer, no derived view that can drift.
The blackboard uses atomic writes with lock-owner metadata so concurrent agents cannot corrupt shared state. A three-phase claim pattern prevents race conditions when multiple coders compete for the same task.
Task Lifecycle
Every task travels through a defined state machine. Terminal states are irreversible. Agents do not discover work — they receive pre-claimed tasks in their bootstrap prompt, eliminating race conditions and the cognitive overhead of self-assignment.- Claiming requires
READYstatus - Submission requires a pre-execution checkpoint and test files
- Verdict requires the reviewer to verify the commit SHA matches worktree HEAD
- Merge requires approval from the required quorum of reviewers
- Forbidden transitions are rejected immediately with a clear error
BLOCKED and the orchestrator escalates.
Hypothesis exhaustion: if two independent coders fail the same task, the system presumes the task framing is wrong. The task is blocked for rescoping — not reassigned to a third coder.
Git Worktree Isolation
Every task runs in its own git worktree at.worktrees/{taskID}. Coders work in complete isolation from each other — no shared working directory, no interference between parallel tasks.
1
Task claimed
The supervisor creates a fresh worktree for the task, branched from the current integration branch HEAD.
2
Coder implements
The coder commits all changes to the task worktree. Before submission, the supervisor rebases the worktree onto the current integration branch — conflicts abort the submission cleanly.
3
Reviewer examines
The reviewer verifies the commit SHA recorded in the blackboard matches the worktree HEAD, then reviews all changes from
base_commit to review_commit — not just the latest delta.4
Supervisor merges
Only after reviewer approval does the supervisor merge to the integration branch. It uses a no-checkout merge strategy so multiple reviewers can merge in parallel without interfering with each other.
5
Worktree deleted
On terminal states (MERGED, ABANDONED, SUPERSEDED), the worktree is deleted. A fresh attempt gets a fresh worktree — no contamination from a failed approach.
approved_by and merge_commit on every task. The full audit trail is always available — who wrote the code, who approved it, which commit merged it.
The Supervisor Model
The Go supervisor wraps every agent. It handles what should not require judgment — registration, heartbeat, post-exit cleanup, state transitions — and leaves judgment to the agent. What the supervisor enforces that agents cannot circumvent:MCP Tool Middleware
Every tool call passes through role validation before reaching the handler. A coder cannot submit a verdict. A reviewer cannot write an implementation checkpoint. Violations fail with a clear message naming the agent, role, and forbidden operation.
TDD Gate
Code submission requires test files — enforced across 8 languages. No test files means automatic rejection. A waiver path exists but requires written justification that the reviewer (not the coder) verifies.
Lease System
Tasks are held with time-bounded leases (default 30 minutes). Heartbeats refresh leases. Stale leases are detected and released automatically — a dead agent cannot hold a task indefinitely.
Secret Masking
Agent output is automatically scrubbed of sensitive environment variable values before it reaches any log. Agents do not need to actively redact — the masker enforces Tier 0 invariant T0.5 mechanically.
Circuit Breaker
The circuit breaker watches for systemic failure patterns across agents and tasks. When it detects a pattern, it pauses the sprint, generates a markdown report with evidence, and waits for a human decision. It never proposes solutions, modifies code, or continues execution autonomously.
You can also trigger a checkpoint manually at any time with
liza checkpoint — the system pauses, you review, and you resume with any steering adjustments.
Orchestrator Wake Conditions
The orchestrator wakes on blackboard change events (with polling fallback) and evaluates conditions in priority order:- INITIAL_PLANNING — no tasks exist yet; decompose the goal
- BLOCKED_TASKS — actionable blocked tasks await escalation or rescoping
- HYPOTHESIS_EXHAUSTED — two coders failed the same task; rescope
- IMMEDIATE_DISCOVERY — new findings not yet converted to tasks
- PLANNING_COMPLETE — all planned tasks are terminal; proceed to next phase
- SPRINT_COMPLETE — all tasks terminal with no unconsumed output; close sprint
CHECKPOINT or COMPLETED state, SPRINT_COMPLETE is suppressed to prevent re-wake loops.