test(reforcexy): cover the strategy's signals, validation and sizing
RLAgentStrategy is the thinnest layer of the strategy and was the least
covered: 47.2%, with every symbol but `leverage` untouched. It is also
where a wrong answer costs money directly — an entry flag raised on a row
whose prediction the model has not published trades on a value that does
not exist yet.
The action literals are asserted as a cross-object equality with the enum
rather than as two independent literals, so both survive a freqtrade
renumbering only if they agree; both would still pass if each were simply
retyped.
Signal tests read the flags through a NaN-aware helper, because the
assignment creates the column and an untouched row arrives as a missing
float rather than a zero — asserting `== 0` would have encoded a shape
the strategy does not produce.
125 tests green; gate exits 0 at 59.1%, floor raised to 59 with its
measurement; green under three seeded method orderings.