Context
The Phase 0 plan calls for a CI baseline of integration tests covering the pipeline, connectors, semantic context builder, SQL sanitizer, and Alembic up/down — before the refactors land.
PR #7 delivered DB/LLM-free unit tests (secrets, jobs/registry/arq, rate limiter, telemetry, tracing, SQL sanitizer, health-probe shape) and a CI workflow that gates on pytest. Of the integration targets, only the SQL sanitizer is covered. This issue tracks closing the rest so the stated baseline is fully met.
Scope
Infra needed
These require services CI doesn't yet provide:
- A
postgres:16 + pgvector service container in the workflow.
- A deterministic fake LLM provider (registered via
provider_registry) to avoid network/key dependencies and keep tests hermetic.
- Test fixtures/factories for connections + metadata (the existing
tests/fixtures/sample_seed.sql is a starting point).
Notes
- Keep the existing unit tests as the fast, no-dependency gate; add integration tests as a separate (possibly slower) CI job.
- Once green, consider flipping the advisory
ruff/mypy CI steps to gating after the pre-existing lint debt is addressed.
Surfaced during review of #7.
Context
The Phase 0 plan calls for a CI baseline of integration tests covering the pipeline, connectors, semantic context builder, SQL sanitizer, and Alembic up/down — before the refactors land.
PR #7 delivered DB/LLM-free unit tests (secrets, jobs/registry/arq, rate limiter, telemetry, tracing, SQL sanitizer, health-probe shape) and a CI workflow that gates on pytest. Of the integration targets, only the SQL sanitizer is covered. This issue tracks closing the rest so the stated baseline is fully met.
Scope
upgrade headthendowngrade base(and back) against a disposable Postgres+pgvector, asserting no errors and a clean schema diff.execute_nl_queryend-to-end with a fake/stub LLM provider and a real (or sqlite/pg) target DB: context build → compose → validate → execute → interpret, plus the retry path.PostgreSQLConnectoragainst a real Postgres (read-only enforcement, timeout, max-rows truncation); BigQuery/Databricks behind recorded/mocked clients.build_contextwith seeded glossary/metrics/dictionary/knowledge, asserting prompt assembly and relevance selection.Infra needed
These require services CI doesn't yet provide:
postgres:16+pgvectorservice container in the workflow.provider_registry) to avoid network/key dependencies and keep tests hermetic.tests/fixtures/sample_seed.sqlis a starting point).Notes
ruff/mypyCI steps to gating after the pre-existing lint debt is addressed.Surfaced during review of #7.