Skip to content

DATAMIMIC CE 4.3.0

Latest

Choose a tag to compare

@ake2l ake2l released this 24 Sep 05:10
a219163

DATAMIMIC CE 4.3.0 strengthens authoring verification, adds scaled decimal ranges, and makes the tested determinism boundary easier to inspect.

Features

  • Nested-list expectations. model.dm.json and caller-owned acceptance requirements can target a nested list with list_field. Exact counts, ranges, allowed values, and uniqueness checks apply to nested rows, including per-parent uniqueness. (#259)
  • Scaled decimal ranges. decimal_range accepts an optional scale from 0 through 15. Bounds are aligned to that grid; unsafe or unrepresentable runtime ranges fail during intent validation. (#258)
  • Delivered-artifact smoke checks. scaffold --smoke-export reads finalized temporary artifacts and compares delivered row counts with the captured rows, using the target encoding and chunk size. (#256)

Improvements

  • Clearer authoring diagnostics. Unknown product references in model expectations or caller acceptance requirements now fail before execution with structured paths and allowed product names. A memstore target without a consumer cannot produce verified=true. (#257, #255)
  • Determinism proof metadata. The four registered domain facades now add engine_version, python_version, and faker_version to determinism_proof, alongside the existing proof fields. This is a limited metadata/API extension. (#252, #265)
  • More precise documentation. The README separates tested CE determinism from exporter and Enterprise Edition behavior and describes PII and compliance boundaries more precisely. (#266)

Migration Notes

  • JSON Decimal values are now strings. JSON and NDJSON exporters emit Decimal values as text to preserve precision and trailing zeros. Native int and float values remain JSON numbers. Update consumers that expect Decimal fields as JSON numbers to parse the string. (#253)
  • Strict domain-response validators. Update strict validators to accept the three new fields under determinism_proof. The bundled schemas require these fields. algorithm, seed_canonical, and content_hash remain available. (#252, #265)
  • Memstore verification. A memstore target without a consumer now blocks verified=true. Add a source consumer or remove the unused target. (#255)
  • Cyclic database reads. Full cyclic reads now follow the ordered paged-query path. Consumers relying on unspecified database order may see a different row order. (#251)
  • MySQL execute scripts. Remove DELIMITER directives from <execute> scripts. They are mysql-client syntax, not SQL sent to the server, and are now rejected. (#262)

Fixes

  • Full cyclic database reads now preserve stable selector order across cycles. (#251)
  • SQLite and MySQL compound trigger bodies preserve inner semicolons instead of being split into separate statements. (#262)

Verification

  • The CE determinism gate compares runtime hashes from eight configured CI profiles with each other and committed goldens: Ubuntu 22.04 with Python 3.10 through 3.13 in UTC; Ubuntu with Python 3.11 in America/Los_Angeles; Windows with Python 3.11 in UTC and Pacific time; and Ubuntu with Python 3.11 using the lowest supported direct dependencies.
  • Coverage includes all four registered facades, selected attributes from all 23 entities, 34 of 35 literal generators excluding database-backed SequenceTableGenerator, 27 representative seeded safe-global paths, five rejected entropy paths, and one canonical UTF-8 probe.
  • Checked-in Intent Model and XML fixtures cover positive and negative paths for nested-list acceptance, finalized smoke-export row counts, decimal scale and JSON delivery, memstore verification, cyclic reads, and compound SQL scripts.
  • This release does not claim arbitrary exporter byte equality or Enterprise Edition execution coverage; those remain outside the CE determinism gate.