diff --git a/CHANGELOG.md b/CHANGELOG.md index e1baa0d..0aed9b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,9 @@ Notable user-visible changes are recorded here, newest first. ## [Unreleased] -## [0.14.0] - Unreleased +## [0.14.0] - 2026-10-29 -Release preparation; no tag or publication yet. See [draft release notes](docs/releases/v0.14.0.md). +See the [release notes](docs/releases/v0.14.0.md). - Add explicit agent attribution from LiteLLM `agent_id` or prefixed request tags on LiteLLM and Langfuse, with exclusive known/unknown/ambiguous totals, diff --git a/docs/releases/v0.14.0.md b/docs/releases/v0.14.0.md index ae362fd..e7082eb 100644 --- a/docs/releases/v0.14.0.md +++ b/docs/releases/v0.14.0.md @@ -1,7 +1,6 @@ # fleetdiff v0.14.0 -Draft release preparation. Not tagged or published; merge, tagging and release -each require maintainer approval. +Released October 29, 2026. Compare two periods of LiteLLM spend logs or Langfuse exports to see which recorded agents drove token and spend changes. Choose an explicit agent ID or @@ -52,8 +51,7 @@ No new runtime dependency is introduced. ## Publication Gates -Follow [RELEASING](../RELEASING.md). Finalize these draft notes and the changelog -date only after release approval. Published archives, checksums, SBOM/provenance, +Follow [RELEASING](../RELEASING.md). Published archives, checksums, SBOM/provenance, anonymous installer tests, packaged-binary and pinned database checks, and site version/provenance verification cannot pass from an unpublished local checkout. Site re-pinning and the new agent guide remain unpublished until the released diff --git a/examples/litellm-spend/test_docs.py b/examples/litellm-spend/test_docs.py index f837cb6..4d2c6c6 100644 --- a/examples/litellm-spend/test_docs.py +++ b/examples/litellm-spend/test_docs.py @@ -101,7 +101,9 @@ def test_v014_preparation_and_agent_guide(self): notes = (ROOT / "docs/releases/v0.14.0.md").read_text() self.assertIn("## Breaking Routing Label Disclosure", notes) self.assertIn("--show-labels --acknowledge-sensitive-labels", notes) - self.assertIn("Not tagged or published", notes) + self.assertIn("Released October 29, 2026.", notes) + self.assertNotIn("Not tagged or published", notes) + self.assertIn("until the released\nartifact checks pass", notes) def test_langfuse_guide_release_pins(self): readme = (ROOT / "README.md").read_text()