Datary 0.2.0 — corrective audit release
Pre-releaseDatary 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.whlFor 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-25637a71927e4ec74d07acf35cc224ed2dd78fe0ccb2dd0c238c6dc77e753784cd0datary_lab-0.2.0.tar.gz— SHA-2560f0323a5431f9c15d033c1362d29fb3e524eb2fb90c68be1b9d8dd75f11cafe4SHA256SUMS— 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.