Single living tracker for code/eval work items. Supersedes the scattered per-audit lists — new findings land here with a status so nothing rots undone.
Status: ✅ done · ⛔ gated (needs a human decision or an external host) · 🔎 won't-fix (verified)
Security / public surface
- ✅ AST guard:
SELECT … INTOdenied;pg_sleep_for/until,set_config,setvalbanned; adversarial tests per vector. - ✅ Streamlit
Sentencerenderer HTML-escaped (stored-XSS class closed). - ✅ API: rate limit unconditional (anonymous bucketed by IP); key via
Settings(.envhonoured);secrets.compare_digest; 500s redacted to atrace_id;truncatedsurfaced inAskResponse.
Metric integrity
- ✅ BIRD rescue hints gated behind
PipelineConfig.enable_bird_rescue_hints(default off); product path no longer serves canned per-question answers.eval_baseline.py --bird-rescue-hintsreproduces the hint-assisted number. - ✅ Reproducible single-run measured and committed (config E, codestral, 57.5% —
eval/baselines/reproducible_n200.json). - ✅ Three-tier metric in README + methodology §13 (57.5% product / 85.5% voting / 94.0% hint-assisted), each labelled by whether it runs in the product.
- ✅ Machine-readable artifacts synced: v31 report summary 185/0.925 → 188/0.94;
/eval/latestserves the reproducible baseline (not a stale 60.5%); FastAPI description honest; regression test pinsoverall == recompute(records).
Postgres path
- ✅ Read-only made real:
postgresql_readonlyexecution option (was a no-opSETinside an open transaction); DSN normalised topsycopgv3 (path had never run under psycopg2). Loaderscripts/load_postgres.py; registry registers PG fromNL_SQL_PG_DSN. Live PG16 proof in CI (tests/test_postgres_readonly.py).
Docs / hygiene / CI
- ✅ README/DEPLOY truthful: Langfuse + vcr.py claims removed; unused langfuse compose service dropped; DEPLOY.md rewritten for the real HF Space (tracked-only + prune).
- ✅ CWD-independent paths (
nl_sql.paths);ProviderNamesynced with the factory (+perplexity, +gracekelly). - ✅ Nine voting scripts on the unsafe comparator frozen in
scripts/archive/+ CI gate (check_no_raw_compare.py). - ✅ CI: mypy over
src app scripts; coverage floor (--cov-fail-under=85, currently 91%); aligned on Python 3.13. - ✅
docs/SESSION_HANDOFF.mdun-tracked (kitchen); eval trace moved into methodology §13.
- ✅ PG data load + PG-backed eval.
codebase_community(StackExchange-mini, 741 646 rows, 385 MB) loaded into a live Postgres 16 from BIRD's own PG dump viascripts/extract_pg_dump_slice.py(the dump ships all eleven databases in onepublicschema; the slice keeps one). Row counts verified against SQLite table by table. The product pipeline then ran on BIRD's Postgres gold: 49.0% EA (24/49) vs 44.9% on SQLite for the same questions, 100% validity, 88% agreement between engines — the engine ports. Artefact:eval/baselines/postgres_codebase_community_n49.json; method:docs/03_eval_methodology.md§14. - ✅ Two product bugs that only a live Postgres could expose (both invisible on SQLite):
execute_readonlyran statements throughexec_driver_sql, which hands the driver an empty parameter set — psycopg (pyformat) then parsed%as a placeholder and killed everyLIKE '%x%'and every%modulo, including BIRD's gold (qids 586/587 couldn't even be scored). Now executed on a DBAPI cursor with no parameters, so neither%(psycopg) nor:__(SQLAlchemytext()) is interpreted; driver exceptions are re-wrapped intosqlalchemy.excso error classification is unchanged._normalise_cellnever convertedDecimal→float(its docstring claimed it did), so Postgresnumericresults (AVG,SUM, any division) skipped the float-tolerance grid and correct answers scored misses. Cost 4 EA points on the PG run (40.8% → 49.0%).
- ✅ SQLite headline unaffected by both fixes: re-measured n=200 → still 57.5%.
- ⛔ Sustained-load benchmark. The data-migration half is done (above); a throughput/latency run under sustained load still wants a host that isn't the Windows dev box.
- ⛔ Space cleanup + git history.
SESSION_HANDOFF.mdis un-tracked now, so future deploys won't republish it; removing it from the live Space and any git-history rewrite are force/deploy actions — owner's call. - ⛔ External pen-test of the public API. Self-attestation is not a substitute; needs an outside pass.
- 🔎
execution_accuracy._hashablefloat bucketing — 0 set-mismatch across v22–v31 baselines; O(n²) replacement not justified. - 🔎
cache.pymiss/fill race — fires only under parallel eval workers, which aren't used. - 🔎 Chasing BIRD annotation-quirk residue above 94% — saturation shown by 3-model reasoning sweeps.