Quickstart: Verify the Integration/Core Boundary

Mission: integration-boundary-01KW0PBE Branch: feat/integration-boundary


1. Run the enforcement test

pytest tests/architectural/test_integration_boundary.py -v

Expected output: all tests pass green. If any CORE-set module still carries a non-exempted INTEGRATION import, the test fails with a message naming the violating file, the offending import path, and the corrective action.


2. Verify zero CORE-to-INTEGRATION edges by grep

# Must return only the allowlisted line (readiness/coordinator.py → saas.rollout)
grep -rn \
  "specify_cli\.sync\|specify_cli\.tracker\|specify_cli\.saas\|specify_cli\.orchestrator_api\|specify_cli\.saas_client" \
  src/specify_cli/core/ \
  src/specify_cli/status/ \
  src/specify_cli/readiness/ \
  src/specify_cli/invocation/

Expected: exactly one match — src/specify_cli/readiness/coordinator.py:237: from specify_cli.saas.rollout import is_saas_sync_enabled

Any other match is a regression.


3. Run the full architectural suite

pytest tests/architectural/ -v --timeout=30

Expected: all tests pass. The enforcement test must complete well within 30 s.


4. Verify no regressions in the full suite

PWHEADLESS=1 pytest tests/ -n auto --dist loadfile -p no:cacheprovider -q

Expected: zero newly failing tests (NFR-003).


5. Verify invocation/adapters.py safe-degradation

# Unit test for the invocation adapter's no-registration fallback
pytest tests/invocation/test_adapters.py -v

Expected: the test that calls resolve_sync_routing and get_saas_client with no registered implementations returns None without raising.


6. Verify mission creation still works end-to-end

# Functional smoke test: create a mission and confirm the lifecycle log is written
pytest tests/core/ -k "mission_creat" -v

Expected: status.events.jsonl contains exactly one MissionCreated event after a mission creation call. No OriginBinding or DossierSync import errors.