From 0ef17f27cc425a5603ad8e22e22bfdfc4dd19728 Mon Sep 17 00:00:00 2001 From: Ralf Anton Beier Date: Wed, 1 Jul 2026 19:06:48 +0200 Subject: [PATCH] =?UTF-8?q?chore(release):=20v0.23.0=20=E2=80=94=20Traceab?= =?UTF-8?q?ility=20evidence=20(REQ-236..242)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Six verified requirements make the requirement -> verification -> test chain drift-proof and the validator's signals consistent: - REQ-236 (#556): `rivet check verification-evidence` named-test-exists oracle - REQ-237 (#350): lifecycle gap names the ASPICE verification chain - REQ-239 (#577): validator <-> commit-trailer parser id-shape parity - REQ-240 (#612): configurable release readiness (ready-when + coverage) - REQ-241 (#620): validate and validate --direct produce identical output - REQ-242 (#603): default marker scan reaches workspace member crates Plus the REQ-238 forward-trace mechanism (`rivet trace-results`); the graphical dashboard view is deferred to v0.24 (retagged here). `rivet release status v0.23.0` -> cuttable (6/6 verified). validate PASS, docs check 0 violations. Trace: skip Co-Authored-By: Claude Opus 4.8 --- CHANGELOG.md | 50 +++++++++++++++++++++++++++++++++++++ Cargo.lock | 6 ++--- Cargo.toml | 2 +- artifacts/requirements.yaml | 4 +-- vscode-rivet/package.json | 2 +- 5 files changed, 57 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c3697c..93bdc47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,56 @@ ## [Unreleased] +## [0.23.0] - 2026-07-01 + +Theme: **Traceability evidence** — make the requirement → verification → test +chain mechanically drift-proof, and make the validator's own signals +trustworthy and consistent. Six requirements, each shipped with a regression +test proven to fail without the fix. Planned, executed, and gated entirely with +rivet's own `release:` tooling. + +### Added +- **`rivet check verification-evidence`** (REQ-236, #556) — a named-test-exists + oracle. A verification step commonly ties a requirement to a test via + `fields.steps[].run: "cargo test -p X some_test"`, but `cargo test typo` + exits 0 with "0 passed", silently keeping the requirement `verified`. This + asserts every named cargo-test filter matches a real test in the scanned Rust + sources; a missing test fails the check. +- **`rivet trace-results `** (REQ-238, #547) — the forward req → test-result + trace: from a requirement, walk backlinks (through the ASPICE V) to the tests + that cover it and their latest pass/fail, with a roll-up verdict. Text or + JSON; exits non-zero on a failing covering test. The graphical dashboard view + built on this JSON is scoped to v0.24. +- **`release:` readiness is configurable** (REQ-240, #612) — `rivet.yaml`'s + `release.ready-when: […]` extends the release-ready status set, and + `release.require: coverage` derives readiness from validate V-closure so a + V-model/ASPICE project (which verifies via links, not a status flip) can green + `rivet release status`. Purely additive; defaults unchanged. + +### Changed / Fixed +- **`rivet validate` and `rivet validate --direct` now produce identical + output** (REQ-241, #620). The substantive divergence (self-satisfying links + counted as coverage) was the v0.22.2 fix; the last residual difference (an + `--explain` hint naming a different example artifact by iteration order) is now + deterministic. +- **The default marker scan reaches member crates in a cargo workspace** + (REQ-242, #603) — a workspace whose root also has its own `tests/` (rivet + itself) previously hid member-crate `verifies` markers from `rivet verify` / + `coverage --tests`. Shared workspace-aware defaults; the two never disagree. +- **The validator and the commit-trailer parser agree on artifact-id shape** + (REQ-239, #577) — a digit-bearing prefix like `MAD1-101` is now a valid commit + ref (was rejected, forcing a rename loop), and `rivet validate` warns early + (`commit-ref-shape`) when an id can't be used as a trailer reference. +- **A lifecycle-completeness gap for a sw-req now names the ASPICE chain** + (REQ-237, #350) — instead of a bare `missing: unit-verification, …`, it points + at the required intermediate (add a `sw-detail-design` that this artifact + traces to, verified by a `unit-verification`), so authoring a direct link + isn't the first, rejected, guess. + +### Deferred +- **REQ-238's graphical dashboard trace view** → v0.24 (needs the serve/frontend + work + the Playwright E2E gate). The trace *mechanism* above ships now. + ## [0.22.2] - 2026-06-30 Theme: **Dogfooding hardening** — a focused patch from an internal bug-hunt of diff --git a/Cargo.lock b/Cargo.lock index d86a87b..9b4f4fe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1124,7 +1124,7 @@ dependencies = [ [[package]] name = "etch" -version = "0.22.2" +version = "0.23.0" dependencies = [ "petgraph 0.7.1", ] @@ -3141,7 +3141,7 @@ dependencies = [ [[package]] name = "rivet-cli" -version = "0.22.2" +version = "0.23.0" dependencies = [ "anyhow", "axum", @@ -3169,7 +3169,7 @@ dependencies = [ [[package]] name = "rivet-core" -version = "0.22.2" +version = "0.23.0" dependencies = [ "anyhow", "criterion", diff --git a/Cargo.toml b/Cargo.toml index cb79d8c..9e867b2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ members = [ exclude = ["compose-witness"] [workspace.package] -version = "0.22.2" +version = "0.23.0" authors = ["PulseEngine "] edition = "2024" license = "Apache-2.0" diff --git a/artifacts/requirements.yaml b/artifacts/requirements.yaml index 2862cfe..071b79e 100644 --- a/artifacts/requirements.yaml +++ b/artifacts/requirements.yaml @@ -7569,12 +7569,12 @@ artifacts: type: requirement title: graphical req->test-result trace view status: implemented - description: "A graphical/visual way to trace a requirement to its test results. #547. v0.23." + description: "A graphical/visual way to trace a requirement to its test results. #547. The forward-trace MECHANISM shipped (rivet-core result_trace + `rivet trace-results`, the JSON the view consumes); the graphical dashboard rendering is the remaining half and needs the serve/frontend work + Playwright E2E gate, so it is scoped to v0.24. Moved from v0.23 so v0.23 cuts on its 6 verified evidence REQs." provenance: created-by: ai-assisted model: claude-opus-4-8 timestamp: 2026-06-27T06:51:07Z - release: v0.23.0 + release: v0.24.0 - id: REQ-239 type: requirement diff --git a/vscode-rivet/package.json b/vscode-rivet/package.json index cd75b66..d4d2aab 100644 --- a/vscode-rivet/package.json +++ b/vscode-rivet/package.json @@ -3,7 +3,7 @@ "displayName": "Rivet SDLC", "description": "SDLC artifact traceability with live validation, hover info, and embedded dashboard", "publisher": "pulseengine", - "version": "0.22.2", + "version": "0.23.0", "license": "MIT", "repository": { "type": "git",