Quickstart / Verification: Retire Standalone Tasks CLI
How to verify the mission is complete and correct.
1. Surface is gone
test ! -e scripts/tasks && test ! -e src/specify_cli/scripts/tasks \
&& test ! -e .kittify/overrides/scripts/tasks && echo "all 3 copies removed"
grep -rn "specify_cli.scripts.tasks" tests/ src/ && echo "FAIL: residual reference" || echo "no residual references"
2. Suite collects and passes (no missed importer)
PWHEADLESS=1 .venv/bin/python -m pytest tests/ -n auto --dist loadfile -p no:cacheprovider -q
# Real-port/daemon tests serially:
PWHEADLESS=1 .venv/bin/python -m pytest tests/sync/test_orphan_sweep.py -n0 -q
Expect: green (pre-existing/unrelated failures reported per the charter rule, not introduced here). A collection-time ImportError mentioning scripts.tasks means an importer was missed (FR-004 incomplete).
3. Encoding capability preserved on the supported surface (FR-005 / NFR-004)
# Repair on demand:
spec-kitty accept --mission <slug> --normalize-encoding # repairs mojibake artifacts, then proceeds
# Default (no flag) leaves artifacts untouched and surfaces a clean error on invalid UTF-8:
spec-kitty accept --mission <slug> # exit 1 + "Run with --normalize-encoding"
Tests: ≥1 repair-with-flag, ≥1 no-rewrite-default, ≥1 error-without-flag.
4. Ratchet shrank (FR-007 / C-002)
PWHEADLESS=1 .venv/bin/python -m pytest \
tests/architectural/test_no_dead_symbols.py \
tests/architectural/test_no_dead_modules.py \
tests/architectural/test_gate_read_literal_ban.py \
tests/architectural/test_ratchet_baselines.py -p no:cacheprovider -q
Expect: green, with _baselines.yaml category_b_grandfathered_legacy and category_3_external_cli_entrypoints equal to their new live frozenset sizes; no dangling allowlist entry pointing at a deleted file.
5. Quality gates
.venv/bin/python -m ruff check .
.venv/bin/python -m mypy src/specify_cli # zero new issues
6. Pre-3.0 hard-reject still proven (SC-5 / FR-009)
The engine test test_collect_feature_summary_rejects_pre30 plus the new real-CLI regression (CliRunner on a pre-3.0 repo → exit 1 + "spec-kitty upgrade" + no commit) both pass.