Verdict / Workflow
Autonomous development workflow
Verdict is developed under the same discipline it enforces. An agent may implement a bounded ticket, but it may not call the work complete until the code, checks, proof, and pull-request state agree.
From ticket to merged change
- TicketStatus: Shipped
Linear owns the objective, acceptance criteria, priority, and dependencies. Work starts only when a ticket's blockers are clear.
- Hydrate contextStatus: ShippedCan stop here as: rehydrate
A versioned packet binds the ticket revision, base commit, worktree, file scope, allowed commands, budget, and required proof. A changed ticket or base commit forces rehydration.
- Select and dispatch a workerStatus: Experimental
Verdict routing chooses the worker model from fresh eligibility evidence. A durable, fenced lease allows one writer per ticket.
- Implement within scopeStatus: ExperimentalCan stop here as: fenced
The worker writes only in its owned worktree and reports progress receipts. Heartbeats do not count as progress, so a stalled worker is superseded.
- Verify in layersStatus: Shipped
Static, unit, integration, and acceptance-proof gates are each required or marked not applicable with a reason. Acceptance proof is never optional, and proof binds a clean commit.
- Pull request and CIStatus: ShippedCan stop here as: blocked
A helper refuses to open a pull request with incomplete proof. CI results are classified, and failures route to bounded recovery.
- Merge and verify mainStatus: Shipped
Merges follow the repository's branch protection and use a head-matched merge. The ticket closes only after the merge commit is confirmed on main.
Shipped, experimental, and planned
- Status: ShippedHydration packet and validation
Packets are validated before dispatch and persisted atomically. Discovery and failure paths can be tested locally without model calls.
- Status: ShippedDurable leases and progress detection
Ownership is a per-ticket lease with a generation number that acts as a fence token. A lease whose progress deadline expires is superseded at the next supervisor start, and the fenced writer can no longer open a pull request.
- Status: ShippedProof gates
Proof maps every acceptance criterion to artifacts and binds a clean head commit. Checked boxes, old summaries, and workflow definitions are not proof.
- Status: ShippedCI classification and bounded recovery
Results are classified as green, pending, code failure, infrastructure failure, cancelled, missing, or empty. Code failures return to the same worktree, infrastructure failures retry without code changes, and exhausted attempts stop as blocked. A red or unclassifiable result is never reported as success.
- Status: ExperimentalRouted worker execution
Live runs depend on external model availability, the gateway, and the Prime agent runtime. Linear, GitHub, and model health remain runtime prerequisites.
- Status: ShippedIndependent semantic review (orchestrated path only)
Shipped on main; ships in v0.3.0. The orchestrated run path uses an independent reviewer (open-code-review) on a route excluded from the implementers and blocks on FAIL. Review runs only in the orchestrated path, not in ad-hoc single-shot execution.
Guardrails worth knowing
- Memory and reasoning aids are advisory. They are never completion evidence.
- A cold restart projects the next legal action from files on disk, not from conversation history.
- Retries are bounded. After the configured number of restarts, the supervisor exits as blocked and records the reason.
- The pull-request guard is a workflow gate, not a sandbox. It stops the workflow from opening a pull request with incomplete proof; it does not prevent every possible network call.
- Recovery never kills a process based on a guessed PID. Only processes the supervisor owns are stopped.
Sources
Primary material in the public Verdict repository.