e2d4a595a4
- inbox_lanes, inbox_dismiss_candidates, inbox_export_csv: switch module-level 'app' to per-request 'request.app' so per-endpoint state stays consistent with the test's TestClient target across importlib.reload() (test_api.py::test_cors_extra_origins_via_env reloads the api module to mutate CORS allow-lists; pre-reload endpoints then mutate the wrong app instance). - _http_exc_handler: when HTTPException.detail is a dict, wrap under 'detail' so the standard envelope stays stable and callers can branch on body['detail']['error']. - conftest._auto_init_db: re-resolve cyclone.api.app each fixture invocation (instead of caching at module load) so the reload pattern doesn't leave event_bus set on a stale app. - test_acks.test_migration_latest_idempotent_on_fresh_db: bump user_version assertion from 12 to 14 after auth migration renumber (0013 users+sessions, 0014 audit_log.user_id). Also installs sqlcipher3 + paramiko into the backend venv so the capability tests can run; both modules were optional deps that test_db_crypto and test_sftp_paramiko assume are present. Backend test results: 1008 passed, 9 skipped (gitignored prodfile fixtures), 0 failed.