- Add permanent mock ban guard in root conftest.py that fails any test
importing unittest.mock at COLLECTION TIME (before execution)
- Add 8 brain output contract tests reproducing the exact production bug:
LLM thinks 'press back' but parser extracts 'tap messages tab' from
the <think> block
- Add UI change noise threshold (MIN_UI_CHANGE_BYTES=50) to prevent
false-positive 'ui_changed' from 1-byte XML diffs (timestamps/whitespace)
- Verify planner correctly strips masked actions from Brain prompt