I have been having some half-formed thoughts (okay, much less than half-formed, maybe 2% formed) about how we might start thinking about taking ideas from Rust in terms of ownership structures. This would mean differentiating blocks that are owned in one place from those that need to be GC'd due to references permitted in multiple places.
Maybe then BLOCK! could fuse with what people want from NODE!. You'd just not be able to ask what the parent of certain blocks were because it would be ambiguous. Perhaps OBJECT! would have this too. Or maybe INTEGER! and everything else, which is starting to sound very graph-databasey.
The Rust thoughts come from focusing on how to get constructors/destructors that can blend in the model, and knowing when you've crossed the line into "nope, no destructors". This twist of complexity may be a more useful tax to pay systemically.
Regardless, we can't lose sight of the goal...which is to preserve a particular kind of "coding freedom" or "fun". So the non-negotiables have to work.
I really want to get back to that list of non-negotiables whenever we can. For someone to write a line of code and say "The project is dead to me if I can't write this line this way." is a really helpful guideline.