The learn subsystem (tests/learn_e2e.py) runs only on the Linux CI job; the Windows job builds but never exercises graff learn. The store/eval code paths use direct process execution of the configured mutator/evaluator program, which on Windows cannot execute a #!-shebang python script directly: configs would need python.exe as the program with the script as an argument, or a .bat shim.
From the #246 review (confirmed finding, medium): add learn_e2e to the Windows CI job and either document the python.exe-as-program pattern or add a script-tool execution model for Windows. The pass_env deny-list already covers ComSpec/SystemRoot case-insensitively.
The learn subsystem (tests/learn_e2e.py) runs only on the Linux CI job; the Windows job builds but never exercises graff learn. The store/eval code paths use direct process execution of the configured mutator/evaluator program, which on Windows cannot execute a #!-shebang python script directly: configs would need python.exe as the program with the script as an argument, or a .bat shim.
From the #246 review (confirmed finding, medium): add learn_e2e to the Windows CI job and either document the python.exe-as-program pattern or add a script-tool execution model for Windows. The pass_env deny-list already covers ComSpec/SystemRoot case-insensitively.