v0.2.16
Closes the remaining issues from the candidate-test pass.
Added
havn lint --style. Defaulthavn lintnow runs only correctness rules (ambiguity, references, unused CTEs, NULL-equality, blocked words, control-flow). Layout/naming/capitalisation moved behind--style. End-to-end against a 9-line aligned-ASSQL block: 135 violations -> 1 (a realAM04issue).
Fixed
- Skipped transforms now log to
_havn.run_logwithstatus='skipped'andpipeline_run_id, sohavn historyshows the full picture instead of just rebuilt models. - Stale
.havn/serve.jsonlockfile recovery.havn querychecks the PID is alive before HTTP-routing and falls through to the direct DuckDB path if the server was SIGKILL'd. Cross-platform. - Webhook flush worker race fixed. The worker waited zero before its first drain, racing
test_status_reports_backlog. It now waits oneflush_interval, so a stage-then-status sequence reliably sees the staged event. - Welcome tour 404 in OUTPUT panel. The Exploring Data step no longer auto-runs a placeholder query against an empty warehouse.
QueryPanelalso suppresses Warehouse-not-found 404s from the OUTPUT log. - SQL preview strips
@configdirectives. Previously only legacy-- config:headers were stripped, so previewing a canonical-syntax SQL file failed.
Changed
- Welcome tour trimmed from 11 to 6 steps: Welcome -> Navigation -> Project -> Transforms -> Explore -> Ready. The DAG / Quality / Connectors / Pipelines surfaces are discovered through the in-app hint system.
- Tour copy now teaches
@configand auto-extracted dependencies instead of the legacy comment syntax.
Full suite: 1250 passed, 72 skipped, 0 failed.