reason is a player-facing error string when ok === false. When ok
is true the reason is absent.
gate / mode / context are additive: pre-locomotion callers that
only read reason keep working; new consumers branch on gate to
compose verb-templated rejection prose without re-parsing reason.
Result of
Exit.canTraverse().reasonis a player-facing error string whenok === false. Whenokis true the reason is absent.gate/mode/contextare additive: pre-locomotion callers that only readreasonkeep working; new consumers branch ongateto compose verb-templated rejection prose without re-parsingreason.