Quickstart — Verifying Landing-Pass Campsite Follow-ups

Run all commands from the mission clone root (/home/stijn/Documents/_code/SDD/fork/spec-kitty-csf2670). Use uv run so the lane resolves the clone's own src/, never the primary checkout's.

IC-01 — Shard fallback (#2671)

# Red-first: a fixture arch file with no shard entry currently double-reds.
uv run pytest tests/architectural/test_arch_shard_marker_completeness.py \
              tests/architectural/test_gate_coverage.py -q
# After the fallback: an unregistered tests/architectural/*.py needs 0 table edits.
uv run pytest tests/test_shard_registry_fallback.py -q      # new registry unit test

Green criterion: a new arch file is auto-marked; GC-1 completeness + orphan gates pass; explicit entries still win; header doctrine updated.

IC-02 — Bite-battery isolation (#2673 + #2638)

# The structural invariant: real source is byte-unchanged after the mutating test.
uv run pytest tests/architectural/test_single_mission_surface_resolver.py \
              tests/architectural/test_surface_resolution_audit.py \
              tests/architectural/test_untrusted_path_containment.py \
              -n auto --dist loadfile -q     # repeat ≥5× as flake smoke
git status --porcelain src/specify_cli/core/mission_creation.py   # must be empty after the run

Green criterion: parallel runs stop racing; the bite-battery still flags the injected raw join.

IC-03 — Color/synthesis hygiene (#2672)

uv run pytest <color/synthesis-manifest test> -q
git status --porcelain .kittify/charter/synthesis-manifest.yaml   # must be empty after the run

Green criterion: deterministic via CliConsole; no real-file mutation; no NO_COLOR dependence.

IC-04 — Sync remediation registry (#2674)

uv run pytest tests/specify_cli/sync/test_preflight_remediation_hints.py -q

Green criterion: the guard iterates the full registry; a mistyped inline command fails it; no duplicated remedy literal.

IC-05 / IC-06 — Type-debt (#2675)

uv run mypy src/specify_cli/status/lane_reader.py \
            src/specify_cli/cli/commands/agent/workflow_executor.py \
            src/specify_cli/status/status_transition.py \
            src/specify_cli/missions/plan/specify_interview.py \
            src/specify_cli/missions/plan/plan_interview.py \
            src/specify_cli/missions/_read_path_resolver.py \
            src/specify_cli/status/emit.py \
            src/specify_cli/upgrade/migrations/m_2_1_4_enforce_command_file_state.py
uv run pytest tests/specify_cli/ -k "lane_reader or workflow_executor or interview" -q

Green criterion: 0 mypy errors on in-scope surfaces; 0 new suppressions; new branches covered.

Whole-mission gate (pre-PR)

uv run ruff check .
PWHEADLESS=1 uv run pytest tests/architectural/ -n auto --dist loadfile -q
pytest tests/architectural/test_no_legacy_terminology.py   # terminology guard