Skip to content

Commit 4fc13ef

Browse files
avrabeclaude
andauthored
chore(release): bump to v0.9.1 + CHANGELOG entry (#187)
NC kernel soundness pass: - gPTP synchronization-error budget (Spar_TSN::Sync_Error) - Atomic-frame quantization on TAS / FIFO arms Plus AADL spec-version-claim consistency: COMPLIANCE.md title, vscode-spar package.json + README, and parser doc comments all aligned to "AADL v2.2/v2.3 (SAE AS5506D)" — matches the project's actual AS5506D-based grammar coverage. Workspace version 0.9.0 → 0.9.1. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 2804d14 commit 4fc13ef

9 files changed

Lines changed: 76 additions & 30 deletions

File tree

CHANGELOG.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,52 @@ 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.1] — 2026-04-29
8+
9+
NC kernel soundness pass. Fixes two pure-soundness gaps flagged by an
10+
external reviewer of v0.9.0. Both turn slightly-optimistic NC output
11+
into sound output. Models without `Spar_TSN::Sync_Error` and with the
12+
same `Spar_TSN::Max_Frame_Size` defaults will see *larger* WCTT
13+
numbers — the v0.8.1 bounds were under-counting.
14+
15+
### Added — NC soundness (Tier 2 reviewer items)
16+
17+
- **gPTP synchronization-error budget (#186)** — new
18+
`Spar_TSN::Sync_Error` (Time, picoseconds; applies to bus,
19+
processor) carries the per-hop 802.1AS-2020 sync error ε. The TAS
20+
dispatch in `wctt.rs` now subtracts ε from the effective open
21+
time and adds ε to the worst-case gate latency. Without ε, v0.8.1
22+
TAS bounds were *technically unsound* — a frame can miss its
23+
window by ε in silicon. ε = 0 (unset) reproduces v0.8.1
24+
byte-identically.
25+
- **Atomic-frame quantization (#186)** — wctt.rs now adds
26+
`ceil(max_frame_bytes · 8e12 / link_rate_bps)` ps per hop on the
27+
TAS and FIFO/Priority arms. Bytes-level NC under-counts by up to
28+
one MTU per hop because frames are atomic. CBS arm unchanged
29+
(closed-form latency absorbs the term). Preemption arm unchanged
30+
(replaces with fragment-time). New `WcttFrameQuantization` Info
31+
diagnostic.
32+
33+
### Changed
34+
35+
- Property count: 128 → 129; Spar_TSN per-set count: 6 → 7.
36+
- Test count: 2772 (was 2759 at v0.9.0).
37+
- Test bounds in `wctt::tests` updated from optimistic to sound:
38+
single-hop 1 Gbps 12 µs → 24.144 µs; 3-hop chain 51 µs →
39+
87.432 µs; gated TAS half-rate 29 µs → 41.144 µs.
40+
- Golden fixture `classical_ethernet.expected.json` updated.
41+
42+
### Note on NC bound semantics
43+
44+
The change is from *roughly upper* to *upper*. Old bounds matched a
45+
fluid-bytes assumption; new bounds enforce the atomic-frame physics
46+
("a frame in flight must drain"). Users who calibrated against v0.8.1
47+
numbers will see proportional growth: ≈ +12.144 µs per 1 Gbps hop
48+
with 1518 B MTU. The `WcttFrameQuantization` diagnostic makes the
49+
correction visible per hop.
50+
51+
---
52+
753
## [0.9.0] — 2026-04-29
854

955
Major: spar gains an MCP (Model Context Protocol) tool surface and a

COMPLIANCE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# AS5506 AADL v2.2 Compliance Gap Analysis
1+
# AS5506D AADL v2.2/v2.3 Compliance Gap Analysis
22

33
**Updated**: 2026-04-28 (v0.8.0 released; v0.8.1 Phase 2 TSN close-out in progress)
44
**Source**: 102 HTML files from OSATE2 (`org.osate.help/html/std/`)

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.0"
27+
version = "0.9.1"
2828
edition = "2024"
2929
license = "MIT"
3030
repository = "https://github.com/pulseengine/spar"

crates/spar-parser/src/grammar/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//! AADL v2.2 grammar rules.
1+
//! AADL v2.2/v2.3 grammar rules (SAE AS5506D).
22
//!
33
//! Each function corresponds to a grammar production from AS5506D.
44
//! Functions take a `&mut Parser` and build nodes via markers.

crates/spar-parser/src/lexer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//! Lexer for AADL v2.2 source text.
1+
//! Lexer for AADL v2.2/v2.3 source text (SAE AS5506D).
22
//!
33
//! Produces a flat sequence of `(SyntaxKind, &str)` token pairs from an input
44
//! string. The lexer is a simple cursor-based implementation with no external

crates/spar-parser/src/syntax_kind.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/// All syntax kinds for the AADL language.
22
///
3-
/// This enum covers every token and node type in AADL v2.2 (AS5506D).
3+
/// This enum covers every token and node type in AADL v2.2/v2.3 (SAE AS5506D).
44
/// Option B: component categories use generic COMPONENT_TYPE/COMPONENT_IMPL
55
/// nodes with a COMPONENT_CATEGORY child, rather than per-category variants.
66
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]

vscode-spar/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# AADL (spar) — VS Code Extension
22

3-
AADL v2.2 language support with live interactive architecture diagrams.
3+
AADL v2.2/v2.3 language support with live interactive architecture diagrams.
44

55
Powered by [spar](https://github.com/pulseengine/spar), an open-source AADL toolchain with 21 analysis passes, port-aware rendering, and orthogonal edge routing.
66

77
## Features
88

99
### Syntax Highlighting
10-
Full TextMate grammar for AADL v2.2 — keywords, component categories, features, connections, properties, modes, and annexes.
10+
Full TextMate grammar for AADL v2.2/v2.3 — keywords, component categories, features, connections, properties, modes, and annexes.
1111

1212
### Language Server (10 IDE Features)
1313
- **Diagnostics** — parser errors + 21 analysis passes on save
@@ -59,7 +59,7 @@ Interactive HTML diagram that updates on every save:
5959
- [spar on GitHub](https://github.com/pulseengine/spar)
6060
- [Latest Release](https://github.com/pulseengine/spar/releases/latest)
6161
- [Issue Tracker](https://github.com/pulseengine/spar/issues)
62-
- [AADL Standard (SAE AS5506C)](https://www.sae.org/standards/content/as5506c/)
62+
- [AADL Standard (SAE AS5506D)](https://www.sae.org/standards/content/as5506d/)
6363

6464
## License
6565

vscode-spar/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
"name": "spar-aadl",
33
"displayName": "AADL (spar)",
4-
"description": "AADL v2.2 language support with live architecture visualization",
4+
"description": "AADL v2.2/v2.3 language support with live architecture visualization",
55
"publisher": "pulseengine",
6-
"version": "0.9.0",
6+
"version": "0.9.1",
77
"license": "MIT",
88
"repository": {
99
"type": "git",

0 commit comments

Comments
 (0)