Quickstart: verifying config-as-single-authority

The behaviour to verify

# 1. Activate an artefact and confirm it RESOLVES with no answers.yaml edit (the #2524 regression)
spec-kitty charter activate directive <some-directive-stem>
uv run pytest tests/doctrine/test_charter_references_resolve.py::test_no_new_charter_reference_danglers -q   # green, no hand-edit

# 2. Answers is inert for activation (SC-004)
#    edit answers.selected_* only, regenerate -> compiled set UNCHANGED

# 3. Parity guard bites (FR-005 / NFR-002)
#    plant a config<->references divergence -> consistency_check FAILS closed

# 4. Migration preserves the active set (FR-006)
uv run pytest -k "migration and activation" -q   # 0 dropped on a skewed fixture

# 5. Gates
uv run pytest tests/doctrine/ tests/charter/ -q
uv run pytest tests/architectural/test_layer_rules.py -q          # charter !import specify_cli
uv run pytest tests/doctrine/drg/migration/test_extractor.py -k fresh -q   # graph.yaml freshness
ruff check . && mypy src/charter/

Definition of done (mission)

  • FR-001–FR-006 satisfied; FR-007 done OR explicitly split to a tracked follow-up (per research Open Question A).
  • SC-001 (no dangling), SC-002 (fail-closed guard), SC-003 (0 dropped migration), SC-004 (answers inert) verified.
  • Layer rule + graph freshness + terminology + ruff/mypy green.