plan(v0.61): scope the release — "the capability exists; aim it where it is needed" (6 artifacts) - #1094
Merged
Conversation
… it is needed" (6 artifacts) FIRST RELEASE ON THE PER-REQUIREMENT LAYOUT (#1059). Six files under artifacts/release-v0.61/, one per requirement, beside the comments-only _release.yaml. Verified empirically on the CI-pinned rivet 0.23.0 BEFORE bumping the floor: 473 -> 479 with all six ids visible in `rivet list` and 0 OURS validation errors — so the directory is genuinely recursed rather than silently skipped, which is the #1064 shape this layout is built against. ARTIFACT_FLOOR 473 -> 479 in this same commit (visible-diff rule). THE THEME, and it is not a slogan — it is what v0.60 measured about itself four times: THE MECHANISM ALREADY EXISTS AND IS POINTED SOMEWHERE ELSE. The strict YAML loader existed, just not on the ledger every other claim is checked against. `rivet coverage` runs in a required job, and prints instead of asserting. The status gate asks whether evidence exists, never which release it came from. And now #1093: the `(params, results)` arity check exists on aarch64 and on neither of the other two selectors. That is a different failure mode from "we lacked a check", and it wants a different remedy — audit where existing gates POINT, rather than adding new ones. RQ-61-MVPANIC (#1093) two of three backends PANIC on a spec-suite multi-value `if`; aarch64 declines with a named reason. MEASURED CORRECTION to the report: rv32 does NOT decline cleanly, it panics at its own site with the identical message — the same defect independently present in two selectors. 7 of 8 invocation paths panic, `--no-optimize` helps nowhere, and `(param i32 i32)` appears 10 times in the if.wast v0.60.0 vendors. Fix = port the arity check, a LOUD DECLINE, not multi-value support. RQ-61-VCLOSURE (#1091) 60/60 release artifacts across v0.56-v0.60 carry no `verifies` link and `rivet coverage` exits 0 at 40.1%. RQ-61-EVIDENCE (#1085) R7 evidence must belong to the release, R8 the `release:` field must equal the file's version (6 live mismatches), R9 a `contains:` into crates/** is weaker than the gate that exercises it. RQ-61-IMMRANGE (#1072) six debug_assert-guarded immediate ranges compiled out in release. Carries the transferable v0.60 finding: increasing REACH converts LATENT encoder defects into REACHABLE ones, and reach work should budget for that. RQ-61-WASMOP (#1057) the proof-inventory universe is the Rocq constructor set, so the ops gale actually meets get no row at all — in a manifest whose point is that absence should be legible. Ordering put to the consumer, not decided here. RQ-61-CICAP (#1062) six of nine required contexts on ubuntu-latest while seven rust-cpu runners idle, isolated by a natural experiment: four PRs each stalled at exactly 3/9, and the three that passed were the three self-hosted ones. All six are `proposed` with a `done-when`. None is `implemented`: nothing has been built yet, and the v0.60 lesson is that a status is a claim about evidence, not about intent. Gates: status-evidence 0 failures (66 artifacts / 11 release files / 14 done-when predicates) · claim_check 52/52 · tests OK · proof_inventory --check ok · every new file duplicate-key strict-clean · _release.yaml still comments-only. Refs #1093, #1091, #1085, #1072, #1062, #1057, #242. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L
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.
Refs #1093, #1091, #1085, #1072, #1062, #1057, #242.
First release on the per-requirement layout (#1059) — six files under
artifacts/release-v0.61/, one per requirement, beside the comments-only_release.yaml.Verified empirically on the CI-pinned rivet 0.23.0 before bumping the floor: 473 → 479 with all six ids visible in
rivet listand 0 OURS validation errors. So the directory is genuinely recursed rather than silently skipped — which is the #1064 shape this layout exists to prevent.ARTIFACT_FLOOR473 → 479 in the same commit (visible-diff rule).The theme is what v0.60 measured about itself, four times
The mechanism already exists and is pointed somewhere else.
claims.yaml, the file every other claim is checked against (claims.yaml has a duplicatereason:key: a +622-line waiver is recorded with a +10-line justification, and claim_check passes #1087).rivet coverageruns in a required job — and prints instead of asserting (The traceability completeness gate has never fired: 60/60 release artifacts across v0.56-v0.60 have no linked sys-verification, and 'rivet coverage' prints instead of asserting #1091).ifwith block parameters — spec-suite if.wast 'params'; aarch64/rv32 decline cleanly, and --no-optimize does NOT avoid it #1093: the(params, results)arity check exists on aarch64 and on neither of the other two selectors.That is a different failure mode from "we lacked a check", and it wants a different remedy: audit where existing gates point, rather than adding new ones.
Scope
RQ-61-MVPANICifRQ-61-VCLOSUREverifieslink; coverage exits 0 at 40.1%RQ-61-EVIDENCErelease:== file version · R9 gate > code pathRQ-61-IMMRANGEdebug_assertimmediate ranges compiled out in releaseRQ-61-WASMOPRQ-61-CICAPubuntu-latestwhile sevenrust-cpurunners idleA measured correction inside
RQ-61-MVPANICThe report says rv32 declines cleanly. It does not — it panics at its own site with the identical message, so this is the same defect independently present in two selectors, not one backend missing a guard. 7 of 8 invocation paths panic,
--no-optimizehelps nowhere (contradictingrun_supported.sh's documented workaround), and(param i32 i32)appears 10 times in theif.wastthat v0.60.0 vendors.The fix is a loud decline, not multi-value support — same policy as #1013: match the existing refusal, don't invent one.
Status discipline
All six are
proposedwith adone-when. None isimplemented— nothing has been built, and v0.60's lesson is that a status is a claim about evidence, not about intent.Gates
🤖 Generated with Claude Code
https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L