symfonic.kernel.contracts.plan¶
plan ¶
InvocationPlan — everything one invocation may do, decided once (IPL).
The plan is the answer to "what composes behavior here?". Not inheritance, not a flag matrix, not a constructor with thirty keyword arguments: a frozen value compiled before dispatch and read by everything downstream.
InvocationPlan
dataclass
¶
InvocationPlan(identity: PlanIdentity, scope: RequestScope, model: ModelResolution, tool_manifest: ToolManifest, stage_program: StageProgram, bindings: ServiceBindings, effect_grants: frozenset[str], limits: PlanLimits, event_program: EventProgram, diagnostics: PlanDiagnostics)
The ten frozen field groups of INV-ADR §2.
Deep-immutable over G1–G5 and G7–G10; G6 holds live port objects whose set and identity are frozen while their internals are not (IPL-4).
allows_tool ¶
equality_key ¶
The reproducibility key: everything but G1's ids and G6's objects.
Two compilations of the same normalized config with the same registered
capabilities must agree on this tuple. plan_id and compiled_at
are excluded because they are per-compilation by construction, and the
bindings because object identity is not a property of a configuration.