A phase may only be committed, and a unit may only move to phases/complete/, when this script exits 0. It runs the project's real gate from AGENTS.md §4 (full pytest including browser E2E, ruff check, ruff format --check, pyright) so a failure anywhere blocks the commit, plus language-agnostic repo-hygiene checks that reject tracked files matching .gitignore rules and log-drop / key-material shapes (.env.example stays allowed as a config template). LLM-Generated: true