docs(roadmap): 10-persona review + REQ-093..099 + REQ-100 (externals: kind) + REQ-101 (verify gate)#326
docs(roadmap): 10-persona review + REQ-093..099 + REQ-100 (externals: kind) + REQ-101 (verify gate)#326avrabe wants to merge 3 commits into
Conversation
…ack) File the 10-persona-review synthesis as the v0.14.0+ roadmap doc and the seven REQs that come out of it. The shape is universal-LIKE / universal-DISLIKE matrices, Carrasco's hybrid flip-conditions, and an end-to-end mapping from each persona finding to a falsifiable REQ. REQs filed (every Acceptance step is shell-testable): - REQ-093 — implement the three FUTURE oracles (asil-decomposition, coverage-threshold, method-table-compliance). Turn ISO 26262 narrative into mechanical checks. - REQ-094 — `rivet release-verify <tag>` reproducible-build + cosign sigstore verification end-to-end. - REQ-095 — `cargo build` invokes `rivet validate` for crates with a `rivet.yaml` — born-compliant at the compile step (Carrasco named this as the biggest MBSE-philosophy win). - REQ-096 — SACM 2.x typed safety-case schema with deductive- sufficiency rules (compliance trace != safety case). - REQ-097 — DO-330 TQP/TOR/TVCP/TCI/TAS as a typed schema, dogfooded by rivet's own qualification dossier. - REQ-098 — independence-of-verification-layers oracle. Refuse product-of-miss-rates claims when shared-code intersection exceeds threshold. The common-mode-failure finding made mechanical. - REQ-099 — `rivet_apply` MCP tool with idempotency keys + atomic transactions + auto-reload + post-state diagnostics. Ports the F2 silent-failure ethos (REQ-082) to mutation. Deliberately NOT filed: a v1.0 readiness gate. Per direction, we see how far we can progress through the v0.14.0+ backlog without pre-committing to a 1.0 milestone; 1.0 ships when the natural state of the work meets Carrasco's flip-condition (b), not when a calendar says so. Implements: REQ-093, REQ-094, REQ-095, REQ-096, REQ-097, REQ-098, REQ-099 Refs: REQ-091, REQ-092 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
📐 Rivet artifact delta
Graphgraph LR
REQ_093["REQ-093"]:::added
REQ_094["REQ-094"]:::added
REQ_095["REQ-095"]:::added
REQ_096["REQ-096"]:::added
REQ_097["REQ-097"]:::added
REQ_098["REQ-098"]:::added
REQ_099["REQ-099"]:::added
REQ_100["REQ-100"]:::added
REQ_101["REQ-101"]:::added
classDef added fill:#d4edda,stroke:#28a745,color:#155724
classDef removed fill:#f8d7da,stroke:#dc3545,color:#721c24
classDef modified fill:#fff3cd,stroke:#ffc107,color:#856404
classDef overflow fill:#e2e3e5,stroke:#6c757d,color:#495057,stroke-dasharray: 3 3
Added
Posted by |
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: 6af726e | Previous: 89f243c | Ratio |
|---|---|---|---|
store_insert/10000 |
15994056 ns/iter (± 745990) |
12242554 ns/iter (± 359791) |
1.31 |
validate/10000 |
15309267 ns/iter (± 848876) |
12155462 ns/iter (± 114767) |
1.26 |
traceability_matrix/100 |
5486 ns/iter (± 32) |
4377 ns/iter (± 23) |
1.25 |
This comment was automatically generated by workflow using github-action-benchmark.
… upstreams Adds an optional `kind:` field under `externals:` entries (default `rivet`, new value `source`) so a rivet project can declare an external as "raw source, not a rivet project." Today every external is treated as a rivet project; cloning eclipse-score / sphinx-needs / DOORS-export / plain-code upstreams produces 58 WARN lines of missing-`rivet.yaml` noise per sync. Spotted in the eclipse-score importer workflow — generalises to any fork tracking a non-rivet upstream that feeds a converter or a source-linker. ~20 LoC + schema entry; orthogonal to the rest of the v0.14.0+ backlog. Note: the REQ-100 slot was deliberately left free earlier after dropping the v1.0-readiness proposal; this orthogonal request happily reuses the number. Implements: REQ-100 Refs: REQ-051 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
Added REQ-100 ( Removes 58 WARN lines of |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
…cation gate (meld pattern) Lands the artifact-driven verification-gate pattern that meld already runs (`tools/post_verification_comment.py`, ~50 LoC) as a first-class `rivet verify` subcommand, baselined v0.14.0-track. The gate inverts the usual loop: the artifact list is the worklist, the test is the evidence, and the absence of a matching test is a discrete diagnostic row (MISSING), not silence. Adding REQ-099 to the spec without a matching test now fails CI by absence — same shape as the schema's required-fields gates, but for executable evidence. Per the reuse-binding-patterns guidance, this composes on an existing schema mechanism (a new optional `verification-template` field on `ArtifactTypeDef`) rather than introducing a new directive shape. Runner is shell-injectable via `rivet.yaml` so pytest / nextest / bazel / ctest all work without rivet learning each. Outputs include a meld-parity `--format pr-comment`, JSON for dashboards, and a YAML write-through into the existing `ResultStore` so `rivet results show` surfaces verify results without modification. Explicitly NOT an oracle in `rivet validate`: validate stays read-only over YAML; verify executes tests and belongs in its own command. Implements: REQ-101 Refs: REQ-051, REQ-004 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
Added REQ-101 — Design highlights:
Baselined v0.14.0-track. |
Summary
Files the 10-persona-review synthesis as the v0.14.0+ roadmap design doc
(
docs/design/10-persona-review-roadmap.md).Files seven REQs (REQ-093..099) — each with a shell-testable Acceptance step:
asil-decomposition,coverage-threshold,method-table-compliance). The schema parsespipelines that don't fire today; this turns ISO 26262 narrative into
mechanical checks.
rivet release-verify <tag>: reproducible-build + cosignsigstore verification end-to-end. The production side (signing) shipped
in v0.10.x; this adds the consumer side.
cargo buildinvokesrivet validatefor crates with arivet.yaml— born-compliant at the compile step (Carrasco named thisas the biggest MBSE-philosophy win).
sufficiency rules. Promotes rivet from "traceability infra" to
"assurance-case infra."
dogfooded by rivet's own qualification dossier. Turns the TCL-2
narrative into a TCL-2 tool shape.
product-of-miss-rates claims when the shared-code intersection exceeds
the configured threshold. The common-mode-failure finding made
mechanical.
rivet_applyMCP tool: idempotency keys + atomictransactions + auto-reload + post-state diagnostics. Ports the F2
silent-failure ethos (REQ-082) to mutation.
Deliberately NOT filed
A v1.0 readiness gate. Per direction, we see how far we can progress
through the v0.14.0+ backlog without pre-committing to a 1.0 milestone;
1.0 ships when the natural state of the work meets Carrasco's
flip-condition (b) — not when a calendar says so.
Test plan
🤖 Generated with Claude Code