New step "MoE per-family coverage + GRPO patches + grouped_gemm AST"
that hardens the matrix against the recurring MoE bug class behind
unslothai/unsloth-zoo#624 / #612 / #607 / #601 and unslothai/unsloth
#4934 / #3598. Five clusters of pytest cases inside one shim:
1. Per-MoE-family side-effect contract (8 parametrized cases):
For each `patch_*_moe` in unsloth_zoo.temporary_patches.{qwen3_moe,
qwen3_5_moe, qwen3_next_moe, qwen3_vl_moe, gemma4_moe, glm4_moe,
deepseek_v3_moe, gpt_oss}, look up the transformers target classes,
skip when none import on this matrix cell, run the patch fn, and
assert at least one importable target now carries an unsloth
"patched" marker. Accepts five marker conventions used across the
codebase (_unsloth_already_patched, _unsloth_lora_patched,
_unsloth_lora_extractor_fn, _original_<modeling_tail>_<cls>_forward,
plain _original_forward). Surfaces silent early-returns (PR #612)
that escape the registration-coverage test.
gpt_oss specifically reads UNSLOTH_MODEL_NAME and only runs on
transformers >= 5; the shim sets the env var via monkeypatch and
skips on the 4.57.6 cell with a documented reason.
2. PR #4934 (TRL 1.0 GRPO disable_gradient_checkpointing): rebinding
contract. After patch_trl_disable_gradient_checkpointing(), the
no-op decorated function MUST be the symbol on
trl.models.utils AND every trl.* module that imported it by
reference. Skips on TRL < 1.0 (no symbol present).
3. PR #3598 (gradient_accumulation): patch_gradient_accumulation_fix
on a vanilla transformers.Trainer must run cleanly without raising
AND be idempotent. Catches future double-scale or import-injection
regressions in the source rewriter.
4. unsloth/kernels/moe/grouped_gemm AST smoke: walks every .py under
the directory (12 files) and asserts ast.parse succeeds. Triton
kernels are GPU-only at runtime, but a syntax error in source
surfaces as ImportError on every install. Also sanity-checks the
directory layout (interface.py, kernels/forward.py,
kernels/backward.py, reference/moe_block.py, reference/moe_ops.py
must exist).
Local verification on host TRL 0.25.1 + transformers 4.57.6: 4 pass
(qwen3_moe, qwen3_vl_moe, GRPO disable-GC, grad-accum, grouped_gemm
AST), 7 skip legitimately (qwen3_5/qwen3_next/gemma4/glm4/deepseek/
gpt_oss absent or version-gated). Wall-time ~10s on host; budget
~30-60s per matrix cell.