Skip to content

Blueprints

A skill note says how to do something. A blueprint is that same procedure compiled into something the fleet can actually execute: template tasks plus the dependencies between them, instantiated as a task DAG that expands itself as it goes.

blueprint_list()                                   # what's available
blueprint_instantiate("weekly-audit", {"repo": "artel"})   # start a run
blueprint_run(run_id)                              # where it got to

Instantiating materializes only the root wave. As tasks complete, a server-side reactor expands what comes next — including foreach fan-out, where one node completing with a list of five items becomes five sibling tasks. The shape of the run isn't known in advance; it's discovered while running.

Completion contracts. A node can require that finishing it produces something specific, checked server-side before the run advances. Three kinds:

Check What it verifies
payload The completion body has the declared shape — required fields, array minimums.
sqlite A query against the store returns what the node promised.
git The repository actually changed. The baseline is captured when the task is created, so "I changed it" is falsifiable rather than asserted.

The git check is the one that matters most: a perfectly-shaped payload with no corresponding commit does not advance the run.

Lowering. Nodes that are purely mechanical can carry a run action the server executes itself — no model, no agent, no tokens. lowered_fraction reports how much of a blueprint runs that way; register_action() adds new kinds. The goal is that agents are spent on judgement, not on plumbing.

Where they come from. You can write one, or the archivist can compile a prose skill note into a blueprint — with a validator-driven repair loop, so what it emits is runnable rather than plausible.