fix: clean up utcnow deprecation warnings, fix 12 failing tests, add CI/CD pipeline manifests

- Replace all datetime.utcnow() with datetime.now(tz=timezone.utc) across 8 files
- Fix 12 failing tests to match current implementation behavior
- Fix pytest_plugins in non-top-level conftest (moved to root conftest.py)
- Auto-fix 189 lint issues (import sorting, unused imports)
- Add CI/CD pipeline infrastructure (ARC, ArgoCD, Kargo manifests)
- Add values-beta.yaml and values-paper.yaml for staged deployments
- Update GitHub Actions workflow to use self-hosted-gremlin runners
- Add integration-test job to CI pipeline

Result: 1596 passed, 0 failed, 0 warnings
This commit is contained in:
Celes Renata
2026-04-18 03:59:28 +00:00
parent 40227a4eb2
commit c85c0068a2
123 changed files with 7221 additions and 405 deletions
+17 -18
View File
@@ -1,31 +1,30 @@
# Integration Test Pipeline — Tasks
## Phase 1: Sandbox Infrastructure Manifests
- [ ] 1. Create `infra/inttest/postgres.yaml` — PostgreSQL 16 Deployment with migrations as init container, no PV
- [ ] 2. Create `infra/inttest/redis.yaml` — Redis 7 Deployment, no persistence
- [ ] 3. Create `infra/inttest/minio.yaml` — MinIO Deployment + bucket init Job
- [ ] 4. Create `infra/inttest/services.yaml` — query-api, symbol-registry, risk, trading-engine Deployments pointing at sandbox infra
- [ ] 5. Create `infra/inttest/runner.yaml` — test runner Job template
- [x] 1. Create `infra/inttest/postgres.yaml` — PostgreSQL 16 Deployment with migrations as init container, no PV
- [x] 2. Create `infra/inttest/redis.yaml` — Redis 7 Deployment, no persistence
- [x] 3. Create `infra/inttest/minio.yaml` — MinIO Deployment + bucket init Job
- [x] 4. Create `infra/inttest/services.yaml` — query-api, symbol-registry, risk, trading-engine Deployments pointing at sandbox infra
- [x] 5. Create `infra/inttest/runner.yaml` — test runner Job template
## Phase 2: Seed Data
- [ ] 6. Create `tests/integration/seed_sandbox.py` — deterministic seed script with fixed UUIDs for 5 companies, 10 documents, 5 trends, 5 recommendations, 3 orders, 2 positions, 2 global events, 2 competitive signals, 3 agents, trading config, portfolio snapshot
- [ ] 7. Create `tests/integration/seed_minio.py` — seed MinIO buckets with sample normalized text files
- [x] 6. Create `tests/integration/seed_sandbox.py` — deterministic seed script with fixed UUIDs for 5 companies, 10 documents, 5 trends, 5 recommendations, 3 orders, 2 positions, 2 global events, 2 competitive signals, 3 agents, trading config, portfolio snapshot
- [x] 7. Create `tests/integration/seed_minio.py` — seed MinIO buckets with sample normalized text files
## Phase 3: API Integration Tests
- [ ] 8. Create `tests/integration/conftest.py` — pytest fixtures for HTTP client, base URLs, seed IDs
- [ ] 9. Create `tests/integration/test_query_api.py` — tests for all 17 query API endpoints
- [ ] 10. Create `tests/integration/test_registry_api.py` — tests for all 8 symbol registry endpoints
- [ ] 11. Create `tests/integration/test_risk_api.py` — tests for all 4 risk engine endpoints
- [ ] 12. Create `tests/integration/test_trading_api.py` — tests for all 12 trading engine endpoints
- [ ] 13. Create `tests/integration/test_frontend_data_deps.py` — tests verifying every frontend page's API dependencies return valid data
- [x] 8. Create `tests/integration/conftest.py` — pytest fixtures for HTTP client, base URLs, seed IDs
- [x] 9. Create `tests/integration/test_query_api.py` — tests for all 17 query API endpoints
- [x] 10. Create `tests/integration/test_registry_api.py` — tests for all 8 symbol registry endpoints
- [x] 11. Create `tests/integration/test_risk_api.py` — tests for all 4 risk engine endpoints
- [x] 12. Create `tests/integration/test_trading_api.py` — tests for all 12 trading engine endpoints
- [x] 13. Create `tests/integration/test_frontend_data_deps.py` — tests verifying every frontend page's API dependencies return valid data
## Phase 4: Profiling
- [ ] 14. Create `tests/integration/profiler.py` — timing wrapper that records per-endpoint latency and produces a summary report
- [ ] 15. Add profiling output to test runner (JSON report with P50/P95/P99 per endpoint, stage timings)
- [x] 14. Create `tests/integration/profiler.py` — timing wrapper that records per-endpoint latency and produces a summary report
- [x] 15. Add profiling output to test runner (JSON report with P50/P95/P99 per endpoint, stage timings)
## Phase 5: Pipeline Runner
- [ ] 16. Create `infra/inttest/run_pipeline.sh` — orchestration script that creates namespace, deploys infra, seeds, deploys services, runs tests, collects results, tears down
- [ ] 17. Create `.github/workflows/integration.yml` — GitHub Actions workflow that triggers the pipeline on demand or on PR
- [x] 16. Create `infra/inttest/run_pipeline.sh` standalone orchestration script with CLI args (`--image-tag`, `--namespace`, `--skip-teardown`, `--results-file`), exit codes (0=pass, 1=fail, 2=infra error), JSON result output; creates namespace, deploys infra, seeds, deploys services, runs tests, collects results, tears down
## Phase 6: Documentation
- [ ] 18. Add integration test section to `docs/LOCAL_DEV_SETUP.md` with instructions for running locally
- [x] 17. Add integration test section to `docs/LOCAL_DEV_SETUP.md` with instructions for running locally, CLI usage, JSON result contract, and a note that a future CI/CD pipeline spec will consume this runner