Workflows

Two callables, four routing lanes, and workflows that improve themselves. Control flow is the calling workflow's own prose — there is no engine beneath it.

Two callables

orch-do produces

Produces each unit and, in planning mode, freezes the root. Its minting command mints, seals, pins the standard, opens the isolated worktree, and launches.

orch-judge challenges

Challenges Goal and evidence — the read-only twin that stands between an executor's claim and "done".

A ticket's done predicate decides Goal at land. Control flow is not a callable: loops, branches, and retries are the calling workflow's own prose, and a frame ticket is the durable stack frame under them.

Routing lanes

Routing projects four lanes, smallest need first:

LaneWhen
directEvidence already decides, and a change this session can make, check narrowly, and record.
workerOne do or judge, wanting isolation or a checked landing.
teamParallel children, resume, or an audit trail.
planThe goal itself is unresolved, so a planning orch-do seals the root before team drives it.

Tripwires promote on evidence, never prediction. Small, medium, and large are explanatory mappings — never ticket fields.

Self-improvement

Every run auto-logs its friction — retries, missing inputs, workarounds — under an always-on law. trace.py extracts each session's requests, narration, and tool calls into one event record. The improvement workflow groups bounded records, finds which share a cause, and writes proposals scoped to where the change lands:

  • environment — a missing interpreter, a broken tool.
  • project — code or docs that keep causing friction.
  • workflows — the workflows themselves.
It runs on itself: run the improvement workflow across all sessions in a project, then point a second run at the first.

Tournaments

benchmaker

Builds a qualified benchmark for any target with an observable outcome — a prompt, a skill, a script.

evolve

Runs a tournament: bounded generations planned deterministically, blind judges, promotion only when a frozen rule and margin are beaten.

Together they turn "make this better" into a measured campaign instead of vibes. skill-tournament applies the same loop to the library's own skills.

Build your own

Name the callables yourself when you want a specific shape:

> loop the build until `pytest -q` exits 0
> orch-judge this cache design — rank what it gets wrong
> evolve the summarizer prompt against the frozen benchmark

Or describe a workflow in plain English and it gets admitted as a named workflow — a skill whose prose calls the callables in order, with one end-to-end done check at the end. Project-local and callable by name from then on, under <repo>/.orchflows. Authoring law: docs/custom-workflow-authoring.md.

The gallery

Named workflows shipped in example-workflows/:

  • benchmaker — build a qualified benchmark for any observable target.
  • evolve — run a tournament against a frozen benchmark.
  • skill-tournament — the same loop applied to the library's own skills.
  • self-improve — mine friction into fixes.
  • super-research — a read-only research lane.
  • orch-build-workflow — build a workflow from a description.
  • browser-game, drift-canary, renovate — more named workflows.