OptionalphasesOptionalrollOptionalrequiresTarget must carry this keyword (case-insensitive).
OptionalrequiresAttacker must carry this keyword (case-insensitive).
OptionalmaxRange-gated abilities (DSL scope.range_inches, e.g. a "within 18"" reroll):
the buff applies only when the target is within this many inches. Gate is
permissive when the caller leaves EngineContext.distanceInches undefined,
so callers that don't track distance keep their current behavior.
Optional gating; the resolver drops buffs whose gate fails.