Skip to content

Release 2.2.1 - #156

Merged
mike-finopsorg merged 4 commits into
mainfrom
release-2.2.1
Aug 5, 2026
Merged

Release 2.2.1#156
mike-finopsorg merged 4 commits into
mainfrom
release-2.2.1

Conversation

@mike-finopsorg

Copy link
Copy Markdown
Contributor

No description provided.

mike-finopsorg and others added 4 commits August 5, 2026 16:52
…umnValue

ColumnByColumnEqualsColumnValueGenerator emitted ({a} * {b}) <> {r} with no
tolerance. The CSV loader infers numeric columns as Float64/DOUBLE, so the
product is computed in IEEE-754 and compared bit-exactly. Rows whose
exact-decimal product equals the result but whose float64 product differs by a
rounding bit (e.g. 0.000015 * 20 -> 0.00030000000000000003 vs 0.0003) were
wrongly flagged non-conformant.

Replace the exact comparison in both the violation and predicate SQL with a
relative epsilon via a shared _tolerance_expr helper so the two can't drift:
ABS(({a} * {b}) - {r}) <= 1e-9 * GREATEST(ABS({r}), 1). The tolerance absorbs
only float representation error, staying faithful to FOCUS exact-equality intent.

Resolves false failures for CAU-ListCost-C-011-C, CAU-ListUnitPrice-C-014-C,
CAU-ContractedCost-C-011-C, and CAU-ContractedUnitPrice-C-013-C.

Add end-to-end DuckDB regression tests and update the composite-calculation
generator test to assert the new tolerance SQL.

Signed-off-by: Mike Fuller <mike@finops.org>
Signed-off-by: Mike Fuller <mike@finops.org>
Signed-off-by: Mike Fuller <mike@finops.org>
Co-authored-by: Matt Cowsert <matthew@finops.org>
@mike-finopsorg mike-finopsorg self-assigned this Aug 5, 2026
@mike-finopsorg
mike-finopsorg merged commit 21ea623 into main Aug 5, 2026
6 checks passed
@mike-finopsorg
mike-finopsorg deleted the release-2.2.1 branch August 5, 2026 06:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant