test(phase-5): corpus verifier follow-ups (veto-less auto case, derived region assertion, documented digest)#22
Merged
Conversation
…stry-derived region assertion, documented digest Non-blocking follow-ups from the threads-uqx.13 verified-loop iteration-2 report (PR #21): 1. Add an AutoRegression { veto: null } valid corpus case — a legal configuration the harness supported but the corpus never exercised; pins the hardened wire shape (veto key present, null resolves to no window). 2. Derive the all-regions coverage assertion from SurfaceRegionRegistry::default_registry().descriptors() so a future built-in region flags corpus staleness instead of passing silently. 3. Document the pinned canonical SHA-256 next to the generation command in specs/PHASE-5-APPROVAL-SEMANTICS.md, including the trailing-newline nuance. Corpus digest moves once: 4ebe9d63398e6b14f2a097ce66197c96a577559984515ce03ce4297c0b0c7e10. Validation: corpus tests 4/4, full crate suite 176+17+4+14 green, fmt clean, clippy -D warnings clean; emitted-artifact digest reproduced via tr -d '\n' | shasum. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Updates the Phase 5 synthetic retired-Ward corpus verification suite to cover an additional legal auto_regression configuration ("veto": null), tighten the “all built-in regions are covered” assertion by deriving expected regions from the registry, and document the updated canonical corpus digest in the Phase 5 semantics spec.
Changes:
- Add a new valid corpus case for
AutoRegression { veto: null }and update label coverage assertions accordingly. - Derive the expected built-in region IDs from
SurfaceRegionRegistry::default_registry().descriptors()rather than hardcoding region names. - Update
specs/PHASE-5-APPROVAL-SEMANTICS.mdto record the new pinned SHA-256 and clarify newline handling for reproduction.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| specs/PHASE-5-APPROVAL-SEMANTICS.md | Documents the new canonical corpus SHA-256 and how to reproduce it accurately. |
| crates/coven-threads-core/tests/support/phase5_retired_ward_corpus.rs | Adds the new "auto-no-veto" valid corpus case with an explicit "veto": null. |
| crates/coven-threads-core/tests/phase5_retired_ward_corpus.rs | Extends corpus coverage assertions (extra case, null-veto check) and derives expected region coverage from the registry. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+112
to
+114
| // The explicit `veto: null` case pins the hardened wire shape: the key is | ||
| // required for auto_regression, and a null value resolves to no window. | ||
| assert!(cases[1]["approval"]["veto"].is_null()); |
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.
Summary
Lands the three non-blocking follow-ups from the
threads-uqx.13verified-loop iteration-2 report (#21 verdict comment):AutoRegression { veto: null }corpus case — legal config the harness supported but the corpus never exercised. The explicit"veto": nullpins the hardened wire shape from feat(phase-5): harden approval, identity, replay, and audit core #15 (deserialize_required_veto: key required, null ⇒ no window). Labels assertion updated; a dedicated assertion pins the null-veto shape.SurfaceRegionRegistry::default_registry().descriptors()instead of hardcoding the three names, so adding a built-in region flags corpus staleness.specs/PHASE-5-APPROVAL-SEMANTICS.mdnow records the canonical SHA-256 beside the generation command, noting the digest excludes the example's trailing newline (with atr -d '\n' | shasum -a 256recipe).Corpus digest moves once to
4ebe9d63…7e10(new case changes canonical JSON).Validation
cargo test -p coven-threads-core --test phase5_retired_ward_corpus— 4/4cargo test -p coven-threads-core— 176+17+4+14 pass / 0 failcargo fmt --check+cargo clippy --all-targets -- -D warnings— cleancargo run -q … | tr -d '\n' | shasum -a 256⇒ pinned valueTest/spec-only: no runtime authority logic touched.