Quickstart — Verifying Stability & Hygiene Hardening
Mission: stability-and-hygiene-hardening-2026-04-01KQ4ARB Date: 2026-04-26 Audience: An operator who wants to spot-check the mission's claims after implementation lands.
All commands assume CWD is the repo root of spec-kitty inside the workspace at /Users/robert/spec-kitty-dev/spec-kitty-20260426-091819-hxH6lN/spec-kitty. Set SPEC_KITTY_ENABLE_SAAS_SYNC=1 for any SaaS / sync flow.
Scenario 1 — Multi-WP mission with planning lane lands cleanly
# Run the e2e harness for the planning-lane scenario
python -m pytest spec-kitty-end-to-end-testing/scenarios/dependent_wp_planning_lane.py -v
Expected: 0 failures. The test creates a mission with 3 sequential implementation WPs and 1 planning lane, drives it through merge, and asserts every approved commit lands on main.
Scenario 2 — Interrupted merge resumes cleanly
# Drive a long mission, interrupt mid-merge, resume
python -m pytest tests/integration/test_merge_resume.py -v
Expected: resume completes within 30s on a 10-lane fixture mission (NFR-005).
Scenario 3 — Oversized intake plan is rejected
# Generate a 50 MB plan file, point intake at it
dd if=/dev/urandom of=/tmp/big-plan.md bs=1M count=50 2>/dev/null
spec-kitty intake /tmp/big-plan.md
# Expect non-zero exit, INTAKE_TOO_LARGE error
Memory ceiling: peak RSS ≤ 1.5× the configured cap (default 5 MB).
Scenario 4 — Reviewer claim emits the correct transition
# Drive a fixture mission to for_review, then claim
python -m pytest tests/unit/status/test_review_claim_transition.py -v
Expected: the emitted event's to_lane is in_review (not in_progress).
Scenario 5 — Candidate release blocked without downstream verification
# Run the release-gate scenario
python -m pytest tests/integration/test_release_gate_downstream_consumer.py -v
Expected: a candidate release that has not been verified against a real downstream consumer is rejected by the gate.
Scenario 6 — Offline queue overflow surfaces a recoverable path
SPEC_KITTY_ENABLE_SAAS_SYNC=1 python -m pytest tests/integration/test_offline_queue_overflow.py -v
Expected: 0 events dropped; structured OfflineQueueFull raised; drain file created with all overflow events; replay is idempotent.
Scenario 7 — Spec ceremony fails loudly in uninitialized repo
python -m pytest tests/integration/test_fail_loud_uninitialized_repo.py -v
Expected: spec-kitty specify, plan, and tasks each exit non-zero with SPEC_KITTY_REPO_NOT_INITIALIZED and write zero files outside the temp fixture root.
Scenario 8 — Cross-repo e2e gate runs
SPEC_KITTY_ENABLE_SAAS_SYNC=1 \
python -m pytest spec-kitty-end-to-end-testing/scenarios/ -v --tb=short
Expected: full suite ≤ 20 min wall-clock (NFR-006); 0 failures.
Smoke checklist
# Contract gate (mission-review hard gate, FR-023)
pytest tests/contract/ -v
# Architectural invariants (no runtime PyPI dep, no direct httpx in subsystems)
pytest tests/architectural/ -v
# CLI cold-start (NFR-009)
time spec-kitty --version
Cold start should be under 1.5 s on a developer laptop.
What "done" looks like for the mission
exists; every issue from start-here.md has a verdict.
operator-approved exception).
approval.
kitty-specs/stability-and-hygiene-hardening-2026-04-01KQ4ARB/issue-matrix.mdpytest tests/contract/is green.pytest tests/architectural/is green.spec-kitty-end-to-end-testingsuite runs and passes (or has an explicit- Mission-review skill verifies the matrix and the contract gate before