Skip to content

Commit 9f760ae

Browse files
avrabeclaude
andauthored
chore(release): bump to v0.9.3 + CHANGELOG entry (#206)
NC tightness pass — closes reviewer NC top-5 #1 + #2: - Piecewise-affine arrival curves (#204): new PiecewiseAffineArrivalCurve type with min-over-buckets operators; halves bounds on real ADAS traffic. - PMOO/LUDB (#203): new pmoo.rs solving via good_lp/HiGHS for tree-shaped multiplexing. 27.4% tighter than SFA on 3-hop/3- competing fixture; opt-in via `spar analyze --pmoo`. Workspace 0.9.2 → 0.9.3. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent c0a8e39 commit 9f760ae

4 files changed

Lines changed: 80 additions & 23 deletions

File tree

CHANGELOG.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,63 @@ 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.3] — 2026-05-10
8+
9+
NC tightness pass. Closes the post-v0.9.0 reviewer's NC top-5
10+
items #1 and #2 — the two largest remaining tightness gains —
11+
giving spar parity with RTaW-Pegase's NC arm on the workloads
12+
where bounds matter most. v0.8.x/v0.9.x output is byte-identical
13+
when the new shapes / methods are not enabled.
14+
15+
### Added — Network Calculus tightness (2 PRs)
16+
17+
- **Piecewise-affine arrival curves (#204)** — new
18+
`PiecewiseAffineArrivalCurve` type alongside the existing affine
19+
form. Multi-leaky-bucket `(σ₁, ρ₁) ∧ (σ₂, ρ₂) ∧ ...` exactly
20+
captures "burst of N frames at line rate, then sustained at
21+
100 Mbps" — the canonical T-SPEC pattern in real ADAS / TSN
22+
traffic. Operators (`delay_bound`, `output_bound`, `residual_service`,
23+
`backlog_bound`) take the *min over buckets* — this is the
24+
mathematically tight choice; max would loosen bounds, defeating
25+
the point. `From<ArrivalCurve>` round-trip preserves single-bucket
26+
case. Lean theorem-statement skeleton at
27+
`proofs/Proofs/Network/MinPlusPwa.lean` (filed out-of-tree;
28+
proofs sorry-tagged for v1.0.0). 14 new tests. Reviewer NC
29+
top-5 #1.
30+
- **PMOO/LUDB tree-shaped multiplexing (#203)** — new
31+
`crates/spar-network/src/pmoo.rs`. `ludb_bound(tagged, competing,
32+
services)` returns a Pay-Multiplexing-Only-Once bound for the
33+
zonal/automotive pattern (one tagged flow + N competing flows
34+
sharing a sub-path, all converging to one sink). LP solved via
35+
`good_lp`/HiGHS (already vendored from spar-solver). New
36+
`spar analyze --pmoo` opt-in flag; default remains SFA so
37+
v0.9.2 output is byte-identical. New `WcttPmooBound` Info
38+
diagnostic carries `(method=ludb, delay_ps, sfa_delay_ps_for_comparison)`
39+
so reviewers can see the tightening per stream. Numerical
40+
confirmation: **27.4% tighter than SFA** on a 3-hop / 3-competing
41+
test, **23.7% tighter** on 5-source zonal aggregation. Closes
42+
the "spar says 31.7 ms vs RTaW says 8 ms" credibility gap on
43+
tree topologies. Reviewer NC top-5 #2.
44+
45+
### Changed
46+
47+
- COMPLIANCE.md narrative for v0.9.3.
48+
- Test count: 2900+ across 19 crates (was 2790+ at v0.9.2;
49+
+14 piecewise + 10 PMOO + 2 wctt round-trip).
50+
51+
### Deferred
52+
53+
- Multi-grouping LUDB LP for nested topologies (today's
54+
closed-form PMOO theorem result is exact on canonical trees;
55+
full LP nesting waits for the v0.9.x follow-up).
56+
- `wctt.rs` per-stream propagation of `PiecewiseAffineArrivalCurve`
57+
(today's wctt still uses the single-bucket `ArrivalCurve`;
58+
switching is a v0.9.x propagation strategy commit).
59+
- `MinPlusPwa.lean` 8 sorry-tagged theorem statements — discharge
60+
is v1.0.0 scope.
61+
62+
---
63+
764
## [0.9.2] — 2026-05-03
865

966
Honesty + tightness pass. Closes the post-v0.9.0 reviewer's NC top-5

Cargo.lock

Lines changed: 21 additions & 21 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
@@ -25,7 +25,7 @@ members = [
2525
]
2626

2727
[workspace.package]
28-
version = "0.9.2"
28+
version = "0.9.3"
2929
edition = "2024"
3030
license = "MIT"
3131
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.2",
6+
"version": "0.9.3",
77
"license": "MIT",
88
"repository": {
99
"type": "git",

0 commit comments

Comments
 (0)