• Explain the most recent change to node as a live DerivedNode.

    The returned node recomputes on every commit through Phase F.5 so subscribers fire on the same commit that produced the answer (the previous one-shot snapshot shape returned the previous commit's answer — the regression #383 documents). UIs subscribe and compose the result like any other derived; read(node) returns the current classification, readAt(node, t) projects it historically.

    Repeated calls with the same (graph, node) return the same handle (memoised) — registering the underlying derived twice would throw DuplicateNodeError, and stable identity lets a UI compose the result into downstream derived(...) without juggling handles.

    Type Parameters

    • T

      The node's value type.

    Parameters

    • graph: WhyGraph

      The engine instance.

    • node: Node<T>

      The node being explained.

    Returns DerivedNode<WhyResult>

    A DerivedNode carrying the most recent WhyUpdatedResult.