ReadonlyrandomA deterministic draw from the runtime's own seeded stream (core.Generator), so a
generator/ai/domain hook that needs randomness never reaches for Math.random() and
breaks save/replay determinism. Every draw advances the same stream the runtime persists.
ReadonlysidesReadonlyturnReadonlyunitsReadonlyvariablesOne variable by path, resolved by the same walker [variable] name= reads
through, so a hook asks for stored_naga.hitpoints and gets what a
scenario asking for stored_naga.hitpoints gets. Read here, write through
emit.setVariable: both take a path, and neither is a flat dotted key.
What a hook may read: a snapshot of the world, never engine internals.