fix(schema): restore accepted to canonical status enum (#522)#525
Draft
avrabe wants to merge 1 commit into
Draft
fix(schema): restore accepted to canonical status enum (#522)#525avrabe wants to merge 1 commit into
accepted to canonical status enum (#522)#525avrabe wants to merge 1 commit into
Conversation
v0.16.0 declared the canonical status lifecycle in common.yaml (REQ-162, PR #419) but dropped `accepted` — the documented terminal state for `design-decision` / `external-anchor` / requirement-meta artifacts. Downstream stores that followed the documented chain (`... -> verified -> accepted`) flipped from PASS to FAIL on the 0.15 -> 0.16 bump with no migration path; the jess hardware-integration store hit 12 of 21 errors from this alone. Re-add `accepted` to the canonical enum and document its terminal role in the inline schema comment so the published lifecycle and the validator agree again. The `status-allowed-values` guard still fires on genuinely typo'd values — covered by the new regression test `common_status_accepts_accepted_and_still_rejects_typos`, which also asserts via `Schema::base_fields` that the introspection surface and the diagnostic see the same set. Slice 2 of #522 only. Out of scope (filed separately): slice 1 (`rivet migrate` / `validate --fix` status remap with default-mapping policy for `open` / `resolved` in `ai-found-defect`); slice 3 (per-schema status enums so `ai-found-defect` can keep its `open`/`triaged`/`resolved` triage vocabulary distinct from the document lifecycle). Note: the pulseengine.eu/blog/ workflow guidance was 503 throughout this run (carried symptom flagged across the recent triage threads on #420, #522, #516, …), so this PR ships as a draft for maintainer review against the authoritative process posts once the blog is reachable. Fixes: REQ-162 Refs: #352, #419, #522
This was referenced Jun 10, 2026
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: 117e9c7 | Previous: e60a3a9 | Ratio |
|---|---|---|---|
traceability_matrix/1000 |
60573 ns/iter (± 233) |
43193 ns/iter (± 499) |
1.40 |
query/10000 |
352846 ns/iter (± 3939) |
236806 ns/iter (± 4501) |
1.49 |
This comment was automatically generated by workflow using github-action-benchmark.
📐 Rivet artifact deltaNo artifact changes in this PR. Code-only changes (renderer, CLI wiring, tests) don't touch the artifact graph. |
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 #522 — first slice only (slice 2: re-add
accepted).Why
v0.16.0 declared the canonical status lifecycle in
schemas/common.yaml(REQ-162, #352, #355, PR #419) but droppedaccepted, the documented terminal state fordesign-decision/external-anchor/ requirement-meta artifacts. Stores that followed the published chain… → verified → acceptedflipped from PASS to FAIL on the 0.15 → 0.16 bump with no migration path — the jess hardware-integration store hit 12 of 21 errors from this alone.This restores
acceptedto the enum and documents its terminal role in the inline schema comment. It does not widen the typo-guard: a genuinely off-vocabulary status (implmented) still firesstatus-allowed-values, which the regression test asserts as a negative control.Acceptance criteria (from #522)
schemas/common.yamlcanonical status enum re-includesacceptedalongsideverified/released/deprecated/rejected, with a one-line schema comment namingacceptedas the documented terminal state for design-decision / external-anchor / requirement-meta artifacts (schemas/common.yaml:43-67).design-decisionwhosestatus: acceptedvalidates cleanly —common_status_accepts_accepted_and_still_rejects_typosinrivet-core/tests/schema_validation_rules.rsbuilds aStorewithDD-ACCEPTED(statusaccepted) andDD-TYPO(statusimplmented), runsvalidate(...), and asserts the former produces zerostatus-allowed-values/allowed-valuesdiagnostics while the latter still produces exactly one.rivet schema info common/rivet schema show commonprintsacceptedin the allowed-values list — the test also asserts thatSchema::base_fields(the introspection surface thatschema info/schema showquery) reportsacceptedamong thestatusfield'sallowed-values, so the diagnostic and the introspection layer can't drift again. (CLI surfacing of base-field allowed-values inschema show TYPEoutput is a separate UX gap that doesn't block slice 2.)rivet validatePASS on the rivet repo —Result: PASS (271 warnings)post-rebase againstorigin/main(e60a3a9).cargo test -p rivet-core --test schema_validation_rulesgreen — all 6 tests pass including the new regression (common_status_accepts_accepted_and_still_rejects_typos ... ok).cargo test -p rivet-cli --bin rivet: 125/125 pass. (Note: the pre-existingrivet_core::externals::tests::is_working_tree_dirty_detects_tracked_edits_not_untrackedlib test fails on this sandbox on a clean checkout of main as well, so it's a sandbox flake unrelated to this slice.)cargo fmt --checkclean;cargo clippy --all-targets -- -D warningsclean (exit 0; only pre-existing MSRV-mismatch meta warning fromclippy.toml).Fixes: REQ-162+Refs: #352, #419, #522(on117e9c7).Out of scope (per #522 body — file separately)
rivet migratestatus-remap /validate --fixwith a default-mapping policy foropen/resolvedfromai-found-defect— needs a distinct command and a policy decision.ai-found-defectcan keep itsopen/triaged/resolvedtriage vocabulary distinct from the document lifecycle — schema-level discriminator vs. dedicated enum is its own design call.rivet 0.16.0 upgradedocs page.Why this is a draft
The hard rule in the triage workflow requires consulting https://pulseengine.eu/blog/ before opening a PR — process posts there are authoritative. The blog has been HTTP 503 throughout this run (and across the recent triage threads on #420, #522, #516, …, per the carried side-rail note). I couldn't verify against the published process posts, so the PR is parked as a draft pending maintainer review against that guidance once the blog is reachable.
Slice 2 itself is otherwise complete: one-line schema addition + 6-line comment, regression test (positive + negative control), CHANGELOG entry.
Generated by Claude Code — issue-triage agent run 2026-06-10.
Generated by Claude Code