Add an application-level validation pass after schema validation.
Rules
- Duplicate room IDs are rejected.
- Each exit
<to> must resolve to an existing room ID (allow cross-zone exits).
- Room ID must be of the form
zone:room and its zone prefix must match the containing <zone><name>; mismatch is an error.
Acceptance
- On any violation, print a precise error and exit non-zero.