Learn / Wiring

Who owns what

The wiring changes nothing about ownership. It describes joining; the contracts each package already declares still own the transitions:

  • Remote's reducer still owns the cache slice; Mirror still owns nothing (it observes); Sync still owns replication through mount, not through the assembly; the agent still only sends Messages update already handles.
  • The assembly never becomes a second reducer. update routes each Message to exactly one item's fold and falls through to the application's own update. A shared tag is the exception that proves it: it is observed, not claimed, so every wiring sharing it folds it in list order and the application's update sees it after them. Several URL mirrors read one UrlChanged, and the application still routes on it, over the slices they have already read.

The mental model

integration + its config ──▶ Wiring
Wiring + Wiring + placement + … ──Page.assemble──▶ Assembly
Assembly ──update / initial / subscriptions / resources / url / module──▶ runtime config + Module
runtime config ──complete──▶ checked (type-level), unchanged (runtime)
Assembly ──runtime──▶ runtime config, with the derivations filled in