Learn / Who changes state

The two write paths

Ordinary application changes travel Message → update → modifyFields:

user / agent / behavior / external fact
        │
        ▼
     Message
        │
        ▼
      update
        │
        ▼
   modifyFields
        │
        ▼
    next Model

Infrastructure installs already-derived values through structural seams:

checkpoint / URL / cache result / reconciliation
        │
        ▼
 ModelRef / WritableProjection
        │
   set / modify
        │
        ▼
    next Model

ModelRef.modify is focused structural replacement — set of a function applied to get — not a transition mechanism. It delegates through the ref's own set, so container-aware .at/.index insertion keeps working.

The matrix

SituationOwnerChange mechanism
Local UI/domain stateapplicationMessage → update → modifyFields
Submodel stateSubmodelchild Message → child update → modifyFields
Server factserverRemote Message → Data.reduce
Replicated user operationapplication/durable historyMessage → application update → modifyFields
Sync checkpointauthoritative replicaWritableProjection.set
URL/KV restorationlocal applicationMirror → WritableProjection.set
Agent actionapplicationAgent → Message → update
UI behaviorapplicationBehavior → Message → update