Quickstart: Frozen-baseline toll reduction

How a developer exercises the mission's deliverables once implemented. All commands from the repository root, using the repo .venv (never uv run — it rebuilds the venv).

Refresh a dead-symbol hash after a body edit (FR-001/FR-002)

You edited a still-dead allowlisted symbol's body; test_no_dead_symbols REDs with an offender finding.

# Refresh hashes for still-dead allowlisted symbols (fail-closed; never admits a new dead symbol)
PWHEADLESS=1 .venv/bin/python -m tests.architectural._refresh_dead_symbol_hashes   # exact entrypoint per WP01
# Verify:
PWHEADLESS=1 .venv/bin/python -m pytest tests/architectural/test_no_dead_symbols.py -q

If the helper refuses (a bare_name it cannot disambiguate), it prints the ambiguous name — add/fix the # <module>::<Name> provenance comment or escalate the entry to collision-tier; it will never silently guess.

Run the two cheap gates locally before pushing (FR-006)

# Both sub-second gates are now fast-marked; the ~72s dead-symbols gate is NOT selected
PWHEADLESS=1 .venv/bin/python -m pytest -m fast tests/architectural/test_ratchet_baselines.py tests/architectural/test_ratchet_positional_anchor_ban.py -q

Add a skip-marker without a CI hard-fail (FR-003)

Add a # round-trip: skip: <reason> line on the exempted block (the reason is mandatory and lands in your PR diff for review). CI no longer hard-fails on the count; the reviewer sees the reason line.

Add a migration module without a baseline bump (FR-004)

Drop a new m_*.py; name it in the _CATEGORY_1_AUTO_DISCOVERED_MIGRATIONS frozenset (the one meaningful acknowledgment). The category_1 count now derives itself — no _baselines.yaml edit.

Verify the whole mission stayed within its fence

# Load-bearing gates unchanged + no regressions (NFR-003)
PWHEADLESS=1 .venv/bin/python -m pytest tests/architectural/test_ratchet_baselines.py tests/architectural/test_no_dead_symbols.py tests/architectural/test_no_dead_modules.py tests/architectural/test_ratchet_positional_anchor_ban.py -q
.venv/bin/ruff check tests/architectural/
.venv/bin/mypy --strict tests/architectural/_refresh_dead_symbol_hashes.py