v0.2.13
End-to-end candidate-test fixes. Source pass at https://altrocase.demant.app uncovered eight issues; this release ships a fix for each plus a flight test repair and a hung-test fix.
Fixed
havn serve --port Nis now strict: exits 2 when N is busy if --port was explicit.havn query/havn tables/havn historyroute through a runninghavn servevia a.havn/serve.jsonsidecar so the warehouse-locked case stops being a dead-end.- Failed transform steps now appear in
_havn.run_logwith theirpipeline_run_id(parallel-tier path was dropping it). - Flight SQL:
cursor_forimport hoisted; tests/test_flight.py now passes. - OUTPUT duration formatter prefers server-reported
duration_ms, renders sub-second as(123ms), 1-10s as(1.23s). - Stale "Pipeline complete" hint clears when a new run starts.
Changed
- Masking policies in no-auth mode default to
exempted_roles=[](was["admin"]-- silently inert for the only user that exists in local mode). havn lintexcludes layout rules LT01, ST06, LT05 by default unless a project.sqlfluffoverrides.
Tests
- tests/test_init_from_remote.py: fix infinite-loop in mocked urlopen.
- tests/test_masking.py: update e2e tests for the new exempted_roles default; add regression test for the no-auth case.
Full suite: 1250 passed, 72 skipped, 0 failed.