- Modify by writing new blocks for modified nodes; update parent pointers bottom-up; finally, atomically switch the root.
- Benefits: snapshots, clones, checksums, crash consistency by design (no in-place overwrites).
- Costs: write amplification, fragmentation; mitigated with allocators and background cleaners.
// CoW publish step (conceptual)
function publishNewRoot(oldRoot, changedLeaf){
// walk toward root, copying and updating pointers
// at the end, atomically flip superblock root pointer to the new root
}