Skip to content

Update dependency score_tooling to v3 - #215

Closed
eclipse-score-bot wants to merge 1 commit into
mainfrom
renovate/score_tooling-3.x
Closed

eclipse-score-bot wants to merge 1 commit into
mainfrom
renovate/score_tooling-3.x

Conversation

@eclipse-score-bot

Copy link
Copy Markdown
Contributor

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Type Update Change
score_tooling bazel_dep major 1.2.0 → 3.0.1

Release Notes

eclipse-score/tooling (score_tooling)

v3.0.1

Changelog

rules_score: unit documentation layout

  • Unit pages are rendered to units/<unit>/index.rst. Design files are staged in
    units/<unit>/design/. Previously: units/<unit>.rst and units/<unit>_design/.
  • Sphinx exclude pattern **/units/*_design replaced by units/*/design.
  • Two different units with the same name in one dependable_element now fail the build
    (previously the second was silently dropped).
  • File collisions while staging a unit's design files now fail the build.
  • PUML basenames no longer need to be unique across units.

Added

  • sync_skills(repo_skills_target = None): optional label of a filegroup with the repo's
    committed score-* skills. Required when .github/skills has its own BUILD file.
  • .devcontainer/run-tool: standard SCORE tool launcher.

Fixed

  • component(requirements = ...) accepts assumed_system_requirements targets, so component
    requirements can derive directly from assumed system requirements without a feature layer.

v3.0.0

Highlights

  • rules_score: the safety analysis is split into failure_modes, fault_trees and safety_analysis. A dependable_element now 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_analysis is split into three rules to avoid a dependency cycle between the fault trees, the measures and the analysis:

    • failure_modes(srcs, deps): the FailureMode records.
    • fault_trees(srcs, deps, fta_package): the fault-tree diagrams and the generated RootCause records.
    • safety_analysis(failure_modes, fault_trees, safety_measures, arch_design): the FMEA page.
  • safety_analysis attributes are renamed:

    Before Now
    failuremodes failure_modes (labels of failure_modes targets)
    root_causes fault_trees (label of a fault_trees target, required)
    safetymeasures safety_measures
    arch_design (optional) arch_design (required)
  • dependable_element.assumptions_of_use is removed. The element's own AoUs are the assumptions_of_use targets listed in the safety_measures of its safety_analysis targets.

    • An assumptions_of_use target that no safety_analysis lists is neither rendered nor forwarded.
    • A dependable_element without a safety analysis has no own AoUs.
  • ScoreReq.AoU.root_causes is now mandatory.

    • .rst aou_req directives need :root_causes: <fta_package>.<RootCause>, ....
    • assumptions_of_use.deps must list the fault_trees target. Other assumptions_of_use targets are rejected there.
    • :root_causes: on non-AoU directives is rejected.
  • aou_forwarding.yaml entries must carry the AoU version: aou_id: "Package.AOU_ID@1". Unknown IDs, version mismatches and duplicate entries fail the build.

  • The default fta_package is now the package and name joined by __ plus _fta (e.g. pkg_sub__name_fta). Set fta_package explicitly if you reference <fta_package>.<RootCause> from elsewhere.

  • Raw .trlc files in safety_measures may only contain Mitigation records. A root cause whose failure mode is missing from failure_modes fails the build.

  • List one safety_analysis per dependability_analysis. Use several dependability_analysis targets for several analyses.

  • The .github/skills/*/SKILL.md files changed. Downstream repos must regenerate their sync_skills goldens.

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.
  • 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
  • validation matches 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.md for 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/namespace names, ports, extends/implements targets 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. See plantuml/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_1 in a sequence or component diagram find the diagram that defines pkg.comp.unit_1.
  • *.idmap.json gains match_by_name (default false). It is true for component, class and sequence diagrams and false for 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 ClassDesignImplementationFreeFunctionConsistency check: 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 in dependable_element.components were missing from the generated toctree. (#​519)

Build and CI

  • Rust crates are pinned to minor versions (~x.y). Cargo.lock and cargo-bazel-lock.json are added, and the crate repository is renamed from @crates to @crates_score_tooling. (#​515)

Migration checklist

  1. Split each safety_analysis into failure_modes, fault_trees and safety_analysis, and rename its attributes.
  2. Remove assumptions_of_use from dependable_element. List the AoU targets in safety_analysis.safety_measures instead.
  3. Add root_causes to every AoU and list the fault_trees target in the deps of each assumptions_of_use target.
  4. Add @<version> to the aou_id entries in aou_forwarding.yaml.
  5. Rewrite PlantUML declarations to identifier-path names. Use an alias only for long or qualified names.
  6. Regenerate the sync_skills goldens.

Full changelog: eclipse-score/tooling@v2.3.1...v3.0.0

v2.3.1

Release v2.3.x contains breaking changes:

Renames (Bazel)
fmea(...) is now safety_analysis(...).
dependability_analysis(fmea = [...]) is now dependability_analysis(safety_analysis = [...]).
The controlmeasures attribute is replaced by safetymeasures. These files hold Mitigation, AoU and CompReq records.
New optional attribute fta_package sets the package name of the generated RootCause records. It defaults to _fta.
unit(...) and component(...) get an optional design_name. Use it when the PlantUML <>/<> name differs from the Bazel target name.

FTA .puml diagrams
$TopEvent(...) is now $FailureMode(name, "Pkg.FailureMode", ...). It accepts up to 8 failure modes per node.
$BasicEvent(name, "Pkg.Alias", conn) is now $RootCause(name, "Alias", conn). The alias is a plain name without a package prefix.
Root causes are generated as TRLC records in fta_events.trlc (package <fta_package>). They are not written by hand.
Each root cause links to the failure modes of the tree it sits under.

TRLC model (ScoreReq)
Removed: ControlMeasure, PreventiveMeasure and Measure.
Removed: the mitigates field on AoU and Mitigation.
Added: RootCause, the abstract SafetyMeasure, and FailureMode-to-RootCause links.
Mitigation no longer extends AssumedSystemReq. It now requires root_causes = [...] and justification.
AoU can have optional root_causes = [...].
CompReq.derived_from can reference a RootCause, unversioned. This makes the CompReq a control measure for that root cause.
CompReq.derived_from may only reference AoUs received from other dependable elements. An element's own AoUs are never a source.

Wiring (BUILD)
A safety_analysis target that an AoU references via root_causes must be listed in the deps of assumptions_of_use.
The same target must also be passed via safetymeasures to safety_analysis(...).

Migration:

BUILD
fmea becomes safety_analysis.
controlmeasures becomes safetymeasures.
dependability_analysis(fmea=...) becomes dependability_analysis(safety_analysis=...).

FTA .puml
$TopEvent becomes $FailureMode.
$BasicEvent(n, "Pkg.Alias", c) becomes $RootCause(n, "Alias", c). The alias is a plain identifier with no package prefix.

TRLC measures
Add import _fta, the generated package. It defaults to the target name plus _fta.
Delete ControlMeasure and PreventiveMeasure records and all mitigates fields.
Convert each former measure:
Mitigation: add root_causes = [_fta.] and justification.
CompReq: add derived_from = [_fta.], with no @​version. Add the safety_analysis target to that component_requirements target's deps.
AoU: add root_causes = [_fta.]. Add the safety_analysis target to the assumptions_of_use deps, and pass the file in safetymeasures.

Coverage
Every $RootCause needs a Mitigation, AoU or CompReq. Otherwise release maturity fails.
Every FailureMode needs a $RootCause under it.

v2.3.0

What's Changed

Full Changelog: eclipse-score/tooling@v2.2.3...v2.3.0

v2.2.3

What's Changed

Full Changelog: eclipse-score/tooling@v2.2.2...v2.2.3

v2.2.2

What's Changed

New Contributors

Full Changelog: eclipse-score/tooling@v2.2.0...v2.2.2

v2.2.1

What's Changed

Full Changelog: eclipse-score/tooling@v2.1.1...v2.2.1

v2.2.0

What's Changed

Full Changelog: eclipse-score/tooling@v2.1.1...v2.2.0

v2.1.1

What's Changed

Full Changelog: eclipse-score/tooling@v2.1.0...v2.1.1

v2.1.0

What's Changed

🚨 Breaking: Ferrocene symbol-report/blanket coverage flow removed

rust_coverage_report (from //:defs.bzl / //coverage:coverage.bzl), //coverage:ferrocene_report and its helper scripts have been removed (#​394). Repositories defining a //:rust_coverage target with this rule must migrate

▎ ⚠️ If your repo consumes the rust-coverage.yml reusable workflow from cicd-workflows (lifecycle, baselibs): that workflow drives the removed flow through your //:rust_coverage target. Do not bump to 2.1.0 (and don't let renovate auto-merge it) until you have migrated to the LLVM pipeline below.

Unchanged: //coverage:llvm_profile_wrapper (kept for repos mid-migration) and //coverage:combined_report.

✨ New: reusable LLVM source-based coverage pipeline (@​score_tooling//coverage)

The coverage pipeline proven in communication and persistency is now a shared module (#​394), imported verbatim from eclipse-score/communication and adapted for cross-repo consumption:

  • One report for C++ and Rust — line and branch coverage, generated by llvm-cov directly from covmap instrumentation (no gcov/genhtml).
  • Untested in-scope files appear at exact 0% — baselines via llvm-cov --empty-profile over the instrumented archives; denominators come from the compiler, not heuristics. Untested code can no longer hide from the report or the gate.
  • Justification system — COV_JUSTIFIED in-code markers + reviewed YAML database, an effective coverage metric ((covered + justified) / total), stale-justification detection.
  • Gating — report generation fails when effective coverage is below COVERAGE_THRESHOLD (default 100).

Full Changelog: eclipse-score/tooling@v2.0.2...v2.1.0

v2.0.2: Release 2.0.2

What's Changed

Full Changelog: eclipse-score/tooling@v2.0.1...v2.0.2

v2.0.1: Release 2.0.1

What's Changed

New Contributors

Full Changelog: eclipse-score/tooling@v2.0.0...v2.0.1

v2.0.0: Release 2.0.0

  • multitool dependency removed, then partially reintroduced (c82be4d, 3c98c2a)
    docs-as-code bumped to 4.6.1 (no longer requires multitool, unlike 3.x).
    A later commit re-adds rules_multitool as a dependency, but now only for
    a dedicated actionlint_hub — the default multitool hub (ruff, ty,
    yamlfmt, etc.) is provided transitively via aspect_rules_lint instead.
    Consumers relying on the repo's old multitool wiring/lockfile need to
    re-check their setup.

  • sphinx parameter removed from public API of the rules_score sphinx
    integration (8d08c8b)
    html_merge_tool is now a private attribute; a new sphinx_toolchain
    macro replaces direct parameterization. Update BUILD files per the
    revised integration_guide.rst.

  • PlantUML linker removed (2561e03)
    Clickable PlantUML diagrams now resolve via a new idmap mechanism
    instead of the old linker. Anything depending on the previous linker
    output/behavior breaks.

  • ClassDiagram data model shrunk: relationships, source_files,
    version fields removed (3e04d66)
    Touches the flatbuffers schema (class_diagram.fbs) and serializer — a
    wire-format break for anything consuming serialized class diagram
    data (validation core, plantuml parser output).

  • PDF docs support removed (libcairo dropped) (49d7975)
    Docs builds relying on PDF output via rules_score examples no longer
    work.

  • Bazel 8.7.0 + rules_python 1.8.5 bump (6e2021b)

🧩 Major Topics

Sequence diagram tooling — significant refactor

  • Added SequenceParticipant to the sequence logic model, refactored
    parser/resolver, added source-location tracking, fixed related tests.
    (5f1fc92,
    df8dec0,
    2e1a1a7,
    09bee59,
    c8eca5d,
    7c9b690)
  • Expanded parser syntax support: lifecycle commands, ref-over statements,
    message suffixes/missing endpoints, group and return commands, and
    graceful handling of unmodeled syntax instead of failing
    (a16eccf,
    b2b9978,
    3add899,
    c60d96b,
    93afcd8)

Component/Class diagram tooling

  • New common identity struct for consistent UID traceability across
    components (fd21ff0).
  • Source location added for components and classes
    (e99f189,
    371edcc);
    component diagram title fix
    (6a4f971).
  • Added lollipop (provided/required interface) relation support
    (b71001d).

Validation framework — new capability + diagnostics overhaul

  • Added public API and static design validation with spec
    (7ccbcc4,
    c082280),
    diagram schema check before opening
    (c224ae1), fix
    to only check component-internal interfaces
    (e9553b1).
  • Wired unit validation into the dependable-element workflow
    (1ce2cbb), with
    a new validation overview doc
    (2b6f125).
  • Broad diagnostics refactor across the validator stack, plus shared error
    formatting support: bazel component validator, class design
    implementation, component internal/public API, component sequence, and
    sequence internal API diagnostics
    (01fb511,
    d52655d,
    bd6c8c5,
    781859d,
    0067aa7,
    9e760de,
    1e86eb5).
  • Removed the now-obsolete component/class integration test suite in favor
    of the new validator tests
    (6a6fa13).

rules_score docs/toolchain overhaul

  • Sphinx toolchain reworked (see API break above), reusable building blocks
    introduced, needs-loading deduped between sphinx_module_ext and
    bazel_sphinx_needs
    (9c4706b,
    395d7b7).
  • Lobster RST report integration reworked (dev mode, always prints report if
    available) (728b239);
    tracing tag added for every Interface method
    (3c21375); test
    case coverage added
    (1e21640).
  • Examples split into separate modules to enable dependable-element
    integration testing; CI reworked into parallel runners
    (49d7975).
  • New skills documentation added for the repo (rules-score,
    score-architecture, score-requirements, score-safety-analysis,
    score-testing) with a sync mechanism
    (8b9b31c,
    9baca71).
  • Additional docs/sphinx fixes: diamond-dependency HTML merge flattening,
    cross-module link-rewriting fixes, per-target conf.py generation and a
    confdir/cwd bug fix, and general rule hygiene in sphinx_module.bzl
    (fa242cd,
    53b4301,
    80a56cb,
    45916a8,
    cc7fce5).

cr_checker refactor

  • Copyright-header checker rewritten to use git-based file discovery,
    switched from an include- to an exclude-based file schema, reads each
    file only once (previously up to 3×), and gained integration tests
    (528dba0).

libclang parser hermeticity

  • Header includes now resolved via sysroot, bumped to clang 18, and compile
    flags now sourced from the LLVM toolchain instead of the host
    (c5ff8ce).

Other fixes

  • clang parser: switched from eprintln/no logging to a proper logging
    strategy (50ce3b9);
    plantuml parser now tolerates unresolvable template types instead of
    panicking (bf25920).
  • rules_score: several bugfixes around dependable-element path handling,
    doc-path hermeticity, and sphinx warning suppression
    (ee78ed8); AoU
    harmonization (835f219).
  • CI/repo hygiene: removed pre-commit hook from CI, Python formatting pass,
    sysroot excludes sphinx build dir
    (50f75ea,
    a3246a7,
    326f345),
    fixed copyright headers repo-wide
    (850cd89).

v1.3.1

What's Changed

Full Changelog: eclipse-score/tooling@v1.3.0...v1.3.1

v1.3.0

What's Changed

[!IMPORTANT]
✂ PR body was truncated to here.

@eclipse-score-bot

Copy link
Copy Markdown
Contributor Author

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: MODULE.bazel.lock
Command failed: bazel mod deps --lockfile_mode=update
 no actions running
 no actions running
WARNING: For repository 'aspect_rules_lint', the root module requires module version aspect_rules_lint@2.3.0, but got aspect_rules_lint@2.5.0 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
 no actions running
 no actions running
Error: Digests do not match: Current Digest("c2597c5747e30cb4c8758c28ad80db87bcfc09a3d60cf6f6926469a978546ed7") != Expected Digest("ff4ebbded3f633e59c0bac8fb72ead4f61f3cc776381740bb371fef0399927f3")
ERROR: /tmp/containerbase/cache/.cache/bazel/_bazel_ubuntu/982732602aac55d1e24ae31986b4108e/external/rules_rust+/crate_universe/private/generate_utils.bzl:428:13: Traceback (most recent call last):
	File "/tmp/containerbase/cache/.cache/bazel/_bazel_ubuntu/982732602aac55d1e24ae31986b4108e/external/rules_rust+/crate_universe/extensions.bzl", line 1165, column 37, in _crate_impl
		_generate_hub_and_spokes(
	File "/tmp/containerbase/cache/.cache/bazel/_bazel_ubuntu/982732602aac55d1e24ae31986b4108e/external/rules_rust+/crate_universe/extensions.bzl", line 628, column 44, in _generate_hub_and_spokes
		repin = not lockfile or determine_repin(
	File "/tmp/containerbase/cache/.cache/bazel/_bazel_ubuntu/982732602aac55d1e24ae31986b4108e/external/rules_rust+/crate_universe/private/generate_utils.bzl", line 428, column 13, in determine_repin
		fail(msg)
Error in fail: Error: Digests do not match: Current Digest("c2597c5747e30cb4c8758c28ad80db87bcfc09a3d60cf6f6926469a978546ed7") != Expected Digest("ff4ebbded3f633e59c0bac8fb72ead4f61f3cc776381740bb371fef0399927f3")

The current `lockfile` is out of date for 'crates_score_tooling'. Please re-run bazel using `CARGO_BAZEL_REPIN=true` if this is expected and the lockfile should be updated.
 no actions running
 no actions running
 no actions running
 no actions running
 no actions running
 no actions running
 no actions running
 no actions running
 no actions running
 no actions running
 no actions running
 no actions running
 no actions running
 no actions running
 no actions running
 no actions running
 no actions running
 no actions running
ERROR: error evaluating module extension @@rules_rust+//crate_universe:extensions.bzl%crate
ERROR: Results may be incomplete as 1 extension failed.


@github-actions

Copy link
Copy Markdown
Contributor

License Check Results

🚀 The license check job ran with the Bazel command:

bazel run --lockfile_mode=error //:license-check

Status: ⚠️ Needs Review

Click to expand output
[License Check Output]
Extracting Bazel installation...
Starting local Bazel server (8.7.0) and connecting to it...
INFO: Invocation ID: d5c48bc3-d851-459c-b8dd-9a2db91b6565
Computing main repo mapping: 
ERROR: Error computing the main repository mapping: Missing checksum for registry file https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_tooling/3.0.1/MODULE.bazel not permitted with --lockfile_mode=error. Please run `bazel mod deps --lockfile_mode=update` to update your lockfile.

@masc2023

Copy link
Copy Markdown
Contributor

3 checks are failing, thus closed

@eclipse-score-bot

Copy link
Copy Markdown
Contributor Author

Renovate Ignore Notification

Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future 3.x releases. But if you manually upgrade to 3.x then Renovate will re-enable minor and patch updates automatically.

If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

@eclipse-score-bot
eclipse-score-bot deleted the renovate/score_tooling-3.x branch October 26, 2026 13:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Development

Successfully merging this pull request may close these issues.

2 participants