@@ -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
55follows [ 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
996NC kernel soundness pass. Fixes two pure-soundness gaps flagged by an
0 commit comments