CompiledGraph
What a declared graph compiles DOWN to — and every part of it is something the engine already ate. There is no new runtime here. The `definition` is the same `ProcessDefinition` a hand-written process builds, the operations are the same `Operation` value objects every projector reads, and the routing tables are what the node invoker consults to turn a returned enum case into an edge.
CompiledGraph::__construct()
public function __construct(string $name, string $description, Milpa\Orchestrator\ProcessDefinition $definition, array $operations, array $routing, array $channels, array $appends, array $budgets, array $exhausted):Parameters
| Name | Type | Description |
|---|---|---|
| $name | string | |
| $description | string | |
| $definition | Milpa\Orchestrator\ProcessDefinition | |
| $operations | array<string, Operation> | state code → the node's operation |
| $routing | array<string, array{enum: class-string, map: array<string, string>}> | state code → its routing enum and case→transition map |
| $channels | array<string, mixed> | channel name → its declared default |
| $appends | array<string, string> | channel → the channel whose writes it accumulates |
| $budgets | array<string, int> | transition code → how many times it may be taken |
| $exhausted | array<string, string> | transition code → the transition taken once its budget is spent |