Skip to content

Datary 0.2.0 — corrective audit release

Pre-release
Pre-release

Choose a tag to compare

@devkyato devkyato released this 29 Jul 13:52
a46555a

Datary 0.2.0 — corrective audit release

I treated this release differently from an ordinary feature update. The critique was right about the central point: a tool that calls its output reproducible evidence has to be especially careful about mathematics, provenance, and failure behavior. So I froze feature work and followed the evidence from input bytes through parsing, analysis, reports, package builds, and the release artefacts themselves.

Oh! On the statistics point, the old implementation really did sort values too early. Datary now keeps observation order for adjacent differences and net change, while using a separate sorted copy only for percentiles. Independent regression cases lock that behavior down.

I thought too on the integrity point that wording matters as much as implementation. Sessions reject symlinked trusted artefacts before resolution, hash malformed-record evidence, publish a detached manifest checksum, and perform structural verification. These hashes detect accidental corruption; they do not authenticate authorship.

What changed

  • disk-backed, bounded-memory recording and conversion analysis;
  • recoverable overwrite publication that preserves the last good session on failure;
  • conservative parsing, multiline CSV/TSV, incremental bounded JSON arrays, BOM consistency, duplicate-key rejection, and non-finite-number evidence;
  • corrected ordered statistics, ISO 8601 timing, stronger quality evidence, and validated control/network metrics;
  • honest comparison output with counts, missingness, spread, units, sampling rates, and shared time ranges;
  • contained plot/report paths, Markdown and terminal escaping, spreadsheet-safe CSV convenience exports, and atomic output publication;
  • typed package metadata, session format 2, regenerated examples, issue templates, Dependabot, and cross-platform CI.

Verification

  • 87 tests pass with 79.75% measured coverage and a 75% enforced floor;
  • strict Mypy passes across 38 source files;
  • Ruff check and format check pass;
  • a generated 50,000-record run stays under the 32 MiB Python-heap regression ceiling;
  • deterministic hostile-input, overwrite-recovery, symlink, formula, malformed-manifest, and path-traversal cases pass;
  • wheel and source distribution reproduce byte-for-byte under a fixed build epoch;
  • a clean wheel installation passes the complete README demonstration;
  • PNG and SVG plotting are verified on Matplotlib's headless Agg backend;
  • all 11 GitHub jobs passed on Python 3.9–3.14 across Linux, Windows, and macOS.

See PR #8, the changelog, and the full release narrative.

Install

python -m pip install https://github.com/devkyato/datary-lab/releases/download/v0.2.0/datary_lab-0.2.0-py3-none-any.whl

For plotting, install the wheel and then matplotlib>=3.7, or install datary-lab[plot] when it is available from a package index.

Release artefacts

  • datary_lab-0.2.0-py3-none-any.whl — SHA-256 37a71927e4ec74d07acf35cc224ed2dd78fe0ccb2dd0c238c6dc77e753784cd0
  • datary_lab-0.2.0.tar.gz — SHA-256 0f0323a5431f9c15d033c1362d29fb3e524eb2fb90c68be1b9d8dd75f11cafe4
  • SHA256SUMS — machine-readable checksum list

Honest alpha boundaries

Datary does not yet authenticate session authorship, convert physical units, resample comparison series, or downsample very large plots. Those limits are documented and tracked instead of being hidden behind a confident-looking result.

Thank you for the hard critique. It made Datary smaller in its claims and much stronger where those claims matter.