|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to QueryPilot are documented here. The format follows |
| 4 | +[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project |
| 5 | +follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 6 | + |
| 7 | +## [Unreleased] |
| 8 | + |
| 9 | +## [0.1.0] - 2026-04-28 |
| 10 | + |
| 11 | +Initial public release. Foundation and eval-driven harness shipped. |
| 12 | + |
| 13 | +### Added — Safety engine |
| 14 | + |
| 15 | +- sqlglot-based SQL validation with single-statement and SELECT-only |
| 16 | + enforcement, blocked-keyword filter, table/column allowlist + blocklist, |
| 17 | + Cartesian-join detection, automatic `LIMIT` injection and max-row capping, |
| 18 | + `SELECT *` policy, query fingerprinting, and risk-level scoring. |
| 19 | +- SQLite and PostgreSQL connectors with per-dialect read-only execution and |
| 20 | + query timeouts. |
| 21 | + |
| 22 | +### Added — Audit & access control |
| 23 | + |
| 24 | +- Structured audit trail: `QueryAuditRecord` with audit ID, original SQL, |
| 25 | + rewritten SQL, validation result, applied access policy, row count, and |
| 26 | + execution timing. |
| 27 | +- `InMemoryAuditSink` and `JSONLAuditSink` implementations. |
| 28 | +- Access-control policies: column allowlist + blocklist, row-filter injection |
| 29 | + ANDed into WHERE, post-execution column masking (redact / null / hash). |
| 30 | + |
| 31 | +### Added — Runtimes |
| 32 | + |
| 33 | +- FastAPI server runtime (`querypilot serve`) with `/health`, `/schema`, |
| 34 | + `/search-schema`, `/ask`, `/generate-sql`, `/validate-sql`, `/execute-sql`, |
| 35 | + `/evals/run`, and `/audit/recent` endpoints. |
| 36 | +- MCP server runtime (`querypilot mcp`) over stdio and Streamable HTTP with |
| 37 | + `ask_database`, `search_schema`, `validate_sql`, and `execute_sql` tools. |
| 38 | + |
| 39 | +### Added — Generation |
| 40 | + |
| 41 | +- `DemoSQLGenerator` (offline, deterministic) plus `OpenAISQLGenerator` and |
| 42 | + `AnthropicSQLGenerator` provider implementations with a validator-driven |
| 43 | + repair loop. |
| 44 | +- Tool-schema producers `as_openai_tools()` and `as_anthropic_tools()` for |
| 45 | + drop-in agent use. |
| 46 | + |
| 47 | +### Added — Eval-driven harness |
| 48 | + |
| 49 | +- `BenchmarkCase` / `BenchmarkSuite` Pydantic schema with thresholds, |
| 50 | + comparison config, and tags. YAML and JSON suite loaders with shared-config |
| 51 | + validation across multi-file suite directories. |
| 52 | +- Result-set comparator with column- and row-order normalization, |
| 53 | + abs-difference float tolerance, datetime ISO normalization, NaN handling, |
| 54 | + and structured row diffs. |
| 55 | +- `pipeline.run_case` per-case runner reusing existing `QueryPilot.generate_sql`, |
| 56 | + `validate_sql`, and `execute_sql`; per-stage `time.perf_counter` timings; |
| 57 | + failure classification across 12 categories. |
| 58 | +- Cost trackers for OpenAI and Anthropic (idempotent client wrap with |
| 59 | + restore), `NullCostTracker`, and a `MODEL_PRICING` table. |
| 60 | +- `run_suite` aggregator producing `SuiteReport` with pass / safety / |
| 61 | + correctness / repair rates, p50/p95 latency, token totals, $ estimate, tag |
| 62 | + rollups, failure breakdown, and threshold violations. |
| 63 | +- Stdlib JSON writer and screenshot-quality terminal renderer. |
| 64 | +- `querypilot eval run|replay|check|init` CLI with audit-log → regression- |
| 65 | + suite replay, baseline-vs-current regression detection, and a starter |
| 66 | + scaffold for `suites/` and `.eval/`. |
| 67 | +- Sample GitHub Actions workflow at `.github/workflows/eval.yml` running |
| 68 | + `eval run` + `eval check` on every PR. |
| 69 | + |
| 70 | +[Unreleased]: https://github.com/nickklos10/QueryPilot/compare/v0.1.0...HEAD |
| 71 | +[0.1.0]: https://github.com/nickklos10/QueryPilot/releases/tag/v0.1.0 |
0 commit comments