Quickstart — Validating Test Suite Acceleration
How to verify the mission's outcomes: faster runs and preserved coverage.
1. Establish baselines (before any change)
# Serial wall-clock baseline for the critical shard (charter) and the whole suite
.venv/bin/pytest tests/charter -m "fast and not windows_ci" -q -p no:cacheprovider --durations=25
time .venv/bin/pytest tests/ -q -p no:cacheprovider # whole-suite serial baseline
# Record collected node counts per shard (coverage-neutrality reference)
.venv/bin/pytest tests/charter --collect-only -q | sort > /tmp/charter-serial.nodeids
2. Safe-now wave (IC-01) — expect ≥60s/push saved, zero coverage change
# Reduced ULID volume runs by default; full volume still reachable:
.venv/bin/pytest <ulid_test> -q # reduced (fast)
SPEC_KITTY_ULID_VOLUME_FULL=1 .venv/bin/pytest <ulid_test> -q # full (nightly parity)
# Charter timing floors now pass under load (no flake):
.venv/bin/pytest tests/charter/test_integration.py -q
3. HOME isolation (IC-02) — the master enabler
# Regression test proves two workers get distinct homes and never touch real state:
.venv/bin/pytest tests/ -k worker_home_isolation -q
# Real home must be untouched after a parallel run:
ls -la ~/.spec-kitty 2>/dev/null # mtime/inode unchanged vs. before the run
4. Collection equivalence + ratchet (IC-07) before any flip
# Equivalence: serial vs parallel must collect identical nodeids
.venv/bin/pytest tests/charter -n auto --dist loadfile --collect-only -q | sort > /tmp/charter-par.nodeids
diff /tmp/charter-serial.nodeids /tmp/charter-par.nodeids # must be empty
# Ratchet: 3 consecutive green parallel runs
for i in 1 2 3; do .venv/bin/pytest tests/charter -m "fast and not windows_ci" \
-n auto --dist loadfile -q || { echo "ratchet FAILED run $i"; break; }; done
5. Local parallel default (IC-06) — expect ≥2× on ≥4 cores
# Parallel suite (daemon/port tests run separately, serial):
PWHEADLESS=1 .venv/bin/pytest tests/ -n auto --dist loadfile -p no:cacheprovider \
--deselect tests/sync/test_orphan_sweep.py
PWHEADLESS=1 .venv/bin/pytest tests/sync/test_orphan_sweep.py -n0 -q # serial pass
# Compare wall-clock to the step-1 baseline: target ≥2× faster.
6. Coverage parity (NFR-004)
# New-code coverage ≥90%; overall coverage not below baseline.
.venv/bin/pytest <changed_paths> --cov=src --cov-report=term-missing -q
Done criteria (maps to Success Criteria)
- SC-001/NFR-001: local full-suite ≥2× faster, real
~/.spec-kittyuntouched. - SC-002/NFR-002: charter shard wall-clock ≤ ~5 min in CI.
- SC-003/NFR-004/NFR-007: identical collected nodeids; coverage % not lower.
- SC-004/NFR-005: 3 consecutive green parallel runs, no new flakes.
- SC-005/NFR-003: ≥60s/push removed by the safe-now wave.
- SC-006: regression test proves worker home isolation.