Skip to content

Commit 2ee8d05

Browse files
avrabeclaude
andauthored
chore(release): bump to v0.9.2 + CHANGELOG entry (#202)
Honesty + tightness pass. Closes 6 reviewer items + Lean spec align + org-wide CI concurrency control: - α(0)=0 causality fix (#193) — discharges 5/5 → 4 sorrys in MinPlus - Spar_TSN::Hi/Lo_Credit user-tunable CBS (#195) — Tier A #8 - WCTT sensitivity output (#196) — NC top-5 #13 - Stop_For_Lock + ARINC severity (#197) — Tier A #6 + #9 - Context_Switch in RTA recurrence (#198) — Tier A #5 (partial) - RTA→WCTT release-jitter coupling (#199) — NC top-5 #4 - Nightly fuzz + bench workflow fixes (#194) - Org-wide CI concurrency control (#200) Workspace version 0.9.1 → 0.9.2. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent c0d6e0e commit 2ee8d05

4 files changed

Lines changed: 109 additions & 22 deletions

File tree

CHANGELOG.md

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,93 @@ All notable changes to spar are documented here. Format follows
44
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project
55
follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## [0.9.2] — 2026-05-03
8+
9+
Honesty + tightness pass. Closes the post-v0.9.0 reviewer's NC top-5
10+
items #4 and #13, three Tier-A soundness items (#5/#6/#9), the CBS
11+
hi/loCredit user-tunability gap (#8), and the Lean/Rust α(0)
12+
spec-impl mismatch (#2). Plus org-wide CI concurrency control and the
13+
v0.8.x nightly-CI workflow fix.
14+
15+
### Added — NC kernel honesty (4 PRs)
16+
17+
- **α(0) = 0 causality fix (#193)** — Rust `ArrivalCurve::at` short-
18+
circuited to return `σ` at t=0; Lean spec said `min(σ,0) = 0`.
19+
Aligned to the causal answer (no traffic before t=0). Discharged
20+
the 5th `MinPlus.lean` sorry; sorry count 5 → 4.
21+
- **`Spar_TSN::Hi_Credit` + `Lo_Credit` user-tunable CBS (#195)**
22+
v0.8.1 hardcoded both credits to `Max_Frame_Size` regardless of
23+
what the model declared. Real Qcc/YANG configs carry these per
24+
traffic class. Property count 129 → 131. Default unset →
25+
byte-identical to v0.8.1/v0.9.1. New `WcttCbsCredit` Info
26+
diagnostic when at least one credit is explicit. Reviewer
27+
Tier A #8.
28+
- **WCTT per-stream sensitivity output (#196)** — every `WcttBound`
29+
Info now followed by a `WcttSensitivity` Info carrying worst-hop
30+
partial derivatives ∂σ_self / ∂ρ_competing / ∂T_link. Pure
31+
post-processing on closed-form derivatives. Reviewer NC top-5
32+
#13: cheapest workflow win, turns spar from judge into design
33+
partner.
34+
- **RTA→WCTT release-jitter coupling (#199)** — when a stream's
35+
source declares `Timing_Properties::Dispatch_Jitter`, that value
36+
J is treated as ingress release-jitter and inflates the arrival
37+
burst σ by `ρ·J` bytes. New `WcttRtaCoupled` Info diagnostic.
38+
Reviewer NC top-5 #4: single biggest credibility lift.
39+
40+
### Added — RTA / safety soundness (2 PRs)
41+
42+
- **Stop_For_Lock + ARINC severity (#197)** — (a) RTA emits a
43+
Warning when a thread declares `Locking_Protocol => Stop_For_Lock`
44+
but no `Critical_Section_Blocking` (was silently using B=0,
45+
unsound under priority inversion); (b) `ARINC-PARTITION-ISOLATION`
46+
promoted from Warning to Error per DO-297 spatial-isolation
47+
invariant; new `spar analyze --allow arinc-partition-isolation`
48+
CLI flag for legitimate IMA bypasses. Reviewer Tier A #6 + #9.
49+
- **Context_Switch_Time in RTA recurrence (#198)** — v0.8.x emitted
50+
a STPA-REQ-022 advisory if `Context_Switch_Time` was unset but
51+
never folded the value into the recurrence when set. Now inflates
52+
each thread's WCET by `2 × Context_Switch_Time` per Buttazzo §7
53+
(one preemption-in + one preemption-out). New `OverheadInflation`
54+
Info diagnostic. Lean recurrence theorem unchanged (caller-side
55+
inflation). Reviewer Tier A #5 (partial — `Interrupt_Overhead`
56+
per ISR firing still deferred).
57+
58+
### Added — CI infrastructure (2 PRs)
59+
60+
- **CI concurrency control (#200)** — top-level `concurrency:` block
61+
on every workflow. Cancel superseded PR runs aggressively; never
62+
cancel main / tags / scheduled events. Variant per workflow:
63+
default for `ci.yml` + `proofs.yml`, scheduled (per-run group)
64+
for `bench-nightly.yml` + `fuzz-nightly.yml`, release (group by
65+
tag, never cancel) for `release.yml`. Per the org-wide CI
66+
hardening brief.
67+
- **Nightly fuzz + bench fixes (#194)** — both nightly workflows
68+
had failed since 2026-04-24 introduction. Fuzz: add
69+
`--target x86_64-unknown-linux-gnu` to avoid the cargo-fuzz musl
70+
/ ASan conflict. Bench: gate `solver_worst_case/milp/worst_64`
71+
behind `SPAR_BENCH_SLOW_MILP=1` env var; add `timeout-minutes: 60`
72+
ceiling.
73+
74+
### Changed
75+
76+
- COMPLIANCE.md narrative for v0.9.2.
77+
- Test count: 2790+ across 19 crates (was 2772 at v0.9.1).
78+
- Property count: 129 → 131 (Spar_TSN::Hi_Credit + Lo_Credit).
79+
80+
### Deferred
81+
82+
- `Interrupt_Overhead` per ISR firing in RTA recurrence — Tier A
83+
#5 partial close-out; companion to v0.9.2 `Context_Switch_Time`.
84+
- Full RTA→WCTT automatic propagation (consume RTA's *computed*
85+
`response_time` directly without requiring user-declared
86+
`Dispatch_Jitter`).
87+
- `MinPlus.lean` 4 remaining sorrys (`backlog_bound_classical`,
88+
`delay_bound_classical`, `output_dominates_input`,
89+
`compose_delays_dominates`) — tracked as TODO(v1.0.0).
90+
- Kani harness production-code wiring (Tier A #3).
91+
92+
---
93+
794
## [0.9.1] — 2026-04-29
895

996
NC kernel soundness pass. Fixes two pure-soundness gaps flagged by an

Cargo.lock

Lines changed: 20 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ members = [
2424
]
2525

2626
[workspace.package]
27-
version = "0.9.1"
27+
version = "0.9.2"
2828
edition = "2024"
2929
license = "MIT"
3030
repository = "https://github.com/pulseengine/spar"

vscode-spar/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"displayName": "AADL (spar)",
44
"description": "AADL v2.2/v2.3 language support with live architecture visualization",
55
"publisher": "pulseengine",
6-
"version": "0.9.1",
6+
"version": "0.9.2",
77
"license": "MIT",
88
"repository": {
99
"type": "git",

0 commit comments

Comments
 (0)