feat(rivet): V-closure traceability gate + promote 16 lagging requirements (v0.6.0 D3) - #228
Open
avrabe wants to merge 1 commit into
Open
feat(rivet): V-closure traceability gate + promote 16 lagging requirements (v0.6.0 D3)#228avrabe wants to merge 1 commit into
avrabe wants to merge 1 commit into
Conversation
…ments (v0.6.0 D3) The release-completeness gate asks 'does every approved/implemented artifact have its V closed?' — answerable only if requirement statuses track their verification artifacts. They had drifted: 16 requirements carried a 'verified' VER-* while still reading 'implemented'/'proposed' themselves — the whole verified driver suite (adc/can/dac/i2c/pwm/spi/wdg/dma/breadth), gpio, timer, the syscall seam, the executor, DMA-async, I-ISO and tri-track. The gate misreported them as not-done: it erred safe, but it lied, and nothing stopped it recurring. tools/check-v-closure.py fails when a requirement's matching VER-* is 'verified' while the requirement is not (paired by id). Red-tested: it reported exactly those 16 before the fix and is green after. Each promotion was checked against the VER artifact's evidence (Kani counts, Renode content-gates, silicon captures, stated kill-criteria) — not bulk-flipped. rivet validate PASS (334 warnings, unchanged); the diff is exactly 16 status lines. Wired as .github/workflows/rivet-v-closure.yml on artifacts/ changes, so this class of drift cannot recur silently — same shape as the gale#214 WIT-drift gate. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
First workstream of the v0.6.0 plan (#227) — sequenced first deliberately: until the completeness gate tells the truth, "is v0.6.0 cuttable?" isn't a question rivet can answer.
The drift
The release gate asks whether every approved/implemented artifact has its V closed. That's only answerable if requirement statuses track their verification artifacts — and they'd drifted. 16 requirements carried a
verifiedVER-*while still readingimplemented/proposedthemselves:REQ-DRV-{ADC,CAN,DAC,I2C,PWM,SPI,WDG,DMA,BREADTH,GPIO,TIMER}-001·REQ-OS-{SYSCALL,EXEC,ISO,TRITRACK}-001·REQ-DMA-ASYNC-001The gate read all of them as not done. It erred safe — but it misreported, and nothing prevented recurrence.
The gate
tools/check-v-closure.pyfails when a requirement's matchingVER-*(paired by id) isverifiedwhile the requirement is not.V-closure traceability: OK — 22 REQ/VER pairs, no requirement lags its closed V..github/workflows/rivet-v-closure.ymlonartifacts/changes — same shape as the gale#214 WIT-drift gate.The promotions were checked, not bulk-flipped
Each
VER-*was read for real evidence before promoting: Kani harness counts (gpio 4/4, timer 3/3 — confirmed against the driver sources), Renode register-effect content-gates, silicon captures, and stated kill-criteria.REQ-DMA-ASYNC-001(the oneproposed → verifiedjump I trusted least) cites the concretedma_poll_completesplit-phase export, the FSM transition with barrier emission, an unchanged TCB, and its own kill-criterion.rivet validate→ PASS (334 warnings, unchanged). The diff is exactly 16 status lines — nothing else touched.🤖 Generated with Claude Code