Problem
trainer.py:228-231 monkey-patches action._grpo_raw_text = decoded onto a BenchmarkAction dataclass. This is fragile — if BenchmarkAction ever adds __slots__, the attribute silently fails and loss computation falls back to DSL reconstruction (which may differ from what the model actually generated).
Proposed Fix
Replace with a proper wrapper dataclass (e.g., GRPORolloutAction composing BenchmarkAction + raw_text) or store raw outputs in the Rollout/RolloutStep data structure.
Problem
trainer.py:228-231monkey-patchesaction._grpo_raw_text = decodedonto aBenchmarkActiondataclass. This is fragile — ifBenchmarkActionever adds__slots__, the attribute silently fails and loss computation falls back to DSL reconstruction (which may differ from what the model actually generated).Proposed Fix
Replace with a proper wrapper dataclass (e.g.,
GRPORolloutActioncomposingBenchmarkAction+raw_text) or store raw outputs in theRollout/RolloutStepdata structure.