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.

[0.3.0] - 2026-05-05

Added

  • Added impact-aware Blitz.MixWorkspace.Impact planning and execution for task-state based workspace CI.
  • Added .blitz/test_state_v1 persistence with a compact exact task-state index for passed-result reuse.
  • Added deterministic project, dependency, command, environment, and workspace hashing for Mix workspace tasks.
  • Added mix blitz.workspace.impact for dry-runs, forced runs, and base/head change planning.
  • Added mix blitz.test_state.prune for manual compact-store cleanup.
  • Added clean-commit pipeline manifests for fast run_many! skips when an identical clean workspace CI pipeline has already passed.
  • Added clean-baseline ledgers for baseline-aware dirty workspace planning.
  • Added machine-readable decision coverage sources for exact task-state, clean-baseline, impacted, forced, and missing-baseline outcomes.
  • Added unlocked Git dependency safeguards so unpinned Git dependencies without lockfile entries do not receive reusable deterministic skip evidence.
  • Added guides for impact CI, persisted test state, and downstream integration.

Changed

  • Expanded HexDocs extras and package files to include the new guides.
  • Changed default test-state retention from audit-style append streams to a compact local cache. Append-only results.ndjson and per-commit streams are now opt-in with BLITZ_TEST_STATE_RETENTION=audit.
  • Changed Blitz.MixWorkspace.Impact.run_many!/3 to snapshot workspace state once for the whole task list instead of replanning each task independently.
  • Changed dirty-worktree planning to skip unimpacted project/task states when the current task state is covered by the latest clean baseline.
  • Changed project dependency snapshots to include parsed mix.lock entries where available while still treating local path dependencies as source fingerprints.
  • Changed deps_get task-state hashing to use dependency declaration state instead of dependency execution state, so local path dependency source edits do not force dependency fetches for reverse dependents.
  • Changed dry-run baseline skip text to distinguish clean-baseline coverage from exact dirty-state memoization, including the coverage source and baseline availability for each decision.

Fixed

  • Ignored .blitz/** in git dirty-state, changed-file, and repo-file discovery so the test-state store cannot make itself look like impacted source input.
  • Fixed mix.lock changes so lockfile output churn does not automatically select deps_get; dependency-sensitive tasks still rerun for the owning project and reverse local dependents.
  • Fixed source-change impact planning so deps_get stays skipped unless a dependency declaration or project mix.exs changes.
  • Fixed first dirty-run coverage for child README and source edits with root test splitting, including root projects that depend on child path packages.
  • Fixed workspace invalidator handling so files such as build_support/dependency_resolver.exs and build_support/workspace_contract.exs are fingerprinted into the workspace task state and cannot be hidden by previously covered exact task states.

[0.2.0] - 2026-04-07

Changed

  • Enriched Blitz.Result with bounded output_tail, explicit failure_kind, and structured failure metadata used by Blitz.Error.
  • Reworked Blitz.Error to render actionable failure summaries with command, cwd, duration, reason, and a bounded output excerpt.
  • Changed timeout handling to return structured timeout failures instead of exiting the caller process.

Fixed

  • Preserved the last output lines for failing commands so callers do not need a second repro to inspect the likely root cause.
  • Reported worker crashes distinctly from normal non-zero command exits.

[0.1.0] - 2026-03-19

Added

  • Initial release.