On this page
Governance and Structural Change๏
Reader Question๏
How can Melder change live structure without putting every resolution behind one global lock?
Short Answer๏
Normal resolution and structural mutation use different control paths. meld() relies on
compiled artifacts plus validity and dirty-root gates. Structural writers enter the
frame-local transaction plane, declare the scopes they need, and commit or abort through a
family-specific strategy.
Writer Path๏
Transaction families include binding, linking, unlinking, cluster sharing, ownership transfer, index membership changes, and active-member notching. Each family computes a scope claim set; disjoint work can proceed independently while overlapping structural work waits or refuses with blocking evidence.
Reader Path๏
Resolution does not acquire writer transaction claims. Instead, structural commits mark affected roots or lineages dirty/gated. A later meld checks that state and refuses or re-runs the required compilation/validation path before execution.
Why This Design Is Strong๏
Mutation cost is paid by mutation, not by every reader.
Scope claims express isolation more precisely than one container-wide mutex.
Dirty-state propagation prevents a committed structural change from being treated as a valid old execution plan.
Transaction-family strategies keep mutation-specific scope rules explicit.
Tradeoffs๏
The control plane adds state machines, claim modes, strategy registries, and lock-order constraints. That complexity purchases parallel disjoint writes and a fast steady-state read path instead of serializing every operation through one lock.
Where to Go Next๏
Source entry points: