Repository navigation
v3.0.0
Highlights
rules_score: the safety analysis is split intofailure_modes,fault_treesandsafety_analysis. Adependable_elementnow derives its own AoUs from the safety analysis measures.- PlantUML tooling: an element's identifier now comes from its written name, not its alias. Qualified and rooted declarations and free functions in class diagrams are supported.
validation: free-function consistency check between PlantUML class design and C++ implementation.
Breaking changes
rules_score: safety analysis and AoUs
-
safety_analysisis split into three rules to avoid a dependency cycle between the fault trees, the measures and the analysis:failure_modes(srcs, deps): theFailureModerecords.fault_trees(srcs, deps, fta_package): the fault-tree diagrams and the generatedRootCauserecords.safety_analysis(failure_modes, fault_trees, safety_measures, arch_design): the FMEA page.
-
safety_analysisattributes are renamed:Before Now failuremodesfailure_modes(labels offailure_modestargets)root_causesfault_trees(label of afault_treestarget, required)safetymeasuressafety_measuresarch_design(optional)arch_design(required) -
dependable_element.assumptions_of_useis removed. The element's own AoUs are theassumptions_of_usetargets listed in thesafety_measuresof itssafety_analysistargets.- An
assumptions_of_usetarget that nosafety_analysislists is neither rendered nor forwarded. - A
dependable_elementwithout a safety analysis has no own AoUs.
- An
-
ScoreReq.AoU.root_causesis now mandatory..rstaou_reqdirectives need:root_causes: <fta_package>.<RootCause>, ....assumptions_of_use.depsmust list thefault_treestarget. Otherassumptions_of_usetargets are rejected there.:root_causes:on non-AoU directives is rejected.
-
aou_forwarding.yamlentries must carry the AoU version:aou_id: "Package.AOU_ID@1". Unknown IDs, version mismatches and duplicate entries fail the build. -
The default
fta_packageis now the package and name joined by__plus_fta(e.g.pkg_sub__name_fta). Setfta_packageexplicitly if you reference<fta_package>.<RootCause>from elsewhere. -
Raw
.trlcfiles insafety_measuresmay only containMitigationrecords. A root cause whose failure mode is missing fromfailure_modesfails the build. -
List one
safety_analysisperdependability_analysis. Use severaldependability_analysistargets for several analyses. -
The
.github/skills/*/SKILL.mdfiles changed. Downstream repos must regenerate theirsync_skillsgoldens.
PlantUML: identifiers are built from the name, not the alias
-
The written name of an element is its identity. The alias (
as X) is only a local reference key and no longer takes part in the identifier. -
Names must be identifier paths: segments of letters, digits and
_, separated by.or::. Free-text names are errors, for every element kind. -
Sequence participants:
- The
"instance : pkg::Type"label form is removed. - Referencing an aliased participant by its name instead of its alias is an error.
- The
-
Diagrams must be migrated.
' before component "Unit 1" as unit_1 <<unit>> participant "Order Service" as OrderService ' now component unit_1 <<unit>> participant "orders::OrderService" as OrderService
-
validationmatches by this identifier. Component and sequence checks match participant uids, and the Bazel check matches the last segment of the entity id (case-insensitive) against the Bazel target name. -
See
plantuml/parser/docs/element-identifiers.mdfor the full rules.
New features
PlantUML
- Qualified names in nested declarations are appended to the enclosing scope (like relative names in C++). A leading
.or::roots the name:package outer { class core::X ' outer.core.X class ::core::X ' core.X }
::is accepted wherever a name is written: declarations,package/namespacenames, ports,extends/implementstargets and relationship endpoints. - Free functions in class diagrams:
entity Name <<function>> { + f(...) }groups free functions, which resolve in the enclosing namespace. They are serialized to FlatBuffers. Seeplantuml/parser/docs/class-diagram.md. (#511) - Class-diagram parser and AST simplified. (#517)
- Clearer sequence-diagram diagnostics for aliased participants and lifecycle commands.
Sphinx clickable_plantuml
- Links are resolved by uid. A last-segment name index lets a bare
unit_1in a sequence or component diagram find the diagram that definespkg.comp.unit_1. *.idmap.jsongainsmatch_by_name(defaultfalse). It istruefor component, class and sequence diagrams andfalsefor FTA diagrams.- Aliases that are not plain identifiers are quoted in
url of "...". Aliases that cannot be written (double quote, line break) are reported with a warning.
validation
- New
ClassDesignImplementationFreeFunctionConsistencycheck: a free function in the unit design must exist in the C++ implementation with a matching return type, parameters and template parameters. (#518) - Clearer errors for
bazel_component, sequence and class checks.
Bug fixes
validation: a class reachable through several implementation targets (e.g. a shared header) was reported as defined more than once. The duplicate-class error now says "design" or "implementation". (#522)rules_score: units listed directly independable_element.componentswere missing from the generated toctree. (#519)
Build and CI
- Rust crates are pinned to minor versions (
~x.y).Cargo.lockandcargo-bazel-lock.jsonare added, and the crate repository is renamed from@cratesto@crates_score_tooling. (#515)
Migration checklist
- Split each
safety_analysisintofailure_modes,fault_treesandsafety_analysis, and rename its attributes. - Remove
assumptions_of_usefromdependable_element. List the AoU targets insafety_analysis.safety_measuresinstead. - Add
root_causesto everyAoUand list thefault_treestarget in thedepsof eachassumptions_of_usetarget. - Add
@<version>to theaou_identries inaou_forwarding.yaml. - Rewrite PlantUML declarations to identifier-path names. Use an alias only for long or qualified names.
- Regenerate the
sync_skillsgoldens.
Full changelog: v2.3.1...v3.0.0