ruff check prints 'All checks passed!' on success, which the non-empty output test counted as one problem and blocked every commit. Use --quiet --output-format concise so success is silent and each diagnostic is exactly one line.
Add architecture doc (research-wiki/ARCHITECTURE.md), CLAUDE.md with tiered SOP for Fable 5, adapted .claude skills/hooks/settings, package skeleton (src/polygateway), pyproject with import-linter contracts, Makefile, .env.example and smoke test.