Quickstart — refactor-stable-gate-substrate-01KWK3FY
Run from the repo root (lane worktrees share the primary venv: export PATH="$PWD/.venv/bin:$PATH" and use PYTHONPATH="$PWD/src").
The converted gates (IC-01/02/03)
PWHEADLESS=1 pytest tests/architectural/test_resolution_authority_gates.py \
tests/architectural/test_untrusted_path_containment.py -q -p no:cacheprovider
# the audits' own mains (reviewer form):
python -m tests.architectural.untrusted_path_audit.audit 2>/dev/null || true # check invocation form in the file header
Theater verification (per converted gate — reviewers re-run these)
PWHEADLESS=1 pytest tests/architectural/ -q -k "drift or theater or vacuity or ghost" -p no:cacheprovider
Doctrine freshness (IC-04)
PWHEADLESS=1 pytest tests/doctrine/drg/migration/test_extractor.py tests/doctrine/drg/migration/test_path_ref_resolver.py -q
# regenerate (the ONLY sanctioned way):
python -c "from pathlib import Path; import sys; sys.path.insert(0,'src'); from doctrine.drg.migration.extractor import generate_graph; generate_graph(Path('src/doctrine'), Path('src/doctrine/graph.yaml'))"
CT9 determinism (IC-05 — the real shard form, twice)
SPEC_KITTY_RUN_QUARANTINE=1 PWHEADLESS=1 pytest -m quarantine -q # pre-check the set
PWHEADLESS=1 pytest <the 5 files> -n auto --dist loadfile -q -p no:cacheprovider # run 1
PWHEADLESS=1 pytest <the 5 files> -n auto --dist loadfile -q -p no:cacheprovider # run 2
Full closing sweep (gate-owner mission)
PWHEADLESS=1 pytest tests/architectural/ -q -p no:cacheprovider
PWHEADLESS=1 pytest tests/architectural/test_no_legacy_terminology.py -q # pre-push, always
ruff check <touched>; python -m mypy --strict <touched src+tests together>
Watch-list
- Coord-topology mission: artifacts the gates read live on the coordination branch.
- graph.yaml is byte-sensitive — never hand-edit.
- Any parity/theater surprise: revert the step; never adjust floors/fixtures.
- If #2308 (degod-follow-ups) gains commits: rebase tidy/gate-substrate before merge (C-002).