docs(release): explain require: coverage semantics — coverage-rules ≠ every V-level (#612)#663
Merged
Merged
Conversation
… ≠ every V-level `rivet release status` under `require: coverage` (REQ-240, #612) greens when the configured coverage-rules pass — which is not the same thing as "every verification level is present". The ASPICE `swe1-has-verification` rule ships as "≥ 1 of {sw-verification, unit-verification, sw-integration-verification}" at severity: warning, so a `sw-req` with just formal + system verification passes the rule and counts as ready even though `rivet validate`'s granular breakdown still lists the per-level gaps as info. Both are internally correct; they answer different questions. `docs/release-status.md` documents the reference semantics of the two readiness knobs, pins the ≥ 1-vs-per-level distinction with a concrete before/after table using aspice's built-in rule, and names the choice an ASIL-D project should make when the ≥ 1 warning is not strict enough: tighten the coverage-rules (split into per-level at severity: error) rather than reinterpret the command. The `rivet release status --help` doc-comment now points readers at the doc. Confirmed by @avrabe on gale (967 artifacts, v0.23.0): ready-when and require: coverage both green the gate; require: coverage matches schema-level rule semantics, not per-level V-closure. Docs precision note was the last remaining sliver. Refs: REQ-240 Refs: #612 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JCRFEHiCTnJArCQvkNvJMH
📐 Rivet artifact deltaNo artifact changes in this PR. Code-only changes (renderer, CLI wiring, tests) don't touch the artifact graph. |
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'Rivet Criterion Benchmarks'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.
| Benchmark suite | Current: 14ce9cc | Previous: c7a59b3 | Ratio |
|---|---|---|---|
store_insert/10000 |
15859127 ns/iter (± 756215) |
13019488 ns/iter (± 389061) |
1.22 |
link_graph_build/10000 |
38228947 ns/iter (± 2003450) |
24716536 ns/iter (± 1658759) |
1.55 |
This comment was automatically generated by workflow using github-action-benchmark.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #612 (the docs sliver — the implementation of
ready-when+require: coveragealready landed in REQ-240 / #641 and was confirmed working on gale).What
rivet release statusunderrequire: coverage(REQ-240, #612) greens when the configured coverage-rules pass — which is not the same thing as "every verification level is present". The ASPICEswe1-has-verificationrule ships as "≥ 1 of{sw-verification, unit-verification, sw-integration-verification}" atseverity: warning, so asw-reqwith just formal + system verification passes the rule and counts as ready even thoughrivet validate's granular breakdown still lists the per-level gaps as info. Both are internally correct — they answer different questions:rivet release statusunderrequire: coverageswe1-has-verificationrule pass? (≥ 1 measure)rivet validategranular breakdownAn ASIL-D (or DAL-A, IEC 62304 Class C) project that wants the gate to mean full per-level V-closure should express that in the schema's coverage-rules — split the ≥ 1-of-many rule into per-level rules at
severity: error, or author project-specific coverage-rules — rather than reinterpret the command.Changes
docs/release-status.md(new,type: reference/status: current) — reference doc forrivet release status, therelease:config, and the two readiness knobs. The precision note is the central section: it names the ≥ 1-vs-per-level distinction, gives a concrete before/after table using aspice's built-in rule (mirroring @avrabe's own gale confirmation matrix on docs: clarifyrequire: coveragesemantics — coverage-rules satisfied ≠ every V level present #612), and points ASIL-D projects at the schema-tightening options.rivet-cli/src/main.rs— theStatuscommand's doc-comment (drivesrivet release status --help) now cites REQ-240 / docs: clarifyrequire: coveragesemantics — coverage-rules satisfied ≠ every V level present #612, distinguishes the built-in status-only path fromready-whenandrequire: coverage, and points readers atdocs/release-status.mdfor the precision note.Acceptance criteria (from #612 last comment, 17:37 UTC 2026-07-02)
docs/release-status.mdgrows a section explainingrequire: coverage== "the configured coverage-rules are satisfied", NOT "every verification level is present". Concrete before/after example using an aspice-shapedswe1-has-verificationwarning-severity ≥ 1 rule.ready-when: [approved]/require: coverage) on eleven aspice-flavouredsw-reqartifacts, matching @avrabe's gale confirmation shape.severity: error) rather than rely on the built-in ≥ 1 warning — otherwise the green can overstate readiness.severity: error.rivet release status --help(orrivet.yaml --explain/rivet docs release) points to the new section.Statusdoc-comment inrivet-cli/src/main.rsnow lands in--helpwith the precision note summary and an explicitsee docs/release-status.mdpointer. Verified live:./target/release/rivet release status --helpprints the pointer.rivet validatePASS.docs/golden-file harness exists (rivet docs checkis the closest — validates frontmatter and reference invariants, not content golden files). PASS on both mechanical gates:rivet validatePASS (450 warnings, unchanged frommain),rivet docs checkPASS (60 files scanned, 0 violations). Internal links checked by hand:docs/schemas.md,docs/verification.md, REQ-240, and #612 all resolve.Refs: REQ-XXX(the REQ anchoring the v0.23.0 release-readiness widening),Refs: #612.Refs: REQ-240(REQ-240 anchors ready-when + require-coverage per the commit61e297d) andRefs: #612. Exempt fromImplements:because this PR is docs-only under CLAUDE.md'sdocsexempt type;Refs:carries the traceability.require: full-v-closure(per-level) mode.Blog process pre-check
Re-fetched
https://pulseengine.eu/blog/at the start of this run. The blog carries the spec-driven-development / oracle-gated post that's already reflected in rivet's conventions; no team-workflow / branching / PR-flow / testing-conventions post overrides this PR.Test plan
rivet validateon the rivet repo — PASS (450 warnings, unchanged frommain).rivet docs checkon the rivet repo — PASS (60 files, 0 violations).cargo fmt --all --check— clean.cargo clippy -p rivet-cli --release --bins -- -D warnings— clean (the pre-existing MSRV mismatch betweenclippy.tomlandCargo.tomlis untouched by this PR)../target/release/rivet release status --helprenders the new doc-comment with the REQ-240 / docs: clarifyrequire: coveragesemantics — coverage-rules satisfied ≠ every V level present #612 reference and thedocs/release-status.mdpointer.docs/release-status.mdtop-to-bottom on the assumption you're a new ASIL-D adopter — every design choice (ready-when,require: coverage, the ≥ 1-vs-per-level distinction) should be actionable from the page alone.Not this PR
require: coveragecomputes — the command's contract stays exactly as REQ-240 shipped (schema coverage-rule satisfaction, purely additive toverified/accepted/ready-when).require: full-v-closureper-level mode — an ASIL-D project can already reach that meaning by tightening the schema's coverage-rules; the doc names how.require: coveragesemantics — coverage-rules satisfied ≠ every V level present #612 further; the docs sliver was the last remaining item on it.Commit trailer:
Refs: REQ-240,Refs: #612(docs is an exempt type per CLAUDE.md's commit-traceability section).Generated by Claude Code — issue-triage agent run 2026-07-02.
Generated by Claude Code