Skip to content

feat: Quality pack targets - #150

Open
GabrielPinheiro7891 wants to merge 20 commits into
eclipse-score:mainfrom
etas-contrib:feature/AZB-101279-Quality-pack-targets
Open

feat: Quality pack targets#150
GabrielPinheiro7891 wants to merge 20 commits into
eclipse-score:mainfrom
etas-contrib:feature/AZB-101279-Quality-pack-targets

Conversation

@GabrielPinheiro7891

Copy link
Copy Markdown
Contributor

Provide Bazel targets: unit tests, component tests, code coverage.
Added documentation

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown

License Check Results

🚀 The license check job ran with the Bazel command:

bazel run //:license-check

Status: ⚠️ Needs Review

Click to expand output
[License Check Output]
Extracting Bazel installation...
Starting local Bazel server (8.6.0) and connecting to it...
INFO: Invocation ID: 7d9b5635-8c8c-4275-b3b8-3d557182e12b
Computing main repo mapping: 
Computing main repo mapping: 
WARNING: For repository 'platforms', the root module requires module version platforms@1.0.0, but got platforms@1.1.0 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Loading: 
Loading: 3 packages loaded
Analyzing: target //:license-check (4 packages loaded, 0 targets configured)
Analyzing: target //:license-check (4 packages loaded, 0 targets configured)

Analyzing: target //:license-check (69 packages loaded, 10 targets configured)

Analyzing: target //:license-check (146 packages loaded, 397 targets configured)

Analyzing: target //:license-check (159 packages loaded, 3944 targets configured)

Analyzing: target //:license-check (169 packages loaded, 6298 targets configured)

Analyzing: target //:license-check (169 packages loaded, 6308 targets configured)

Analyzing: target //:license-check (169 packages loaded, 6308 targets configured)

Analyzing: target //:license-check (169 packages loaded, 6308 targets configured)

Analyzing: target //:license-check (172 packages loaded, 8195 targets configured)

Analyzing: target //:license-check (175 packages loaded, 11421 targets configured)

Analyzing: target //:license-check (176 packages loaded, 11429 targets configured)

Analyzing: target //:license-check (176 packages loaded, 11429 targets configured)

Analyzing: target //:license-check (176 packages loaded, 11429 targets configured)

Analyzing: target //:license-check (176 packages loaded, 11429 targets configured)

INFO: Analyzed target //:license-check (177 packages loaded, 11555 targets configured).
[12 / 16] JavaToolchainCompileClasses external/rules_java+/toolchains/platformclasspath_classes; 0s disk-cache, processwrapper-sandbox ... (2 actions, 1 running)
INFO: From Generating Dash formatted dependency file ...:
INFO: Successfully converted 2 packages from Cargo.lock to bazel-out/k8-fastbuild/bin/formatted.txt
[14 / 16] JavaToolchainCompileBootClasspath external/rules_java+/toolchains/platformclasspath.jar; 0s disk-cache, processwrapper-sandbox
[15 / 16] Building license.check.license_check.jar (); 0s disk-cache, multiplex-worker
INFO: Found 1 target...
Target //:license.check.license_check up-to-date:
  bazel-bin/license.check.license_check
  bazel-bin/license.check.license_check.jar
INFO: Elapsed time: 32.584s, Critical Path: 2.43s
INFO: 16 processes: 12 internal, 3 processwrapper-sandbox, 1 worker.
INFO: Build completed successfully, 16 total actions
INFO: Running command line: bazel-bin/license.check.license_check ./formatted.txt <args omitted>
usage: org.eclipse.dash.licenses.cli.Main [-batch <int>] [-cd <url>]
       [-confidence <int>] [-ef <url>] [-excludeSources <sources>] [-help] [-lic
       <url>] [-project <shortname>] [-repo <url>] [-review] [-summary <file>]
       [-timeout <seconds>] [-token <token>]

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown

The created documentation from the pull request is available at: docu-html

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't match up with the score process module_template.

I've started the component requirements work for the other components following the guidelines, see #151 and #149. I think we should have this structure across all the components. The actual build of the docs themselves won't work until the update to docs-as-code 6.0 is merged in #148 (updating to use docs_bundles so that we can have docs alongside source).

Please update to match the template.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I pushed the commit Update to match module_template , to match the template. However, like you said, until docs-as-code 6.0 isn't merged this will not work as we get:

"broken_references": [
{
"testcase": "testcase__SystemClockTest__NowReturnsTimepointSuitableForDurationArithmetic_nckqh",
"missing_need": "comp_req__system_time__snapshot"
},
{
"testcase": "testcase__SteadyClockTest__NowReturnsTimepointSuitableForDurationArithmetic_dhwjw",
"missing_need": "comp_req__steady_time__snapshot"
},
{
"testcase": "testcase__HighResSteadyClockTest__NowReturnsTimepointSuitableForDurationArithmetic_ogazc",
"missing_need": "comp_req__high_res_steady_time__snapshot"
},
{
"testcase": "testcase__VehicleClockTest__NowReturnsSynchronizedStatusAndTimepoint_xggob",
"missing_need": "comp_req__vehicle_time__snapshot"
},
{
"testcase": "testcase__VehicleClockTest__InitForwardsToBackend_vsaqs",
"missing_need": "comp_req__vehicle_time__lifecycle"
}
]

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Comment thread score/time/docs/requirements/requirements.rst Outdated
Comment thread score/time/docs/requirements/requirements.rst Outdated
Comment thread score/time/docs/requirements/requirements.rst Outdated
Comment thread score/time/docs/requirements/requirements.rst Outdated
Comment thread score/time/docs/requirements/requirements.rst Outdated
Comment thread score/time/docs/detailed_design/index.rst Outdated

@ryan-steel ryan-steel Aug 28, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are a good start, but I think we could probably do with some more at this level.

  • thread safety for getInstance singleton access
  • thread safety for reading time snapshots
  • linux and qnx platform support
  • error handling (that we log on errors)
  • that we return empty snapshot when backend not initialized
  • AoU that user will initialize backend where necessary

Co-authored-by: Ryan Steel <str1yok@bosch.com>
Signed-off-by: Gabriel Pinheiro <gabriel.pinheiro@etas.com>
The requirement describes type safety enforcement across time domains,
which is functional behavior rather than an interface contract.
Comment on lines +84 to +85
``SteadyClock::Now`` shall return a snapshot backed by
``std::chrono::steady_clock`` without requiring initialization.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
``SteadyClock::Now`` shall return a snapshot backed by
``std::chrono::steady_clock`` without requiring initialization.
``SteadyClock::Now`` shall return a snapshot backed by
``std::chrono::steady_clock`` without requiring prior initialization.

Comment on lines +69 to +72
``HighResSteadyClock::Now`` shall return a monotonic
``ClockSnapshot`` without requiring prior initialization, and shall
not expose ``Init`` / ``IsAvailable`` / ``WaitUntilAvailable`` on the
facade (using them is a compile error).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please either remove the details about Init and Availability or add them to the SteadyClock and SystemClock, also.

Comment on lines +97 to +98
``SystemClock::Now`` shall return a snapshot backed by
``std::chrono::system_clock`` without requiring initialization.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
``SystemClock::Now`` shall return a snapshot backed by
``std::chrono::system_clock`` without requiring initialization.
``SystemClock::Now`` shall return a snapshot backed by
``std::chrono::system_clock`` without requiring prior initialization.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure, if those are feature requirements or more component ones.
The feature requirements are defined in the score repository: https://github.com/eclipse-score/score/tree/main/docs/features/time/requirements

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

already changed on previous commit

Comment thread docs/quality_pack.rst

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmh - where is this file requested - can't find something about it in the score documentation?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its not required. It describes which Bazel targets/tags this repo exposes to the Score docs-as-code

Comment thread docs/quality_pack.rst Outdated
Comment on lines 134 to 141
========================= ===============
Metric Value
========================= ===============
Requirements with source 2/5 (40.0%)
Requirements with test 5/5 (100.0%)
Requirements fully linked 2/5 (40.0%)
Tests linked to reqs 5/27 (18.5%)
Requirements with source 8/8 (100.0%)
Requirements with test 5/8 (62.5%)
Requirements fully linked 5/8 (62.5%)
Tests linked to reqs 5/318 (1.6%)
========================= ===============

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't those kind of things be done by tooling and stored as a build artifact generated by some workflow?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you're right, its better. Changed it

Comment on lines +17 to +24
# Source files carrying `// # req-Id:` markers, exposed to
# //score/time:docs_bundle via its code_targets attribute.
filegroup(
name = "requirement_marked_sources",
srcs = ["clock.h"],
visibility = ["//visibility:public"],
)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:-O Is that really needed? (If yes, I'm asking myself why we have tooling ...)

@GabrielPinheiro7891 GabrielPinheiro7891 Sep 1, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, the API forces it. docs_bundle(...) from @score_docs_as_code//:docs.bzl takes an explicit code_targets = [...] list. the linker doesn't glob the tree because Bazel needs declared inputs. So something has to enumerate the files, either as one big filegroup at the root or (as done here) a small requirement_marked_sources filegroup per source package that the root docs_bundle composes.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please rename this file to index.rst (the folder is named "requirements" already)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is already an index.rst on this folder

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that's the "default one". Please have a look how this is done in this PR: #153

Comment thread score/time/docs/requirements/requirements.rst Outdated
Comment thread score/time/docs/requirements/requirements.rst Outdated
@BjoernAtBosch

Copy link
Copy Markdown
Contributor

Nice requirements so far!

@GabrielPinheiro7891 GabrielPinheiro7891 changed the title AZB #101279 Quality pack targets feat: Quality pack targets Sep 1, 2026
Co-authored-by: Björn Hornburg <Bjoern.Hornburg@de.bosch.com>
Signed-off-by: Gabriel Pinheiro <gabriel.pinheiro@etas.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

3 participants