IR projection of a derived node — a composed Behavior whose dependency set was captured during its last successful compute.

The §4 two-primitive discipline lives here. What earlier drafts called a "conflict" is an IRDerived over an Input map — a derived view of the engine's own lifecycle, composed at the application layer rather than spelled as a separate kind (iasbuilt/causl#359).

interface IRDerived {
    conditionalDeps: readonly string[];
    deps: readonly string[];
    graphId: string;
    id: string;
    kind: "derived";
    serializable: boolean;
    value: unknown;
}

Properties

conditionalDeps: readonly string[]

Conditional deps the engine might read but has not yet.

deps: readonly string[]

Dependency set as of the most recent compute.

graphId: string

Identifier of the graph instance this node belongs to. Required as of schema 3.

id: string

Identifier of the derived node within the source graph.

kind: "derived"

Discriminator selecting the derived variant of IRNode.

serializable: boolean

Whether the mirrored value is JSON-serialisable; gates inclusion in the checker's reachable-state enumeration.

value: unknown

The most recent committed value, mirrored here so the checker does not need to re-evaluate compute closures (which Rust cannot call across the FFI boundary).