Quickstart / Verification: Relocate SaaS-Sync Flag to Core

1. Boundary enforced at zero exemptions (SC-1)

PWHEADLESS=1 .venv/bin/python -m pytest tests/architectural/test_integration_boundary.py -p no:cacheprovider -q
# expect green; ALLOWLIST is empty; test_allowlist_count_ratchet asserts == 0
grep -n "ALLOWLIST" tests/architectural/test_integration_boundary.py   # frozenset() ; ratchet == 0
grep -rn "specify_cli.saas.rollout" src/specify_cli/{core,status,readiness,invocation}/  # → nothing

2. Single canonical definition (SC-3 / NFR-002)

grep -rn "^def is_saas_sync_enabled\|^def saas_sync_disabled_message" src/  # exactly one each, in core/saas_sync_config.py

3. Behavior identical + shims preserved (SC-2 / NFR-001)

PWHEADLESS=1 .venv/bin/python -m pytest tests/saas/ -p no:cacheprovider -q          # incl. test_rollout.py identity tests, UNCHANGED
python -c "from specify_cli.saas.rollout import is_saas_sync_enabled as a; from specify_cli.sync.feature_flags import is_saas_sync_enabled as b; assert a is b, 'identity preserved'"

4. Docs recorded (SC-4)

grep -n "2252\|resolved\|saas_sync_config" docs/adr/3.x/2026-06-26-1-core-integration-boundary.md
PWHEADLESS=1 .venv/bin/python -m pytest tests/contract/test_example_round_trip.py -p no:cacheprovider -q   # contract still parses

5. Quality gates

.venv/bin/python -m ruff check src/specify_cli/core/saas_sync_config.py src/specify_cli/saas/rollout.py src/specify_cli/readiness/coordinator.py
.venv/bin/python -m mypy --strict src/specify_cli/core/saas_sync_config.py