Add diagnostic steps to CI:
- Print installed test dep versions after pip install
- Verify app.main import chain before running pytest
- Show --tb=short for better error visibility
Pin pytest-cov==5.0.0 to prevent breaking transitive dep updates.
https://claude.ai/code/session_01W1rJthWDkasijTdXCfxVHs
Root cause: pytest/pytest-asyncio/aiosqlite minimum version pins (>=X)
allowed pip to install latest versions that may have breaking changes.
The first CI run (a319feb) passed because it ran before the update;
all subsequent runs failed with exit code 4 (collection error).
Fix: Pin upper bounds on test dependencies:
- pytest>=8.0.0,<8.4.0
- pytest-asyncio>=0.24.0,<0.26.0
- aiosqlite>=0.20.0,<0.21.0
- httpx>=0.28.1,<0.29.0
Also restore architecture_brief.py to CI pipeline (was removed
during debugging, now restored since issue was deps not script).
https://claude.ai/code/session_01W1rJthWDkasijTdXCfxVHs
The backend pytest step fails with exit code 4 (collection error).
Removing architecture_brief step to isolate whether the script
interferes with the pytest working directory or Python environment.
https://claude.ai/code/session_01W1rJthWDkasijTdXCfxVHs
Sprint A — Executive Room real data:
Rewrote executive_roi_service.py (20→158 lines) to aggregate from 7 live
services: deals (revenue/pipeline/win_rate), approval SLA (pending/warning/
breach from _dealix_sla), connector health (IntegrationSyncState), compliance
posture (saudi_compliance_matrix), contradictions (contradiction_engine),
strategic deals, evidence packs.
Sprint B — Approval Center live:
Wired approval_center.py to query real ApprovalRequest table with SLA data
from payload["_dealix_sla"]. Approve/reject endpoints update real DB records
with reviewed_at timestamp.
Sprint C — Saudi Compliance live:
Wired saudi_compliance.py to call saudi_compliance_matrix service methods
(get_matrix, get_posture, get_risk_heatmap) with real AsyncSession + tenant_id.
Sprint D — Contradiction + Evidence Pack DB:
Wired contradiction.py and evidence_packs.py to real database via
contradiction_engine and evidence_pack_service. All CRUD operations
now persist to PostgreSQL with proper tenant isolation.
Sprint F — Operating Plane:
Created CODEOWNERS file mapping sensitive paths to @VoXc2.
Added architecture_brief.py step to CI pipeline (runs before pytest).
Sprint G — OWASP LLM:
Added OWASP LLM Top 10 review + architecture brief validation to
release-prep.md (steps 10-11).
https://claude.ai/code/session_01W1rJthWDkasijTdXCfxVHs