Skip to content

Commit df69944

Browse files
authored
Merge pull request #113 from pulseengine/chore/v0.5.0-release-prep
chore: bump to v0.5.0
2 parents e7143ae + 661c093 commit df69944

7 files changed

Lines changed: 292 additions & 27 deletions

File tree

AGENTS.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88

99
This project uses **Rivet** for SDLC artifact traceability.
1010
- Config: `rivet.yaml`
11-
- Schemas: common, dev, aspice, stpa, aadl
12-
- Artifacts: 342 across 3 types
11+
- Schemas: common, dev, aspice, stpa, aadl, sysml2
12+
- Artifacts: 359 across 3 types
1313
- Validation: `rivet validate` (current status: pass)
1414

1515
## Available Commands
@@ -31,8 +31,8 @@ This project uses **Rivet** for SDLC artifact traceability.
3131

3232
| Type | Count | Description |
3333
|------|------:|-------------|
34-
| `design-decision` | 65 | An architectural or design decision with rationale |
35-
| `feature` | 103 | A user-visible capability or feature |
34+
| `design-decision` | 72 | An architectural or design decision with rationale |
35+
| `feature` | 113 | A user-visible capability or feature |
3636
| `requirement` | 174 | A functional or non-functional requirement |
3737
| `aadl-analysis-result` | 0 | Output of a spar analysis pass |
3838
| `aadl-component` | 0 | AADL component type or implementation imported from spar |
@@ -54,6 +54,10 @@ This project uses **Rivet** for SDLC artifact traceability.
5454
| `sw-verification` | 0 | Software verification measure against SW requirements (SWE.6 — Software Verification) |
5555
| `sys-integration-verification` | 0 | System integration and integration verification measure (SYS.4 — System Integration and Integration Verification) |
5656
| `sys-verification` | 0 | System verification measure against system requirements (SYS.5 — System Verification) |
57+
| `sysml-action` | 0 | SysML v2 action definition (behavioral) |
58+
| `sysml-component` | 0 | SysML v2 part definition or usage |
59+
| `sysml-interface` | 0 | SysML v2 interface or port definition |
60+
| `sysml-requirement` | 0 | SysML v2 requirement (def or usage) |
5761
| `system-arch-component` | 0 | System architectural element (SYS.3) |
5862
| `system-constraint` | 0 | A condition or behavior that must be satisfied to prevent a hazard. Each constraint is the inversion of a hazard. |
5963
| `system-req` | 0 | System requirement derived from stakeholder needs (SYS.2) |

COMPLIANCE.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
# AS5506 AADL v2.2 Compliance Gap Analysis
22

3-
**Updated**: 2026-03-08
3+
**Updated**: 2026-04-06 (v0.5.0)
44
**Source**: 102 HTML files from OSATE2 (`org.osate.help/html/std/`)
5-
**Toolchain**: spar (581 tests passing across 10 crates)
5+
**Toolchain**: spar (1200+ tests passing across 16 crates)
66

77
---
88

99
## Executive Summary
1010

1111
| Layer | Status | Score |
1212
|-------|--------|-------|
13-
| **Parser (syntax)** | Excellent | ~95% — all major constructs parsed |
14-
| **ItemTree (declaration capture)** | Good | ~85% — modes, prototypes, calls, flow impls, array dims, in_modes |
15-
| **Name Resolution** | Partial | ~50% — cross-file resolution + naming rule validation |
13+
| **Parser (syntax)** | Excellent | ~95% — all major constructs parsed, doubled-quote strings |
14+
| **ItemTree (declaration capture)** | Good | ~85% — modes, prototypes, calls, flow impls, array dims, in_modes, requires_modes |
15+
| **Name Resolution** | Partial | ~55% — cross-file resolution + naming rules + duplicate package detection |
1616
| **Legality Rules (L-rules)** | Partial | ~15% — engine scaffold with ~20 rules from 6 categories |
1717
| **Naming Rules (N-rules)** | Partial | ~25% — duplicate detection, with-clause hygiene, scope uniqueness |
18-
| **Instance Model** | Good | ~65% — hierarchy + modes + semantic connections + features |
19-
| **Property System** | Partial | ~45% — typed PropertyExpr (13 variants), type checking, unit conversion |
20-
| **Modes** | Good | ~55% — in ItemTree + instance model, mode check analysis |
21-
| **Predeclared Property Sets** | Good | ~90% — 8/8 sets, 104 properties |
18+
| **Instance Model** | Good | ~80% — hierarchy + modes + semantic connections + features + **extends inheritance** |
19+
| **Property System** | Good | ~65% — typed PropertyExpr (14 variants), text fallback parser, unit conversion |
20+
| **Modes** | Good | ~65% — in ItemTree + instance model + requires_modes + modal filtering |
21+
| **Predeclared Property Sets** | Good | ~90% — 8/8 sets, 102 properties (corrected classifications) |
2222

2323
---
2424

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ members = [
1919
]
2020

2121
[workspace.package]
22-
version = "0.4.0"
22+
version = "0.5.0"
2323
edition = "2024"
2424
license = "MIT"
2525
repository = "https://github.com/pulseengine/spar"

artifacts/architecture.yaml

Lines changed: 136 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,10 @@ artifacts:
155155
type: design-decision
156156
title: spar-analysis
157157
description: >
158-
27 analysis passes implementing connectivity, scheduling, latency,
158+
33+ analysis passes implementing connectivity, scheduling, latency,
159159
resource budget, EMV2, ARINC 653, legality rules, mode reachability,
160-
and more. Trait-based Analysis framework with AnalysisRunner.
160+
AI/ML safety (ISO/PAS 8800), and more. Trait-based Analysis framework
161+
with AnalysisRunner.
161162
fields:
162163
rationale: >
163164
Trait-based Analysis framework allows modular registration of
@@ -823,3 +824,136 @@ artifacts:
823824
# ── SysML v2 Integration (v0.5.0) ───────────────────────────────────
824825

825826
# ARCH-SYSML2-001 merged into ARCH-SYSML2-002 and ARCH-SYSML2-003 (v0.4.0)
827+
828+
# ── v0.5.0 Architecture Decisions ──────────────────────────────────
829+
830+
- id: ARCH-EXTENDS
831+
type: design-decision
832+
title: Type inheritance via extends chain walking
833+
description: >
834+
collect_type_chain_features and collect_impl_chain walk the extends
835+
chain recursively with cycle detection. Features deduplicated by name.
836+
status: implemented
837+
fields:
838+
rationale: >
839+
Recursive chain walking mirrors the AADL spec semantics for extends.
840+
Cycle detection prevents infinite loops. Name-based deduplication
841+
ensures refined features override parent features correctly.
842+
tags: [v0.5.0]
843+
links:
844+
- type: satisfies
845+
target: REQ-MODEL-005
846+
847+
- id: ARCH-SYSML2-SCHEMA
848+
type: design-decision
849+
title: SysML v2 Rivet schema
850+
description: >
851+
schemas/sysml2.yaml defines sysml-requirement, sysml-component,
852+
sysml-interface, sysml-action artifact types for rivet integration.
853+
status: implemented
854+
fields:
855+
rationale: >
856+
Custom rivet artifact types enable SysML v2 elements to participate
857+
natively in traceability graphs. Schema-level typing ensures
858+
validation and consistent extraction output.
859+
tags: [v0.5.0, sysml2]
860+
links:
861+
- type: satisfies
862+
target: REQ-SYSML2-EXTRACT
863+
864+
- id: ARCH-AIML
865+
type: design-decision
866+
title: AI/ML analysis passes following ISO/PAS 8800
867+
description: >
868+
Six analysis modules for AI/ML component safety: inference deadline
869+
checking, fallback coverage, fallback timing, OOD coverage,
870+
model deployment validation, and redundancy verification. Each
871+
implements the Analysis trait and integrates with AnalysisRunner.
872+
status: implemented
873+
fields:
874+
rationale: >
875+
ISO/PAS 8800 mandates safety analysis for AI/ML components in
876+
automotive systems. Implementing as standard Analysis trait modules
877+
ensures they integrate with existing AnalysisRunner and benefit
878+
from the same reporting infrastructure.
879+
tags: [v0.5.0, analysis, ai-ml]
880+
links:
881+
- type: satisfies
882+
target: REQ-ANALYSIS-001
883+
884+
- id: ARCH-EMV2-STPA
885+
type: design-decision
886+
title: EMV2 fault tree to STPA hazard mapping
887+
description: >
888+
Bridge module mapping EMV2 composite error states to STPA hazards
889+
and propagation paths to loss scenarios. Enables safety analysis
890+
workflows spanning both EMV2 and STPA methodologies.
891+
status: implemented
892+
fields:
893+
rationale: >
894+
STPA and EMV2 address overlapping safety concerns from different
895+
perspectives. Bridging them avoids duplicate modeling effort and
896+
enables cross-methodology traceability in safety cases.
897+
tags: [v0.5.0, safety]
898+
links:
899+
- type: satisfies
900+
target: REQ-ANALYSIS-005
901+
902+
- id: ARCH-MODAL-FILTER
903+
type: design-decision
904+
title: Modal filtering with requires_modes flag
905+
description: >
906+
requires_modes flag stored in ItemTree during lowering.
907+
is_active_in_mode utility enables modal-aware connectivity
908+
and scheduling analysis without re-instantiation.
909+
status: implemented
910+
fields:
911+
rationale: >
912+
Storing requires_modes in ItemTree at lowering time avoids
913+
re-parsing CST during analysis. The is_active_in_mode utility
914+
provides a single filtering point for all modal-aware passes.
915+
tags: [v0.5.0, modes]
916+
links:
917+
- type: satisfies
918+
target: REQ-ANALYSIS-009
919+
920+
- id: ARCH-PROP-LOWERING
921+
type: design-decision
922+
title: Property CST lowering with text fallback parser
923+
description: >
924+
When CST lowering cannot determine property value type, a text-based
925+
fallback parser handles booleans, references, classifiers, ranges,
926+
lists, numerics with units, and enums. Covers legacy and mixed-version
927+
AADL property syntax gracefully.
928+
status: implemented
929+
fields:
930+
rationale: >
931+
CST lowering sometimes lacks enough context to determine property
932+
value types (especially for user-defined property sets). A text
933+
fallback parser provides graceful degradation while maintaining
934+
typed values for downstream analysis.
935+
tags: [v0.5.0, properties]
936+
links:
937+
- type: satisfies
938+
target: REQ-PROP-002
939+
940+
- id: ARCH-SECURITY-HARDEN
941+
type: design-decision
942+
title: Security hardening across rendering and CLI
943+
description: >
944+
22 correctness and security fixes from adversarial scanning: XSS
945+
prevention via HTML entity escaping in SVG output, YAML/TOML
946+
injection prevention via safe serialization, path traversal guards
947+
on file operations, UTF-8 safe percent decoding, arena index
948+
bounds checks preventing panics on invalid input.
949+
status: implemented
950+
fields:
951+
rationale: >
952+
Adversarial scanning revealed input-driven vulnerabilities in
953+
rendering and CLI paths. Defense-in-depth approach hardens each
954+
layer independently: output escaping, input validation, and
955+
bounds checking.
956+
tags: [v0.5.0, security]
957+
links:
958+
- type: satisfies
959+
target: STPA-SEC-REQ-001

artifacts/requirements.yaml

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ artifacts:
7272
description: >
7373
Support component type extension, implementation extension,
7474
feature refinement, and subcomponent refinement.
75-
status: partial
75+
status: implemented
7676
tags: [model, as5506-ch4]
7777

7878
# ── Name Resolution (AS5506 Ch.4) ──────────────────────────────────────
@@ -152,7 +152,7 @@ artifacts:
152152
Evaluate all property expression types: integer, real, string,
153153
boolean, enumeration, list, record, range, classifier, reference,
154154
computed values, unit literals.
155-
status: partial
155+
status: implemented
156156
tags: [properties, as5506-ch11]
157157

158158
- id: REQ-PROP-003
@@ -498,10 +498,9 @@ artifacts:
498498
type: requirement
499499
title: Known analysis gaps
500500
description: >
501-
Not yet covered: Ch.6 (type extensions — partial in extends_rules.rs),
502-
Ch.7 (prototypes — parsed but not analyzed), property expression
503-
evaluation (value(), arithmetic, record field access). See also
504-
REQ-PROP-002 (partial).
501+
Not yet covered: Ch.7 (prototypes — parsed but not analyzed).
502+
Ch.6 type extensions now resolved via extends chain walking (v0.5.0).
503+
Property expression evaluation now covered by text fallback parser (v0.5.0).
505504
status: partial
506505
links:
507506
- type: satisfies
@@ -864,7 +863,7 @@ artifacts:
864863
notation. Hand-written recursive descent, lossless CST, error recovery.
865864
Same architecture as spar-parser. Covers KerML kernel + SysML v2 profile
866865
(part, port, connection, requirement, constraint, action, state).
867-
status: planned
866+
status: implemented
868867
tags: [sysml2, parser, v040]
869868
links:
870869
- type: traces-to
@@ -878,7 +877,7 @@ artifacts:
878877
part def → system/process type, port def → data port, connection def →
879878
connection, constraint def → timing properties, allocate → bindings.
880879
Enables spar analysis on SysML v2-modeled systems.
881-
status: planned
880+
status: implemented
882881
tags: [sysml2, transform, v040]
883882
links:
884883
- type: traces-to
@@ -892,7 +891,7 @@ artifacts:
892891
requirement artifacts with satisfy/verify links preserved. Bridges
893892
SysML v2 requirement management with rivet traceability. Links map:
894893
SysML satisfy → rivet satisfies, SysML verify → rivet verifies.
895-
status: planned
894+
status: implemented
896895
tags: [sysml2, requirements, rivet, v040]
897896
links:
898897
- type: traces-to
@@ -967,7 +966,7 @@ artifacts:
967966
Result: SysML v2 (system-level) → AADL (deployment-level) →
968967
WIT/code (implementation-level), with rivet tracing through all
969968
three layers and spar analyzing architecture at every level.
970-
status: planned
969+
status: implemented
971970
tags: [transform, sysml, interop, v050]
972971
links:
973972
- type: traces-to

0 commit comments

Comments
 (0)