v0.15.0
Release 0.15.0
We've added compile-time NewType generation, expanded schema validation diagnostics, and built a comprehensive meta-test framework to catch schema decay, missing conformance tests, and diagnostic drift — keeping your pipelines correct before they run.
What's New
- NewType Source Generator for Columns: You can now use
[FlowthruColumn("TypeName", typeof(BackingType))]to generate NewType record structs at compile-time, eliminating manual boilerplate. Two new diagnostics —FT1003(invalid backing type) andFT1004(conflicting backing types across uses) — catch schema mistakes immediately during the build, not at runtime. - FlowthruConfig Validation: New diagnostics
FT3001andFT3002enforce that your configuration class ispartialand that allIItemproperties carry the[ConfigSection]attribute, catching common wiring mistakes early. - Format Extension Conformance Tests: Added conformance fixtures for CSV, Excel, and Parquet serializers to verify round-trip behavior on complex row shapes (
PositionalRecord,OptionalEnum). These fixtures are automatically discovered and validated by the meta-test framework. - Meta-Test Framework for Diagnostics: A comprehensive suite of meta-tests under
scripts/_test/ensures your pipeline infrastructure stays correct:- conformance-presence: Verifies every feature declared in the capability matrix has a matching conformance test fixture, so claimed support is actually tested.
- dead-schemas: Finds unused schema declarations, helping you keep test data clean as your fixtures evolve.
- dead-fixtures: Identifies unused test fixture files to prevent bitrot and confusion.
- diagnostic-id-registration: Validates that all diagnostic IDs (
FT*) are properly registered inAnalyzerReleases.Unshipped.md, catching ID collisions and drift. - project-mirror: Ensures your project structure stays consistent across test projects.
- Format Capability Matrix: We've added auto-generated documentation showing which row-shape features each format extension supports on top of the universal baseline (CLR primitives, BCL scalars, nullable types, enum mapping). See docs/reference/extensions/capability-matrix.md.
Bug Fixes
- Diagnostic Check Soft-Skip: The row-features inventory check now gracefully handles missing scratch documents in CI environments, since
docs/scratch/is gitignored. The check still fires locally where drift is most likely to be caught. - Coverage Upload Dependency: The
coverage:uploadtask now depends oncoverage:sync, fixing CI failures when the test step exits early before coverage flags are prepared.
🚀 Features
- finish data compat testing layer and refactors (f2e3b2c7)
- wrap up data feature matrix & optimize example runs (e7e6b9c3)
🩹 Fixes
- phase 1 of diagnostic setup (1b27a9f7)
- set up second phase on data extension surface (f9dc25a5)
- add metatest compat matrix for storage extensions (f1a4a99f)
- resolve scratch doc reference (c5c48456)
❤️ Thank You
- Spencer Elkington