#!/usr/bin/env python3 """Mutation tests for the flow-shader-parity rule (campaign aetheria-fauna, cut fauna-flow-field). Assets/Scripts/Editor/FlowFieldSceneVerify.cs opens ARPG.unity and drives VolumeSampling and Stardust as the game does (the keywords, the stardust buffer, CloudShader's keywords); each mutant below names the check that must catch it. Assets/Scripts/Editor/FlowFieldParityVerify.cs evaluates the HLSL globalFlow and slopeFlow (Assets/Shaders/Volumetric.cginc, through FlowParity.compute) and FlowField (ServerShared) for the same positions, scrolls, settings and gradients, after VolumeSampling.LowerFlow has lowered a stepped Zone's flow into the shader globals. Tests.asmdef cannot see Assembly-CSharp and the check needs a GPU, so it runs here, in Unity batchmode WITHOUT -nographics (see ShieldPanelCut3Verify.cs). A control run proves the unmutated tree passes. Then each mutant edits the real source in one way a rule of the cut forbids, runs the check, asserts it goes red naming the check that owns the rule, and restores the file byte for byte. A mutant that fails for the wrong reason (a broken harness) cannot hide behind the control. Run from the repo root: py -3 tests/mutation_tests_flow_parity.py [--only