sparse_project both fallback branches called F.linear(activated, module.value.weight) directly instead of module.value(activated), bypassing any wrapper (PEFT LoRA confirmed: lora_A/lora_B grad=None on every training-shaped call). Fixed to call module.value(activated), and the fused-kernel path now declines entirely for non-plain-Linear value modules. Full test suite 29/3 skip, 0 fail after the fix; the two new regression tests fail against the pre-fix code (verified by reverting), so they discriminate.
Fix stale header comment: point at what is actually published, not a bench/ path that never shipped here
The WKV kernel header claimed a bit-exactness gate at bench/test_wkv_cuda.py comparing zero differing bytes against the Triton kernel, and cited bench/oracle_numpy.py as ground truth. Neither file exists in this repo -- there is no bench/ directory at all. What is actually published and gated is tests/test_wkv_cuda.py, which checks this kernel against this package own rwkv7_eager (not the Triton kernel) at 2e-3/6e-3 relative-norm tolerance, not bitwise exactness.
Kept the PTX-level implementation-intent documentation (real engineering work, still useful context) but split it clearly from what the published test suite actually verifies. Found during an independent review of this repo. Comment-only change, no code/behavior touched.
Upload build/torch-universal/rwkv7_kernel/__init__.py with huggingface_hub