What's Changed
- fix: joined aggregations source-aware by @hussainsultan in #289
- fix(_xorq): don't let optional plain-ibis interop deactivate the xorq branch by @hussainsultan in #291
- fix: close serialization RCE, 5 lossy-payload defects, and 4 t.all() defects by @hussainsultan in #292
- refactor phase 0: safety net (SCC ratchet, real lint gate, CI matrix, soundness reorg) by @hussainsultan in #295
- refactor phase 1: dead-code deletion + SCC rim cuts (23 → 13 modules) by @hussainsultan in #296
- refactor phase 2: typed errors, shared primitives, fail-closed pruning (SCC 13 → 10) by @hussainsultan in #297
- refactor phase 3a: break the core knot — the import graph is now a DAG by @hussainsultan in #298
- refactor phase 3b: split ops.py — package conversion + compile strategies extracted by @hussainsultan in #299
- refactor phase 3c: decompose the pre-aggregation pipeline into named phases by @hussainsultan in #300
- refactor phase 4: serialization consolidation — utils.py dissolved, codec on public constructors by @hussainsultan in #301
- refactor phase 5: API surface — one query(), eager validation, YAML schema, no how= by @hussainsultan in #302
- refactor phase 6: extras boundaries + the layer contract by @hussainsultan in #303
Full Changelog: v0.3.16...v0.3.17