A plan in Allternit is not prose. It is a ComputeGraphIR: a typed graph whose nodes are registered primitives and whose edges are explicit conditions. Models may propose a graph or a patch to one. The runtime validates it and owns execution.
Architecture contract
ComputeGraphIR
A graph hasgraph_id, task_id, graph_version, nodes, edges, entry_nodes, completion_nodes, a global budget and a failure policy.
Each node declares:
Edges carry a predicate or a decision result selector. Loops are edges. Parallelism is allowed only when read and write sets and policy permit it.
The seven graph invariants
The validator rejects a graph that breaks any of these:- Mutation is authorized. A node that writes declares a write set and a capability request.
- Completion has evidence. A completion node declares the evidence it needs, and a verify node sits upstream of it.
- S2 output is a candidate. A generating node does not write state directly, and its output reaches a verify or policy node.
- A retry changes something. A retry has a policy that names what must change between attempts.
- Every node is receipted. Each node declares a receipt-backed output.
- Projections are disposable. No node treats a projection (a view built from the ledger) as truth.
- No model pinning. No node or capability request names a model or provider.
The Agent ISA
Every node’s primitive comes from one registry. The Agent ISA groups primitives into Observation, Decision, Mutation, Execution, Version Control, Verification and Control. Control covers branch, parallel, join, retry, rollback, checkpoint, request evidence, escalate, wait for dependency and finish. Each primitive has a stable dotted ID (for exampleobs.list_files) and an upper-snake alias. Namespaces include obs, dec, ctx, plan, tool, mut, ver, ctl, route, state, policy, bg and mem. A primitive declares its inputs and outputs, its class, its authority (propose, decide, verify or authorize) and the evidence it produces. Only policy primitives may grant authority.
Why graphs and a fixed ISA: a typed graph can be checked before it runs, replayed after, and executed the same way whichever model is loaded. Free-form loops can do none of these.
Current implementation
On main, in the work runtime:- The primitive registry with all 191 canonical primitive IDs of Kernel ABI 1.0.0, loaded at build time from the frozen registry file, with lookup by dotted ID or alias.
- The Agent ISA as a generated enum over the same 191 IDs.
- The graph validator with the seven invariants above.
- A projection that renders a graph as the existing work-item view, so current tools keep working.