e06efbcff0
scripts/dump_desktop_slash_registry.py --check exits 1 (no write) when the committed apps/desktop/src/lib/desktop-slash-registry.json differs from desktop_surface_registry(); the docstring now cites the test that actually fails (test_desktop_slash_registry.py, not test_commands.py). The pytest runs --check as a subprocess (green on the committed file) and calls check() on a hand-edited copy (red). scripts/ci/classify_changes.py: _PY_SKIP includes apps/, so an apps-only edit of that JSON (or apps/shared/src/gateway-events.json) skipped the Python lane and the only equality check never ran in CI. A table of cross-language contract files now forces python:true; two classifier rows pin it.