All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Automatic releases: pull-request quality checks, rolling
devGitHub packages on successful pushes tomain, and Hex package/docs publishing for non-prerelease GitHub releases whose tags matchVERSION. - Per-test-file attribution: test-only edits gate incrementally via a
compiler-tracer reference graph (
Qlover.Tracer, enabled withelixirc_options+test_elixirc_options) with transitive lib closure, focused expansion runs, and fresh-export union. Non-code fixture changes and tests without reference data still fall back to the full suite, fail-closed. - Baseline format v4 (non-test gate inputs, per-test-file hashes, reference snapshot, lib edge graph). Older baselines are treated as invalid and trigger one full re-baseline.
- Beam hashing ignores path-volatile chunks (
Dbgi,Docs,CInf,ExCk,Line): identical sources hash equally in any checkout and pure line shifts need no fresh proof. Unreadable beams fall back to raw content hashes. MIX_ENV=testguard on both tasks (same rule asmix testitself), withpreferred_envssetup documented for host projects.- Second scratch export (
--expansion-export) for the focused expansion run; both exports are unioned (same code version) and cleaned up. The expansion run passes--no-staleso hosttestaliases that inject--stalecannot silently empty its explicit file list, and compiled support files are excluded from it (requiring them would reload plain code over instrumented code and zero their coverage). examples/demo: runnable 48-test shop pluscompare.shmeasuring full-suite vs incremental across 11 scenarios (table inREADME.md); exits non-zero on any verdict mismatch. Now also carries a hostiletest: ["test --stale"]alias mirroring the labqoat convention, proving qlover's explicit--no-stale-first argv cannot be shrunk by it.- Shared content-addressed cache (
QLOVER_CACHE_DIR, default~/.cache/qlover): snapshots write through under content keys, missing baselines fetch and heal locally, tracer records merge across directories. Verified with a cross-directory gating test.
[0.1.0] - 2026-09-17
Added
mix qlovergate task with three modes:--eligible,--write-baseline, and default gating of changed beams on fresh line coverage alone.mix test.qloversingle-command runner: stale + gate when eligible, full + snapshot otherwise, with test-arg passthrough, managed-flag rejection, and fail-closed subprocess exit codes.cover.shdelegates to it.- Hermetic test suite (33 tests) covering baseline roundtrip, eligibility, gate-input drift, changed-beam pass/reject, missing export, deleted-beam pruning, single-command orchestration, and fail-closed error paths.
- Hex packaging metadata, Apache-2.0 license, and documentation.