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.

Reviewed 2026-09-24 · ff18aa5f2be0ea9b8ab6e32b56e713801b2d8b83Status: ShippedStatus: ExperimentalAbout the labels

From ticket to merged change

Fig. 03Autonomous delivery loop
  1. TicketStatus: Shipped

    Linear owns the objective, acceptance criteria, priority, and dependencies. Work starts only when a ticket's blockers are clear.

  2. Hydrate contextStatus: Shipped

    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.

    Can stop here as: rehydrate
  3. 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.

  4. Implement within scopeStatus: Experimental

    The worker writes only in its owned worktree and reports progress receipts. Heartbeats do not count as progress, so a stalled worker is superseded.

    Can stop here as: fenced
  5. 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.

  6. Pull request and CIStatus: Shipped

    A helper refuses to open a pull request with incomplete proof. CI results are classified, and failures route to bounded recovery.

    Can stop here as: blocked
  7. 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.

Each state advances only with the evidence that state requires. Any source change after proof invalidates the proof, review, and CI gates.

Shipped, experimental, and planned

  • Status: Shipped
    Hydration packet and validation

    Packets are validated before dispatch and persisted atomically. Discovery and failure paths can be tested locally without model calls.

  • Status: Shipped
    Durable 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: Shipped
    Proof 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: Shipped
    CI 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: Experimental
    Routed 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: Shipped
    Independent 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.