feat(emv2): error-propagation traversal across AADL connection graph (v0.10.x)#225
Merged
Conversation
…(v0.10.x) Introduces emv2_propagation.rs — a new analysis module that walks the semantic connection graph to compute which downstream components inherit each declared error type. The Emv2Overlay carries in/out propagation and flow declarations (not yet integrated into SystemInstance); compute_error_ propagation returns ErrorPropagationReport with chains, local_flows, and diagnostics. Cycle detection tracks (component, error_type) pairs. 6 unit tests cover single-hop, 3-hop chain, cycle, path-flow isolation, case- insensitive matching, and no-connection baseline. Wired into register_all / register_all_except_wctt. Adds REQ-EMV2-PROPAGATION-001 + TEST-EMV2- PROPAGATION to artifact YAML files. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Two surgical fixes surfaced by the gate after smithy resumed: 1. crates/spar-analysis/src/emv2_propagation.rs:487 — clippy `let_and_return`: dropped the bound `idx` and returned `alloc(...)` directly. Pure refactor, no behavior change. 2. crates/spar-analysis/src/tests.rs:1640 — `test_register_all_count` expected 30 passes; the new emv2_propagation pass makes it 31. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
# Conflicts: # artifacts/requirements.yaml # artifacts/verification.yaml
Rivet verification gate✅ 17/17 passed
Filter: Failed artifacts(none) Updated automatically by |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
# Conflicts: # artifacts/requirements.yaml # artifacts/verification.yaml
# Conflicts: # artifacts/requirements.yaml
3 tasks
avrabe
added a commit
that referenced
this pull request
May 20, 2026
v0.10.0 ships: **Mermaid emission (M1 + M2 + M3)** - spar-mermaid foundation crate with `emit_flowchart` (#220) - `spar emit --format mermaid` CLI subcommand (#222) - `emit_class_diagram` + `emit_requirement_diagram` + matching CLI flags `--format mermaid-class` / `mermaid-req` (#228) **Soundness deepening** - Lean 4 sorry-free proofs of end-to-end latency monotonicity and ARINC 653 partition isolation, alongside the pre-existing RTA / EDF / Network Calculus proofs (#223) - Kani BMC harnesses on generated-code AADL contract preservation (thread Period, port Direction, bus access right) — spar's Logika-equivalent strategy for verified codegen (#224) **Safety analysis** - EMV2 error-propagation traversal across the AADL connection graph (closes the #1 gap vs OSATE/HAMR in safety-case reviews) (#225) **Verification infrastructure** - Rivet-driven verification gate that executes every artifact's `fields.steps[].run` commands and posts a sticky PR comment with pass/fail counts and failed artifact IDs (#221) - Workflow tuning: gate timeout 30→60 min for future Mathlib-heavy workloads; TEST-PROOF-* stay on sorry-grep until lake cache lands (#227, #229, #230) **Chore** - Pruned stale dev artifacts (.playwright-mcp logs + dashboard-render PNGs) and tightened gitignore (#226) Bumps Cargo.toml + vscode-spar/package.json from 0.9.3 → 0.10.0. The release workflow's `check-versions` job enforces tag/Cargo/vsix agreement, so these must move together with the v0.10.0 tag push. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
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
emv2_propagation.rsmodule:Emv2Overlaycarries in/out propagation and flow declarations;compute_error_propagationreturnsErrorPropagationReportwith chains, local flows, and diagnostics; analysis only, no codegenregister_all/register_all_except_wctt; addsREQ-EMV2-PROPAGATION-001+TEST-EMV2-PROPAGATIONto artifact YAML filesExample chain from test fixture
Single-hop test (
emv2_propagation_single_hop): componentsensor(Device) declaresout propagation { BadValue }, componentcontroller(Process) declaresin propagation { BadValue }, one semantic connection between them. Result:Test plan
cargo test -p spar-analysis emv2_propagation— 6 tests pass (single-hop, 3-hop chain, cycle detection, path-flow isolation, case-insensitive match, no-connection baseline)cargo clippy -p spar-analysis -- -D warnings— cleancargo fmt --check— cleanrivet validate— YAML parse error at line 1615 of verification.yaml is pre-existing (confirmed against main), not introduced by this PR🤖 Generated with Claude Code