Quickstart: verify SymbolKey source_module (#3552)
Test-infrastructure change; no runtime surface. All verification is pytest + lint/type.
Run the touched gates
# Non-goal guards (G1–G6)
PWHEADLESS=1 uv run pytest tests/unit/test_symbol_key.py -q
# The dead-symbol gate + refresh helper (no regression; acceptance anchor)
PWHEADLESS=1 uv run pytest tests/architectural/test_no_dead_symbols.py \
tests/architectural/test_refresh_dead_symbol_hashes.py -q
# Ratchet baselines must be unchanged (no key added/moved)
PWHEADLESS=1 uv run pytest tests/architectural/test_ratchet_baselines.py -q
Lint / type
uv run ruff check tests/architectural/_symbol_key.py tests/architectural/test_no_dead_symbols.py \
tests/architectural/_refresh_dead_symbol_hashes.py tests/unit/test_symbol_key.py
uv run mypy --strict tests/architectural/_symbol_key.py tests/architectural/_refresh_dead_symbol_hashes.py
Backfill verification (IC-02)
# Every content-tier entry carries source_module (SC-001: expect 338)
grep -c "source_module=" tests/architectural/test_no_dead_symbols.py
# No machine comment-parse surface remains (SC-004: expect 0)
grep -nE "_recover_provenance|_PROVENANCE_COMMENT_RE|_comments_by_row|test_every_content_tier_entry_has_parseable_provenance_comment" \
tests/architectural/ -r || echo "all parse surfaces retired"
Success signals
- G1–G6 present and green (incl. keystone G6).
test_no_dead_symbols+ refresh-helper suites green; allowlist cardinality 363.test_ratchet_baselinesbaselines unchanged.- ruff 0, mypy 0; no
pyproject.tomlversion diff. - #3560 Finding-1 collision resolves without
NEEDS_MODULE_PATH.