|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to Rosalind are recorded here. Versions follow [Semantic Versioning](https://semver.org). |
| 4 | + |
| 5 | +## [0.1.0] — 2026-06-02 |
| 6 | + |
| 7 | +First tagged release: a deterministic, low-memory genomics engine where **memory is a verifiable |
| 8 | +contract** — predict it before you commit, honor it during the run, and verify it after. |
| 9 | + |
| 10 | +### The memory contract |
| 11 | +- `rosalind plan` — predict a job's peak memory against a declared budget *before* committing a byte. |
| 12 | +- `rosalind variants … --enforce` — honor the budget: refuse up front (exit 3) or fail loud (exit 4), |
| 13 | + never a silent OOM-kill. Record-only without `--enforce`. |
| 14 | +- `rosalind verify` — re-check a run's BLAKE3 receipt without re-running. |
| 15 | +- The **`rosalind-budget` GitHub Action** — enforce the contract in *your* CI (fail the build on breach). |
| 16 | + |
| 17 | +### Variant calling |
| 18 | +- **Bounded whole-genome germline SNV calling** (`variants --index`) over a coordinate-sorted BAM and a |
| 19 | + persisted index: peak memory tracks coverage, not BAM size. Calibrated, abstention-aware. |
| 20 | +- **Unbiased depth-cap downsampling** — a content-hash reservoir that bounds the working set without |
| 21 | + biasing allele balance (no silent variant drops); dropped-read counts surfaced in the receipt. |
| 22 | +- **Tumor/normal somatic** SNV + simple-indel calling (`somatic`). |
| 23 | +- **Measured detection accuracy** on simulated diploid truth (precision/recall 1.00/1.00 on clean data); |
| 24 | + `eval-germline` / `eval-somatic` truth-set comparison (the `eval-germline` path is GIAB-ready). |
| 25 | + |
| 26 | +### Index, alignment, I/O |
| 27 | +- Build-once, memory-mapped, byte-reproducible FM-index (`index` / `locate`). |
| 28 | +- Single-contig FM-index aligner (`align`); deterministic external-merge coordinate sort (`sort`); |
| 29 | + streaming gzip/bgzf FASTA/FASTQ input. |
| 30 | + |
| 31 | +### Reproducible ML feature substrate |
| 32 | +- `rosalind features --index` — the same bounded stream as a per-locus feature **TSV**, byte-identical |
| 33 | + run-to-run, with a hash receipt: **bit-reproducible training inputs**. |
| 34 | +- `python/rosalind.py` (stdlib + numpy) loads it; `examples/reproducible_features_demo.py` proves the |
| 35 | + bit-reproducibility end-to-end. |
| 36 | + |
| 37 | +### Reproducibility & distribution |
| 38 | +- Byte-identical primary outputs and a canonical-JSON BLAKE3 receipt per run. |
| 39 | +- Prebuilt static/native binaries via a tagged release + `install.sh`; a 60-second quickstart. |
| 40 | + |
| 41 | +### Research direction |
| 42 | +- The `~√t` (square-root-space) framework is retained as honest framing for **sublinear-space index |
| 43 | + construction** (Phase D); today's index build is `O(reference)` and the contract covers call/query. |
| 44 | + See [`docs/OPEN_PROBLEMS.md`](docs/OPEN_PROBLEMS.md). |
| 45 | + |
| 46 | +[0.1.0]: https://github.com/logannye/rosalind/releases/tag/v0.1.0 |
0 commit comments