Quickstart / Verification
Run from the repository root checkout of spec-kitty_TWO. Targeted surfaces only (charter §Testing).
US2 — fetch-stanza prose (#3082)
uv run pytest tests/specify_cli/next/test_wp_prompt_governance_contract.py tests/charter/ -k "fetch or stanza or when or profile" -q
Expect: every rendered stanza grammatical AND per-stanza matching _WHEN_DOING_RE/_FETCH_CMD_RE.
US1 — empty-charter dispatch (#3064)
uv run pytest tests/specify_cli/invocation/ -q # new fallback + dispatch tests + untouched parity
uv run pytest tests/specify_cli/test_doctrine_service_factory.py tests/charter/test_activation_authority.py -q # gate untouched → green
spec-kitty doctrine asset path common-default-charter # resolves the shipped default charter (exit 0)
Manual: in a temp repo with no charter activations, spec-kitty dispatch "review the auth module" → routes to generic-agent, prints the activation warning once, --json shows empty_charter_fallback: true. With --profile architect-alphonso on the same repo → specialist still resolves (no fallback).
US3 — context.py decomposition (#2532)
uv run pytest tests/charter/test_context*.py tests/charter/test_reference_block.py tests/charter/test_activation_consumers.py -q # parity + seam unit tests
uv run pytest tests/architectural/test_layer_rules.py tests/architectural/test_no_dead_symbols.py -q # regression guards
wc -l src/charter/context.py # ≤ 500 (stretch 400)
Expect: byte-parity on the non-trivial corpus; each seam module exists + imported from its home; cycle dissolved.
Aggregate (pre-handoff)
uv run ruff check src/charter/ src/specify_cli/invocation/ src/doctrine/assets/
uv run mypy src/charter/ src/specify_cli/invocation/