On this page

Governance and Structural Change๏ƒ

Architecture and design home

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.

Governed runtime change loop

Editable diagram source

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:


Canonical source ยท Full contents