From f6e3709cd512fe08ae87b59976e50c9870c5b4a7 Mon Sep 17 00:00:00 2001 From: PandaeDo Date: Thu, 29 Oct 2026 11:17:40 +0100 Subject: [PATCH 1/4] Add the S-CORE contributor training A self-paced, hands-on training for contributors on the quality, safety and security tracks. A participant copies this repository into their own account with "Use this template" and runs training/setup.py there; it creates the defect branches, five prepared pull requests, review comments and about fifteen task issues in the copy. The training is self-organised: no tutor, no support, and TRAINING.md says how to repair a broken copy. The solutions (training/SOLUTIONS.md) are open. The module, Training_Module, is made from eclipse-score/module_template (b60778b, docs at the parent of 775aad3c for the template-update task), with one seeded defect per track. New: training/, TRAINING.md, README.md, the issue forms (Feedback, Bug report, Training completed) and the Certificate workflow, which issues a certificate of completion once every issue is closed by a merged pull request. Checked in qorix-group/contributor_training_staging and a private copy made from it: setup dry runs for all three tracks; a real run for safety (5 pull requests with green Build Documentation and Pre-Commit, review comments on a pull request of the participant's own account, 15 issues); the Certificate workflow refusing an unfinished copy. Locally: every defect branch shows the messages SOLUTIONS.md records, and the stage 5 rebase conflicts in the three track documents. Assisted-by: Claude Code (claude-opus-5-5) --- .bazelrc | 29 + .bazelversion | 1 + .devcontainer/Dockerfile | 15 + .devcontainer/devcontainer.json | 6 + .devcontainer/run-tool | 82 + .github/CODEOWNERS | 25 + .github/ISSUE_TEMPLATE/bug_fix.md | 26 + .github/ISSUE_TEMPLATE/bug_report.yml | 39 + .github/ISSUE_TEMPLATE/config.yml | 17 + .github/ISSUE_TEMPLATE/feedback.yml | 35 + .github/ISSUE_TEMPLATE/improvement.md | 26 + .github/ISSUE_TEMPLATE/training_completed.yml | 54 + .github/ISSUE_TEMPLATE/training_finding.md | 42 + .github/PULL_REQUEST_TEMPLATE/bug_fix.md | 34 + .github/PULL_REQUEST_TEMPLATE/improvement.md | 34 + .github/actions/gitlint/action.yml | 44 + .github/certificate/certificate.py | 327 ++ .github/templatesyncignore.txt | 12 + .github/workflows/certificate.yml | 48 + .github/workflows/docs.yml | 40 + .github/workflows/on-pr.yml | 34 + .gitignore | 76 + .pre-commit-config.yaml | 52 + .vscode/extensions.json | 21 + .vscode/restructuredtext.code-snippets | 347 ++ .vscode/settings.json | 101 + .yamlfmt | 16 + BUILD | 62 + CONTRIBUTION.md | 50 + LICENSE | 177 + LICENSES/Apache-2.0.txt | 73 + MODULE.bazel | 255 + MODULE.bazel.lock | 5007 +++++++++++++++++ NOTICE | 47 + README.md | 37 +- REUSE.toml | 44 + TRAINING.md | 152 + docs/components/index.rst | 23 + docs/features/architecture/arc_inspection.rst | 235 + docs/features/architecture/index.rst | 116 + docs/features/index.rst | 30 + .../safety_analysis/aou_requirements.rst | 49 + docs/features/safety_analysis/dfa.rst | 209 + docs/features/safety_analysis/fmea.rst | 138 + docs/features/safety_planning/index.rst | 156 + .../security_analysis/aou_requirements.rst | 49 + docs/features/security_planning/index.rst | 144 + docs/index.rst | 157 + docs/module/index.rst | 51 + docs/module/manuals/api_description/.gitkeep | 0 docs/module/manuals/config/.gitkeep | 0 docs/module/manuals/examples/.gitkeep | 0 docs/module/manuals/index.rst | 23 + docs/module/manuals/performance/.gitkeep | 0 docs/module/manuals/safety_manual.rst | 110 + docs/module/manuals/security_manual.rst | 102 + docs/module/manuals/user_manual.rst | 148 + docs/module/release/release_note.rst | 121 + docs/module/safety_mgt/index.rst | 24 + .../safety_mgt/module_safety_analysis_fdr.rst | 173 + .../safety_mgt/module_safety_package_fdr.rst | 89 + docs/module/safety_mgt/module_safety_plan.rst | 344 ++ .../safety_mgt/module_safety_plan_fdr.rst | 129 + docs/module/security_mgt/index.rst | 23 + .../module_security_package_fdr.rst | 82 + .../security_mgt/module_security_plan.rst | 221 + .../security_mgt/module_security_plan_fdr.rst | 125 + docs/participants/index.rst | 21 + docs/release_notes/index.rst | 22 + docs/release_notes/release_note_v_0_1_0.rst | 182 + docs/template/index.rst | 103 + .../module_verification_report.rst | 130 + examples/BUILD | 29 + examples/Cargo.lock | 18 + .../docs/architecture_modeling_example.rst | 374 ++ examples/docs/index.rst | 23 + project_config.bzl | 17 + pyproject.toml | 22 + score.bazelrc/score_toolchain.bazelrc | 62 + score/BUILD | 12 + score/component_example/BUILD | 50 + .../architecture/chklst_arc_inspection.rst | 215 + .../architecture/component_architecture.rst | 151 + .../docs/architecture/index.rst | 23 + .../chklst_impl_inspection.rst | 120 + .../detailed_design/dd_example_ex_dyn.puml | 26 + .../detailed_design/dd_example_ex_sta.puml | 25 + .../detailed_design_example.rst | 94 + .../docs/detailed_design/index.rst | 42 + score/component_example/docs/index.rst | 93 + score/component_example/docs/manuals/.gitkeep | 0 .../requirements/chklst_req_inspection.rst | 195 + .../docs/requirements/index.rst | 21 + .../docs/requirements/requirements.rst | 107 + .../docs/safety_analysis/aou_requirements.rst | 61 + .../component_classification.rst | 197 + .../docs/safety_analysis/dfa.rst | 210 + .../docs/safety_analysis/fmea.rst | 137 + .../security_analysis/aou_requirements.rst | 61 + .../src/component_example.cpp | 28 + .../src/component_example.hpp | 31 + .../src/component_example_test.cpp | 28 + .../src/lower_level_comp/.gitkeep | 0 .../tests/component_example_test.cpp | 29 + score/tests/BUILD | 30 + score/tests/test_main.cpp | 27 + score/tests/test_main.rs | 19 + training/README.md | 65 + training/SOLUTIONS.md | 149 + training/issues/01-task-0.1.md | 28 + training/issues/02-task-1.1.md | 23 + training/issues/03-task-1.2.md | 25 + training/issues/04-task-2.1.md | 23 + training/issues/05-task-2.4.md | 29 + training/issues/06-task-3.1.md | 25 + training/issues/07-task-3.2.md | 21 + training/issues/08-task-4.1.md | 23 + training/issues/09-task-4.2.md | 24 + training/issues/10-task-4.3.md | 24 + training/issues/11-task-5.1-5.3.md | 25 + training/issues/12-task-5.4.md | 21 + training/issues/14-task-6.1.md | 19 + training/issues/15-task-6.2-6.3.md | 22 + training/issues/16-continuous-improvement.md | 25 + training/patches/build-1.patch | 50 + training/patches/build-2.patch | 76 + training/patches/build-3.patch | 47 + training/patches/r1.patch | 61 + training/patches/r2.patch | 114 + training/patches/r3.patch | 35 + training/patches/r4.patch | 54 + training/patches/r5-safety.patch | 66 + training/patches/r5-security.patch | 65 + training/reviews/r3.json | 15 + training/setup.py | 300 + 135 files changed, 15045 insertions(+), 2 deletions(-) create mode 100644 .bazelrc create mode 100644 .bazelversion create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json create mode 100755 .devcontainer/run-tool create mode 100644 .github/CODEOWNERS create mode 100644 .github/ISSUE_TEMPLATE/bug_fix.md create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feedback.yml create mode 100644 .github/ISSUE_TEMPLATE/improvement.md create mode 100644 .github/ISSUE_TEMPLATE/training_completed.yml create mode 100644 .github/ISSUE_TEMPLATE/training_finding.md create mode 100644 .github/PULL_REQUEST_TEMPLATE/bug_fix.md create mode 100644 .github/PULL_REQUEST_TEMPLATE/improvement.md create mode 100644 .github/actions/gitlint/action.yml create mode 100644 .github/certificate/certificate.py create mode 100644 .github/templatesyncignore.txt create mode 100644 .github/workflows/certificate.yml create mode 100644 .github/workflows/docs.yml create mode 100644 .github/workflows/on-pr.yml create mode 100644 .gitignore create mode 100644 .pre-commit-config.yaml create mode 100644 .vscode/extensions.json create mode 100644 .vscode/restructuredtext.code-snippets create mode 100644 .vscode/settings.json create mode 100644 .yamlfmt create mode 100644 BUILD create mode 100644 CONTRIBUTION.md create mode 100644 LICENSE create mode 100644 LICENSES/Apache-2.0.txt create mode 100644 MODULE.bazel create mode 100644 MODULE.bazel.lock create mode 100644 NOTICE create mode 100644 REUSE.toml create mode 100644 TRAINING.md create mode 100644 docs/components/index.rst create mode 100644 docs/features/architecture/arc_inspection.rst create mode 100644 docs/features/architecture/index.rst create mode 100644 docs/features/index.rst create mode 100644 docs/features/safety_analysis/aou_requirements.rst create mode 100644 docs/features/safety_analysis/dfa.rst create mode 100644 docs/features/safety_analysis/fmea.rst create mode 100644 docs/features/safety_planning/index.rst create mode 100644 docs/features/security_analysis/aou_requirements.rst create mode 100644 docs/features/security_planning/index.rst create mode 100644 docs/index.rst create mode 100644 docs/module/index.rst create mode 100644 docs/module/manuals/api_description/.gitkeep create mode 100644 docs/module/manuals/config/.gitkeep create mode 100644 docs/module/manuals/examples/.gitkeep create mode 100644 docs/module/manuals/index.rst create mode 100644 docs/module/manuals/performance/.gitkeep create mode 100644 docs/module/manuals/safety_manual.rst create mode 100644 docs/module/manuals/security_manual.rst create mode 100644 docs/module/manuals/user_manual.rst create mode 100644 docs/module/release/release_note.rst create mode 100644 docs/module/safety_mgt/index.rst create mode 100644 docs/module/safety_mgt/module_safety_analysis_fdr.rst create mode 100644 docs/module/safety_mgt/module_safety_package_fdr.rst create mode 100644 docs/module/safety_mgt/module_safety_plan.rst create mode 100644 docs/module/safety_mgt/module_safety_plan_fdr.rst create mode 100644 docs/module/security_mgt/index.rst create mode 100644 docs/module/security_mgt/module_security_package_fdr.rst create mode 100644 docs/module/security_mgt/module_security_plan.rst create mode 100644 docs/module/security_mgt/module_security_plan_fdr.rst create mode 100644 docs/participants/index.rst create mode 100644 docs/release_notes/index.rst create mode 100644 docs/release_notes/release_note_v_0_1_0.rst create mode 100644 docs/template/index.rst create mode 100644 docs/verification_report/module_verification_report.rst create mode 100644 examples/BUILD create mode 100644 examples/Cargo.lock create mode 100644 examples/docs/architecture_modeling_example.rst create mode 100644 examples/docs/index.rst create mode 100644 project_config.bzl create mode 100644 pyproject.toml create mode 100644 score.bazelrc/score_toolchain.bazelrc create mode 100644 score/BUILD create mode 100644 score/component_example/BUILD create mode 100644 score/component_example/docs/architecture/chklst_arc_inspection.rst create mode 100644 score/component_example/docs/architecture/component_architecture.rst create mode 100644 score/component_example/docs/architecture/index.rst create mode 100644 score/component_example/docs/detailed_design/chklst_impl_inspection.rst create mode 100644 score/component_example/docs/detailed_design/dd_example_ex_dyn.puml create mode 100644 score/component_example/docs/detailed_design/dd_example_ex_sta.puml create mode 100644 score/component_example/docs/detailed_design/detailed_design_example.rst create mode 100644 score/component_example/docs/detailed_design/index.rst create mode 100644 score/component_example/docs/index.rst create mode 100644 score/component_example/docs/manuals/.gitkeep create mode 100644 score/component_example/docs/requirements/chklst_req_inspection.rst create mode 100644 score/component_example/docs/requirements/index.rst create mode 100644 score/component_example/docs/requirements/requirements.rst create mode 100644 score/component_example/docs/safety_analysis/aou_requirements.rst create mode 100644 score/component_example/docs/safety_analysis/component_classification.rst create mode 100644 score/component_example/docs/safety_analysis/dfa.rst create mode 100644 score/component_example/docs/safety_analysis/fmea.rst create mode 100644 score/component_example/docs/security_analysis/aou_requirements.rst create mode 100644 score/component_example/src/component_example.cpp create mode 100644 score/component_example/src/component_example.hpp create mode 100644 score/component_example/src/component_example_test.cpp create mode 100644 score/component_example/src/lower_level_comp/.gitkeep create mode 100644 score/component_example/tests/component_example_test.cpp create mode 100644 score/tests/BUILD create mode 100644 score/tests/test_main.cpp create mode 100644 score/tests/test_main.rs create mode 100644 training/README.md create mode 100644 training/SOLUTIONS.md create mode 100644 training/issues/01-task-0.1.md create mode 100644 training/issues/02-task-1.1.md create mode 100644 training/issues/03-task-1.2.md create mode 100644 training/issues/04-task-2.1.md create mode 100644 training/issues/05-task-2.4.md create mode 100644 training/issues/06-task-3.1.md create mode 100644 training/issues/07-task-3.2.md create mode 100644 training/issues/08-task-4.1.md create mode 100644 training/issues/09-task-4.2.md create mode 100644 training/issues/10-task-4.3.md create mode 100644 training/issues/11-task-5.1-5.3.md create mode 100644 training/issues/12-task-5.4.md create mode 100644 training/issues/14-task-6.1.md create mode 100644 training/issues/15-task-6.2-6.3.md create mode 100644 training/issues/16-continuous-improvement.md create mode 100644 training/patches/build-1.patch create mode 100644 training/patches/build-2.patch create mode 100644 training/patches/build-3.patch create mode 100644 training/patches/r1.patch create mode 100644 training/patches/r2.patch create mode 100644 training/patches/r3.patch create mode 100644 training/patches/r4.patch create mode 100644 training/patches/r5-safety.patch create mode 100644 training/patches/r5-security.patch create mode 100644 training/reviews/r3.json create mode 100755 training/setup.py diff --git a/.bazelrc b/.bazelrc new file mode 100644 index 0000000..a0d64b7 --- /dev/null +++ b/.bazelrc @@ -0,0 +1,29 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +build --java_language_version=17 +build --tool_java_language_version=17 +build --java_runtime_version=remotejdk_17 +build --tool_java_runtime_version=remotejdk_17 + +test --test_output=errors + +common --registry=https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/ +common --registry=https://bcr.bazel.build + +# Import toolchain bazelrc file +try-import %workspace%/score.bazelrc/score_toolchain.bazelrc + +# Import custom user settings +# Can be used to enable e.g. sanitizers or other features without modifying the main .bazelrc +try-import %workspace%/user.bazelrc diff --git a/.bazelversion b/.bazelversion new file mode 100644 index 0000000..df5119e --- /dev/null +++ b/.bazelversion @@ -0,0 +1 @@ +8.7.0 diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..0d0a16b --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +# Use Dockerfile to get dependabot version bumps after new image is released +FROM ghcr.io/eclipse-score/devcontainer:v1.11.2 diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..23f4e44 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,6 @@ +{ + "name": "eclipse-s-core", + "build": { + "dockerfile": "Dockerfile" + } +} diff --git a/.devcontainer/run-tool b/.devcontainer/run-tool new file mode 100755 index 0000000..1a5cd8e --- /dev/null +++ b/.devcontainer/run-tool @@ -0,0 +1,82 @@ +#!/usr/bin/env bash + +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +# This copy is managed by repo_policy_sync in eclipse-score/tools. +# Please do not edit this copy; update the score-devcontainer-run-tool policy asset. +# Consumer repositories install this runner as .devcontainer/run-tool. +# It runs a pinned CLI tool from PATH in a container, from local PATH on the host +# when available, or through Bazel otherwise. +# Use --strict to bypass local tools on the host and force execution through Bazel. +# See https://github.com/eclipse-score/devcontainer/tree/main/tools. + +set -euo pipefail + +strict=0 +if [[ "${1:-}" == "--strict" ]]; then + strict=1 + shift +fi + +if [[ "$#" -lt 1 ]]; then + echo "Usage: $0 [--strict] [args...]" >&2 + exit 2 +fi + +tool_name="$1" +shift + +# Tests can force either side of the container boundary without changing the +# automatic detection behavior. Reject invalid overrides instead of silently +# treating them as a host environment. +container_mode="${RUN_TOOL_CONTAINER_MODE:-auto}" +case "${container_mode}" in + host) is_container=0 ;; + container) is_container=1 ;; + auto) + if [[ -f /.dockerenv ]] || [[ -f /run/.containerenv ]] || [[ -d /devcontainer ]]; then + is_container=1 + else + is_container=0 + fi + ;; + *) + echo "Invalid RUN_TOOL_CONTAINER_MODE: ${container_mode}" >&2 + exit 2 + ;; +esac + +# A container built from this catalog only ever has the pinned version on +# PATH, so container execution is direct and untouched. +if [[ "${is_container}" -eq 1 ]] && command -v "${tool_name}" >/dev/null 2>&1; then + exec "${tool_name}" "$@" +# On the host, prefer the local tool on PATH for faster execution unless --strict +# is set. If local execution fails, suggest --strict to run the pinned Bazel target. +elif [[ "${strict}" -eq 0 ]] && command -v "${tool_name}" >/dev/null 2>&1; then + if "${tool_name}" "$@"; then + exit 0 + else + exit_code=$? + echo "Execution of local '${tool_name}' failed with exit code ${exit_code}." >&2 + echo "Use '--strict' to bypass the local tool and run the pinned version via Bazel." >&2 + exit "${exit_code}" + fi +elif command -v bazel >/dev/null 2>&1; then + # Consumer repositories expose this module as @score_devcontainer; `--` + # prevents tool flags from being interpreted as Bazel flags. + exec bazel run "@score_devcontainer//tools:${tool_name}" -- "$@" +else + echo "Could not run '${tool_name}': no container command or Bazel executable is available." >&2 + exit 127 +fi diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..4b3d96d --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,25 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +# GitHub CODEOWNERS file is a simple way to automate review system on github, +# by automatically assigning owners to a pull request based on which files +# were modified. All directories should have a proper codeowner +# Syntax: https://help.github.com/articles/about-codeowners/ + +# Note: last match wins + +# default owners +# @eclipse-score/community-process +# interim solution: +* @pahmann @masc2023 @aschemmel-tech @PandaeDo @RolandJentschETAS diff --git a/.github/ISSUE_TEMPLATE/bug_fix.md b/.github/ISSUE_TEMPLATE/bug_fix.md new file mode 100644 index 0000000..7d6c290 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_fix.md @@ -0,0 +1,26 @@ + + +--- +name: Bugfix +about: 'Issue to track a bugfix' +title: 'Bugfix: Your bugfix title' +labels: 'codeowner_review' +assignees: '' + +--- + +> [!IMPORTANT] +> Make sure to link this issue with the PR for your bugfix. diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..bf35f9f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,39 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +name: Bug report +description: Something in the contributor training does not work as described +labels: [bug-report] +body: + - type: markdown + attributes: + value: | + Open this in **eclipse-score/contributor_training**, not in your copy. **There is no support**: the maintainers fix the training, they do not repair copies. "When something breaks" in TRAINING.md says what you can do yourself. + - type: input + id: where + attributes: + label: Where + description: Task, file, branch or command + validations: + required: true + - type: textarea + id: what + attributes: + label: What happened, and what you expected + description: Quote the command and its output. + validations: + required: true + - type: input + id: version + attributes: + label: Training version + description: The date you made your copy, or the commit of eclipse-score/contributor_training it was made from diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..34d0adc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,17 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +blank_issues_enabled: true +contact_links: + - name: Questions about S-CORE + url: https://github.com/orgs/eclipse-score/discussions + about: The training has no support. Questions about S-CORE itself go to the role that owns the topic, see TRAINING.md. diff --git a/.github/ISSUE_TEMPLATE/feedback.yml b/.github/ISSUE_TEMPLATE/feedback.yml new file mode 100644 index 0000000..57b302f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feedback.yml @@ -0,0 +1,35 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +name: Feedback +description: Tell the maintainers what should be better in the contributor training +labels: [feedback] +body: + - type: markdown + attributes: + value: | + Open this in **eclipse-score/contributor_training**, not in your copy: nobody else can see your copy. + The maintainers read every feedback and improve the training. **There is no support**: for questions about S-CORE itself, see "Feedback, bugs and questions" in TRAINING.md. + - type: dropdown + id: track + attributes: + label: Track + options: [quality, safety, security, not started yet] + validations: + required: true + - type: textarea + id: feedback + attributes: + label: What should be better + description: One point per line. Say where (task, file, step) and what you expected. + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/improvement.md b/.github/ISSUE_TEMPLATE/improvement.md new file mode 100644 index 0000000..769b0e7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/improvement.md @@ -0,0 +1,26 @@ + + +--- +name: Improvement +about: 'Issue to track a improvement' +title: 'Improvement: Your improvement title' +labels: 'codeowner_review' +assignees: '' + +--- + +> [!IMPORTANT] +> Make sure to link this issue with the PR for your improvement. diff --git a/.github/ISSUE_TEMPLATE/training_completed.yml b/.github/ISSUE_TEMPLATE/training_completed.yml new file mode 100644 index 0000000..4f697c4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/training_completed.yml @@ -0,0 +1,54 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +name: Training completed +description: Record that you completed the contributor training +title: "Training completed: " +labels: [training-completed] +body: + - type: markdown + attributes: + value: | + Open this in **eclipse-score/contributor_training** once the Certificate workflow in your copy has issued your certificate. This issue is the public record that you did the training. It is visible to everyone. + - type: dropdown + id: track + attributes: + label: Track + options: [quality, safety, security] + validations: + required: true + - type: input + id: date + attributes: + label: Date of the certificate + placeholder: YYYY-MM-DD + validations: + required: true + - type: input + id: commit + attributes: + label: Commit on the certificate + description: The short commit the certificate names ("Issued … at commit …") + validations: + required: true + - type: textarea + id: feedback + attributes: + label: Anything the maintainers should know + description: Optional. Larger points are better as a separate Feedback issue. + - type: checkboxes + id: confirm + attributes: + label: Confirmation + options: + - label: I worked through every stage of the training myself, and the Certificate workflow issued my certificate. + required: true diff --git a/.github/ISSUE_TEMPLATE/training_finding.md b/.github/ISSUE_TEMPLATE/training_finding.md new file mode 100644 index 0000000..9bb2176 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/training_finding.md @@ -0,0 +1,42 @@ +--- +name: Training finding +about: A defect you found during the onboarding training +title: "" +labels: "" +assignees: "" +--- + + + +## What is wrong + + + +## Where + + + +## Why it is wrong + + + +## How to recognise that it is fixed + + + +## Task + + diff --git a/.github/PULL_REQUEST_TEMPLATE/bug_fix.md b/.github/PULL_REQUEST_TEMPLATE/bug_fix.md new file mode 100644 index 0000000..fb54341 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/bug_fix.md @@ -0,0 +1,34 @@ + + +# Bugfix + +> [!IMPORTANT] +> Use this template only for bugfixes that do not influence topics covered by contribution requests or improvements. + +> [!CAUTION] +> Make sure to submit your pull-request as **Draft** until you are ready to have it reviewed by the Committers. + +## Description + +[A short description of the bug being fixed by the contribution.] + +## Related ticket + +> [!IMPORTANT] +> Please replace `[ISSUE-NUMBER]` with the issue-number that tracks this bug fix. If there is no such +> ticket yet, create one via [this issue template](../ISSUE_TEMPLATE/new?template=bug_fix.md). + +closes [ISSUE-NUMBER] (bugfix ticket) diff --git a/.github/PULL_REQUEST_TEMPLATE/improvement.md b/.github/PULL_REQUEST_TEMPLATE/improvement.md new file mode 100644 index 0000000..334ce94 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/improvement.md @@ -0,0 +1,34 @@ + + +# Improvement + +> [!IMPORTANT] +> Use this template only for improvement that do not influence topics covered by contribution requests or bug fixes. + +> [!CAUTION] +> Make sure to submit your pull-request as **Draft** until you are ready to have it reviewed by the Committers. + +## Description + +[A short description of the improvement being addressed by the contribution.] + +## Related ticket + +> [!IMPORTANT] +> Please replace `[ISSUE-NUMBER]` with the issue-number that tracks this bug fix. If there is no such +> ticket yet, create one via [this issue template](../ISSUE_TEMPLATE/new?template=improvement.md). + +closes [ISSUE-NUMBER] (improvement ticket) diff --git a/.github/actions/gitlint/action.yml b/.github/actions/gitlint/action.yml new file mode 100644 index 0000000..8403839 --- /dev/null +++ b/.github/actions/gitlint/action.yml @@ -0,0 +1,44 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +name: "Gitlint Action" +description: "An action to install and run Gitlint on PR commits" +inputs: + pr-number: + description: "Pull Request number used to fetch commits" + required: true + base-branch: + description: "Base branch to compare commits against (default: origin/main)" + default: "origin/main" + required: false +runs: + using: "docker" + image: "jorisroovers/gitlint:0.19.1" + entrypoint: /bin/sh + args: + - -c + - | + git config --global --add safe.directory /github/workspace && \ + git fetch origin +refs/heads/main:refs/remotes/origin/main && \ + git fetch origin +refs/pull/${{ inputs.pr-number }}/head && \ + # Fetch the upstream .gitlint config from eclipse-score/score + git clone --depth 1 https://github.com/eclipse-score/score.git /tmp/score-gitlint && \ + if ! gitlint --config /tmp/score-gitlint/.gitlint --commits origin/main..HEAD; then \ + echo -e "\nWARNING: Your commit message does not follow the required format." && \ + echo "Formatting rules: https://eclipse-score.github.io/score/main/contribute/general/git.html#commit-message-format" && \ + echo -e "To fix your commit message, run:\n" && \ + echo " git commit --amend" && \ + echo "Then update your commit (fix gitlint warnings). Finally, force-push:" && \ + echo " git push --force-with-lease" && \ + exit 1; \ + fi diff --git a/.github/certificate/certificate.py b/.github/certificate/certificate.py new file mode 100644 index 0000000..7069484 --- /dev/null +++ b/.github/certificate/certificate.py @@ -0,0 +1,327 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +"""Issue the certificate of completion of the onboarding training. + +The certificate is only issued when every issue in the repository meets rule 1 of TRAINING.md: +closed by a merged pull request, or closed by hand and linked to a merged pull request in either +direction. The continuous improvement issue may stay open and is not checked. Any other issue is +listed with what to do about it, and the run fails. + +Runs in the "Certificate" workflow. It needs only the Python standard library: the PDF is written +by hand, with the standard fonts every PDF viewer has. + +Environment: GITHUB_TOKEN, GITHUB_REPOSITORY, GITHUB_SHA, GITHUB_STEP_SUMMARY (optional). +""" + +import argparse +import datetime +import json +import os +import re +import sys +import urllib.request + +STAGES = [ + ("Environment", "development environment, Eclipse Contributor Agreement"), + ("Git", "upstream synchronisation, commits that carry their reasoning"), + ("Build", "clean documentation build, defect branches repaired"), + ("Process", "the process behind a work product, project decisions"), + ("Review", "form and content review, answering a review"), + ("Module", "template update with rebase, track document filled in"), + ("Wrap-up", "cross-review, formal document review, retrospective"), +] +ROLES = {"quality": "Quality", "safety": "Safety", "security": "Security"} +# Issues the forms of eclipse-score/contributor_training create; opened in a copy by mistake, they are no tasks. +FORM_LABELS = {"feedback", "bug-report", "training-completed"} +TASK_TITLE = re.compile(r"^\d\.\d") +CONTINUOUS_IMPROVEMENT = re.compile(r"^Continuous improvement\b") + +QUERY = """ +query($owner: String!, $name: String!, $after: String) { + repository(owner: $owner, name: $name) { + pullRequests(states: MERGED) { totalCount } + issues(first: 100, after: $after) { + pageInfo { hasNextPage endCursor } + nodes { + number title state body + comments(last: 50) { nodes { body } } + labels(first: 20) { nodes { name } } + timelineItems(itemTypes: [CLOSED_EVENT, CROSS_REFERENCED_EVENT], first: 100) { + nodes { + __typename + ... on ClosedEvent { closer { + __typename + ... on PullRequest { number merged } + ... on Commit { associatedPullRequests(first: 5) { nodes { number merged } } } + } } + ... on CrossReferencedEvent { source { ... on PullRequest { number merged } } } + } + } + } + } + } +} +""" + +MERGED_QUERY = """ +query($owner: String!, $name: String!, $after: String) { + repository(owner: $owner, name: $name) { + pullRequests(states: MERGED, first: 100, after: $after) { + pageInfo { hasNextPage endCursor } + nodes { number } + } + } +} +""" + + +def graphql(token, variables, query=QUERY): + request = urllib.request.Request( + "https://api.github.com/graphql", + data=json.dumps({"query": query, "variables": variables}).encode(), + headers={"Authorization": f"bearer {token}", "Content-Type": "application/json"}, + ) + with urllib.request.urlopen(request) as response: + result = json.load(response) + if "errors" in result: + sys.exit(f"GitHub API: {result['errors']}") + return result["data"]["repository"] + + +def done_by_pr(issue, merged): + """The merged pull request the issue was done in, or None. + + Either the merged pull request (or a commit of one) that closed the issue, or, for an issue + closed by hand, a merged pull request that mentions it or that the issue names in its text or + in a comment. + """ + if issue["state"] != "CLOSED": + return None + events = issue["timelineItems"]["nodes"] + closed = [event for event in events if event["__typename"] == "ClosedEvent"] + closer = (closed[-1].get("closer") or {}) if closed else {} + if closer.get("__typename") == "PullRequest" and closer["merged"]: + return closer["number"] + if closer.get("__typename") == "Commit": + prs = [pr["number"] for pr in closer["associatedPullRequests"]["nodes"] if pr["merged"]] + if prs: + return prs[0] + mentioned_by = [event["source"]["number"] for event in events + if event["__typename"] == "CrossReferencedEvent" and event["source"].get("merged")] + if mentioned_by: + return mentioned_by[0] + texts = [issue["body"] or ""] + [comment["body"] or "" for comment in issue["comments"]["nodes"]] + named = [int(n) for text in texts for n in re.findall(r"(?>", + b"<< /Type /Pages /Kids [3 0 R] /Count 1 >>", + f"<< /Type /Page /Parent 2 0 R /MediaBox [0 0 {self.WIDTH} {self.HEIGHT}] /Contents 4 0 R " + "/Resources << /Font << /F1 5 0 R /F2 6 0 R /F3 7 0 R >> >> >>".encode(), + b"<< /Length %d >>\nstream\n" % len(stream) + stream + b"\nendstream", + b"<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >>", + b"<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >>", + b"<< /Type /Font /Subtype /Type1 /BaseFont /ZapfDingbats >>", + ] + out, offsets = bytearray(b"%PDF-1.4\n"), [] + for number, body in enumerate(objects, 1): + offsets.append(len(out)) + out += b"%d 0 obj\n" % number + body + b"\nendobj\n" + xref = len(out) + out += b"xref\n0 %d\n0000000000 65535 f \n" % (len(objects) + 1) + out += b"".join(b"%010d 00000 n \n" % offset for offset in offsets) + out += b"trailer\n<< /Size %d /Root 1 0 R >>\nstartxref\n%d\n%%%%EOF\n" % (len(objects) + 1, xref) + return bytes(out) + + +def render(name, account, role, stages, merged_prs, repository, commit, date): + navy, gold, grey = (0.09, 0.18, 0.36), (0.72, 0.56, 0.18), (0.4, 0.4, 0.4) + page, centre = Page(), Page.WIDTH / 2 + page.rect(18, 18, Page.WIDTH - 36, Page.HEIGHT - 36, 4, navy) + page.rect(28, 28, Page.WIDTH - 56, Page.HEIGHT - 56, 0.8, gold) + + page.text(centre, 515, "CERTIFICATE OF COMPLETION", "F2", 30, navy, "center") + page.text(centre, 488, "S-CORE contributor training", "F1", 14, grey, "center") + page.text(centre, 450, "This certifies that", "F1", 12, grey, "center") + page.text(centre, 415, name, "F2", 26, navy, "center") + page.line(centre - 190, 405, centre + 190, 405, 0.8, gold) + as_role = f" on the {role} track" if role else "" + page.text(centre, 385, f"(GitHub @{account}) has completed every stage of the training{as_role}:", "F1", 12, grey, "center") + + top, left = 352, 150 + for number, ((title, content), stage) in enumerate(zip(STAGES, stages)): + y = top - number * 24 + if number % 2 == 0: + page.rect(left - 12, y - 7, Page.WIDTH - 2 * left + 24, 22, 0, (1, 1, 1), fill=(0.95, 0.96, 0.98)) + page.ops.append(f"0.13 0.55 0.13 rg BT /F3 12 Tf {left} {y:.1f} Td (4) Tj ET") + page.text(left + 24, y, f"Stage {number} · {title}", "F2", 11, navy) + page.text(left + 160, y, content, "F1", 10, grey) + findings = f" · {stage['findings']} own finding{'s' if stage['findings'] != 1 else ''}" if stage["findings"] else "" + page.text(Page.WIDTH - left, y, f"{stage['tasks']} task{'s' if stage['tasks'] != 1 else ''}{findings}", "F1", 10, grey, "right") + + tasks = sum(stage["tasks"] for stage in stages) + findings = sum(stage["findings"] for stage in stages) + page.text(centre, 165, f"{tasks} tasks and {findings} own findings, closed by {merged_prs} merged pull requests", + "F2", 12, navy, "center") + + page.text(80, 112, date.strftime("%d %B %Y"), "F2", 12, navy) + page.line(80, 106, 260, 106, 0.6, gold) + page.text(80, 94, "Date of issue", "F1", 9, grey) + page.text(Page.WIDTH - 80, 112, "eclipse-score/contributor_training", "F2", 12, navy, "right") + page.line(Page.WIDTH - 260, 106, Page.WIDTH - 80, 106, 0.6, gold) + page.text(Page.WIDTH - 80, 94, "Training", "F1", 9, grey, "right") + + page.text(centre, 58, f"Issued by the Certificate workflow of {repository} at commit {commit[:7]}.", "F1", 8, grey, "center") + page.text(centre, 47, "It confirms that every training issue was completed through a merged pull request. It is not a proof of " + "competence, and not an Eclipse Foundation certification.", "F1", 8, grey, "center") + return page.pdf() + + +def main(): + parser = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + parser.add_argument("name", help="full name as it shall appear on the certificate") + parser.add_argument("account", help="GitHub account of the participant") + parser.add_argument("--output", default="certificate.pdf") + args = parser.parse_args() + + repository, commit = os.environ["GITHUB_REPOSITORY"], os.environ.get("GITHUB_SHA", "unknown") + issues, merged = collect(os.environ["GITHUB_TOKEN"], repository) + stages, role, blocking = evaluate(issues, merged) + merged_prs = len(merged) + + summary = [] + if blocking: + summary += ["## No certificate yet", "", + "Every issue must be closed by a merged pull request whose description says `Closes #` " + "(rule 1 of `TRAINING.md`). An issue closed by hand counts when a merged pull request " + "mentions it, or when the issue names a merged pull request as its result: if the work is " + "in a merged pull request, add a comment naming it; otherwise reopen the issue and close " + "it with a pull request. " + "Then run this workflow again.", "", + "| Issue | Title | Why it blocks |", "| --- | --- | --- |"] + summary += [f"| {f'#{n}' if n else '–'} | {title} | {reason} |" for n, title, reason in blocking] + else: + date = datetime.date.today() + with open(args.output, "wb") as file: + file.write(render(args.name, args.account, role, stages, merged_prs, repository, commit, date)) + summary += ["## Certificate issued", "", + f"Download it from **Artifacts** below. Track: {role or 'none found'}.", "", + "| Stage | Tasks | Own findings |", "| --- | --- | --- |"] + summary += [f"| {n} {title} | {s['tasks']} | {s['findings']} |" for n, ((title, _), s) in enumerate(zip(STAGES, stages))] + + print("\n".join(summary)) + if "GITHUB_STEP_SUMMARY" in os.environ: + with open(os.environ["GITHUB_STEP_SUMMARY"], "a", encoding="utf-8") as file: + file.write("\n".join(summary) + "\n") + return 1 if blocking else 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/.github/templatesyncignore.txt b/.github/templatesyncignore.txt new file mode 100644 index 0000000..2f099f8 --- /dev/null +++ b/.github/templatesyncignore.txt @@ -0,0 +1,12 @@ +**/Module.bazel +.DS_Store +.bazelversion +.gitignore +**/BUILD +src/ +tests/ +examples/ +docs/ +README.md +project_config.bzl +CODEOWNERS diff --git a/.github/workflows/certificate.yml b/.github/workflows/certificate.yml new file mode 100644 index 0000000..20ee660 --- /dev/null +++ b/.github/workflows/certificate.yml @@ -0,0 +1,48 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +# The last step of the onboarding training. Run by hand once every issue is closed: it checks that +# each one was closed by a merged pull request and, if so, issues the certificate of completion as +# a downloadable artifact. Otherwise it lists what still blocks it and fails. +name: Certificate +on: + workflow_dispatch: + inputs: + name: + description: Your full name, as it shall appear on the certificate + required: true + type: string + +permissions: + contents: read + issues: read + pull-requests: read + +jobs: + certificate: + name: 🎓 Certificate of completion + runs-on: ubuntu-latest + steps: + - name: 📥 Check out + uses: actions/checkout@v7 + - name: 🎓 Check the training and issue the certificate + env: + GITHUB_TOKEN: ${{ github.token }} + NAME: ${{ inputs.name }} + run: python3 .github/certificate/certificate.py "$NAME" "${{ github.actor }}" --output "certificate_${{ github.actor }}.pdf" + - name: 📤 Upload the certificate + uses: actions/upload-artifact@v4 + with: + name: certificate + path: certificate_${{ github.actor }}.pdf + retention-days: 90 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..d384823 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,40 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +name: Documentation CI + +on: + pull_request: + push: + branches: + - main + tags: + - "v*" + release: + types: [published] + merge_group: + types: [checks_requested] + +jobs: + build-docs: + uses: eclipse-score/cicd-workflows/.github/workflows/docs.yml@8d80e8df150cae21d53cbc8031d0f970648f7a67 # v0.0.3 + permissions: + contents: write + pages: write + pull-requests: write + id-token: write + + with: + # the bazel-target depends on your repo specific docs_targets configuration (e.g. "suffix") + bazel-target: "--lockfile_mode=error //:docs -- --github_user=${{ github.repository_owner }} --github_repo=${{ github.event.repository.name }}" + retention-days: 3 diff --git a/.github/workflows/on-pr.yml b/.github/workflows/on-pr.yml new file mode 100644 index 0000000..6d9de1d --- /dev/null +++ b/.github/workflows/on-pr.yml @@ -0,0 +1,34 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +name: On PR +on: + pull_request: + types: [opened, reopened, synchronize] + merge_group: + types: [checks_requested] + +permissions: + contents: read + +jobs: + pre-commit: + name: 🔬 Pre-Commit + runs-on: ubuntu-latest + steps: + - name: 📥 Check out + uses: actions/checkout@v7 + - name: 🛠️ Install pre-commit + run: pip install pre-commit + - name: ✅ Run pre-commit + run: pre-commit run --all-files diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cea24ce --- /dev/null +++ b/.gitignore @@ -0,0 +1,76 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + + +# Bazel +bazel-* +user.bazelrc + +# Ruff +.ruff_cache + +# docs:incremental and docs:ide_support build artifacts + +# docs-as-code build artifacts +# Please don't edit locally; repo_policy_sync keeps this block in sync from score_tools. +_build/ +ubproject.toml +# end docs-as-code build artifacts + +# Vale - editorial style guide +.vale.ini +styles/ + +# direnv - folder-specific bash configuration +.envrc + +# Python +.venv +__pycache__/ +/.coverage + +# MacOS +.DS_Store diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..9e0384f --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,52 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +exclude: '.patch$' +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # v6.0.0 + hooks: + - id: end-of-file-fixer + - id: trailing-whitespace + - id: check-shebang-scripts-are-executable + - id: check-executables-have-shebangs + - id: check-added-large-files + args: [--maxkb=50, --enforce-all] # increase or add git lfs if too strict + exclude: MODULE.bazel.lock + + - repo: https://github.com/eclipse-score/tools + rev: 7694bf823421b5542cd2f45239b8bdf205dbface + hooks: + - id: copyright + + - repo: https://codeberg.org/fsfe/reuse-tool + rev: a1bb792acda6fd0724936b4ebbdbc8eceb9c0459 # v6.2.0 + hooks: + - id: reuse-lint-file + + - repo: https://github.com/google/yamlfmt + rev: 21ca5323a9c87ee37a434e0ca908efc0a89daa07 # v0.21.0 + hooks: + - id: yamlfmt + + - repo: local + hooks: + - id: bzlmod-tidy + name: bazel mod tidy + entry: bazel mod tidy + language: system + pass_filenames: false + - id: bzlmod-lockfile + name: bazel mod deps lockfile check + entry: bazel mod deps --lockfile_mode=error + language: system + pass_filenames: false diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..ce87b69 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,21 @@ +{ + "recommendations": [ + // Editing *.drawio.svg files directly in VS Code + "hediet.vscode-drawio", + + // Some convenient extensions for editing reStructuredText files + "lextudio.restructuredtext", + + // Linting and live preview for score docs + "swyddfa.esbonio", + + // ErrorLens highlights errors and warnings in your code / docs + "usernamehw.errorlens", + + // Linting and formatting for Python (LSP via ruff server) + "charliermarsh.ruff", + + // BasedPyright for python various type checking improvements and pylance features + "detachhead.basedpyright", + ] +} diff --git a/.vscode/restructuredtext.code-snippets b/.vscode/restructuredtext.code-snippets new file mode 100644 index 0000000..1e66353 --- /dev/null +++ b/.vscode/restructuredtext.code-snippets @@ -0,0 +1,347 @@ +{ + "std_req_directive": { + "prefix": "std_req__", + "description": "Create a Standard Requirement", + "body": [ + ".. std_req:: $1", + " :id: std_req__$2", + " :status: ${3|valid|}", + "", + " ${4}" + ] + }, + "std_wp_directive": { + "prefix": "std_wp__", + "description": "Create a Standard Work Product", + "body": [ + ".. std_wp:: $1", + " :id: std_wp__$2", + " :status: ${3|valid|}", + "", + " ${4}" + ] + }, + "workflow_directive": { + "prefix": "wf__", + "description": "Create a Workflow", + "body": [ + ".. workflow:: $1", + " :id: wf__$2", + " :status: ${3|valid, draft|}", + " :input: ${4}", + " :output: ${5}", + " :approved_by: ${6}", + " :responsible: ${7}", + "", + " ${8}" + ] + }, + "gd_req_directive": { + "prefix": "gd_req__", + "description": "Create a Process Requirements", + "body": [ + ".. gd_req:: $1", + " :id: gd_req__$2", + " :status: ${3|valid, draft|}", + "", + " ${4}" + ] + }, + "gd_temp_directive": { + "prefix": "gd_temp__", + "description": "Create a Process Template", + "body": [ + ".. gd_temp:: $1", + " :id: gd_temp__$2", + " :status: ${3|valid, draft|}", + "", + " ${4}" + ] + }, + "gd_chklst_directive": { + "prefix": "gd_chklst__", + "description": "Create a Process Checklist", + "body": [ + ".. gd_chklst:: $1", + " :id: gd_chklst__$2", + " :status: ${3|valid, draft|}", + "", + " ${4}" + ] + }, + "gd_guidl_directive": { + "prefix": "gd_guidl__", + "description": "Create a Process Guideline", + "body": [ + ".. gd_guidl:: $1", + " :id: gd_guidl__$2", + " :status: ${3|valid, draft|}", + "", + " ${4}" + ] + }, + "gd_method_directive": { + "prefix": "gd_meth__", + "description": "Create a Process Method", + "body": [ + ".. gd_method:: $1", + " :id: gd_meth__$2", + " :status: ${3|valid, draft|}", + "", + " ${4}" + ] + }, + "workproduct_directive": { + "prefix": "wp__", + "description": "Create a Workproduct", + "body": [ + ".. workproduct:: $1", + " :id: wp__$2", + " :status: ${3|valid, draft|}", + "", + " ${4}" + ] + }, + "role_directive": { + "prefix": "rl__", + "description": "Create a Role", + "body": [ + ".. role:: $1", + " :id: rl__$2", + "", + " ${3}" + ] + }, + "doc_concept_directive": { + "prefix": "doc_concept__", + "description": "Create a Concept Definition", + "body": [ + ".. doc_concept:: $1", + " :id: doc_concept__$2", + " :status: ${3|valid, draft|}", + "", + " ${4}" + ] + }, + "doc_getstrt_directive": { + "prefix": "doc_getstrt__", + "description": "Create a Getting Startet", + "body": [ + ".. doc_getstrt:: $1", + " :id: doc_getstrt__$2", + " :status: ${3|valid, draft|}", + "", + " ${4}" + ] + }, + "document_directive": { + "prefix": "doc__", + "description": "Create a Generic Document", + "body": [ + ".. document:: $1", + " :id: doc__$2", + " :safety: ${3|QM, ASIL_B, ASIL_D|}", + " :status: ${4|valid, draft, invalid|}", + "", + " ${5}" + ] + }, + "stkh_req_directive": { + "prefix": "stkh_req__", + "description": "Create a Stakeholder Requirement", + "body": [ + ".. stkh_req:: $1", + " :id: stkh_req__$2", + " :reqtype: ${3|Functional, Interface, Process, Legal, Non-Functional|}", + " :security: ${4|YES, NO|}", + " :safety: ${5|QM, ASIL_B, ASIL_D|}", + " :status: ${6|valid, invalid|}", + " :rationale: ${7}", + "", + " ${8}" + ] + }, + "feat_req_directive": { + "prefix": "feat_req__", + "description": "Create a Feature Requirement", + "body": [ + ".. feat_req:: $1", + " :id: feat_req__$2", + " :reqtype: ${3|Functional, Interface, Process, Legal, Non-Functional|}", + " :security: ${4|YES, NO|}", + " :safety: ${5|QM, ASIL_B, ASIL_D|}", + " :status: ${6|valid, invalid|}", + " :satisfies: ${7}", + "", + " ${8}" + ] + }, + "comp_req_directive": { + "prefix": "comp_req__", + "description": "Create a Component Requirement", + "body": [ + ".. comp_req:: $1", + " :id: comp_req__$2", + " :reqtype: ${3|Functional, Interface, Process, Legal, Non-Functional|}", + " :security: ${4|YES, NO|}", + " :safety: ${5|QM, ASIL_B, ASIL_D|}", + " :status: ${6|valid, invalid|}", + " :satisfies: ${7}", + "", + " ${8}" + ] + }, + "tool_req_directive": { + "prefix": "tool_req__", + "description": "Create a Tool Requirement", + "body": [ + ".. tool_req:: $1", + " :id: tool_req__$2", + " :reqtype: ${3|Functional, Interface, Process, Legal, Non-Functional|}", + " :security: ${4|YES, NO|}", + " :safety: ${5|QM, ASIL_B, ASIL_D|}", + " :status: ${6|valid, invalid|}", + " :satisfies: ${7}", + "", + " ${8}" + ] + }, + "aou_req_directive": { + "prefix": "aou_req__", + "description": "Create a Assumption of Use", + "body": [ + ".. aou_req:: $1", + " :id: aou_req__$2", + " :reqtype: ${3|Functional, Interface, Process, Legal, Non-Functional|}", + " :security: ${4|YES, NO|}", + " :safety: ${5|QM, ASIL_B, ASIL_D|}", + " :status: ${6|valid, invalid|}", + "", + " ${7}" + ] + }, + "feat_arc_sta_directive": { + "prefix": "feat_arc_sta__", + "description": "Create a Feature Architecture Static View", + "body": [ + ".. feat_arc_sta:: $1", + " :id: feat_arc_sta__$2", + " :security: ${3|YES, NO|}", + " :safety: ${4|QM, ASIL_B, ASIL_D|}", + " :status: ${5|valid, invalid|}", + " :satisfies: ${6}", + "", + " ${7}" + ] + }, + "feat_arc_dyn_directive": { + "prefix": "feat_arc_dyn__", + "description": "Create a Feature Architecture Dynamic View", + "body": [ + ".. feat_arc_dyn:: $1", + " :id: feat_arc_dyn__$2", + " :security: ${3|YES, NO|}", + " :safety: ${4|QM, ASIL_B, ASIL_D|}", + " :status: ${5|valid, invalid|}", + " :satisfies: ${6}", + "", + " ${7}" + ] + }, + "feat_arc_int_directive": { + "prefix": "feat_arc_int__", + "description": "Create a Feature Architecture Interfaces", + "body": [ + ".. feat_arc_int:: $1", + " :id: feat_arc_int__$2", + " :security: ${3|YES, NO|}", + " :safety: ${4|QM, ASIL_B, ASIL_D|}", + " :status: ${5|valid, invalid|}", + " :satisfies: ${6}", + "", + " ${7}" + ] + }, + "feat_arc_int_op_directive": { + "prefix": "feat_arc_int_op__", + "description": "Create a Feature Architecture Interface Operation", + "body": [ + ".. feat_arc_int_op:: $1", + " :id: feat_arc_int_op__$2", + " :security: ${3|YES, NO|}", + " :safety: ${4|QM, ASIL_B, ASIL_D|}", + " :status: ${5|valid, invalid|}", + "", + " ${6}" + ] + }, + "mod_arc_sta_directive": { + "prefix": "mod_arc_sta__", + "description": "Create a Module Architecture Static View", + "body": [ + ".. mod_arc_sta:: $1", + " :id: mod_arc_sta__$2", + " :security: ${3|YES, NO|}", + " :safety: ${4|QM, ASIL_B, ASIL_D|}", + " :status: ${5|valid, invalid|}", + "", + " ${6}" + ] + }, + "comp_arc_sta_directive": { + "prefix": "comp_arc_sta__", + "description": "Create a Component Architecture Static View", + "body": [ + ".. comp_arc_sta:: $1", + " :id: comp_arc_sta__$2", + " :security: ${3|YES, NO|}", + " :safety: ${4|QM, ASIL_B, ASIL_D|}", + " :status: ${5|valid, invalid|}", + " :satisfies: ${6}", + "", + " ${7}" + ] + }, + "comp_arc_dyn_directive": { + "prefix": "comp_arc_dyn__", + "description": "Create a Component Architecture Dynamic View", + "body": [ + ".. comp_arc_dyn:: $1", + " :id: comp_arc_dyn__$2", + " :security: ${3|YES, NO|}", + " :safety: ${4|QM, ASIL_B, ASIL_D|}", + " :status: ${5|valid, invalid|}", + " :satisfies: ${6}", + "", + " ${7}" + ] + }, + "comp_arc_int_directive": { + "prefix": "comp_arc_int__", + "description": "Create a Component Architecture Interfaces", + "body": [ + ".. comp_arc_int:: $1", + " :id: comp_arc_int__$2", + " :security: ${3|YES, NO|}", + " :safety: ${4|QM, ASIL_B, ASIL_D|}", + " :status: ${5|valid, invalid|}", + " :satisfies: ${6}", + "", + " ${7}" + ] + }, + "comp_arc_int_op_directive": { + "prefix": "comp_arc_int_op__", + "description": "Create a Component Architecture Interface Operation", + "body": [ + ".. comp_arc_int_op:: $1", + " :id: comp_arc_int_op__$2", + " :security: ${3|YES, NO|}", + " :safety: ${4|QM, ASIL_B, ASIL_D|}", + " :status: ${5|valid, invalid|}", + " :satisfies: ${6}", + "", + " ${7}" + ] + } +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..af7dc5f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,101 @@ +{ + // General Settings + "files.insertFinalNewline": true, + "files.trimFinalNewlines": true, + "files.trimTrailingWhitespace": true, + "editor.insertSpaces": true, + "editor.tabCompletion": "on", + // Default for any filetype + "editor.rulers": [ + 99 + ], + // Exclude build, temp and cache folders + "files.watcherExclude": { + ".*/**": true, + "**/__pycache__/**": true, + "bazel-*/**": true, + ".venv*/**": true, + "_build/**": true, + }, + // Python Settings + // Exclude build, temp and cache folders + "python.analysis.exclude": [ + // Note: this overrides the default setting, so we need to re-exclude defaults like .* and **/__pycache__ + ".*", + "**/__pycache__", + "bazel-*", + ".venv*", + "_build", + ], + "[python]": { + // In python using 80 characters per line is the standard. + "editor.rulers": [ + 79 + ], + // Opinionated option for the future: + // "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.sortImports": "explicit" + }, + "editor.defaultFormatter": "charliermarsh.ruff", + }, + // Markdown Settings + "[markdown]": { + // We mostly write markdown in some combination with python, + // so we use the same rulers as python. + "editor.rulers": [ + 79, + 99 + ] + }, + "bazel.lsp.command": "bazel", + "bazel.lsp.args": [ + "run", + "//:starpls_server" + ], + // RST Settings + "[restructuredtext]": { + "editor.tabSize": 3, + }, + // + // + // Esbonio 0.x (Current) + // see https://github.com/swyddfa/esbonio/blob/0.x/docs/lsp/getting-started.rst + // and https://github.com/swyddfa/esbonio/blob/0.x/docs/lsp/editors/vscode/_configuration.rst + "esbonio.server.pythonPath": "${workspaceFolder}/.venv_docs/bin/python", + "esbonio.sphinx.srcDir": "${workspaceFolder}/docs", + "esbonio.sphinx.confDir": "${workspaceFolder}/docs", + "esbonio.sphinx.buildDir": "${workspaceFolder}/_build", + "esbonio.server.logLevel": "info", + // Do not auto-install. We'll use the one in the venv. + "esbonio.server.installBehavior": "nothing", + // Enable port forwarding for preview if working on remote workstation + "remote.autoForwardPorts": true, + "remote.autoForwardPortsSource": "process", + // + // + // Esbonio 1.x (Preview) + "esbonio.sphinx.pythonCommand": [ + ".venv_docs/bin/python" + ], + "esbonio.sphinx.buildCommand": [ + "docs", + "_build", + "-T", // show details in case of errors in extensions + "--jobs", + "auto", + "--conf-dir", + "docs" + ], + // default is "error", which doesn't show anything. + "esbonio.logging.level": "warning", + "python.testing.pytestArgs": [ + ".", + "--ignore-glob=bazel-*/*", + "--ignore-glob=.venv_docs/*", + "--ignore-glob=_build/*", + ], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true, + "python.analysis.typeCheckingMode": "off", +} diff --git a/.yamlfmt b/.yamlfmt new file mode 100644 index 0000000..9bab1d2 --- /dev/null +++ b/.yamlfmt @@ -0,0 +1,16 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +formatter: + type: basic + retain_line_breaks: true diff --git a/BUILD b/BUILD new file mode 100644 index 0000000..4250731 --- /dev/null +++ b/BUILD @@ -0,0 +1,62 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +load("@score_docs_as_code//:docs.bzl", "docs") +load("@score_tooling//:defs.bzl", "copyright_checker", "dash_license_checker", "setup_starpls", "use_format_targets") +load("//:project_config.bzl", "PROJECT_CONFIG") + +setup_starpls( + name = "starpls_server", + visibility = ["//visibility:public"], +) + +copyright_checker( + name = "copyright", + srcs = [ + "score", + "//:BUILD", + "//:MODULE.bazel", + ], + config = "@score_tooling//cr_checker/resources:config", + template = "@score_tooling//cr_checker/resources:templates", + visibility = ["//visibility:public"], +) + +dash_license_checker( + src = "//examples:cargo_lock", + file_type = "", # let it auto-detect based on project_config + project_config = PROJECT_CONFIG, + visibility = ["//visibility:public"], +) + +# Add target for formatting checks +use_format_targets() + +docs( + bundles = [ + { + "bundle": "//score/component_example:docs", + "mount_at": "components/component_example", + }, + { + "bundle": "//examples:docs", + "mount_at": "examples", + }, + ], + data = [ + "@score_process_description//:needs_json", + ], + project = "Module Template Project", + project_url = "https://eclipse-score.github.io/module_template/", + source_dir = "docs", +) diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md new file mode 100644 index 0000000..cfbec36 --- /dev/null +++ b/CONTRIBUTION.md @@ -0,0 +1,50 @@ + + +# Eclipse Safe Open Vehicle Core (SCORE) +The [Eclipse Safe Open Vehicle Core](https://projects.eclipse.org/projects/automotive.score) project aims to develop an open-source core stack for Software Defined Vehicles (SDVs), specifically targeting embedded high-performance Electronic Control Units (ECUs). +Please check the [documentation](https://eclipse-score.github.io) for more information. +The source code is hosted at [GitHub](https://github.com/eclipse-score). + +The communication mainly takes place via the [`score-dev` mailing list](https://accounts.eclipse.org/mailing-list/score-dev) and GitHub issues & pull requests (PR). And we have a chatroom for community discussions here [Eclipse SCORE chatroom](https://chat.eclipse.org/#/room/#automotive.score:matrix.eclipse.org). + +Please note that for the project the [Eclipse Foundation’s Terms of Use](https://www.eclipse.org/legal/terms-of-use/) apply. +In addition, you need to sign the [ECA](https://www.eclipse.org/legal/ECA.php) and the [DCO](https://www.eclipse.org/legal/dco/) to contribute to the project. + +## Contributing +### Getting the source code & building the project +Please refer to the [README.md](README.md) for further information. + +### Getting involved + +#### Setup Phase +This phase is part of the eclipse Incubation Phase and shall establish all the processes needed for a safe development of functions. Only after this phase it will be possible to contribute code to the project. As the development in this project is driven by requirements, the processes and needed infrastructure incl. tooling will be established based on non-functional Stakeholder_Requirements. During setup phase the contributions are Bug Fixes and Improvements (both on processes and infrastructure). + +#### Bug Fixes and Improvements +Improvements are adding/changing processes and infrastructure, bug fixes can be also on development work products like code. +In case you want to fix a bug or contribute an improvement, please perform the following steps: +1) Create a PR by using the corresponding template ([Bugfix PR template](.github/PULL_REQUEST_TEMPLATE/bug_fix.md) or [Improvement PR template](.github/PULL_REQUEST_TEMPLATE/improvement.md)). Please mark your PR as draft until it's ready for review by the Committers (see the [Eclipse Foundation Project Handbook](https://www.eclipse.org/projects/handbook/#contributing-committers) for more information on the role definitions). Improvements are requested by the definition or modification of [Stakeholder Requirements](docs/stakeholder_requirements) or [Tool Requirements](docs/tool_requirements) and may be implemented after acceptance/merge of the request by a second Improvement PR. The needed reviews are automatically triggered via the [CODEOWNERS](.github/CODEOWNERS) file in the repository. +2) Initiate content review by opening a corresponding issue for the PR when it is ready for review. Review of the PR and final merge into the project repository is in responsibility of the Committers. Use the [Bugfix Issue template](.github/ISSUE_TEMPLATE/bug_fix.md) or [Improvement Issue template](.github/ISSUE_TEMPLATE/improvement.md) for this. + +Please check here for our Git Commit Rules in the [Configuration_Tool_Guidelines](https://eclipse-score.github.io/score/process_description/guidelines/index.html). + +Please use the [Stakeholder and Tool Requirements Template](https://eclipse-score.github.io/score/process_description/templates/index.html) when defining these requirements. + +![Contribution guide workflow](./docs/_assets/contribution_guide.svg "Contribution guide workflow") + +#### Additional Information +Please note, that all Git commit messages must adhere the rules described in the [Eclipse Foundation Project Handbook](https://www.eclipse.org/projects/handbook/#resources-commit). + +Please find process descriptions here: [process description](https://eclipse-score.github.io/score/process_description/). diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f433b1a --- /dev/null +++ b/LICENSE @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt new file mode 100644 index 0000000..137069b --- /dev/null +++ b/LICENSES/Apache-2.0.txt @@ -0,0 +1,73 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + + You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/MODULE.bazel b/MODULE.bazel new file mode 100644 index 0000000..1c240e0 --- /dev/null +++ b/MODULE.bazel @@ -0,0 +1,255 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +module(name = "score_module_template") + +bazel_dep(name = "rules_python", version = "1.8.5", dev_dependency = True) + +# Python 3.12: Required for testing infrastructure and code generation tools +PYTHON_VERSION = "3.12" + +python = use_extension( + "@rules_python//python/extensions:python.bzl", + "python", + dev_dependency = True, +) +python.toolchain( + is_default = True, + python_version = PYTHON_VERSION, +) + +pip = use_extension( + "@rules_python//python/extensions:pip.bzl", + "pip", + dev_dependency = True, +) +pip.parse( + envsubst = ["PIP_INDEX_URL"], + extra_pip_args = ["--index-url=${PIP_INDEX_URL:-https://pypi.org/simple/}"], + hub_name = "module_template_docs_hub_env", + python_version = PYTHON_VERSION, + requirements_lock = "@score_docs_as_code//src:requirements.txt", +) +use_repo(pip, "module_template_docs_hub_env") + +# Add GoogleTest dependency +bazel_dep(name = "googletest", version = "1.17.0.bcr.2", dev_dependency = True) + +# Rust rules for Bazel +bazel_dep(name = "rules_rust", version = "0.70.0") + +# C/C++ rules for Bazel +bazel_dep(name = "rules_cc", version = "0.2.18") + +# LLVM Toolchains Rules - host configuration +bazel_dep(name = "toolchains_llvm", version = "1.7.0", dev_dependency = True) + +llvm = use_extension( + "@toolchains_llvm//toolchain/extensions:llvm.bzl", + "llvm", + dev_dependency = True, +) +llvm.toolchain( + cxx_standard = {"": "c++17"}, + llvm_version = "19.1.0", +) +use_repo(llvm, "llvm_toolchain") +use_repo(llvm, "llvm_toolchain_llvm") + +register_toolchains("@llvm_toolchain//:all") + +# tooling +bazel_dep(name = "score_tooling", version = "1.2.0", dev_dependency = True) +bazel_dep(name = "aspect_rules_lint", version = "2.3.0", dev_dependency = True) +bazel_dep(name = "buildifier_prebuilt", version = "8.5.1.2", dev_dependency = True) + +#docs-as-code +bazel_dep(name = "score_docs_as_code", version = "8.4.0") +bazel_dep(name = "score_process_description", version = "2.1.2") +git_override( + module_name = "score_process_description", + commit = "6606668a19d995829d9dbbf53950e5fc55b977e0", + remote = "https://github.com/eclipse-score/process_description.git", +) + +# grpc-java 1.66.0 imports a grpc extension repo removed in newer grpc versions. +# Force a compatible grpc-java version until upstream dependencies converge. +single_version_override( + module_name = "grpc-java", + version = "1.70.0", +) + +# Provide the tools from the devcontainer to Bazel +bazel_dep(name = "score_devcontainer", version = "1.11.2", dev_dependency = True) +bazel_dep(name = "score_cpp_policies", version = "0.1.1", dev_dependency = True) + +############################################################################### +# +# S-CORE Toolchains (DO NOT MODIFY) +# +############################################################################### +bazel_dep(name = "score_bazel_cpp_toolchains", version = "1.0.4", dev_dependency = True) + +bazel_dep(name = "score_bazel_platforms", version = "1.1.0") + +# GCC Toolchains +gcc = use_extension("@score_bazel_cpp_toolchains//extensions:gcc.bzl", "gcc") + +# Compiler-warning features are owned by score_cpp_policies +_WARNING_ENABLED_FEATURES = [ + "@score_cpp_policies//warnings/gcc/features:minimal_warnings", + "@score_cpp_policies//warnings/gcc/features:warnings_as_errors", +] + +_WARNING_KNOWN_FEATURES = [ + "@score_cpp_policies//warnings/gcc/features:strict_warnings", + "@score_cpp_policies//warnings/gcc/features:all_wall_warnings", +] + +## Linux Toolchains +gcc.toolchain( + name = "score_gcc_x86_64_toolchain", + extra_enabled_features = _WARNING_ENABLED_FEATURES, + extra_known_features = _WARNING_KNOWN_FEATURES, + target_cpu = "x86_64", + target_os = "linux", + use_default_package = True, + version = "12.2.0", +) +gcc.toolchain( + name = "score_gcc_aarch64_toolchain", + extra_enabled_features = _WARNING_ENABLED_FEATURES, + extra_known_features = _WARNING_KNOWN_FEATURES, + target_cpu = "aarch64", + target_os = "linux", + use_default_package = True, + version = "12.2.0", +) + +## Elektobit Toolchains +gcc.toolchain( + name = "score_ebclfsa_toolchain", + runtime_ecosystem = "ebclfsa", + sdk_version = "0.1.0", + target_cpu = "aarch64", + target_os = "linux", + use_default_package = True, +) + +## AutoSD10 Toolchains +gcc.toolchain( + name = "score_autosd10_x86_64_toolchain", + runtime_ecosystem = "autosd10", + target_cpu = "x86_64", + target_os = "linux", + use_default_package = True, +) +gcc.toolchain( + name = "score_autosd10_aarch64_toolchain", + runtime_ecosystem = "autosd10", + target_cpu = "aarch64", + target_os = "linux", + use_default_package = True, +) +use_repo( + gcc, + "score_autosd10_aarch64_toolchain", + "score_autosd10_x86_64_toolchain", + "score_ebclfsa_toolchain", + "score_gcc_aarch64_toolchain", + "score_gcc_x86_64_toolchain", +) + +# Rust Toolchains +bazel_dep(name = "score_toolchains_rust", version = "0.10.0", dev_dependency = True) + +ferrocene = use_extension( + "@score_toolchains_rust//extensions:ferrocene_toolchain_ext.bzl", + "ferrocene_toolchain_ext", +) +ferrocene.toolchain( + name = "ferrocene_aarch64_ebclfsa", + coverage_tools_sha256 = "497958e925bc94833ea226d68f6d5ba38bd890f571c73e230141d2923e30dd94", + coverage_tools_strip_prefix = "779fbed05ae9e9fe2a04137929d99cc9b3d516fd/x86_64-unknown-linux-gnu", + coverage_tools_url = "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.0.1/coverage-tools-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-unknown-linux-gnu.tar.gz", + exec_triple = "x86_64-unknown-linux-gnu", + extra_rustc_flags = [ + "-Clink-arg=-Wl,--no-as-needed", + "-Clink-arg=-lstdc++", + "-Clink-arg=-static-libstdc++", + "-Clink-arg=-static", + "-Clink-arg=-lm", + "-Clink-arg=-lc", + ], + sha256 = "b1f1eb1146bf595fe1f4a65d5793b7039b37d2cb6d395d1c3100fa7d0377b6c9", + target_compatible_with = [ + "@platforms//cpu:aarch64", + "@platforms//os:linux", + ], + target_triple = "aarch64-unknown-linux-gnu", + url = "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.0.1/ferrocene-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-aarch64-unknown-linux-gnu.tar.gz", +) +use_repo( + ferrocene, + "ferrocene_aarch64_ebclfsa", +) + +# QNX Toolchains +bazel_dep(name = "score_rules_imagefs", version = "0.1.0", dev_dependency = True) + +imagefs = use_extension("@score_rules_imagefs//extensions:imagefs.bzl", "imagefs", dev_dependency = True) +imagefs.toolchain( + name = "score_qnx_x86_64_ifs_toolchain", + sdp_to_import = "@score_qcc_x86_64_toolchain_pkg", + sdp_version = "8.0.4", + target_cpu = "x86_64", + target_os = "qnx", + type = "ifs", +) +imagefs.toolchain( + name = "score_qnx_aarch64_ifs_toolchain", + sdp_to_import = "@score_qcc_aarch64_toolchain_pkg", + sdp_version = "8.0.4", + target_cpu = "aarch64", + target_os = "qnx", + type = "ifs", +) +use_repo(imagefs, "score_qnx_aarch64_ifs_toolchain", "score_qnx_x86_64_ifs_toolchain") + +qcc = use_extension("@score_bazel_cpp_toolchains//extensions:gcc.bzl", "gcc", dev_dependency = True) +qcc.toolchain( + name = "score_qcc_aarch64_toolchain", + extra_enabled_features = _WARNING_ENABLED_FEATURES, + extra_known_features = _WARNING_KNOWN_FEATURES, + sdp_version = "8.0.4", + target_cpu = "aarch64", + target_os = "qnx", + use_default_package = True, + version = "12.2.0", +) +qcc.toolchain( + name = "score_qcc_x86_64_toolchain", + extra_enabled_features = _WARNING_ENABLED_FEATURES, + extra_known_features = _WARNING_KNOWN_FEATURES, + sdp_version = "8.0.4", + target_cpu = "x86_64", + target_os = "qnx", + use_default_package = True, + version = "12.2.0", +) +use_repo( + qcc, + "score_qcc_aarch64_toolchain", + "score_qcc_aarch64_toolchain_pkg", + "score_qcc_x86_64_toolchain", + "score_qcc_x86_64_toolchain_pkg", +) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock new file mode 100644 index 0000000..bc8c50b --- /dev/null +++ b/MODULE.bazel.lock @@ -0,0 +1,5007 @@ +{ + "lockFileVersion": 24, + "registryFileHashes": { + "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", + "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", + "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", + "https://bcr.bazel.build/modules/abseil-cpp/20220623.1/MODULE.bazel": "73ae41b6818d423a11fd79d95aedef1258f304448193d4db4ff90e5e7a0f076c", + "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.0/MODULE.bazel": "98dc378d64c12a4e4741ad3362f87fb737ee6a0886b2d90c3cdbb4d93ea3e0bf", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16", + "https://bcr.bazel.build/modules/abseil-cpp/20240722.0/MODULE.bazel": "88668a07647adbdc14cb3a7cd116fb23c9dda37a90a1681590b6c9d8339a5b84", + "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/MODULE.bazel": "c4a89e7ceb9bf1e25cf84a9f830ff6b817b72874088bf5141b314726e46a57c1", + "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/MODULE.bazel": "d209fdb6f36ffaf61c509fcc81b19e81b411a999a934a032e10cd009a0226215", + "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/source.json": "d725d73707d01bb46ab3ca59ba408b8e9bd336642ca77a2269d4bfb8bbfd413d", + "https://bcr.bazel.build/modules/ape/1.0.1/MODULE.bazel": "37411cfd13bfc28cd264674d660a3ecb3b5b35b9dbe4c0b2be098683641b3fee", + "https://bcr.bazel.build/modules/apple_support/1.11.1/MODULE.bazel": "1843d7cd8a58369a444fc6000e7304425fba600ff641592161d9f15b179fb896", + "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85", + "https://bcr.bazel.build/modules/apple_support/1.17.1/MODULE.bazel": "655c922ab1209978a94ef6ca7d9d43e940cd97d9c172fb55f94d91ac53f8610b", + "https://bcr.bazel.build/modules/apple_support/1.22.1/MODULE.bazel": "90bd1a660590f3ceffbdf524e37483094b29352d85317060b2327fff8f3f4458", + "https://bcr.bazel.build/modules/apple_support/1.23.1/MODULE.bazel": "53763fed456a968cf919b3240427cf3a9d5481ec5466abc9d5dc51bc70087442", + "https://bcr.bazel.build/modules/apple_support/1.24.1/MODULE.bazel": "f46e8ddad60aef170ee92b2f3d00ef66c147ceafea68b6877cb45bd91737f5f8", + "https://bcr.bazel.build/modules/apple_support/1.24.1/source.json": "cf725267cbacc5f028ef13bb77e7f2c2e0066923a4dab1025e4a0511b1ed258a", + "https://bcr.bazel.build/modules/aspect_bazel_lib/1.31.2/MODULE.bazel": "7bee702b4862612f29333590f4b658a5832d433d6f8e4395f090e8f4e85d442f", + "https://bcr.bazel.build/modules/aspect_bazel_lib/1.38.0/MODULE.bazel": "6307fec451ba9962c1c969eb516ebfe1e46528f7fa92e1c9ac8646bef4cdaa3f", + "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.2/MODULE.bazel": "2e0d8ab25c57a14f56ace1c8e881b69050417ff91b2fb7718dc00d201f3c3478", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.0.0/MODULE.bazel": "e118477db5c49419a88d78ebc7a2c2cea9d49600fe0f490c1903324a2c16ecd9", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.11.0/MODULE.bazel": "cb1ba9f9999ed0bc08600c221f532c1ddd8d217686b32ba7d45b0713b5131452", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.16.0/MODULE.bazel": "852f9ebbda017572a7c113a2434592dd3b2f55cd9a0faea3d4be5a09a59e4900", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.20.0/MODULE.bazel": "c5565bac49e1973227225b441fad1c938d498d83df62dc5da95b2fab0f0626a2", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.0/MODULE.bazel": "7fe0191f047d4fe4a4a46c1107e2350cbb58a8fc2e10913aa4322d3190dec0bf", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.0/source.json": "369df5b7f2eae82f200fff95cf1425f90dee90a0d0948122060b48150ff0e224", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "66baf724dbae7aff4787bf2245cc188d50cb08e07789769730151c0943587c14", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.4/MODULE.bazel": "ccc41028429f894b02fde7ef67d416cba3ba5084ed9ddb9bb6107aa82d118776", + "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.21.0/MODULE.bazel": "77dc393c43ad79398b05865444c5200c6f1aae6765615544f2c7730b5858d533", + "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.21.0/source.json": "062b1d3dba8adcfeb28fe60c185647f5a53ec0487ffe93cf0ae91566596e4b49", + "https://bcr.bazel.build/modules/aspect_rules_js/1.33.1/MODULE.bazel": "db3e7f16e471cf6827059d03af7c21859e7a0d2bc65429a3a11f005d46fc501b", + "https://bcr.bazel.build/modules/aspect_rules_js/1.40.0/MODULE.bazel": "01a1014e95e6816b68ecee2584ae929c7d6a1b72e4333ab1ff2d2c6c30babdf1", + "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", + "https://bcr.bazel.build/modules/aspect_rules_js/2.3.8/MODULE.bazel": "74bf20a7a6bd5f2be09607fdb4196cfd6f203422ea271752ec2b1afe95426101", + "https://bcr.bazel.build/modules/aspect_rules_js/2.3.8/source.json": "411ec9d79d6f5fe8a083359588c21d01a5b48d88a2cbd334a4c90365015b7836", + "https://bcr.bazel.build/modules/aspect_rules_lint/0.12.0/MODULE.bazel": "e767c5dbfeb254ec03275a7701b5cfde2c4d2873676804bc7cb27ddff3728fed", + "https://bcr.bazel.build/modules/aspect_rules_lint/1.0.3/MODULE.bazel": "ed0fe929647ba21d2041e14ea3d757133ca306b72d4998e8a3d0d2f515196765", + "https://bcr.bazel.build/modules/aspect_rules_lint/1.3.1/MODULE.bazel": "06ce330900a7d6403bc8d88e5dfad6aeeb8ae40179f66bb89e69c8bf6f6b1a0b", + "https://bcr.bazel.build/modules/aspect_rules_lint/1.4.2/MODULE.bazel": "78d025facf6fa675fd6f0b62fd6a9a2bec7ef5ae1e288e5b53f4383b98017105", + "https://bcr.bazel.build/modules/aspect_rules_lint/1.4.4/MODULE.bazel": "24459eeeeb084bc3e7628c338e494746718bc17b3a3cbd94415c8df5c7c6dc37", + "https://bcr.bazel.build/modules/aspect_rules_lint/1.5.3/MODULE.bazel": "7fee71b11be63f1cf0458cd8c731712a0e672d0bb6df8879ed70249bf8dfdfdc", + "https://bcr.bazel.build/modules/aspect_rules_lint/2.3.0/MODULE.bazel": "4d36bce3c1347bb4fed5906877dce0e683cb207f4032711aff32334003bcf835", + "https://bcr.bazel.build/modules/aspect_rules_lint/2.5.0/MODULE.bazel": "24f49acb3b8375fa138ba6ab53bcf517ae92529770a04ab04d47c958ff47b63e", + "https://bcr.bazel.build/modules/aspect_rules_lint/2.5.0/source.json": "8beadb1db5fa4b5e36769a5247c200a877fbc9f397dc10b5aa33e76099483070", + "https://bcr.bazel.build/modules/aspect_rules_py/1.0.0/MODULE.bazel": "8eb29876512d3242af50a424300bec5c5f8957b455963df5f618cb7fd4e8ae19", + "https://bcr.bazel.build/modules/aspect_rules_py/1.4.0/MODULE.bazel": "6fd29b93207a31445d5d3ab9d9882fd5511e43c95e8e82e7492872663720fd44", + "https://bcr.bazel.build/modules/aspect_rules_py/1.4.0/source.json": "fb1ba946478fb6dbb26d49307d756b0fd2ff88be339af23c39c0397d59143d2c", + "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.0/MODULE.bazel": "d0045b5eabb012be550a609589b3e5e47eba682344b19cfd9365d4d896ed07df", + "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.0/source.json": "5593e3f1cd0dd5147f7748e163307fd5c2e1077913d6945b58739ad8d770a290", + "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.5/MODULE.bazel": "5a3c8013c3ba9ebc0a65efda40e4376b869e1260873c98020504feed55244ce8", + "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.8/MODULE.bazel": "aa975a83e72bcaac62ee61ab12b788ea324a1d05c4aab28aadb202f647881679", + "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.8/source.json": "786cbc49377fb6bf4859aec5b1c61f8fc26b08e9fdb929e2dde2e1e2a406bd24", + "https://bcr.bazel.build/modules/bazel_features/0.1.0/MODULE.bazel": "47011d645b0f949f42ee67f2e8775188a9cf4a0a1528aa2fa4952f2fd00906fd", + "https://bcr.bazel.build/modules/bazel_features/1.0.0/MODULE.bazel": "d7f022dc887efb96e1ee51cec7b2e48d41e36ff59a6e4f216c40e4029e1585bf", + "https://bcr.bazel.build/modules/bazel_features/1.1.0/MODULE.bazel": "cfd42ff3b815a5f39554d97182657f8c4b9719568eb7fded2b9135f084bf760b", + "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", + "https://bcr.bazel.build/modules/bazel_features/1.10.0/MODULE.bazel": "f75e8807570484a99be90abcd52b5e1f390362c258bcb73106f4544957a48101", + "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", + "https://bcr.bazel.build/modules/bazel_features/1.13.0/MODULE.bazel": "c14c33c7c3c730612bdbe14ebbb5e61936b6f11322ea95a6e91cd1ba962f94df", + "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", + "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", + "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", + "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", + "https://bcr.bazel.build/modules/bazel_features/1.2.0/MODULE.bazel": "122b2b606622afbaa498913d54f52d9bcd2d19a5edd1bd6d6c5aa17441c4d5f9", + "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", + "https://bcr.bazel.build/modules/bazel_features/1.27.0/MODULE.bazel": "621eeee06c4458a9121d1f104efb80f39d34deff4984e778359c60eaf1a8cb65", + "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d", + "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9", + "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", + "https://bcr.bazel.build/modules/bazel_features/1.32.0/MODULE.bazel": "095d67022a58cb20f7e20e1aefecfa65257a222c18a938e2914fd257b5f1ccdc", + "https://bcr.bazel.build/modules/bazel_features/1.34.0/MODULE.bazel": "e8475ad7c8965542e0c7aac8af68eb48c4af904be3d614b6aa6274c092c2ea1e", + "https://bcr.bazel.build/modules/bazel_features/1.38.0/MODULE.bazel": "f9b8a9c890ebd216b4049fd12a31d3c2602e3403c7af636b04fbbd7453edc9c9", + "https://bcr.bazel.build/modules/bazel_features/1.39.0/MODULE.bazel": "28739425c1fc283c91931619749c832b555e60bcd1010b40d8441ce0a5cf726d", + "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", + "https://bcr.bazel.build/modules/bazel_features/1.43.0/MODULE.bazel": "defa2226f06ba20550d6548c3a2ea2a7929634437a52973869c20c225450eb91", + "https://bcr.bazel.build/modules/bazel_features/1.43.0/source.json": "1c4207dc858d6de0eecef30026793616bbf420c74aac27b6bad212534a730437", + "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", + "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", + "https://bcr.bazel.build/modules/bazel_lib/3.0.0-beta.1/MODULE.bazel": "407729e232f611c3270005b016b437005daa7b1505826798ea584169a476e878", + "https://bcr.bazel.build/modules/bazel_lib/3.0.0-rc.0/MODULE.bazel": "d6e00979a98ac14ada5e31c8794708b41434d461e7e7ca39b59b765e6d233b18", + "https://bcr.bazel.build/modules/bazel_lib/3.0.0/MODULE.bazel": "22b70b80ac89ad3f3772526cd9feee2fa412c2b01933fea7ed13238a448d370d", + "https://bcr.bazel.build/modules/bazel_lib/3.7.1/MODULE.bazel": "b6fd9b2f8fab956420c11836f416efac4a70e20804ae384ebe62773a4ed70046", + "https://bcr.bazel.build/modules/bazel_lib/3.7.1/source.json": "635fdaa28b50c04febc5e60ef51bc913d3bc87bfbaac7045449273c2341648cb", + "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", + "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", + "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", + "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", + "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.0/MODULE.bazel": "2fb3fb53675f6adfc1ca5bfbd5cfb655ae350fba4706d924a8ec7e3ba945671c", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/MODULE.bazel": "69ad6927098316848b34a9142bcc975e018ba27f08c4ff403f50c1b6e646ca67", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/source.json": "34a3c8bcf233b835eb74be9d628899bb32999d3e0eadef1947a0a562a2b16ffb", + "https://bcr.bazel.build/modules/boringssl/0.0.0-20211025-d4f1ab9/MODULE.bazel": "6ee6353f8b1a701fe2178e1d925034294971350b6d3ac37e67e5a7d463267834", + "https://bcr.bazel.build/modules/boringssl/0.0.0-20230215-5c22014/MODULE.bazel": "4b03dc0d04375fa0271174badcd202ed249870c8e895b26664fd7298abea7282", + "https://bcr.bazel.build/modules/boringssl/0.0.0-20240530-2db0eb3/MODULE.bazel": "d0405b762c5e87cd445b7015f2b8da5400ef9a8dbca0bfefa6c1cea79d528a97", + "https://bcr.bazel.build/modules/boringssl/0.20240913.0/MODULE.bazel": "fcaa7503a5213290831a91ed1eb538551cf11ac0bc3a6ad92d0fef92c5bd25fb", + "https://bcr.bazel.build/modules/boringssl/0.20241024.0/MODULE.bazel": "b540cff73d948cb79cb0bc108d7cef391d2098a25adabfda5043e4ef548dbc87", + "https://bcr.bazel.build/modules/boringssl/0.20241024.0/source.json": "d843092e682b84188c043ac742965d7f96e04c846c7e338187e03238674909a9", + "https://bcr.bazel.build/modules/buildifier_prebuilt/6.1.2/MODULE.bazel": "2ef4962c8b0b6d8d21928a89190755619254459bc67f870dc0ccb9ba9952d444", + "https://bcr.bazel.build/modules/buildifier_prebuilt/6.4.0/MODULE.bazel": "37389c6b5a40c59410b4226d3bb54b08637f393d66e2fa57925c6fcf68e64bf4", + "https://bcr.bazel.build/modules/buildifier_prebuilt/7.3.1/MODULE.bazel": "537faf0ad9f5892910074b8e43b4c91c96f1d5d86b6ed04bdbe40cf68aa48b68", + "https://bcr.bazel.build/modules/buildifier_prebuilt/8.2.0.2/MODULE.bazel": "a9b689711d5b69f9db741649b218c119b9fdf82924ba390415037e09798edd03", + "https://bcr.bazel.build/modules/buildifier_prebuilt/8.5.1.2/MODULE.bazel": "9a6e0a2e87d1e3da679e157da5192ea351d5739ca1ff51831c2b736d5b6034de", + "https://bcr.bazel.build/modules/buildifier_prebuilt/8.5.1.2/source.json": "33e11b3bf11e39cb762480a7e6ea1d24d044636135cdd8b8e74b07ebcd3b8d8b", + "https://bcr.bazel.build/modules/buildifier_prebuilt/8.5.1/MODULE.bazel": "77f2a1958d1d07376dd3ce3ae16540f2c1b01921c1fd21930827271260e75a66", + "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", + "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", + "https://bcr.bazel.build/modules/c-ares/1.15.0/MODULE.bazel": "ba0a78360fdc83f02f437a9e7df0532ad1fbaa59b722f6e715c11effebaa0166", + "https://bcr.bazel.build/modules/c-ares/1.15.0/source.json": "5e3ed991616c5ec4cc09b0893b29a19232de4a1830eb78c567121bfea87453f7", + "https://bcr.bazel.build/modules/cel-spec/0.15.0/MODULE.bazel": "e1eed53d233acbdcf024b4b0bc1528116d92c29713251b5154078ab1348cb600", + "https://bcr.bazel.build/modules/cel-spec/0.15.0/source.json": "ab7dccdf21ea2261c0f809b5a5221a4d7f8b580309f285fdf1444baaca75d44a", + "https://bcr.bazel.build/modules/civetweb/1.16/MODULE.bazel": "46a38f9daeb57392e3827fce7d40926be0c802bd23cdd6bfd3a96c804de42fae", + "https://bcr.bazel.build/modules/civetweb/1.16/source.json": "ba8b9585adb8355cb51b999d57172fd05e7a762c56b8d4bac6db42c99de3beb7", + "https://bcr.bazel.build/modules/curl/8.4.0/MODULE.bazel": "0bc250aa1cb69590049383df7a9537c809591fcf876c620f5f097c58fdc9bc10", + "https://bcr.bazel.build/modules/curl/8.7.1/MODULE.bazel": "088221c35a2939c555e6e47cb31a81c15f8b59f4daa8009b1e9271a502d33485", + "https://bcr.bazel.build/modules/curl/8.7.1/source.json": "bf9890e809717445b10a3ddc323b6d25c46631589c693a232df8310a25964484", + "https://bcr.bazel.build/modules/cython/3.0.11-1/MODULE.bazel": "868b3f5c956c3657420d2302004c6bb92606bfa47e314bab7f2ba0630c7c966c", + "https://bcr.bazel.build/modules/cython/3.0.11-1/source.json": "da318be900b8ca9c3d1018839d3bebc5a8e1645620d0848fa2c696d4ecf7c296", + "https://bcr.bazel.build/modules/diff.bzl/0.5.1/MODULE.bazel": "bad8dd444e512b6fcbcd969d6385cd6bc093d4c12e5640fb1f0ace2282f99ef9", + "https://bcr.bazel.build/modules/diff.bzl/0.5.1/source.json": "64571044143273ff8adb322c0f7acefca36f9589ff37a743e3cac9c35ce6b010", + "https://bcr.bazel.build/modules/download_utils/1.0.1/MODULE.bazel": "f1d0afade59e37de978506d6bbf08d7fe5f94964e86944aaf58efcead827b41b", + "https://bcr.bazel.build/modules/envoy_api/0.0.0-20241214-918efc9/MODULE.bazel": "24e05f6f52f37be63a795192848555a2c8c855e7814dbc1ed419fb04a7005464", + "https://bcr.bazel.build/modules/envoy_api/0.0.0-20241214-918efc9/source.json": "212043ab69d87f7a04aa4f627f725b540cff5e145a3a31a9403d8b6ec2e920c9", + "https://bcr.bazel.build/modules/flatbuffers/25.9.23/MODULE.bazel": "32753ba60bf3bacfe7737c0f3e8e3e55624b19af5d398c485580d57492d145d8", + "https://bcr.bazel.build/modules/flatbuffers/25.9.23/source.json": "a2116f0017f6896353fd3abf65ef2b89b0a257e8a87f395c5000f53934829f31", + "https://bcr.bazel.build/modules/gawk/5.3.2.bcr.1/MODULE.bazel": "cdf8cbe5ee750db04b78878c9633cc76e80dcf4416cbe982ac3a9222f80713c8", + "https://bcr.bazel.build/modules/gawk/5.3.2.bcr.1/source.json": "fa7b512dfcb5eafd90ce3959cf42a2a6fe96144ebbb4b3b3928054895f2afac2", + "https://bcr.bazel.build/modules/gazelle/0.27.0/MODULE.bazel": "3446abd608295de6d90b4a8a118ed64a9ce11dcb3dda2dc3290a22056bd20996", + "https://bcr.bazel.build/modules/gazelle/0.30.0/MODULE.bazel": "f888a1effe338491f35f0e0e85003b47bb9d8295ccba73c37e07702d8d31c65b", + "https://bcr.bazel.build/modules/gazelle/0.32.0/MODULE.bazel": "b499f58a5d0d3537f3cf5b76d8ada18242f64ec474d8391247438bf04f58c7b8", + "https://bcr.bazel.build/modules/gazelle/0.33.0/MODULE.bazel": "a13a0f279b462b784fb8dd52a4074526c4a2afe70e114c7d09066097a46b3350", + "https://bcr.bazel.build/modules/gazelle/0.34.0/MODULE.bazel": "abdd8ce4d70978933209db92e436deb3a8b737859e9354fb5fd11fb5c2004c8a", + "https://bcr.bazel.build/modules/gazelle/0.36.0/MODULE.bazel": "e375d5d6e9a6ca59b0cb38b0540bc9a05b6aa926d322f2de268ad267a2ee74c0", + "https://bcr.bazel.build/modules/gazelle/0.36.0/source.json": "0823f097b127e0201ae55d85647c94095edfe27db0431a7ae880dcab08dfaa04", + "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", + "https://bcr.bazel.build/modules/google_benchmark/1.8.4/MODULE.bazel": "c6d54a11dcf64ee63545f42561eda3fd94c1b5f5ebe1357011de63ae33739d5e", + "https://bcr.bazel.build/modules/google_benchmark/1.8.5/MODULE.bazel": "9ba9b31b984022828a950e3300410977eda2e35df35584c6b0b2d0c2e52766b7", + "https://bcr.bazel.build/modules/google_benchmark/1.8.5/source.json": "2c9c685f9b496f125b9e3a9c696c549d1ed2f33b75830a2fb6ac94fab23c0398", + "https://bcr.bazel.build/modules/googleapis/0.0.0-20240326-1c8d509c5/MODULE.bazel": "a4b7e46393c1cdcc5a00e6f85524467c48c565256b22b5fae20f84ab4a999a68", + "https://bcr.bazel.build/modules/googleapis/0.0.0-20240819-fe8ba054a/MODULE.bazel": "117b7c7be7327ed5d6c482274533f2dbd78631313f607094d4625c28203cacdf", + "https://bcr.bazel.build/modules/googleapis/0.0.0-20240819-fe8ba054a/source.json": "b31fc7eb283a83f71d2e5bfc3d1c562d2994198fa1278409fbe8caec3afc1d3e", + "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", + "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", + "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", + "https://bcr.bazel.build/modules/googletest/1.15.2/MODULE.bazel": "6de1edc1d26cafb0ea1a6ab3f4d4192d91a312fd2d360b63adaa213cd00b2108", + "https://bcr.bazel.build/modules/googletest/1.17.0.bcr.2/MODULE.bazel": "827f54f492a3ce549c940106d73de332c2b30cebd0c20c0bc5d786aba7f116cb", + "https://bcr.bazel.build/modules/googletest/1.17.0.bcr.2/source.json": "3664514073a819992320ffbce5825e4238459df344d8b01748af2208f8d2e1eb", + "https://bcr.bazel.build/modules/googletest/1.17.0/MODULE.bazel": "dbec758171594a705933a29fcf69293d2468c49ec1f2ebca65c36f504d72df46", + "https://bcr.bazel.build/modules/grpc-java/1.70.0/MODULE.bazel": "cae8776b751f03c7984f651b00f604c297d7e759f1ce97da8fbf2fc7ce6cd226", + "https://bcr.bazel.build/modules/grpc-java/1.70.0/source.json": "15e1b9f1676f0ecb715a542fbdbf26643237366c32125ed534ef2771fc1cb827", + "https://bcr.bazel.build/modules/grpc-proto/0.0.0-20240627-ec30f58/MODULE.bazel": "88de79051e668a04726e9ea94a481ec6f1692086735fd6f488ab908b3b909238", + "https://bcr.bazel.build/modules/grpc-proto/0.0.0-20240627-ec30f58/source.json": "5035d379c61042930244ab59e750106d893ec440add92ec0df6a0098ca7f131d", + "https://bcr.bazel.build/modules/grpc/1.41.0/MODULE.bazel": "5bcbfc2b274dabea628f0649dc50c90cf36543b1cfc31624832538644ad1aae8", + "https://bcr.bazel.build/modules/grpc/1.56.3.bcr.1/MODULE.bazel": "cd5b1eb276b806ec5ab85032921f24acc51735a69ace781be586880af20ab33f", + "https://bcr.bazel.build/modules/grpc/1.62.1/MODULE.bazel": "2998211594b8a79a6b459c4e797cfa19f0fb8b3be3149760ec7b8c99abfd426f", + "https://bcr.bazel.build/modules/grpc/1.66.0.bcr.2/MODULE.bazel": "0fa2b0fd028ce354febf0fe90f1ed8fecfbfc33118cddd95ac0418cc283333a0", + "https://bcr.bazel.build/modules/grpc/1.66.0.bcr.3/MODULE.bazel": "f6047e89faf488f5e3e65cb2594c6f5e86992abec7487163ff6b623526e543b0", + "https://bcr.bazel.build/modules/grpc/1.69.0/MODULE.bazel": "4e26e05c9e1ef291ccbc96aad8e457b1b8abedbc141623831629da2f8168eef6", + "https://bcr.bazel.build/modules/grpc/1.70.1/MODULE.bazel": "b800cd8e3e7555c1e61cba2e02d3a2fcf0e91f66e800db286d965d3b7a6a721a", + "https://bcr.bazel.build/modules/grpc/1.70.1/source.json": "e2977ea6cf9f2755418934d4ae134a6569713dd200fd7aded86a4b7f1b86efc9", + "https://bcr.bazel.build/modules/helly25_bzl/0.3.1/MODULE.bazel": "3a4be20f6fc13be32ad44643b8252ef5af09eee936f1d943cd4fd7867fa92826", + "https://bcr.bazel.build/modules/helly25_bzl/0.3.1/source.json": "b129ab1828492de2c163785bbeb4065c166de52d932524b4317beb5b7f917994", + "https://bcr.bazel.build/modules/jq.bzl/0.1.0/MODULE.bazel": "2ce69b1af49952cd4121a9c3055faa679e748ce774c7f1fda9657f936cae902f", + "https://bcr.bazel.build/modules/jq.bzl/0.6.0/MODULE.bazel": "26ec5118e66a55fef36f8ea39d6415d55fc966671fe4d61a6b9ef0cd6bc7b6a1", + "https://bcr.bazel.build/modules/jq.bzl/0.6.0/source.json": "2ed4e35b9fa9505495784114f7637fbde5846ec14af917841b6c045d877f20eb", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", + "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", + "https://bcr.bazel.build/modules/libpfm/4.11.0/source.json": "caaffb3ac2b59b8aac456917a4ecf3167d40478ee79f15ab7a877ec9273937c9", + "https://bcr.bazel.build/modules/mbedtls/3.6.0/MODULE.bazel": "8e380e4698107c5f8766264d4df92e36766248447858db28187151d884995a09", + "https://bcr.bazel.build/modules/mbedtls/3.6.0/source.json": "1dbe7eb5258050afcc3806b9d43050f71c6f539ce0175535c670df606790b30c", + "https://bcr.bazel.build/modules/nlohmann_json/3.11.3/MODULE.bazel": "87023db2f55fc3a9949c7b08dc711fae4d4be339a80a99d04453c4bb3998eefc", + "https://bcr.bazel.build/modules/nlohmann_json/3.11.3/source.json": "296c63a90c6813e53b3812d24245711981fc7e563d98fe15625f55181494488a", + "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/MODULE.bazel": "6f7b417dcc794d9add9e556673ad25cb3ba835224290f4f848f8e2db1e1fca74", + "https://bcr.bazel.build/modules/opencensus-cpp/0.0.0-20230502-50eb5de/MODULE.bazel": "02201d2921dadb4ec90c4980eca4b2a02904eddcf6fa02f3da7594fb7b0d821c", + "https://bcr.bazel.build/modules/opencensus-cpp/0.0.0-20230502-50eb5de/source.json": "f50efc07822f5425bd1d3e40e977484f9c0142463052717d40ec85cd6744243e", + "https://bcr.bazel.build/modules/opencensus-proto/0.4.1/MODULE.bazel": "4a2e8b4d0b544002502474d611a5a183aa282251e14f6a01afe841c0c1b10372", + "https://bcr.bazel.build/modules/opencensus-proto/0.4.1/source.json": "a7d956700a85b833c43fc61455c0e111ab75bab40768ed17a206ee18a2bbe38f", + "https://bcr.bazel.build/modules/opentelemetry-cpp/1.14.2/MODULE.bazel": "089a5613c2a159c7dfde098dabfc61e966889c7d6a81a98422a84c51535ed17d", + "https://bcr.bazel.build/modules/opentelemetry-cpp/1.16.0/MODULE.bazel": "b7379a140f538cea3f749179a2d481ed81942cc6f7b05a6113723eb34ac3b3e7", + "https://bcr.bazel.build/modules/opentelemetry-cpp/1.16.0/source.json": "da0cf667713b1e48d7f8912b100b4e0a8284c8a95717af5eb8c830d699e61cf5", + "https://bcr.bazel.build/modules/opentelemetry-proto/1.1.0/MODULE.bazel": "a49f406e99bf05ab43ed4f5b3322fbd33adfd484b6546948929d1316299b68bf", + "https://bcr.bazel.build/modules/opentelemetry-proto/1.3.1/MODULE.bazel": "0141a50e989576ee064c11ce8dd5ec89993525bd9f9a09c5618e4dacc8df9352", + "https://bcr.bazel.build/modules/opentelemetry-proto/1.4.0.bcr.1/MODULE.bazel": "5ceaf25e11170d22eded4c8032728b4a3f273765fccda32f9e94f463755c4167", + "https://bcr.bazel.build/modules/opentelemetry-proto/1.4.0.bcr.1/source.json": "fb9e01517460cfad8bafab082f2e1508d3cc2b7ed700cff19f3c7c84b146e5eb", + "https://bcr.bazel.build/modules/opentracing-cpp/1.6.0/MODULE.bazel": "b3925269f63561b8b880ae7cf62ccf81f6ece55b62cd791eda9925147ae116ec", + "https://bcr.bazel.build/modules/opentracing-cpp/1.6.0/source.json": "da1cb1add160f5e5074b7272e9db6fd8f1b3336c15032cd0a653af9d2f484aed", + "https://bcr.bazel.build/modules/package_metadata/0.0.2/MODULE.bazel": "fb8d25550742674d63d7b250063d4580ca530499f045d70748b1b142081ebb92", + "https://bcr.bazel.build/modules/package_metadata/0.0.3/MODULE.bazel": "77890552ecea9e284b5424c9de827a58099348763a4359e975c359a83d4faa83", + "https://bcr.bazel.build/modules/package_metadata/0.0.6/MODULE.bazel": "341dab6f417197494517d54c8e557c0baee1de7aec83543a4fbefe57900acb7e", + "https://bcr.bazel.build/modules/package_metadata/0.0.6/source.json": "9581d8b22db43550ac75ecc314ee4fa0a33400bfdc77d1317d8af6b18dca7756", + "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", + "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", + "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", + "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", + "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", + "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", + "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", + "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc", + "https://bcr.bazel.build/modules/platforms/1.0.0/MODULE.bazel": "f05feb42b48f1b3c225e4ccf351f367be0371411a803198ec34a389fb22aa580", + "https://bcr.bazel.build/modules/platforms/1.1.0/MODULE.bazel": "1c0c09f5bdcf4b3f924720d2478a3711cb39f4977019ca5988685e5b7e18b3d2", + "https://bcr.bazel.build/modules/platforms/1.1.0/source.json": "fcf351c47596c939140ab0d333dfdd08ed1ea6ce33c2fe70c12493a301cf1344", + "https://bcr.bazel.build/modules/prometheus-cpp/1.2.4/MODULE.bazel": "0fbe5dcff66311947a3f6b86ebc6a6d9328e31a28413ca864debc4a043f371e5", + "https://bcr.bazel.build/modules/prometheus-cpp/1.3.0/MODULE.bazel": "ce82e086bbc0b60267e970f6a54b2ca6d0f22d3eb6633e00e2cc2899c700f3d8", + "https://bcr.bazel.build/modules/prometheus-cpp/1.3.0/source.json": "8cb66b4e535afc718e9d104a3db96ccb71a42ee816a100e50fd0d5ac843c0606", + "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", + "https://bcr.bazel.build/modules/protobuf/23.1/MODULE.bazel": "88b393b3eb4101d18129e5db51847cd40a5517a53e81216144a8c32dfeeca52a", + "https://bcr.bazel.build/modules/protobuf/24.4/MODULE.bazel": "7bc7ce5f2abf36b3b7b7c8218d3acdebb9426aeb35c2257c96445756f970eb12", + "https://bcr.bazel.build/modules/protobuf/26.0.bcr.1/MODULE.bazel": "8f04d38c2da40a3715ff6bdce4d32c5981e6432557571482d43a62c31a24c2cf", + "https://bcr.bazel.build/modules/protobuf/26.0.bcr.2/MODULE.bazel": "62e0b84ca727bdeb55a6fe1ef180e6b191bbe548a58305ea1426c158067be534", + "https://bcr.bazel.build/modules/protobuf/26.0/MODULE.bazel": "8402da964092af40097f4a205eec2a33fd4a7748dc43632b7d1629bfd9a2b856", + "https://bcr.bazel.build/modules/protobuf/27.0-rc2/MODULE.bazel": "b2b0dbafd57b6bec0ca9b251da02e628c357dab53a097570aa7d79d020f107cf", + "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", + "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", + "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", + "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", + "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", + "https://bcr.bazel.build/modules/protobuf/29.1/MODULE.bazel": "557c3457560ff49e122ed76c0bc3397a64af9574691cb8201b4e46d4ab2ecb95", + "https://bcr.bazel.build/modules/protobuf/29.1/source.json": "04cca85dce26b895ed037d98336d860367fe09919208f2ad383f0df1aff63199", + "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", + "https://bcr.bazel.build/modules/protobuf/3.19.2/MODULE.bazel": "532ffe5f2186b69fdde039efe6df13ba726ff338c6bc82275ad433013fa10573", + "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858", + "https://bcr.bazel.build/modules/protoc-gen-validate/1.0.4.bcr.2/MODULE.bazel": "c4bd2c850211ff5b7dadf9d2d0496c1c922fdedc303c775b01dfd3b3efc907ed", + "https://bcr.bazel.build/modules/protoc-gen-validate/1.0.4.bcr.2/source.json": "4cc97f70b521890798058600a927ce4b0def8ee84ff2a5aa632aabcb4234aa0b", + "https://bcr.bazel.build/modules/protoc-gen-validate/1.0.4/MODULE.bazel": "b8913c154b16177990f6126d2d2477d187f9ddc568e95ee3e2d50fc65d2c494a", + "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", + "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34", + "https://bcr.bazel.build/modules/pybind11_bazel/2.13.6/MODULE.bazel": "2d746fda559464b253b2b2e6073cb51643a2ac79009ca02100ebbc44b4548656", + "https://bcr.bazel.build/modules/pybind11_bazel/2.13.6/source.json": "6aa0703de8efb20cc897bbdbeb928582ee7beaf278bcd001ac253e1605bddfae", + "https://bcr.bazel.build/modules/rapidjson/1.1.0.bcr.20241007/MODULE.bazel": "82fbcb2e42f9e0040e76ccc74c06c3e46dfd33c64ca359293f8b84df0e6dff4c", + "https://bcr.bazel.build/modules/rapidjson/1.1.0.bcr.20241007/source.json": "5c42389ad0e21fc06b95ad7c0b730008271624a2fa3292e0eab5f30e15adeee3", + "https://bcr.bazel.build/modules/re2/2021-09-01/MODULE.bazel": "bcb6b96f3b071e6fe2d8bed9cc8ada137a105f9d2c5912e91d27528b3d123833", + "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", + "https://bcr.bazel.build/modules/re2/2024-05-01/MODULE.bazel": "55a3f059538f381107824e7d00df5df6d061ba1fb80e874e4909c0f0549e8f3e", + "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "b4963dda9b31080be1905ef085ecd7dd6cd47c05c79b9cdf83ade83ab2ab271a", + "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa", + "https://bcr.bazel.build/modules/re2/2025-08-12.bcr.1/MODULE.bazel": "e09b434b122bfb786a69179f9b325e35cb1856c3f56a7a81dd61609260ed46e1", + "https://bcr.bazel.build/modules/re2/2025-08-12.bcr.1/source.json": "a8ae7c09533bf67f9f6e5122d884d5741600b09d78dca6fc0f2f8d2ee0c2d957", + "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", + "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", + "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a", + "https://bcr.bazel.build/modules/rules_apple/3.16.0/source.json": "d8b5fe461272018cc07cfafce11fe369c7525330804c37eec5a82f84cd475366", + "https://bcr.bazel.build/modules/rules_apple/3.5.1/MODULE.bazel": "3d1bbf65ad3692003d36d8a29eff54d4e5c1c5f4bfb60f79e28646a924d9101c", + "https://bcr.bazel.build/modules/rules_buf/0.1.1/MODULE.bazel": "6189aec18a4f7caff599ad41b851ab7645d4f1e114aa6431acf9b0666eb92162", + "https://bcr.bazel.build/modules/rules_buf/0.5.2/MODULE.bazel": "5f2492d284ab9bedf2668178303abf5f3cd7d8cdf85d768951008e88456e9c6a", + "https://bcr.bazel.build/modules/rules_buf/0.5.2/source.json": "41876d4834c0832de4b393de6e55dfd1cb3b25d3109e4ba90eb7fb57c560e0d9", + "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", + "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", + "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", + "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", + "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", + "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", + "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", + "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", + "https://bcr.bazel.build/modules/rules_cc/0.0.5/MODULE.bazel": "be41f87587998fe8890cd82ea4e848ed8eb799e053c224f78f3ff7fe1a1d9b74", + "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", + "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", + "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", + "https://bcr.bazel.build/modules/rules_cc/0.1.4/MODULE.bazel": "bb03a452a7527ac25a7518fb86a946ef63df860b9657d8323a0c50f8504fb0b9", + "https://bcr.bazel.build/modules/rules_cc/0.1.5/MODULE.bazel": "88dfc9361e8b5ae1008ac38f7cdfd45ad738e4fa676a3ad67d19204f045a1fd8", + "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8", + "https://bcr.bazel.build/modules/rules_cc/0.2.16/MODULE.bazel": "9242fa89f950c6ef7702801ab53922e99c69b02310c39fb6e62b2bd30df2a1d4", + "https://bcr.bazel.build/modules/rules_cc/0.2.17/MODULE.bazel": "1849602c86cb60da8613d2de887f9566a6d354a6df6d7009f9d04a14402f9a84", + "https://bcr.bazel.build/modules/rules_cc/0.2.18/MODULE.bazel": "4460ec36adc8f722a6a2a4ac9374cb91f2acebadaa93fc37966129afb3dece87", + "https://bcr.bazel.build/modules/rules_cc/0.2.18/source.json": "abad668ff2fd63ada1ac49bf386d37e27048b89a3465a6fd968bb832b00a09d3", + "https://bcr.bazel.build/modules/rules_cc/0.2.4/MODULE.bazel": "1ff1223dfd24f3ecf8f028446d4a27608aa43c3f41e346d22838a4223980b8cc", + "https://bcr.bazel.build/modules/rules_cc/0.2.8/MODULE.bazel": "f1df20f0bf22c28192a794f29b501ee2018fa37a3862a1a2132ae2940a23a642", + "https://bcr.bazel.build/modules/rules_diff/1.0.0/MODULE.bazel": "1739509d8db9a6cd7d3584822340d3dfe1f9f27e62462fbca60aa061d88741b2", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.10.1/MODULE.bazel": "b9527010e5fef060af92b6724edb3691970a5b1f76f74b21d39f7d433641be60", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.10.1/source.json": "9300e71df0cdde0952f10afff1401fa664e9fc5d9ae6204660ba1b158d90d6a6", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", + "https://bcr.bazel.build/modules/rules_go/0.33.0/MODULE.bazel": "a2b11b64cd24bf94f57454f53288a5dacfe6cb86453eee7761b7637728c1910c", + "https://bcr.bazel.build/modules/rules_go/0.38.1/MODULE.bazel": "fb8e73dd3b6fc4ff9d260ceacd830114891d49904f5bda1c16bc147bcc254f71", + "https://bcr.bazel.build/modules/rules_go/0.39.1/MODULE.bazel": "d34fb2a249403a5f4339c754f1e63dc9e5ad70b47c5e97faee1441fc6636cd61", + "https://bcr.bazel.build/modules/rules_go/0.41.0/MODULE.bazel": "55861d8e8bb0e62cbd2896f60ff303f62ffcb0eddb74ecb0e5c0cbe36fc292c8", + "https://bcr.bazel.build/modules/rules_go/0.42.0/MODULE.bazel": "8cfa875b9aa8c6fce2b2e5925e73c1388173ea3c32a0db4d2b4804b453c14270", + "https://bcr.bazel.build/modules/rules_go/0.45.1/MODULE.bazel": "6d7884f0edf890024eba8ab31a621faa98714df0ec9d512389519f0edff0281a", + "https://bcr.bazel.build/modules/rules_go/0.46.0/MODULE.bazel": "3477df8bdcc49e698b9d25f734c4f3a9f5931ff34ee48a2c662be168f5f2d3fd", + "https://bcr.bazel.build/modules/rules_go/0.48.0/MODULE.bazel": "d00ebcae0908ee3f5e6d53f68677a303d6d59a77beef879598700049c3980a03", + "https://bcr.bazel.build/modules/rules_go/0.50.1/MODULE.bazel": "b91a308dc5782bb0a8021ad4330c81fea5bda77f96b9e4c117b9b9c8f6665ee0", + "https://bcr.bazel.build/modules/rules_go/0.50.1/source.json": "205765fd30216c70321f84c9a967267684bdc74350af3f3c46c857d9f80a4fa2", + "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", + "https://bcr.bazel.build/modules/rules_java/5.1.0/MODULE.bazel": "324b6478b0343a3ce7a9add8586ad75d24076d6d43d2f622990b9c1cfd8a1b15", + "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", + "https://bcr.bazel.build/modules/rules_java/5.5.0/MODULE.bazel": "486ad1aa15cdc881af632b4b1448b0136c76025a1fe1ad1b65c5899376b83a50", + "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", + "https://bcr.bazel.build/modules/rules_java/6.3.0/MODULE.bazel": "a97c7678c19f236a956ad260d59c86e10a463badb7eb2eda787490f4c969b963", + "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", + "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", + "https://bcr.bazel.build/modules/rules_java/7.0.6/MODULE.bazel": "6ddb07d9857a1a3accc9f6d005f20c969c4659c7710e6269a51db3527e0ea969", + "https://bcr.bazel.build/modules/rules_java/7.1.0/MODULE.bazel": "30d9135a2b6561c761bd67bd4990da591e6bdc128790ce3e7afd6a3558b2fb64", + "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", + "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", + "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", + "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", + "https://bcr.bazel.build/modules/rules_java/7.4.0/MODULE.bazel": "a592852f8a3dd539e82ee6542013bf2cadfc4c6946be8941e189d224500a8934", + "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", + "https://bcr.bazel.build/modules/rules_java/8.11.0/MODULE.bazel": "c3d280bc5ff1038dcb3bacb95d3f6b83da8dd27bba57820ec89ea4085da767ad", + "https://bcr.bazel.build/modules/rules_java/8.13.0/MODULE.bazel": "0444ebf737d144cf2bb2ccb368e7f1cce735264285f2a3711785827c1686625e", + "https://bcr.bazel.build/modules/rules_java/8.14.0/MODULE.bazel": "717717ed40cc69994596a45aec6ea78135ea434b8402fb91b009b9151dd65615", + "https://bcr.bazel.build/modules/rules_java/8.15.1/MODULE.bazel": "5071eebf0fd602ab0617f846e0e0d8f388d66c961513c736e0ac4a1dcde3ff2c", + "https://bcr.bazel.build/modules/rules_java/8.15.1/source.json": "e48286d5819767bc5b3d457539ae7f94e28a9b3e55d092d5c47176cb6a2a289b", + "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", + "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", + "https://bcr.bazel.build/modules/rules_java/8.6.3/MODULE.bazel": "e90505b7a931d194245ffcfb6ff4ca8ef9d46b4e830d12e64817752e0198e2ed", + "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", + "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", + "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", + "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", + "https://bcr.bazel.build/modules/rules_jvm_external/6.0/MODULE.bazel": "37c93a5a78d32e895d52f86a8d0416176e915daabd029ccb5594db422e87c495", + "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", + "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", + "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", + "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", + "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", + "https://bcr.bazel.build/modules/rules_multirun/0.9.0/MODULE.bazel": "32d628ef586b5b23f67e55886b7bc38913ea4160420d66ae90521dda2ff37df0", + "https://bcr.bazel.build/modules/rules_multirun/0.9.0/source.json": "e882ba77962fa6c5fe68619e5c7d0374ec9a219fb8d03c42eadaf6d0243771bd", + "https://bcr.bazel.build/modules/rules_multitool/0.11.0/MODULE.bazel": "8d9dda78d2398e136300d3ef4fbcc89ede7c32c158d8c016fa7d032df41c4aaf", + "https://bcr.bazel.build/modules/rules_multitool/0.4.0/MODULE.bazel": "15517987d5c00c9e7faab41fbe22ee67a350b6eabcc1e08baded5c6d9025897f", + "https://bcr.bazel.build/modules/rules_multitool/1.11.1/MODULE.bazel": "f826d2d394e8d964e44ebb4a75ebcfe4e9cd4eb150e2ddcd60398ffeb939696a", + "https://bcr.bazel.build/modules/rules_multitool/1.11.1/source.json": "201f43de1d35bd17f25a4fed3ba5a2ec500ef5e08b7d4b341bb9fd39cef0cbc6", + "https://bcr.bazel.build/modules/rules_multitool/1.2.0/MODULE.bazel": "8d818d6104f4030930291bbbbc5684702c237dbcdee7229097543e6a6035adaa", + "https://bcr.bazel.build/modules/rules_multitool/1.9.0/MODULE.bazel": "8a042b0dbf35e4aaa94c28ad69efa75c9e673e9ea4bd5c0fb70bab75ef9c636b", + "https://bcr.bazel.build/modules/rules_nodejs/5.8.2/MODULE.bazel": "6bc03c8f37f69401b888023bf511cb6ee4781433b0cb56236b2e55a21e3a026a", + "https://bcr.bazel.build/modules/rules_nodejs/6.2.0/MODULE.bazel": "ec27907f55eb34705adb4e8257952162a2d4c3ed0f0b3b4c3c1aad1fac7be35e", + "https://bcr.bazel.build/modules/rules_nodejs/6.3.0/MODULE.bazel": "45345e4aba35dd6e4701c1eebf5a4e67af4ed708def9ebcdc6027585b34ee52d", + "https://bcr.bazel.build/modules/rules_nodejs/6.3.3/MODULE.bazel": "b66eadebd10f1f1b25f52f95ab5213a57e82c37c3f656fcd9a57ad04d2264ce7", + "https://bcr.bazel.build/modules/rules_nodejs/6.5.2/MODULE.bazel": "7f9ea68a0ce6d82905ce9f74e76ab8a8b4531ed4c747018c9d76424ad0b3370d", + "https://bcr.bazel.build/modules/rules_nodejs/6.7.3/MODULE.bazel": "c22a48b2a0dbf05a9dc5f83837bbc24c226c1f6e618de3c3a610044c9f336056", + "https://bcr.bazel.build/modules/rules_nodejs/6.7.3/source.json": "a3f966f4415a8a6545e560ee5449eac95cc633f96429d08e87c87775c72f5e09", + "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", + "https://bcr.bazel.build/modules/rules_pkg/1.1.0/MODULE.bazel": "9db8031e71b6ef32d1846106e10dd0ee2deac042bd9a2de22b4761b0c3036453", + "https://bcr.bazel.build/modules/rules_pkg/1.2.0/MODULE.bazel": "c7db3c2b407e673c7a39e3625dc05dc9f12d6682cbd82a3a5924a13b491eda7e", + "https://bcr.bazel.build/modules/rules_pkg/1.2.0/source.json": "9062e00845bf91a4247465d371baa837adf9b6ff44c542f73ba084f07667e1dc", + "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", + "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", + "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "1e5b502e2e1a9e825eef74476a5a1ee524a92297085015a052510b09a1a09483", + "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc2/MODULE.bazel": "e17f94f8a347e2c808517b65d74988839d2d62daceb50073e44060193b785eb1", + "https://bcr.bazel.build/modules/rules_proto/6.0.0/MODULE.bazel": "b531d7f09f58dce456cd61b4579ce8c86b38544da75184eadaf0a7cb7966453f", + "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", + "https://bcr.bazel.build/modules/rules_proto/7.1.0/MODULE.bazel": "002d62d9108f75bb807cd56245d45648f38275cb3a99dcd45dfb864c5d74cb96", + "https://bcr.bazel.build/modules/rules_proto/7.1.0/source.json": "39f89066c12c24097854e8f57ab8558929f9c8d474d34b2c00ac04630ad8940e", + "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", + "https://bcr.bazel.build/modules/rules_python/0.20.0/MODULE.bazel": "bfe14d17f20e3fe900b9588f526f52c967a6f281e47a1d6b988679bd15082286", + "https://bcr.bazel.build/modules/rules_python/0.22.0/MODULE.bazel": "b8057bafa11a9e0f4b08fc3b7cd7bee0dcbccea209ac6fc9a3ff051cd03e19e9", + "https://bcr.bazel.build/modules/rules_python/0.22.1/MODULE.bazel": "26114f0c0b5e93018c0c066d6673f1a2c3737c7e90af95eff30cfee38d0bbac7", + "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", + "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", + "https://bcr.bazel.build/modules/rules_python/0.26.0/MODULE.bazel": "42cb98cd15954e83b96b540dcc6d5a618eb061f056147ac4ea46e687a066a7c7", + "https://bcr.bazel.build/modules/rules_python/0.27.1/MODULE.bazel": "65dc875cc1a06c30d5bbdba7ab021fd9e551a6579e408a3943a61303e2228a53", + "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", + "https://bcr.bazel.build/modules/rules_python/0.29.0/MODULE.bazel": "2ac8cd70524b4b9ec49a0b8284c79e4cd86199296f82f6e0d5da3f783d660c82", + "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", + "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937", + "https://bcr.bazel.build/modules/rules_python/0.34.0/MODULE.bazel": "1d623d026e075b78c9fde483a889cda7996f5da4f36dffb24c246ab30f06513a", + "https://bcr.bazel.build/modules/rules_python/0.37.1/MODULE.bazel": "3faeb2d9fa0a81f8980643ee33f212308f4d93eea4b9ce6f36d0b742e71e9500", + "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", + "https://bcr.bazel.build/modules/rules_python/1.0.0/MODULE.bazel": "898a3d999c22caa585eb062b600f88654bf92efb204fa346fb55f6f8edffca43", + "https://bcr.bazel.build/modules/rules_python/1.4.1/MODULE.bazel": "8991ad45bdc25018301d6b7e1d3626afc3c8af8aaf4bc04f23d0b99c938b73a6", + "https://bcr.bazel.build/modules/rules_python/1.5.1/MODULE.bazel": "acfe65880942d44a69129d4c5c3122d57baaf3edf58ae5a6bd4edea114906bf5", + "https://bcr.bazel.build/modules/rules_python/1.8.5/MODULE.bazel": "28b2d79ed8368d7d45b34bacc220e3c0b99cbcd9392641961b849e4c3f55dd30", + "https://bcr.bazel.build/modules/rules_python/1.8.5/source.json": "e261b03c8804f2582c9536013f987e1ea105a2b38c238aa2ac8f98fc34c8b18a", + "https://bcr.bazel.build/modules/rules_rust/0.56.0/MODULE.bazel": "3295b00757db397122092322fe1e920be7f5c9fbfb8619138977e820f2cbbbae", + "https://bcr.bazel.build/modules/rules_rust/0.61.0/MODULE.bazel": "0318a95777b9114c8740f34b60d6d68f9cfef61e2f4b52424ca626213d33787b", + "https://bcr.bazel.build/modules/rules_rust/0.67.0/MODULE.bazel": "87c3816c4321352dcfd9e9e26b58e84efc5b21351ae3ef8fb5d0d57bde7237f5", + "https://bcr.bazel.build/modules/rules_rust/0.70.0/MODULE.bazel": "5b1407b11c305bc2522e204e7f170faf8399e836e49b6afef9074dfe532e6c3f", + "https://bcr.bazel.build/modules/rules_rust/0.70.0/source.json": "24ae6d23425359db1c3148aa22c389970fce9a06102b2b3a329a2800f9569de2", + "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", + "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b", + "https://bcr.bazel.build/modules/rules_shell/0.4.0/MODULE.bazel": "0f8f11bb3cd11755f0b48c1de0bbcf62b4b34421023aa41a2fc74ef68d9584f0", + "https://bcr.bazel.build/modules/rules_shell/0.4.1/MODULE.bazel": "00e501db01bbf4e3e1dd1595959092c2fadf2087b2852d3f553b5370f5633592", + "https://bcr.bazel.build/modules/rules_shell/0.5.0/MODULE.bazel": "8c8447370594d45539f66858b602b0bb2cb2d3401a4ebb9ad25830c59c0f366d", + "https://bcr.bazel.build/modules/rules_shell/0.6.1/MODULE.bazel": "72e76b0eea4e81611ef5452aa82b3da34caca0c8b7b5c0c9584338aa93bae26b", + "https://bcr.bazel.build/modules/rules_shell/0.6.1/source.json": "20ec05cd5e592055e214b2da8ccb283c7f2a421ea0dc2acbf1aa792e11c03d0c", + "https://bcr.bazel.build/modules/rules_swift/1.16.0/MODULE.bazel": "4a09f199545a60d09895e8281362b1ff3bb08bbde69c6fc87aff5b92fcc916ca", + "https://bcr.bazel.build/modules/rules_swift/1.18.0/MODULE.bazel": "a6aba73625d0dc64c7b4a1e831549b6e375fbddb9d2dde9d80c9de6ec45b24c9", + "https://bcr.bazel.build/modules/rules_swift/2.1.1/MODULE.bazel": "494900a80f944fc7aa61500c2073d9729dff0b764f0e89b824eb746959bc1046", + "https://bcr.bazel.build/modules/rules_swift/2.1.1/source.json": "40fc69dfaac64deddbb75bd99cdac55f4427d9ca0afbe408576a65428427a186", + "https://bcr.bazel.build/modules/stardoc/0.5.0/MODULE.bazel": "f9f1f46ba8d9c3362648eea571c6f9100680efc44913618811b58cc9c02cd678", + "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", + "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", + "https://bcr.bazel.build/modules/stardoc/0.5.4/MODULE.bazel": "6569966df04610b8520957cb8e97cf2e9faac2c0309657c537ab51c16c18a2a4", + "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", + "https://bcr.bazel.build/modules/stardoc/0.6.2/MODULE.bazel": "7060193196395f5dd668eda046ccbeacebfd98efc77fed418dbe2b82ffaa39fd", + "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", + "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", + "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", + "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", + "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/MODULE.bazel": "5e463fbfba7b1701d957555ed45097d7f984211330106ccd1352c6e0af0dcf91", + "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/source.json": "32bd87e5f4d7acc57c5b2ff7c325ae3061d5e242c0c4c214ae87e0f1c13e54cb", + "https://bcr.bazel.build/modules/tar.bzl/0.2.1/MODULE.bazel": "52d1c00a80a8cc67acbd01649e83d8dd6a9dc426a6c0b754a04fe8c219c76468", + "https://bcr.bazel.build/modules/tar.bzl/0.5.1/MODULE.bazel": "7c2eb3dcfc53b0f3d6f9acdfd911ca803eaf92aadf54f8ca6e4c1f3aee288351", + "https://bcr.bazel.build/modules/tar.bzl/0.6.0/MODULE.bazel": "a3584b4edcfafcabd9b0ef9819808f05b372957bbdff41601429d5fd0aac2e7c", + "https://bcr.bazel.build/modules/tar.bzl/0.7.0/MODULE.bazel": "cc1acd85da33c80e430b65219a620d54d114628df24a618c3a5fa0b65e988da9", + "https://bcr.bazel.build/modules/tar.bzl/0.7.0/source.json": "9becb80306f42d4810bfa16379fb48aad0b01ce5342bc12fe47dcd6af3ac4d7a", + "https://bcr.bazel.build/modules/toolchain_utils/1.0.2/MODULE.bazel": "9b8be503a4fcfd3b8b952525bff0869177a5234d5c35dc3e566b9f5ca2f755a1", + "https://bcr.bazel.build/modules/toolchains_llvm/1.7.0/MODULE.bazel": "55aca6a8c5b372651f663c5e22faf3664d81165e40074c98fb8a30ee5af83272", + "https://bcr.bazel.build/modules/toolchains_llvm/1.7.0/source.json": "cda5fa1abeab5561e811860222952f6cb9373f34b88c5b3f4417459dca057a6d", + "https://bcr.bazel.build/modules/toolchains_protoc/0.2.1/MODULE.bazel": "2f08433ff5e659069b3a1abfee2377d68f510f2de1da50678ed992c455b4ff91", + "https://bcr.bazel.build/modules/upb/0.0.0-20211020-160625a/MODULE.bazel": "6cced416be2dc5b9c05efd5b997049ba795e5e4e6fafbe1624f4587767638928", + "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", + "https://bcr.bazel.build/modules/upb/0.0.0-20230516-61a97ef/MODULE.bazel": "c0df5e35ad55e264160417fd0875932ee3c9dda63d9fccace35ac62f45e1b6f9", + "https://bcr.bazel.build/modules/upb/0.0.0-20230907-e7430e6/MODULE.bazel": "3a7dedadf70346e678dc059dbe44d05cbf3ab17f1ce43a1c7a42edc7cbf93fd9", + "https://bcr.bazel.build/modules/xds/0.0.0-20240423-555b57e/MODULE.bazel": "cea509976a77e34131411684ef05a1d6ad194dd71a8d5816643bc5b0af16dc0f", + "https://bcr.bazel.build/modules/xds/0.0.0-20240423-555b57e/source.json": "7227e1fcad55f3f3cab1a08691ecd753cb29cc6380a47bc650851be9f9ad6d20", + "https://bcr.bazel.build/modules/yq.bzl/0.1.1/MODULE.bazel": "9039681f9bcb8958ee2c87ffc74bdafba9f4369096a2b5634b88abc0eaefa072", + "https://bcr.bazel.build/modules/yq.bzl/0.1.1/source.json": "2d2bad780a9f2b9195a4a370314d2c17ae95eaa745cefc2e12fbc49759b15aa3", + "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", + "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27", + "https://bcr.bazel.build/modules/zlib/1.2.13/MODULE.bazel": "aa6deb1b83c18ffecd940c4119aff9567cd0a671d7bba756741cb2ef043a29d5", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.1/MODULE.bazel": "6a9fe6e3fc865715a7be9823ce694ceb01e364c35f7a846bf0d2b34762bc066b", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/source.json": "22bc55c47af97246cfc093d0acf683a7869377de362b5d1c552c2c2e16b7a806", + "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198", + "https://bcr.bazel.build/modules/zlib/1.3/MODULE.bazel": "6a9c02f19a24dcedb05572b2381446e27c272cd383aed11d41d99da9e3167a72", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20210324.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20211102.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20220623.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20230125.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20230802.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20230802.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20240116.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20240116.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20240116.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20240722.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20250127.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20250512.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/ape/1.0.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/apple_support/1.11.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/apple_support/1.15.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/apple_support/1.17.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/apple_support/1.22.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/apple_support/1.23.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/apple_support/1.24.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/1.31.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/1.38.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/1.42.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.11.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.16.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.20.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.22.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.9.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_esbuild/0.21.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_js/1.33.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_js/1.40.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_js/2.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_js/2.3.8/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/0.12.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/1.0.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/1.3.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/1.4.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/1.4.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/1.5.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/2.3.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/2.5.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_py/1.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_py/1.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_ts/3.6.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_tools_telemetry/0.2.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_tools_telemetry/0.2.8/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/0.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.10.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.11.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.13.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.15.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.17.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.18.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.19.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.2.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.21.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.27.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.28.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.3.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.30.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.32.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.34.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.38.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.39.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.4.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.43.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.9.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.9.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_lib/3.0.0-beta.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_lib/3.0.0-rc.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_lib/3.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_lib/3.7.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.0.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.2.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.2.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.3.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.4.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.4.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.5.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.6.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.7.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.7.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.8.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.8.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.8.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boringssl/0.0.0-20211025-d4f1ab9/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boringssl/0.0.0-20230215-5c22014/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boringssl/0.0.0-20240530-2db0eb3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boringssl/0.20240913.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boringssl/0.20241024.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/buildifier_prebuilt/6.1.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/buildifier_prebuilt/6.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/buildifier_prebuilt/7.3.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/buildifier_prebuilt/8.2.0.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/buildifier_prebuilt/8.5.1.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/buildifier_prebuilt/8.5.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/buildozer/7.1.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/c-ares/1.15.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/cel-spec/0.15.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/civetweb/1.16/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/curl/8.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/curl/8.7.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/cython/3.0.11-1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/diff.bzl/0.5.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/download_utils/1.0.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/envoy_api/0.0.0-20241214-918efc9/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/flatbuffers/25.9.23/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gawk/5.3.2.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gazelle/0.27.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gazelle/0.30.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gazelle/0.32.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gazelle/0.33.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gazelle/0.34.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gazelle/0.36.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/google_benchmark/1.8.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/google_benchmark/1.8.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/google_benchmark/1.8.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googleapis/0.0.0-20240326-1c8d509c5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googleapis/0.0.0-20240819-fe8ba054a/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googletest/1.11.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googletest/1.14.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googletest/1.15.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googletest/1.17.0.bcr.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googletest/1.17.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.70.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-proto/0.0.0-20240627-ec30f58/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc/1.41.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc/1.56.3.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc/1.62.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc/1.66.0.bcr.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc/1.66.0.bcr.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc/1.69.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc/1.70.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/helly25_bzl/0.3.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/jq.bzl/0.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/jq.bzl/0.6.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/jsoncpp/1.9.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/libpfm/4.11.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/mbedtls/3.6.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/nlohmann_json/3.11.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/nlohmann_json/3.6.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opencensus-cpp/0.0.0-20230502-50eb5de/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opencensus-proto/0.4.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opentelemetry-cpp/1.14.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opentelemetry-cpp/1.16.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opentelemetry-proto/1.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opentelemetry-proto/1.3.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opentelemetry-proto/1.4.0.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opentracing-cpp/1.6.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/package_metadata/0.0.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/package_metadata/0.0.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/package_metadata/0.0.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.10/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.11/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.7/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.8/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.9/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/1.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/1.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/prometheus-cpp/1.2.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/prometheus-cpp/1.3.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/21.7/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/23.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/24.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/26.0.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/26.0.bcr.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/26.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/27.0-rc2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/27.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/27.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/29.0-rc2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/29.0-rc3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/29.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/29.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/3.19.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/3.19.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/3.19.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protoc-gen-validate/1.0.4.bcr.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protoc-gen-validate/1.0.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/pybind11_bazel/2.11.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/pybind11_bazel/2.12.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/pybind11_bazel/2.13.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rapidjson/1.1.0.bcr.20241007/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/re2/2021-09-01/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/re2/2023-09-01/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/re2/2024-05-01/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/re2/2024-07-02/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/re2/2025-08-12.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_android/0.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_apple/3.16.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_apple/3.5.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_buf/0.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_buf/0.5.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.10/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.13/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.14/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.15/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.16/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.17/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.8/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.9/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.1.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.1.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.2.14/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.2.16/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.2.17/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.2.18/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.2.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.2.8/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_diff/1.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_foreign_cc/0.10.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_fuzzing/0.5.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.33.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.38.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.39.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.41.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.42.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.45.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.46.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.48.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.50.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/4.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/5.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/5.3.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/5.5.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/6.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/6.3.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/6.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/6.5.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.0.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.10.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.12.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.2.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.3.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.6.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/8.11.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/8.13.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/8.14.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/8.15.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/8.3.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/8.5.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/8.6.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_jvm_external/4.4.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_jvm_external/5.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_jvm_external/5.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_jvm_external/5.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_jvm_external/6.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_jvm_external/6.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_jvm_external/6.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_kotlin/1.9.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_kotlin/1.9.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_license/0.0.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_license/0.0.7/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_license/1.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_multirun/0.9.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_multitool/0.11.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_multitool/0.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_multitool/1.11.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_multitool/1.2.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_multitool/1.9.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_nodejs/5.8.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_nodejs/6.2.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_nodejs/6.3.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_nodejs/6.3.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_nodejs/6.5.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_nodejs/6.7.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_pkg/0.7.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_pkg/1.0.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_pkg/1.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_pkg/1.2.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/4.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/6.0.0-rc2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/6.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/6.0.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/7.0.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/7.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.10.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.20.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.22.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.22.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.23.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.25.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.26.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.27.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.28.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.29.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.31.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.33.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.34.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.37.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.40.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/1.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/1.4.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/1.5.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/1.8.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_rust/0.56.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_rust/0.61.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_rust/0.67.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_rust/0.70.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_shell/0.2.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_shell/0.3.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_shell/0.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_shell/0.4.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_shell/0.5.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_shell/0.6.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_swift/1.16.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_swift/1.18.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_swift/2.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_bazel_cpp_toolchains/1.0.4/MODULE.bazel": "d4e11b450511b94dcfaefe4774da8cb891d0471f8fade9fce54b0e14ac1cea7d", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_bazel_cpp_toolchains/1.0.4/source.json": "4489079086d3cdd1e209cadeac5aac3b48120a0eb0bf855b5e0815cf7a8642b3", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_bazel_platforms/0.0.3/MODULE.bazel": "14c96e378c08705a46abe0799d6236fe3095c342c34f83f8d1b3f6046ce00651", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_bazel_platforms/1.1.0/MODULE.bazel": "e5c656abcad121a89cbabad3550bb20167a6865de219ef6e1c68ca30567e1c32", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_bazel_platforms/1.1.0/source.json": "9797d56e9dd68e9d3e8b674402df2d6d5e2174f84184ca4cbee78fc07dc117d9", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_cpp_policies/0.1.1/MODULE.bazel": "62968745a2fe77c449d4e11447b50918c58f870eeac72f0f3198c63617a2f8a2", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_cpp_policies/0.1.1/source.json": "29d45fbd6f3fae0a21487f5d652dfa0796bd2095d2a19732a5456e5b232754a9", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_cr_checker/0.2.2/MODULE.bazel": "dc36d9c35543db918c3fb5b93a8e684431f56c7c784cf2a1b90f35802a373c98", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_cr_checker/0.3.1/MODULE.bazel": "f49e037d7fbc0b2a8b2734fc6b47334e8cc8589ca7a5aa0f3ccca85cc5f79fac", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_dash_license_checker/0.1.1/MODULE.bazel": "76681dbd2d45b5c540869a2337174086c56c54953aab1d02cd878b59d31d13a5", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_devcontainer/1.11.1/MODULE.bazel": "a4d27e121bdee44906e0eac49a74427446482ce16158827802b29c7c3d378150", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_devcontainer/1.11.2/MODULE.bazel": "a56ef756ae6c3474210a4eea373cdfbc4de866e63fbce3f13e158d4e6b2fca54", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_devcontainer/1.11.2/source.json": "503dd8af801e9efecf789d68a1a54b6c4febc882ab360c0545c5dca6527d57b9", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_docs_as_code/0.2.4/MODULE.bazel": "ea4801e96c87e2b8650a0fa9e5fed9b8bdbef05c1bc3e30003ba527d5af60a43", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_docs_as_code/0.2.6/MODULE.bazel": "1af2963e91c6472555e222f0aba3dc2f5492d04598298209a361978ee3e321e3", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_docs_as_code/0.3.3/MODULE.bazel": "95d2b7d44d461c1cf9bd016605f740716fd4ea1303f5f2ed93de3566b90feb1b", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_docs_as_code/1.0.0-RC1/MODULE.bazel": "e118b5cbdc453cde83b5ce481107d8e4a713d3458550b9d10445046d4bba2ff3", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_docs_as_code/1.0.0/MODULE.bazel": "a3ad204b7412c02a899034d78de62b5549bafba5530a256d1007cb3f4ed20a11", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_docs_as_code/1.0.2-CW1/MODULE.bazel": "08d30eba6a1c502096abd65ebb759afb35f988b31e4b72ab5866177703cfec77", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_docs_as_code/1.0.2/MODULE.bazel": "259894df09b4aa6bb5152717b03c3c06a3fd4ad583a7119c52f3a2f0d277b857", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_docs_as_code/1.2.0/MODULE.bazel": "a2b10950d585e14b09a6266025c0624b42101f72d3c4efe9591716b8713ede47", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_docs_as_code/2.0.0/MODULE.bazel": "0c850a488fd50067b28726bfd7330a6970e36b63e67ea06efd5fbbc813e7be5c", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_docs_as_code/2.0.3/MODULE.bazel": "9b945514727190d4c381d8965b972884ba04ce105260ffd2b3c9df51f206ebfe", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_docs_as_code/8.3.0/MODULE.bazel": "d1fc8b8a089f3bef6e50ab83abb3ae6ba766451e84f749e9c5e87c4b27ff508a", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_docs_as_code/8.4.0/MODULE.bazel": "272cc43188ce45cd64b35221c7a1e23075e23cbea67f6fd35fe6fda693b64e53", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_docs_as_code/8.4.0/source.json": "563c525e3c3635e6a46271e8a6eed3ab8461c88fdfd8056a283fae9b9cb9f234", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_format_checker/0.1.1/MODULE.bazel": "1acc254faa90e9f97b79ac69af25b6c21c561f8d6079914f6352b9b20d26bd37", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_platform/0.1.0/MODULE.bazel": "cc9eae86e76f2a930510ed6e50ec991bb5661687e24881685b39c322087adf6f", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_platform/0.1.1/MODULE.bazel": "eb086ba99f9319371fbbd0a9252dfd27b0817039b88bd4d691602974b1ada005", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_process/1.0.4/MODULE.bazel": "f74302cb90a7c4878db302276afae82966878099861dcfca3ef43256131dab52", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_process/1.0.5/MODULE.bazel": "ed17c232ebd65e9d50fd5c1832f90f95ffe95b2a1113d63a176295a2af64d111", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_process/1.1.0/MODULE.bazel": "97dd927309f87ecb73629725683028a5dbb37a49b1159c771292e6993569055b", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_process/1.1.1-Beta/MODULE.bazel": "7ab8931f4b2754b728101ed5a2afda458b82b885f5cfdb9d8c4c62b5c1a2da7e", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_process/1.1.1/MODULE.bazel": "35c84c7cec7d15678f63145054bb74367afb65929724c2115095d5e1b96fca94", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_process/1.2.0/MODULE.bazel": "ec092bf01731a1866352d7b8aaa0e30cae319667abc8cf7a86aec0bdb8555a0e", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_process/1.3.1/MODULE.bazel": "29666e38fbc76eddd6676e594f225e474d130dce9c3a9d224e59ae7a499c4575", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_process/1.3.2/MODULE.bazel": "a32390ef217cef9a811408b0a1c5aeed1398c377aa846f5d5416d7b95b4e4366", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_python_basics/0.3.0/MODULE.bazel": "785ddd5295213e36c31ab86bdc34f29c0f7d1b72e9abd931bb08f42c0e48e2e9", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_python_basics/0.3.1/MODULE.bazel": "99c491109937542e61df090222666a8613ef946fa7bb2b2d5ba648b2baba03ad", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_python_basics/0.3.2/MODULE.bazel": "f25490f64035a0e3a0d53ad9cb6164e8325ce6cf2a7ee68c6ae153840cb2497e", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_python_basics/0.3.4/MODULE.bazel": "53bd16dfbb1fb8ecf6822fb26f9f4e8333bac7b14d12bb02bf84078063820a31", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_rules_imagefs/0.1.0/MODULE.bazel": "7964f78b6a92aebc38916dedbfb5f011d4fa4c385d86f7612c39c7a423b012cc", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_rules_imagefs/0.1.0/source.json": "8aa1214aec6645a9cbbfec86b855402de2f0c42b9aa37224279a64788350a58e", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_rust_policies/0.0.2/MODULE.bazel": "ade2bad4a331b02d9b7e7d9842e8de8c6fded6186486e02c4f7db5cd4b71d34d", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_rust_policies/0.0.2/source.json": "fbcbc738e652b0c68d5d28dd1db09f2e643dc111f5739b2f6af7ec56c2e88043", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_starpls_lsp/0.1.0/MODULE.bazel": "b2f8c4c8d8e851706255ff9002b448bff6e040b8f0c6adedbde2a09375aa16cc", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_toolchains_rust/0.10.0/MODULE.bazel": "535296e6cdef55a506c580ca2ce541aa9ddefb354de1a24ab2bd4addc939282b", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_toolchains_rust/0.10.0/source.json": "8bda773be264da16d2a82a03ebb737421dd4a35855f1e9a5d03d9722d84c1df5", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_tooling/1.0.2/MODULE.bazel": "e70f396375b9d612b4f41ebceff7f18f68ab423b14625c138a354cc01bc62a10", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_tooling/1.1.2/MODULE.bazel": "56d08309931cfad67c2b6691207bb5f761a3946830d620c630d2436630e6b499", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_tooling/1.2.0/MODULE.bazel": "982db97a4f8440356ea935f103204f644fb2b84d8188df63533c7312c82afc37", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_tooling/1.2.0/source.json": "c742d8932e4e6b667f3c81f40127768a8541f01ca7b1e6751773926231cbd852", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_tools/0.0.3/MODULE.bazel": "69f441bf28d938de2b6aef61ec91e65633f8ea908d2527e6f5a424895c9ac388", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_tools/0.0.3/source.json": "84fda1c7e1e73811b67c239ce4d10800132c87dbc0af549ab425e66e679dc37f", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.5.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.5.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.5.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.5.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.5.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.6.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.7.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.7.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.7.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/swift_argument_parser/1.3.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/tar.bzl/0.2.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/tar.bzl/0.5.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/tar.bzl/0.6.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/tar.bzl/0.7.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/toolchain_utils/1.0.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/toolchains_llvm/1.7.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/toolchains_protoc/0.2.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/upb/0.0.0-20211020-160625a/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/upb/0.0.0-20230516-61a97ef/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/upb/0.0.0-20230907-e7430e6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/xds/0.0.0-20240423-555b57e/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/yq.bzl/0.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.2.11/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.2.12/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.2.13/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.3.1.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.3.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.3/MODULE.bazel": "not found" + }, + "selectedYankedVersions": {}, + "moduleExtensions": { + "@@aspect_rules_esbuild+//esbuild:extensions.bzl%esbuild": { + "general": { + "bzlTransitiveDigest": "o35aP5Kjb04K48bX7awCftkWlf3iJ15FrJhDrph/SNQ=", + "usagesDigest": "sj4kz7yaVclWMuWhUhSLq0bVH7+HrkWyMdODMeA7Zhw=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "esbuild_darwin-x64": { + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", + "attributes": { + "esbuild_version": "0.19.9", + "platform": "darwin-x64" + } + }, + "esbuild_darwin-arm64": { + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", + "attributes": { + "esbuild_version": "0.19.9", + "platform": "darwin-arm64" + } + }, + "esbuild_linux-x64": { + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", + "attributes": { + "esbuild_version": "0.19.9", + "platform": "linux-x64" + } + }, + "esbuild_linux-arm64": { + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", + "attributes": { + "esbuild_version": "0.19.9", + "platform": "linux-arm64" + } + }, + "esbuild_win32-x64": { + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", + "attributes": { + "esbuild_version": "0.19.9", + "platform": "win32-x64" + } + }, + "esbuild_toolchains": { + "repoRuleId": "@@aspect_rules_esbuild+//esbuild/private:toolchains_repo.bzl%toolchains_repo", + "attributes": { + "esbuild_version": "0.19.9", + "user_repository_name": "esbuild" + } + }, + "npm__esbuild_0.19.9": { + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", + "attributes": { + "package": "esbuild", + "version": "0.19.9", + "root_package": "", + "link_workspace": "", + "link_packages": {}, + "integrity": "sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==", + "url": "", + "commit": "", + "patch_args": [ + "-p0" + ], + "patches": [], + "custom_postinstall": "", + "npm_auth": "", + "npm_auth_basic": "", + "npm_auth_username": "", + "npm_auth_password": "", + "lifecycle_hooks": [], + "extra_build_content": "", + "generate_bzl_library_targets": false, + "extract_full_archive": false, + "exclude_package_contents": [], + "system_tar": "auto" + } + }, + "npm__esbuild_0.19.9__links": { + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", + "attributes": { + "package": "esbuild", + "version": "0.19.9", + "dev": false, + "root_package": "", + "link_packages": {}, + "deps": {}, + "transitive_closure": {}, + "lifecycle_build_target": false, + "lifecycle_hooks_env": [], + "lifecycle_hooks_execution_requirements": [ + "no-sandbox" + ], + "lifecycle_hooks_use_default_shell_env": false, + "bins": {}, + "package_visibility": [ + "//visibility:public" + ], + "replace_package": "", + "exclude_package_contents": [] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_bazel_lib+", + "bazel_tools", + "bazel_tools" + ], + [ + "aspect_bazel_lib+", + "tar.bzl", + "tar.bzl+" + ], + [ + "aspect_rules_esbuild+", + "aspect_rules_js", + "aspect_rules_js+" + ], + [ + "aspect_rules_esbuild+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_rules_js+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_rules_js+", + "aspect_rules_js", + "aspect_rules_js+" + ], + [ + "aspect_rules_js+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_rules_js+", + "bazel_tools", + "bazel_tools" + ], + [ + "bazel_lib+", + "bazel_lib", + "bazel_lib+" + ], + [ + "bazel_lib+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "bazel_lib+", + "bazel_tools", + "bazel_tools" + ], + [ + "tar.bzl+", + "bazel_lib", + "bazel_lib+" + ], + [ + "tar.bzl+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "tar.bzl+", + "tar.bzl", + "tar.bzl+" + ] + ] + } + }, + "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { + "general": { + "bzlTransitiveDigest": "NHCue1274Xtyg3Ob8Nxy7ERAHzz7hfBaz9QuayDy7vc=", + "usagesDigest": "kbjSw2REjlSC0HtTZDf2p+l/dmiMt3NHLoiWEXYAoQI=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "pnpm": { + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", + "attributes": { + "package": "pnpm", + "version": "8.6.7", + "root_package": "", + "link_workspace": "", + "link_packages": {}, + "integrity": "sha512-vRIWpD/L4phf9Bk2o/O2TDR8fFoJnpYrp2TKqTIZF/qZ2/rgL3qKXzHofHgbXsinwMoSEigz28sqk3pQ+yMEQQ==", + "url": "", + "commit": "", + "patch_args": [ + "-p0" + ], + "patches": [], + "custom_postinstall": "", + "npm_auth": "", + "npm_auth_basic": "", + "npm_auth_username": "", + "npm_auth_password": "", + "lifecycle_hooks": [], + "extra_build_content": "load(\"@aspect_rules_js//js:defs.bzl\", \"js_binary\")\njs_binary(name = \"pnpm\", data = glob([\"package/**\"]), entry_point = \"package/dist/pnpm.cjs\", visibility = [\"//visibility:public\"])", + "generate_bzl_library_targets": false, + "extract_full_archive": true, + "exclude_package_contents": [], + "system_tar": "auto" + } + }, + "pnpm__links": { + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", + "attributes": { + "package": "pnpm", + "version": "8.6.7", + "dev": false, + "root_package": "", + "link_packages": {}, + "deps": {}, + "transitive_closure": {}, + "lifecycle_build_target": false, + "lifecycle_hooks_env": [], + "lifecycle_hooks_execution_requirements": [ + "no-sandbox" + ], + "lifecycle_hooks_use_default_shell_env": false, + "bins": {}, + "package_visibility": [ + "//visibility:public" + ], + "replace_package": "", + "exclude_package_contents": [] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_bazel_lib+", + "bazel_tools", + "bazel_tools" + ], + [ + "aspect_bazel_lib+", + "tar.bzl", + "tar.bzl+" + ], + [ + "aspect_rules_js+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_rules_js+", + "aspect_rules_js", + "aspect_rules_js+" + ], + [ + "aspect_rules_js+", + "bazel_features", + "bazel_features+" + ], + [ + "aspect_rules_js+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_rules_js+", + "bazel_tools", + "bazel_tools" + ], + [ + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ], + [ + "bazel_lib+", + "bazel_lib", + "bazel_lib+" + ], + [ + "bazel_lib+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "bazel_lib+", + "bazel_tools", + "bazel_tools" + ], + [ + "tar.bzl+", + "bazel_lib", + "bazel_lib+" + ], + [ + "tar.bzl+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "tar.bzl+", + "tar.bzl", + "tar.bzl+" + ] + ] + } + }, + "@@aspect_rules_py+//py:extensions.bzl%py_tools": { + "general": { + "bzlTransitiveDigest": "13DN9p/N8uOU1SMHBh9nZIlptJtS3qP63UkXe+NH8SQ=", + "usagesDigest": "NC1b49l5tenTBVWEUGzzC0j5Kg1GH+l5lBw5JRCldIU=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "bsd_tar_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "bsd_tar_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "bsd_tar_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "bsd_tar_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "bsd_tar_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "bsd_tar_windows_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "windows_arm64" + } + }, + "bsd_tar_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%tar_toolchains_repo", + "attributes": { + "user_repository_name": "bsd_tar" + } + }, + "rules_py_tools.darwin_amd64": { + "repoRuleId": "@@aspect_rules_py+//py/private/toolchain:tools.bzl%prebuilt_tool_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "rules_py_tools.darwin_arm64": { + "repoRuleId": "@@aspect_rules_py+//py/private/toolchain:tools.bzl%prebuilt_tool_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "rules_py_tools.linux_amd64": { + "repoRuleId": "@@aspect_rules_py+//py/private/toolchain:tools.bzl%prebuilt_tool_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "rules_py_tools.linux_arm64": { + "repoRuleId": "@@aspect_rules_py+//py/private/toolchain:tools.bzl%prebuilt_tool_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "rules_py_tools": { + "repoRuleId": "@@aspect_rules_py+//py/private/toolchain:repo.bzl%toolchains_repo", + "attributes": { + "user_repository_name": "rules_py_tools" + } + }, + "rules_py_pex_2_3_1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "urls": [ + "https://files.pythonhosted.org/packages/e7/d0/fbda2a4d41d62d86ce53f5ae4fbaaee8c34070f75bb7ca009090510ae874/pex-2.3.1-py2.py3-none-any.whl" + ], + "sha256": "64692a5bf6f298403aab930d22f0d836ae4736c5bc820e262e9092fe8c56f830", + "downloaded_file_path": "pex-2.3.1-py2.py3-none-any.whl" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "bazel_tools", + "bazel_tools" + ], + [ + "aspect_rules_py+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_rules_py+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@aspect_rules_ts+//ts:extensions.bzl%ext": { + "general": { + "bzlTransitiveDigest": "LW1zC7Im6EhnBiPOn9FBRp3lYTjaUmo9dSdS2dJvXH0=", + "usagesDigest": "caXVbnxEUN71ZxydJbg6pZ8NaFPVDbNp12wS9TMC824=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "npm_typescript": { + "repoRuleId": "@@aspect_rules_ts+//ts/private:npm_repositories.bzl%http_archive_version", + "attributes": { + "bzlmod": true, + "version": "5.8.3", + "integrity": "", + "build_file": "@@aspect_rules_ts+//ts:BUILD.typescript", + "build_file_substitutions": { + "bazel_worker_version": "5.4.2", + "google_protobuf_version": "3.20.1" + }, + "urls": [ + "https://registry.npmjs.org/typescript/-/typescript-{}.tgz" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_rules_ts+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@aspect_tools_telemetry+//:extension.bzl%telemetry": { + "general": { + "bzlTransitiveDigest": "gA7tPEdJXhskzPIEUxjX9IdDrM6+WjfbgXJ8Ez47umk=", + "usagesDigest": "Qe1lA0prPNt87OXoXq3fzmffG9RmcuqdmLdwKVAOUnc=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "aspect_tools_telemetry_report": { + "repoRuleId": "@@aspect_tools_telemetry+//:extension.bzl%tel_repository", + "attributes": { + "deps": { + "aspect_rules_lint": "2.5.0", + "aspect_tools_telemetry": "0.2.8" + } + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_tools_telemetry+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_tools_telemetry+", + "bazel_skylib", + "bazel_skylib+" + ] + ] + } + }, + "@@cel-spec+//:extensions.bzl%non_module_dependencies": { + "general": { + "bzlTransitiveDigest": "43iembF10pz9FJIRseDrjWB9kp/ODYb+7FBYAtvSt3Q=", + "usagesDigest": "HFQJtQrL9nKaFZEjgwaHVMHALMW+cafu696xy7J4ueM=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_google_googleapis": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "bd8e735d881fb829751ecb1a77038dda4a8d274c45490cb9fcf004583ee10571", + "strip_prefix": "googleapis-07c27163ac591955d736f3057b1619ece66f5b99", + "urls": [ + "https://github.com/googleapis/googleapis/archive/07c27163ac591955d736f3057b1619ece66f5b99.tar.gz" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "cel-spec+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@cel-spec+//:googleapis_ext.bzl%googleapis_ext": { + "general": { + "bzlTransitiveDigest": "yun2jmsomFi3bs5bjQWXApBzqQf66zBJ39JEBYigzdc=", + "usagesDigest": "Ek7VfZ+tuyRBx/1h5wcmtnW9EGpOb0dkXUwBluZbD8k=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_google_googleapis_imports": { + "repoRuleId": "@@cel-spec++non_module_dependencies+com_google_googleapis//:repository_rules.bzl%switched_rules", + "attributes": { + "rules": { + "proto_library_with_info": [ + "", + "" + ], + "moved_proto_library": [ + "", + "" + ], + "java_proto_library": [ + "", + "" + ], + "java_grpc_library": [ + "", + "" + ], + "java_gapic_library": [ + "", + "" + ], + "java_gapic_test": [ + "", + "" + ], + "java_gapic_assembly_gradle_pkg": [ + "", + "" + ], + "py_proto_library": [ + "", + "" + ], + "py_grpc_library": [ + "", + "" + ], + "py_gapic_library": [ + "", + "" + ], + "py_test": [ + "", + "" + ], + "py_gapic_assembly_pkg": [ + "", + "" + ], + "py_import": [ + "", + "" + ], + "go_proto_library": [ + "", + "" + ], + "go_library": [ + "", + "" + ], + "go_test": [ + "", + "" + ], + "go_gapic_library": [ + "", + "" + ], + "go_gapic_assembly_pkg": [ + "", + "" + ], + "cc_proto_library": [ + "native.cc_proto_library", + "" + ], + "cc_grpc_library": [ + "", + "" + ], + "cc_gapic_library": [ + "", + "" + ], + "php_proto_library": [ + "", + "php_proto_library" + ], + "php_grpc_library": [ + "", + "php_grpc_library" + ], + "php_gapic_library": [ + "", + "php_gapic_library" + ], + "php_gapic_assembly_pkg": [ + "", + "php_gapic_assembly_pkg" + ], + "nodejs_gapic_library": [ + "", + "typescript_gapic_library" + ], + "nodejs_gapic_assembly_pkg": [ + "", + "typescript_gapic_assembly_pkg" + ], + "ruby_proto_library": [ + "", + "" + ], + "ruby_grpc_library": [ + "", + "" + ], + "ruby_ads_gapic_library": [ + "", + "" + ], + "ruby_cloud_gapic_library": [ + "", + "" + ], + "ruby_gapic_assembly_pkg": [ + "", + "" + ], + "csharp_proto_library": [ + "", + "" + ], + "csharp_grpc_library": [ + "", + "" + ], + "csharp_gapic_library": [ + "", + "" + ], + "csharp_gapic_assembly_pkg": [ + "", + "" + ] + } + } + } + }, + "recordedRepoMappingEntries": [ + [ + "cel-spec+", + "com_google_googleapis", + "cel-spec++non_module_dependencies+com_google_googleapis" + ] + ] + } + }, + "@@envoy_api+//bazel:repositories.bzl%non_module_deps": { + "general": { + "bzlTransitiveDigest": "6K7ebXGqru7CSFs/38zH8GGvDgewYM/qjlz7Lqm2XXY=", + "usagesDigest": "cxAa0VVo9d210JBUBw6wpuGp8jg+ltqw3tzH0tPtIEg=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "prometheus_metrics_model": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/prometheus/client_model/archive/v0.6.1.tar.gz" + ], + "sha256": "b9b690bc35d80061f255faa7df7621eae39fe157179ccd78ff6409c3b004f05e", + "strip_prefix": "client_model-0.6.1", + "build_file_content": "\nload(\"@envoy_api//bazel:api_build_system.bzl\", \"api_cc_py_proto_library\")\nload(\"@io_bazel_rules_go//proto:def.bzl\", \"go_proto_library\")\n\napi_cc_py_proto_library(\n name = \"client_model\",\n srcs = [\n \"io/prometheus/client/metrics.proto\",\n ],\n visibility = [\"//visibility:public\"],\n)\n\ngo_proto_library(\n name = \"client_model_go_proto\",\n importpath = \"github.com/prometheus/client_model/go\",\n proto = \":client_model\",\n visibility = [\"//visibility:public\"],\n)\n" + } + }, + "com_github_bufbuild_buf": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/bufbuild/buf/releases/download/v1.47.2/buf-Linux-x86_64.tar.gz" + ], + "sha256": "39716cfe0185df3cba21f66ec739620ffb6876c48b2da4338a8c68c290c9b116", + "strip_prefix": "buf", + "build_file_content": "\npackage(\n default_visibility = [\"//visibility:public\"],\n)\n\nfilegroup(\n name = \"buf\",\n srcs = [\n \"@com_github_bufbuild_buf//:bin/buf\",\n ],\n tags = [\"manual\"], # buf is downloaded as a linux binary; tagged manual to prevent build for non-linux users\n)\n" + } + }, + "envoy_toolshed": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/envoyproxy/toolshed/archive/bazel-v0.2.0.tar.gz" + ], + "sha256": "ef5e95580c41f6805beec197d9a4f6683550f4bfc1e1c678449b6d205dbf000b", + "strip_prefix": "toolshed-bazel-v0.2.0/bazel" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "envoy_api+", + "bazel_tools", + "bazel_tools" + ], + [ + "envoy_api+", + "envoy_api", + "envoy_api+" + ] + ] + } + }, + "@@googleapis+//:extensions.bzl%switched_rules": { + "general": { + "bzlTransitiveDigest": "vG6fuTzXD8MMvHWZEQud0MMH7eoC4GXY0va7VrFFh04=", + "usagesDigest": "vhFFJVFeycO5R7ySy4bclj2C6wMCYag2m28PhEwsn8s=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_google_googleapis_imports": { + "repoRuleId": "@@googleapis+//:repository_rules.bzl%switched_rules", + "attributes": { + "rules": { + "proto_library_with_info": [ + "", + "" + ], + "moved_proto_library": [ + "", + "" + ], + "java_proto_library": [ + "", + "" + ], + "java_grpc_library": [ + "", + "" + ], + "java_gapic_library": [ + "", + "" + ], + "java_gapic_test": [ + "", + "" + ], + "java_gapic_assembly_gradle_pkg": [ + "", + "" + ], + "py_proto_library": [ + "", + "" + ], + "py_grpc_library": [ + "", + "" + ], + "py_gapic_library": [ + "", + "" + ], + "py_test": [ + "", + "" + ], + "py_gapic_assembly_pkg": [ + "", + "" + ], + "py_import": [ + "", + "" + ], + "go_proto_library": [ + "", + "" + ], + "go_grpc_library": [ + "", + "" + ], + "go_library": [ + "", + "" + ], + "go_test": [ + "", + "" + ], + "go_gapic_library": [ + "", + "" + ], + "go_gapic_assembly_pkg": [ + "", + "" + ], + "cc_proto_library": [ + "", + "" + ], + "cc_grpc_library": [ + "", + "" + ], + "cc_gapic_library": [ + "", + "" + ], + "php_proto_library": [ + "", + "php_proto_library" + ], + "php_grpc_library": [ + "", + "php_grpc_library" + ], + "php_gapic_library": [ + "", + "php_gapic_library" + ], + "php_gapic_assembly_pkg": [ + "", + "php_gapic_assembly_pkg" + ], + "nodejs_gapic_library": [ + "", + "typescript_gapic_library" + ], + "nodejs_gapic_assembly_pkg": [ + "", + "typescript_gapic_assembly_pkg" + ], + "ruby_proto_library": [ + "", + "" + ], + "ruby_grpc_library": [ + "", + "" + ], + "ruby_ads_gapic_library": [ + "", + "" + ], + "ruby_cloud_gapic_library": [ + "", + "" + ], + "ruby_gapic_assembly_pkg": [ + "", + "" + ], + "csharp_proto_library": [ + "", + "" + ], + "csharp_grpc_library": [ + "", + "" + ], + "csharp_gapic_library": [ + "", + "" + ], + "csharp_gapic_assembly_pkg": [ + "", + "" + ] + } + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@pybind11_bazel+//:internal_configure.bzl%internal_configure_extension": { + "general": { + "bzlTransitiveDigest": "qQEChI+4ZOV4xn6LulonXjQy5+Z0z1gELJDmBl1ePy4=", + "usagesDigest": "tVQNvLoXMWAbiK39am3yovKGpwINdftfn7RpDyN+JZc=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "pybind11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@pybind11_bazel+//:pybind11-BUILD.bazel", + "strip_prefix": "pybind11-2.13.6", + "url": "https://github.com/pybind/pybind11/archive/refs/tags/v2.13.6.tar.gz", + "integrity": "sha256-4Iy4f0dz2pf6e18DXeh2OrxlbYfVdz5i9toFh9Hw7CA=" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "pybind11_bazel+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_apple+//apple:apple.bzl%provisioning_profile_repository_extension": { + "general": { + "bzlTransitiveDigest": "NcCruFgaVG8TOGmWY57IFfvqi/kgV8TWUht9jzdbxII=", + "usagesDigest": "vsJl8Rw5NL+5Ag2wdUDoTeRF/5klkXO8545Iy7U1Q08=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "local_provisioning_profiles": { + "repoRuleId": "@@rules_apple+//apple/internal:local_provisioning_profiles.bzl%provisioning_profile_repository", + "attributes": {} + } + }, + "recordedRepoMappingEntries": [ + [ + "apple_support+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "bazel_tools", + "rules_cc", + "rules_cc+" + ], + [ + "rules_apple+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "rules_apple+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_apple+", + "build_bazel_apple_support", + "apple_support+" + ], + [ + "rules_apple+", + "build_bazel_rules_swift", + "rules_swift+" + ], + [ + "rules_cc+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_cc+", + "cc_compatibility_proxy", + "rules_cc++compatibility_proxy+cc_compatibility_proxy" + ], + [ + "rules_cc+", + "rules_cc", + "rules_cc+" + ], + [ + "rules_cc++compatibility_proxy+cc_compatibility_proxy", + "rules_cc", + "rules_cc+" + ], + [ + "rules_swift+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "rules_swift+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_swift+", + "build_bazel_apple_support", + "apple_support+" + ], + [ + "rules_swift+", + "build_bazel_rules_swift", + "rules_swift+" + ], + [ + "rules_swift+", + "build_bazel_rules_swift_local_config", + "rules_swift++non_module_deps+build_bazel_rules_swift_local_config" + ] + ] + } + }, + "@@rules_apple+//apple:extensions.bzl%non_module_deps": { + "general": { + "bzlTransitiveDigest": "ul8vHGy74hBD66XzLuB09UmLKPv7O6yFI8pwN7jMWdc=", + "usagesDigest": "M3VqFpeTCo4qmrNKGZw0dxBHvTYDrfV3cscGzlSAhQ4=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "xctestrunner": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/google/xctestrunner/archive/b7698df3d435b6491b4b4c0f9fc7a63fbed5e3a6.tar.gz" + ], + "strip_prefix": "xctestrunner-b7698df3d435b6491b4b4c0f9fc7a63fbed5e3a6", + "sha256": "ae3a063c985a8633cb7eb566db21656f8db8eb9a0edb8c182312c7f0db53730d" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_apple+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_buf+//buf:extensions.bzl%buf": { + "general": { + "bzlTransitiveDigest": "dSWqckK2ILN7aDIDHfv+Qrl1fb1hF7o7MDXY6T8C41s=", + "usagesDigest": "vxN6C2h72rUERbAmd1476FWpxdxo1NhYoY5JSFXJT3g=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "rules_buf_toolchains": { + "repoRuleId": "@@rules_buf+//buf/internal:toolchain.bzl%buf_download_releases", + "attributes": { + "version": "v1.47.2", + "sha256": "1b37b75dc0a777a0cba17fa2604bc9906e55bb4c578823d8b7a8fe3fc9fe4439" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_buf+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_foreign_cc+//foreign_cc:extensions.bzl%tools": { + "general": { + "bzlTransitiveDigest": "otSpeDAxv5Qioli4+V+p43+gUyiUU17e2kHR+4wQFAs=", + "usagesDigest": "9LXdVp01HkdYQT8gYPjYLO6VLVJHo9uFfxWaU1ymiRE=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "rules_foreign_cc_framework_toolchain_linux": { + "repoRuleId": "@@rules_foreign_cc+//foreign_cc/private/framework:toolchain.bzl%framework_toolchain_repository", + "attributes": { + "commands_src": "@rules_foreign_cc//foreign_cc/private/framework/toolchains:linux_commands.bzl", + "exec_compatible_with": [ + "@platforms//os:linux" + ] + } + }, + "rules_foreign_cc_framework_toolchain_freebsd": { + "repoRuleId": "@@rules_foreign_cc+//foreign_cc/private/framework:toolchain.bzl%framework_toolchain_repository", + "attributes": { + "commands_src": "@rules_foreign_cc//foreign_cc/private/framework/toolchains:freebsd_commands.bzl", + "exec_compatible_with": [ + "@platforms//os:freebsd" + ] + } + }, + "rules_foreign_cc_framework_toolchain_windows": { + "repoRuleId": "@@rules_foreign_cc+//foreign_cc/private/framework:toolchain.bzl%framework_toolchain_repository", + "attributes": { + "commands_src": "@rules_foreign_cc//foreign_cc/private/framework/toolchains:windows_commands.bzl", + "exec_compatible_with": [ + "@platforms//os:windows" + ] + } + }, + "rules_foreign_cc_framework_toolchain_macos": { + "repoRuleId": "@@rules_foreign_cc+//foreign_cc/private/framework:toolchain.bzl%framework_toolchain_repository", + "attributes": { + "commands_src": "@rules_foreign_cc//foreign_cc/private/framework/toolchains:macos_commands.bzl", + "exec_compatible_with": [ + "@platforms//os:macos" + ] + } + }, + "rules_foreign_cc_framework_toolchains": { + "repoRuleId": "@@rules_foreign_cc+//foreign_cc/private/framework:toolchain.bzl%framework_toolchain_repository_hub", + "attributes": {} + }, + "cmake_src": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "filegroup(\n name = \"all_srcs\",\n srcs = glob([\"**\"]),\n visibility = [\"//visibility:public\"],\n)\n", + "sha256": "f316b40053466f9a416adf981efda41b160ca859e97f6a484b447ea299ff26aa", + "strip_prefix": "cmake-3.23.2", + "urls": [ + "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2.tar.gz" + ] + } + }, + "gnumake_src": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "filegroup(\n name = \"all_srcs\",\n srcs = glob([\"**\"]),\n visibility = [\"//visibility:public\"],\n)\n", + "sha256": "581f4d4e872da74b3941c874215898a7d35802f03732bdccee1d4a7979105d18", + "strip_prefix": "make-4.4", + "urls": [ + "https://mirror.bazel.build/ftpmirror.gnu.org/gnu/make/make-4.4.tar.gz", + "http://ftpmirror.gnu.org/gnu/make/make-4.4.tar.gz" + ] + } + }, + "ninja_build_src": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "filegroup(\n name = \"all_srcs\",\n srcs = glob([\"**\"]),\n visibility = [\"//visibility:public\"],\n)\n", + "sha256": "31747ae633213f1eda3842686f83c2aa1412e0f5691d1c14dbbcc67fe7400cea", + "strip_prefix": "ninja-1.11.1", + "urls": [ + "https://github.com/ninja-build/ninja/archive/v1.11.1.tar.gz" + ] + } + }, + "meson_src": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "exports_files([\"meson.py\"])\n\nfilegroup(\n name = \"runtime\",\n srcs = glob([\"mesonbuild/**\"]),\n visibility = [\"//visibility:public\"],\n)\n", + "strip_prefix": "meson-1.1.1", + "url": "https://github.com/mesonbuild/meson/releases/download/1.1.1/meson-1.1.1.tar.gz" + } + }, + "glib_dev": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\nload(\"@rules_cc//cc:defs.bzl\", \"cc_library\")\n\ncc_import(\n name = \"glib_dev\",\n hdrs = glob([\"include/**\"]),\n shared_library = \"@glib_runtime//:bin/libglib-2.0-0.dll\",\n visibility = [\"//visibility:public\"],\n)\n ", + "sha256": "bdf18506df304d38be98a4b3f18055b8b8cca81beabecad0eece6ce95319c369", + "urls": [ + "https://download.gnome.org/binaries/win64/glib/2.26/glib-dev_2.26.1-1_win64.zip" + ] + } + }, + "glib_src": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\ncc_import(\n name = \"msvc_hdr\",\n hdrs = [\"msvc_recommended_pragmas.h\"],\n visibility = [\"//visibility:public\"],\n)\n ", + "sha256": "bc96f63112823b7d6c9f06572d2ad626ddac7eb452c04d762592197f6e07898e", + "strip_prefix": "glib-2.26.1", + "urls": [ + "https://download.gnome.org/sources/glib/2.26/glib-2.26.1.tar.gz" + ] + } + }, + "glib_runtime": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\nexports_files(\n [\n \"bin/libgio-2.0-0.dll\",\n \"bin/libglib-2.0-0.dll\",\n \"bin/libgmodule-2.0-0.dll\",\n \"bin/libgobject-2.0-0.dll\",\n \"bin/libgthread-2.0-0.dll\",\n ],\n visibility = [\"//visibility:public\"],\n)\n ", + "sha256": "88d857087e86f16a9be651ee7021880b3f7ba050d34a1ed9f06113b8799cb973", + "urls": [ + "https://download.gnome.org/binaries/win64/glib/2.26/glib_2.26.1-1_win64.zip" + ] + } + }, + "gettext_runtime": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\ncc_import(\n name = \"gettext_runtime\",\n shared_library = \"bin/libintl-8.dll\",\n visibility = [\"//visibility:public\"],\n)\n ", + "sha256": "1f4269c0e021076d60a54e98da6f978a3195013f6de21674ba0edbc339c5b079", + "urls": [ + "https://download.gnome.org/binaries/win64/dependencies/gettext-runtime_0.18.1.1-2_win64.zip" + ] + } + }, + "pkgconfig_src": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "filegroup(\n name = \"all_srcs\",\n srcs = glob([\"**\"]),\n visibility = [\"//visibility:public\"],\n)\n", + "sha256": "6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591", + "strip_prefix": "pkg-config-0.29.2", + "patches": [ + "@@rules_foreign_cc+//toolchains:pkgconfig-detectenv.patch", + "@@rules_foreign_cc+//toolchains:pkgconfig-makefile-vc.patch" + ], + "urls": [ + "https://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz" + ] + } + }, + "bazel_skylib": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.2.1/bazel-skylib-1.2.1.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.2.1/bazel-skylib-1.2.1.tar.gz" + ], + "sha256": "f7be3474d42aae265405a592bb7da8e171919d74c16f082a5457840f06054728" + } + }, + "rules_python": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "84aec9e21cc56fbc7f1335035a71c850d1b9b5cc6ff497306f84cced9a769841", + "strip_prefix": "rules_python-0.23.1", + "url": "https://github.com/bazelbuild/rules_python/archive/refs/tags/0.23.1.tar.gz" + } + }, + "cmake-3.23.2-linux-aarch64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-linux-aarch64.tar.gz" + ], + "sha256": "f2654bf780b53f170bbbec44d8ac67d401d24788e590faa53036a89476efa91e", + "strip_prefix": "cmake-3.23.2-linux-aarch64", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"cmake_data\",\n srcs = glob(\n [\n \"**\",\n ],\n exclude = [\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n \"BUILD\",\n \"BUILD.bazel\",\n ],\n ),\n)\n\nnative_tool_toolchain(\n name = \"cmake_tool\",\n path = \"bin/cmake\",\n target = \":cmake_data\",\n)\n" + } + }, + "cmake-3.23.2-linux-x86_64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-linux-x86_64.tar.gz" + ], + "sha256": "aaced6f745b86ce853661a595bdac6c5314a60f8181b6912a0a4920acfa32708", + "strip_prefix": "cmake-3.23.2-linux-x86_64", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"cmake_data\",\n srcs = glob(\n [\n \"**\",\n ],\n exclude = [\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n \"BUILD\",\n \"BUILD.bazel\",\n ],\n ),\n)\n\nnative_tool_toolchain(\n name = \"cmake_tool\",\n path = \"bin/cmake\",\n target = \":cmake_data\",\n)\n" + } + }, + "cmake-3.23.2-macos-universal": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-macos-universal.tar.gz" + ], + "sha256": "853a0f9af148c5ef47282ffffee06c4c9f257be2635936755f39ca13c3286c88", + "strip_prefix": "cmake-3.23.2-macos-universal/CMake.app/Contents", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"cmake_data\",\n srcs = glob(\n [\n \"**\",\n ],\n exclude = [\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n \"BUILD\",\n \"BUILD.bazel\",\n ],\n ),\n)\n\nnative_tool_toolchain(\n name = \"cmake_tool\",\n path = \"bin/cmake\",\n target = \":cmake_data\",\n)\n" + } + }, + "cmake-3.23.2-windows-i386": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-windows-i386.zip" + ], + "sha256": "6a4fcd6a2315b93cb23c93507efccacc30c449c2bf98f14d6032bb226c582e07", + "strip_prefix": "cmake-3.23.2-windows-i386", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"cmake_data\",\n srcs = glob(\n [\n \"**\",\n ],\n exclude = [\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n \"BUILD\",\n \"BUILD.bazel\",\n ],\n ),\n)\n\nnative_tool_toolchain(\n name = \"cmake_tool\",\n path = \"bin/cmake.exe\",\n target = \":cmake_data\",\n)\n" + } + }, + "cmake-3.23.2-windows-x86_64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-windows-x86_64.zip" + ], + "sha256": "2329387f3166b84c25091c86389fb891193967740c9bcf01e7f6d3306f7ffda0", + "strip_prefix": "cmake-3.23.2-windows-x86_64", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"cmake_data\",\n srcs = glob(\n [\n \"**\",\n ],\n exclude = [\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n \"BUILD\",\n \"BUILD.bazel\",\n ],\n ),\n)\n\nnative_tool_toolchain(\n name = \"cmake_tool\",\n path = \"bin/cmake.exe\",\n target = \":cmake_data\",\n)\n" + } + }, + "cmake_3.23.2_toolchains": { + "repoRuleId": "@@rules_foreign_cc+//toolchains:prebuilt_toolchains_repository.bzl%prebuilt_toolchains_repository", + "attributes": { + "repos": { + "cmake-3.23.2-linux-aarch64": [ + "@platforms//cpu:aarch64", + "@platforms//os:linux" + ], + "cmake-3.23.2-linux-x86_64": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "cmake-3.23.2-macos-universal": [ + "@platforms//os:macos" + ], + "cmake-3.23.2-windows-i386": [ + "@platforms//cpu:x86_32", + "@platforms//os:windows" + ], + "cmake-3.23.2-windows-x86_64": [ + "@platforms//cpu:x86_64", + "@platforms//os:windows" + ] + }, + "tool": "cmake" + } + }, + "ninja_1.11.1_linux": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-linux.zip" + ], + "sha256": "b901ba96e486dce377f9a070ed4ef3f79deb45f4ffe2938f8e7ddc69cfb3df77", + "strip_prefix": "", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"ninja_bin\",\n srcs = [\"ninja\"],\n)\n\nnative_tool_toolchain(\n name = \"ninja_tool\",\n env = {\"NINJA\": \"$(execpath :ninja_bin)\"},\n path = \"$(execpath :ninja_bin)\",\n target = \":ninja_bin\",\n)\n" + } + }, + "ninja_1.11.1_mac": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-mac.zip" + ], + "sha256": "482ecb23c59ae3d4f158029112de172dd96bb0e97549c4b1ca32d8fad11f873e", + "strip_prefix": "", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"ninja_bin\",\n srcs = [\"ninja\"],\n)\n\nnative_tool_toolchain(\n name = \"ninja_tool\",\n env = {\"NINJA\": \"$(execpath :ninja_bin)\"},\n path = \"$(execpath :ninja_bin)\",\n target = \":ninja_bin\",\n)\n" + } + }, + "ninja_1.11.1_win": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip" + ], + "sha256": "524b344a1a9a55005eaf868d991e090ab8ce07fa109f1820d40e74642e289abc", + "strip_prefix": "", + "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n name = \"ninja_bin\",\n srcs = [\"ninja.exe\"],\n)\n\nnative_tool_toolchain(\n name = \"ninja_tool\",\n env = {\"NINJA\": \"$(execpath :ninja_bin)\"},\n path = \"$(execpath :ninja_bin)\",\n target = \":ninja_bin\",\n)\n" + } + }, + "ninja_1.11.1_toolchains": { + "repoRuleId": "@@rules_foreign_cc+//toolchains:prebuilt_toolchains_repository.bzl%prebuilt_toolchains_repository", + "attributes": { + "repos": { + "ninja_1.11.1_linux": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "ninja_1.11.1_mac": [ + "@platforms//cpu:x86_64", + "@platforms//os:macos" + ], + "ninja_1.11.1_win": [ + "@platforms//cpu:x86_64", + "@platforms//os:windows" + ] + }, + "tool": "ninja" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_foreign_cc+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_foreign_cc+", + "rules_foreign_cc", + "rules_foreign_cc+" + ] + ] + } + }, + "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { + "general": { + "bzlTransitiveDigest": "CYUiFDCnL2VGx3uotIu/VuGabgObnZra2zzRUJCX0sU=", + "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "platforms": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", + "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" + ], + "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" + } + }, + "rules_python": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", + "strip_prefix": "rules_python-0.28.0", + "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" + } + }, + "bazel_skylib": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" + ] + } + }, + "com_google_absl": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" + ], + "strip_prefix": "abseil-cpp-20240116.1", + "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" + } + }, + "rules_fuzzing_oss_fuzz": { + "repoRuleId": "@@rules_fuzzing+//fuzzing/private/oss_fuzz:repository.bzl%oss_fuzz_repository", + "attributes": {} + }, + "honggfuzz": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@rules_fuzzing+//:honggfuzz.BUILD", + "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", + "url": "https://github.com/google/honggfuzz/archive/2.5.zip", + "strip_prefix": "honggfuzz-2.5" + } + }, + "rules_fuzzing_jazzer": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", + "attributes": { + "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" + } + }, + "rules_fuzzing_jazzer_api": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", + "attributes": { + "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_fuzzing+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { + "general": { + "bzlTransitiveDigest": "03Qju4tW0vE+0RBuZGuV2A4Hx6AiSkdNahYvworx2aM=", + "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_github_jetbrains_kotlin_git": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", + "attributes": { + "urls": [ + "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" + ], + "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" + } + }, + "com_github_jetbrains_kotlin": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", + "attributes": { + "git_repository_name": "com_github_jetbrains_kotlin_git", + "compiler_version": "1.9.23" + } + }, + "com_github_google_ksp": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", + "attributes": { + "urls": [ + "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" + ], + "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", + "strip_version": "1.9.23-1.0.20" + } + }, + "com_github_pinterest_ktlint": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", + "urls": [ + "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" + ], + "executable": true + } + }, + "rules_android": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", + "strip_prefix": "rules_android-0.1.1", + "urls": [ + "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_kotlin+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_nodejs+//nodejs:extensions.bzl%node": { + "general": { + "bzlTransitiveDigest": "4pUxCNc22K4I+6+4Nxu52Hur12tFRfa1JMsN5mdDv60=", + "usagesDigest": "GS0hrS+1xGO6wWmKTqytkZ6FWwnLFKCdsYVhZKvKNFA=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "nodejs_linux_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "22.22.0", + "include_headers": false, + "platform": "linux_amd64" + } + }, + "nodejs_linux_arm64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "22.22.0", + "include_headers": false, + "platform": "linux_arm64" + } + }, + "nodejs_linux_s390x": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "22.22.0", + "include_headers": false, + "platform": "linux_s390x" + } + }, + "nodejs_linux_ppc64le": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "22.22.0", + "include_headers": false, + "platform": "linux_ppc64le" + } + }, + "nodejs_darwin_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "22.22.0", + "include_headers": false, + "platform": "darwin_amd64" + } + }, + "nodejs_darwin_arm64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "22.22.0", + "include_headers": false, + "platform": "darwin_arm64" + } + }, + "nodejs_windows_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "22.22.0", + "include_headers": false, + "platform": "windows_amd64" + } + }, + "nodejs_windows_arm64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "22.22.0", + "include_headers": false, + "platform": "windows_arm64" + } + }, + "nodejs": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", + "attributes": { + "user_node_repository_name": "nodejs" + } + }, + "nodejs_host": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", + "attributes": { + "user_node_repository_name": "nodejs" + } + }, + "nodejs_toolchains": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", + "attributes": { + "user_node_repository_name": "nodejs" + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@rules_python+//python/extensions:config.bzl%config": { + "general": { + "bzlTransitiveDigest": "EcMcbtKZvYmd5Mi1Fpg4EeBBztLHEE5tjO5tLDBYDuU=", + "usagesDigest": "lDbpRfhoWmZCHSaNxwZv/8fF2y0wu2th0G0f/uqX7VM=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "rules_python_internal": { + "repoRuleId": "@@rules_python+//python/private:internal_config_repo.bzl%internal_config_repo", + "attributes": { + "transition_setting_generators": {}, + "transition_settings": [] + } + }, + "pypi__build": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/e2/03/f3c8ba0a6b6e30d7d18c40faab90807c9bb5e9a1e3b2fe2008af624a9c97/build-1.2.1-py3-none-any.whl", + "sha256": "75e10f767a433d9a86e50d83f418e83efc18ede923ee5ff7df93b6cb0306c5d4", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__click": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", + "sha256": "ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__colorama": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", + "sha256": "4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__importlib_metadata": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/2d/0a/679461c511447ffaf176567d5c496d1de27cbe34a87df6677d7171b2fbd4/importlib_metadata-7.1.0-py3-none-any.whl", + "sha256": "30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__installer": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/e5/ca/1172b6638d52f2d6caa2dd262ec4c811ba59eee96d54a7701930726bce18/installer-0.7.0-py3-none-any.whl", + "sha256": "05d1933f0a5ba7d8d6296bb6d5018e7c94fa473ceb10cf198a92ccea19c27b53", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__more_itertools": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/50/e2/8e10e465ee3987bb7c9ab69efb91d867d93959095f4807db102d07995d94/more_itertools-10.2.0-py3-none-any.whl", + "sha256": "686b06abe565edfab151cb8fd385a05651e1fdf8f0a14191e4439283421f8684", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__packaging": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/49/df/1fceb2f8900f8639e278b056416d49134fb8d84c5942ffaa01ad34782422/packaging-24.0-py3-none-any.whl", + "sha256": "2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pep517": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/25/6e/ca4a5434eb0e502210f591b97537d322546e4833dcb4d470a48c375c5540/pep517-0.13.1-py3-none-any.whl", + "sha256": "31b206f67165b3536dd577c5c3f1518e8fbaf38cbc57efff8369a392feff1721", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pip": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/8a/6a/19e9fe04fca059ccf770861c7d5721ab4c2aebc539889e97c7977528a53b/pip-24.0-py3-none-any.whl", + "sha256": "ba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pip_tools": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/0d/dc/38f4ce065e92c66f058ea7a368a9c5de4e702272b479c0992059f7693941/pip_tools-7.4.1-py3-none-any.whl", + "sha256": "4c690e5fbae2f21e87843e89c26191f0d9454f362d8acdbd695716493ec8b3a9", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pyproject_hooks": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/ae/f3/431b9d5fe7d14af7a32340792ef43b8a714e7726f1d7b69cc4e8e7a3f1d7/pyproject_hooks-1.1.0-py3-none-any.whl", + "sha256": "7ceeefe9aec63a1064c18d939bdc3adf2d8aa1988a510afec15151578b232aa2", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__setuptools": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/90/99/158ad0609729111163fc1f674a5a42f2605371a4cf036d0441070e2f7455/setuptools-78.1.1-py3-none-any.whl", + "sha256": "c3a9c4211ff4c309edb8b8c4f1cbfa7ae324c4ba9f91ff254e3d305b9fd54561", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__tomli": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", + "sha256": "939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__wheel": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/7d/cd/d7460c9a869b16c3dd4e1e403cce337df165368c71d6af229a74699622ce/wheel-0.43.0-py3-none-any.whl", + "sha256": "55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__zipp": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/da/55/a03fd7240714916507e1fcf7ae355bd9d9ed2e6db492595f1a67f61681be/zipp-3.18.2-py3-none-any.whl", + "sha256": "dce197b859eb796242b0622af1b8beb0a722d52aa2f57133ead08edd5bf5374e", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_python+", + "pypi__build", + "rules_python++config+pypi__build" + ], + [ + "rules_python+", + "pypi__click", + "rules_python++config+pypi__click" + ], + [ + "rules_python+", + "pypi__colorama", + "rules_python++config+pypi__colorama" + ], + [ + "rules_python+", + "pypi__importlib_metadata", + "rules_python++config+pypi__importlib_metadata" + ], + [ + "rules_python+", + "pypi__installer", + "rules_python++config+pypi__installer" + ], + [ + "rules_python+", + "pypi__more_itertools", + "rules_python++config+pypi__more_itertools" + ], + [ + "rules_python+", + "pypi__packaging", + "rules_python++config+pypi__packaging" + ], + [ + "rules_python+", + "pypi__pep517", + "rules_python++config+pypi__pep517" + ], + [ + "rules_python+", + "pypi__pip", + "rules_python++config+pypi__pip" + ], + [ + "rules_python+", + "pypi__pip_tools", + "rules_python++config+pypi__pip_tools" + ], + [ + "rules_python+", + "pypi__pyproject_hooks", + "rules_python++config+pypi__pyproject_hooks" + ], + [ + "rules_python+", + "pypi__setuptools", + "rules_python++config+pypi__setuptools" + ], + [ + "rules_python+", + "pypi__tomli", + "rules_python++config+pypi__tomli" + ], + [ + "rules_python+", + "pypi__wheel", + "rules_python++config+pypi__wheel" + ], + [ + "rules_python+", + "pypi__zipp", + "rules_python++config+pypi__zipp" + ] + ] + } + }, + "@@rules_python+//python/uv:uv.bzl%uv": { + "general": { + "bzlTransitiveDigest": "ijW9KS7qsIY+yBVvJ+Nr1mzwQox09j13DnE3iIwaeTM=", + "usagesDigest": "c4BCoL7WnccEomzDYulDuOys9pd6N93KaNI4mTVbqi0=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "uv": { + "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", + "attributes": { + "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", + "toolchain_names": [ + "none" + ], + "toolchain_implementations": { + "none": "'@@rules_python+//python:none'" + }, + "toolchain_compatible_with": { + "none": [ + "@platforms//:incompatible" + ] + }, + "toolchain_target_settings": {} + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_python+", + "platforms", + "platforms" + ] + ] + } + }, + "@@rules_rust+//crate_universe:extensions.bzl%crate": { + "general": { + "bzlTransitiveDigest": "2EquS7qjdmRKjIr543W9B9jVRuXxwS68AnLmr92eUuQ=", + "usagesDigest": "cVdscpSlFdl79/WfeaFFp7KYFb2dNBCZ79adGMpYlEk=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": { + "CARGO_BAZEL_DEBUG": null, + "CARGO_BAZEL_GENERATOR_SHA256": null, + "CARGO_BAZEL_GENERATOR_URL": null, + "CARGO_BAZEL_ISOLATED": null, + "CARGO_BAZEL_REPIN": null, + "CARGO_BAZEL_REPIN_ONLY": null, + "CARGO_BAZEL_TIMEOUT": null, + "REPIN": null + }, + "generatedRepoSpecs": { + "crates": { + "repoRuleId": "@@rules_rust+//crate_universe:extensions.bzl%_generate_repo", + "attributes": { + "contents": { + "BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files(\n [\n \"cargo-bazel.json\",\n \"crates.bzl\",\n \"defs.bzl\",\n ] + glob(\n allow_empty = True,\n include = [\"*.bazel\"],\n ),\n)\n\nfilegroup(\n name = \"srcs\",\n srcs = glob(\n allow_empty = True,\n include = [\n \"*.bazel\",\n \"*.bzl\",\n ],\n ),\n)\n\n# Workspace Member Dependencies\nalias(\n name = \"clap-4.6.5\",\n actual = \"@crates__clap-4.6.5//:clap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"clap\",\n actual = \"@crates__clap-4.6.5//:clap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"env_logger-0.10.2\",\n actual = \"@crates__env_logger-0.10.2//:env_logger\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"env_logger\",\n actual = \"@crates__env_logger-0.10.2//:env_logger\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"flatbuffers-25.12.19\",\n actual = \"@crates__flatbuffers-25.12.19//:flatbuffers\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"flatbuffers\",\n actual = \"@crates__flatbuffers-25.12.19//:flatbuffers\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"log-0.4.33\",\n actual = \"@crates__log-0.4.33//:log\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"log\",\n actual = \"@crates__log-0.4.33//:log\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"once_cell-1.21.4\",\n actual = \"@crates__once_cell-1.21.4//:once_cell\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"once_cell\",\n actual = \"@crates__once_cell-1.21.4//:once_cell\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pest-2.8.8\",\n actual = \"@crates__pest-2.8.8//:pest\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pest\",\n actual = \"@crates__pest-2.8.8//:pest\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pest_derive-2.8.8\",\n actual = \"@crates__pest_derive-2.8.8//:pest_derive\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pest_derive\",\n actual = \"@crates__pest_derive-2.8.8//:pest_derive\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde-1.0.229\",\n actual = \"@crates__serde-1.0.229//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde\",\n actual = \"@crates__serde-1.0.229//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json-1.0.151\",\n actual = \"@crates__serde_json-1.0.151//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json\",\n actual = \"@crates__serde_json-1.0.151//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_yaml-0.9.34+deprecated\",\n actual = \"@crates__serde_yaml-0.9.34-deprecated//:serde_yaml\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_yaml\",\n actual = \"@crates__serde_yaml-0.9.34-deprecated//:serde_yaml\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"thiserror-1.0.69\",\n actual = \"@crates__thiserror-1.0.69//:thiserror\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"thiserror\",\n actual = \"@crates__thiserror-1.0.69//:thiserror\",\n tags = [\"manual\"],\n)\n", + "alias_rules.bzl": "\"\"\"Alias that transitions its target to `compilation_mode=opt`. Use `transition_alias=\"opt\"` to enable.\"\"\"\n\nload(\"@rules_cc//cc:defs.bzl\", \"CcInfo\")\nload(\"@rules_rust//rust:rust_common.bzl\", \"COMMON_PROVIDERS\")\n\ndef _transition_alias_impl(ctx):\n # `ctx.attr.actual` is a list of 1 item due to the transition\n providers = [ctx.attr.actual[0][provider] for provider in COMMON_PROVIDERS]\n if CcInfo in ctx.attr.actual[0]:\n providers.append(ctx.attr.actual[0][CcInfo])\n return providers\n\ndef _change_compilation_mode(compilation_mode):\n def _change_compilation_mode_impl(_settings, _attr):\n return {\n \"//command_line_option:compilation_mode\": compilation_mode,\n }\n\n return transition(\n implementation = _change_compilation_mode_impl,\n inputs = [],\n outputs = [\n \"//command_line_option:compilation_mode\",\n ],\n )\n\ndef _transition_alias_rule(compilation_mode):\n return rule(\n implementation = _transition_alias_impl,\n provides = COMMON_PROVIDERS,\n attrs = {\n \"actual\": attr.label(\n mandatory = True,\n doc = \"`rust_library()` target to transition to `compilation_mode=opt`.\",\n providers = COMMON_PROVIDERS,\n cfg = _change_compilation_mode(compilation_mode),\n ),\n \"_allowlist_function_transition\": attr.label(\n default = \"@bazel_tools//tools/allowlists/function_transition_allowlist\",\n ),\n },\n doc = \"Transitions a Rust library crate to the `compilation_mode=opt`.\",\n )\n\ntransition_alias_dbg = _transition_alias_rule(\"dbg\")\ntransition_alias_fastbuild = _transition_alias_rule(\"fastbuild\")\ntransition_alias_opt = _transition_alias_rule(\"opt\")\n", + "defs.bzl": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\"\"\"\n# `crates_repository` API\n\n- [aliases](#aliases)\n- [crate_deps](#crate_deps)\n- [all_crate_deps](#all_crate_deps)\n- [crate_repositories](#crate_repositories)\n\n\"\"\"\n\nload(\"@bazel_tools//tools/build_defs/repo:git.bzl\", \"git_repository\")\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nload(\"@bazel_tools//tools/build_defs/repo:utils.bzl\", \"maybe\")\nload(\"@bazel_skylib//lib:selects.bzl\", \"selects\")\nload(\"@rules_rust//crate_universe/private:local_crate_mirror.bzl\", \"local_crate_mirror\")\n\n###############################################################################\n# MACROS API\n###############################################################################\n\n# An identifier that represent common dependencies (unconditional).\n_COMMON_CONDITION = \"\"\n\ndef _flatten_dependency_maps(all_dependency_maps):\n \"\"\"Flatten a list of dependency maps into one dictionary.\n\n Dependency maps have the following structure:\n\n ```python\n DEPENDENCIES_MAP = {\n # The first key in the map is a Bazel package\n # name of the workspace this file is defined in.\n \"workspace_member_package\": {\n\n # Not all dependencies are supported for all platforms.\n # the condition key is the condition required to be true\n # on the host platform.\n \"condition\": {\n\n # An alias to a crate target. # The label of the crate target the\n # Aliases are only crate names. # package name refers to.\n \"package_name\": \"@full//:label\",\n }\n }\n }\n ```\n\n Args:\n all_dependency_maps (list): A list of dicts as described above\n\n Returns:\n dict: A dictionary as described above\n \"\"\"\n dependencies = {}\n\n for workspace_deps_map in all_dependency_maps:\n for pkg_name, conditional_deps_map in workspace_deps_map.items():\n if pkg_name not in dependencies:\n non_frozen_map = dict()\n for key, values in conditional_deps_map.items():\n non_frozen_map.update({key: dict(values.items())})\n dependencies.setdefault(pkg_name, non_frozen_map)\n continue\n\n for condition, deps_map in conditional_deps_map.items():\n # If the condition has not been recorded, do so and continue\n if condition not in dependencies[pkg_name]:\n dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))\n continue\n\n # Alert on any miss-matched dependencies\n inconsistent_entries = []\n for crate_name, crate_label in deps_map.items():\n existing = dependencies[pkg_name][condition].get(crate_name)\n if existing and existing != crate_label:\n inconsistent_entries.append((crate_name, existing, crate_label))\n dependencies[pkg_name][condition].update({crate_name: crate_label})\n\n return dependencies\n\ndef crate_deps(deps, package_name = None):\n \"\"\"Finds the fully qualified label of the requested crates for the package where this macro is called.\n\n Args:\n deps (list): The desired list of crate targets.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()`.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if not deps:\n return []\n\n if package_name == None:\n package_name = native.package_name()\n\n # Join both sets of dependencies\n dependencies = _flatten_dependency_maps([\n _NORMAL_DEPENDENCIES,\n _NORMAL_DEV_DEPENDENCIES,\n _PROC_MACRO_DEPENDENCIES,\n _PROC_MACRO_DEV_DEPENDENCIES,\n _BUILD_DEPENDENCIES,\n _BUILD_PROC_MACRO_DEPENDENCIES,\n ]).pop(package_name, {})\n\n # Combine all conditional packages so we can easily index over a flat list\n # TODO: Perhaps this should actually return select statements and maintain\n # the conditionals of the dependencies\n flat_deps = {}\n for deps_set in dependencies.values():\n for crate_name, crate_label in deps_set.items():\n flat_deps.update({crate_name: crate_label})\n\n missing_crates = []\n crate_targets = []\n for crate_target in deps:\n if crate_target not in flat_deps:\n missing_crates.append(crate_target)\n else:\n crate_targets.append(flat_deps[crate_target])\n\n if missing_crates:\n fail(\"Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`\".format(\n missing_crates,\n package_name,\n dependencies,\n ))\n\n return crate_targets\n\ndef all_crate_deps(\n normal = False, \n normal_dev = False, \n proc_macro = False, \n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Finds the fully qualified label of all requested direct crate dependencies \\\n for the package where this macro is called.\n\n If no parameters are set, all normal dependencies are returned. Setting any one flag will\n otherwise impact the contents of the returned list.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list.\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_dependency_maps = []\n if normal:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n if normal_dev:\n all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)\n if proc_macro:\n all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)\n if proc_macro_dev:\n all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)\n if build:\n all_dependency_maps.append(_BUILD_DEPENDENCIES)\n if build_proc_macro:\n all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)\n\n # Default to always using normal dependencies\n if not all_dependency_maps:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n\n dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)\n\n if not dependencies:\n if dependencies == None:\n fail(\"Tried to get all_crate_deps for package \" + package_name + \" but that package had no Cargo.toml file\")\n else:\n return []\n\n crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())\n for condition, deps in dependencies.items():\n crate_deps += selects.with_or({\n tuple(_CONDITIONS[condition]): deps.values(),\n \"//conditions:default\": [],\n })\n\n return crate_deps\n\ndef aliases(\n normal = False,\n normal_dev = False,\n proc_macro = False,\n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Produces a map of Crate alias names to their original label\n\n If no dependency kinds are specified, `normal` and `proc_macro` are used by default.\n Setting any one flag will otherwise determine the contents of the returned dict.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n dict: The aliases of all associated packages\n \"\"\"\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_aliases_maps = []\n if normal:\n all_aliases_maps.append(_NORMAL_ALIASES)\n if normal_dev:\n all_aliases_maps.append(_NORMAL_DEV_ALIASES)\n if proc_macro:\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n if proc_macro_dev:\n all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)\n if build:\n all_aliases_maps.append(_BUILD_ALIASES)\n if build_proc_macro:\n all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)\n\n # Default to always using normal aliases\n if not all_aliases_maps:\n all_aliases_maps.append(_NORMAL_ALIASES)\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n\n aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)\n\n if not aliases:\n return dict()\n\n common_items = aliases.pop(_COMMON_CONDITION, {}).items()\n\n # If there are only common items in the dictionary, immediately return them\n if not len(aliases.keys()) == 1:\n return dict(common_items)\n\n # Build a single select statement where each conditional has accounted for the\n # common set of aliases.\n crate_aliases = {\"//conditions:default\": dict(common_items)}\n for condition, deps in aliases.items():\n condition_triples = _CONDITIONS[condition]\n for triple in condition_triples:\n if triple in crate_aliases:\n crate_aliases[triple].update(deps)\n else:\n crate_aliases.update({triple: dict(deps.items() + common_items)})\n\n return select(crate_aliases)\n\n###############################################################################\n# WORKSPACE MEMBER DEPS AND ALIASES\n###############################################################################\n\n_NORMAL_DEPENDENCIES = {\n \"\": {\n _COMMON_CONDITION: {\n \"clap\": Label(\"@crates//:clap-4.6.5\"),\n \"env_logger\": Label(\"@crates//:env_logger-0.10.2\"),\n \"flatbuffers\": Label(\"@crates//:flatbuffers-25.12.19\"),\n \"log\": Label(\"@crates//:log-0.4.33\"),\n \"once_cell\": Label(\"@crates//:once_cell-1.21.4\"),\n \"pest\": Label(\"@crates//:pest-2.8.8\"),\n \"serde\": Label(\"@crates//:serde-1.0.229\"),\n \"serde_json\": Label(\"@crates//:serde_json-1.0.151\"),\n \"serde_yaml\": Label(\"@crates//:serde_yaml-0.9.34+deprecated\"),\n \"thiserror\": Label(\"@crates//:thiserror-1.0.69\"),\n },\n },\n}\n\n\n_NORMAL_ALIASES = {\n \"\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_NORMAL_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_NORMAL_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n _COMMON_CONDITION: {\n \"pest_derive\": Label(\"@crates//:pest_derive-2.8.8\"),\n },\n },\n}\n\n\n_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_CONDITIONS = {\n \"aarch64-apple-darwin\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"aarch64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(any())\": [],\n \"cfg(any(unix, target_os = \\\"wasi\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_os = \\\"hermit\\\")\": [],\n \"cfg(windows)\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"wasm32-unknown-unknown\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"wasm32-wasip1\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"x86_64-pc-windows-msvc\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"x86_64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n \"x86_64-unknown-nixos-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n}\n\n###############################################################################\n\ndef crate_repositories():\n \"\"\"A macro for defining repositories for all generated crates.\n\n Returns:\n A list of repos visible to the module through the module extension.\n \"\"\"\n maybe(\n http_archive,\n name = \"crates__aho-corasick-1.1.5\",\n sha256 = \"c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aho-corasick/1.1.5/download\"],\n strip_prefix = \"aho-corasick-1.1.5\",\n build_file = Label(\"@crates//crates:BUILD.aho-corasick-1.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstream-1.0.0\",\n sha256 = \"824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstream/1.0.0/download\"],\n strip_prefix = \"anstream-1.0.0\",\n build_file = Label(\"@crates//crates:BUILD.anstream-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-1.0.14\",\n sha256 = \"940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle/1.0.14/download\"],\n strip_prefix = \"anstyle-1.0.14\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-1.0.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-parse-1.0.0\",\n sha256 = \"52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-parse/1.0.0/download\"],\n strip_prefix = \"anstyle-parse-1.0.0\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-parse-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-query-1.1.5\",\n sha256 = \"40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-query/1.1.5/download\"],\n strip_prefix = \"anstyle-query-1.1.5\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-query-1.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-wincon-3.0.11\",\n sha256 = \"291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-wincon/3.0.11/download\"],\n strip_prefix = \"anstyle-wincon-3.0.11\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-wincon-3.0.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bitflags-2.13.1\",\n sha256 = \"b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bitflags/2.13.1/download\"],\n strip_prefix = \"bitflags-2.13.1\",\n build_file = Label(\"@crates//crates:BUILD.bitflags-2.13.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap-4.6.5\",\n sha256 = \"301b56658598e48f3648647ac6fc887be7e7108eddfa4e9b63fcf3ec58c0cadf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap/4.6.5/download\"],\n strip_prefix = \"clap-4.6.5\",\n build_file = Label(\"@crates//crates:BUILD.clap-4.6.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap_builder-4.6.5\",\n sha256 = \"94a65403d1a1bd28f7dc68eb8506e8874808ee5eecb59298de588e2e1407a078\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_builder/4.6.5/download\"],\n strip_prefix = \"clap_builder-4.6.5\",\n build_file = Label(\"@crates//crates:BUILD.clap_builder-4.6.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap_derive-4.6.4\",\n sha256 = \"d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_derive/4.6.4/download\"],\n strip_prefix = \"clap_derive-4.6.4\",\n build_file = Label(\"@crates//crates:BUILD.clap_derive-4.6.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap_lex-1.1.0\",\n sha256 = \"c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_lex/1.1.0/download\"],\n strip_prefix = \"clap_lex-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.clap_lex-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__colorchoice-1.0.5\",\n sha256 = \"1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/colorchoice/1.0.5/download\"],\n strip_prefix = \"colorchoice-1.0.5\",\n build_file = Label(\"@crates//crates:BUILD.colorchoice-1.0.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__env_logger-0.10.2\",\n sha256 = \"4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/env_logger/0.10.2/download\"],\n strip_prefix = \"env_logger-0.10.2\",\n build_file = Label(\"@crates//crates:BUILD.env_logger-0.10.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__equivalent-1.0.2\",\n sha256 = \"877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/equivalent/1.0.2/download\"],\n strip_prefix = \"equivalent-1.0.2\",\n build_file = Label(\"@crates//crates:BUILD.equivalent-1.0.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__flatbuffers-25.12.19\",\n sha256 = \"35f6839d7b3b98adde531effaf34f0c2badc6f4735d26fe74709d8e513a96ef3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/flatbuffers/25.12.19/download\"],\n strip_prefix = \"flatbuffers-25.12.19\",\n build_file = Label(\"@crates//crates:BUILD.flatbuffers-25.12.19.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.17.1\",\n sha256 = \"ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.17.1/download\"],\n strip_prefix = \"hashbrown-0.17.1\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.17.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__heck-0.5.0\",\n sha256 = \"2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/heck/0.5.0/download\"],\n strip_prefix = \"heck-0.5.0\",\n build_file = Label(\"@crates//crates:BUILD.heck-0.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hermit-abi-0.5.2\",\n sha256 = \"fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hermit-abi/0.5.2/download\"],\n strip_prefix = \"hermit-abi-0.5.2\",\n build_file = Label(\"@crates//crates:BUILD.hermit-abi-0.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__humantime-2.4.0\",\n sha256 = \"15cdd26707701c53297e2fa6afb323d55fbc1d0810c3aec078ae3ef0424c3c15\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/humantime/2.4.0/download\"],\n strip_prefix = \"humantime-2.4.0\",\n build_file = Label(\"@crates//crates:BUILD.humantime-2.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__indexmap-2.14.0\",\n sha256 = \"d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/indexmap/2.14.0/download\"],\n strip_prefix = \"indexmap-2.14.0\",\n build_file = Label(\"@crates//crates:BUILD.indexmap-2.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__is-terminal-0.4.17\",\n sha256 = \"3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/is-terminal/0.4.17/download\"],\n strip_prefix = \"is-terminal-0.4.17\",\n build_file = Label(\"@crates//crates:BUILD.is-terminal-0.4.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__is_terminal_polyfill-1.70.2\",\n sha256 = \"a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/is_terminal_polyfill/1.70.2/download\"],\n strip_prefix = \"is_terminal_polyfill-1.70.2\",\n build_file = Label(\"@crates//crates:BUILD.is_terminal_polyfill-1.70.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itoa-1.0.18\",\n sha256 = \"8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itoa/1.0.18/download\"],\n strip_prefix = \"itoa-1.0.18\",\n build_file = Label(\"@crates//crates:BUILD.itoa-1.0.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__libc-0.2.189\",\n sha256 = \"3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libc/0.2.189/download\"],\n strip_prefix = \"libc-0.2.189\",\n build_file = Label(\"@crates//crates:BUILD.libc-0.2.189.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__log-0.4.33\",\n sha256 = \"0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/log/0.4.33/download\"],\n strip_prefix = \"log-0.4.33\",\n build_file = Label(\"@crates//crates:BUILD.log-0.4.33.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memchr-2.8.3\",\n sha256 = \"cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memchr/2.8.3/download\"],\n strip_prefix = \"memchr-2.8.3\",\n build_file = Label(\"@crates//crates:BUILD.memchr-2.8.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__once_cell-1.21.4\",\n sha256 = \"9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/once_cell/1.21.4/download\"],\n strip_prefix = \"once_cell-1.21.4\",\n build_file = Label(\"@crates//crates:BUILD.once_cell-1.21.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__once_cell_polyfill-1.70.2\",\n sha256 = \"384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/once_cell_polyfill/1.70.2/download\"],\n strip_prefix = \"once_cell_polyfill-1.70.2\",\n build_file = Label(\"@crates//crates:BUILD.once_cell_polyfill-1.70.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pest-2.8.8\",\n sha256 = \"7df728be843c7070fab6ab7c328c4e9e9d78e23bf749c0669c86ee7ebfa050a2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pest/2.8.8/download\"],\n strip_prefix = \"pest-2.8.8\",\n build_file = Label(\"@crates//crates:BUILD.pest-2.8.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pest_derive-2.8.8\",\n sha256 = \"9e2dd6fc3b26b3462ee188aac870f5a41d398f1cd5e2408d16531bd71c9591fd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pest_derive/2.8.8/download\"],\n strip_prefix = \"pest_derive-2.8.8\",\n build_file = Label(\"@crates//crates:BUILD.pest_derive-2.8.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pest_generator-2.8.8\",\n sha256 = \"6a7a9205cfb6f596a9e8b689c0a15f9ceb7a1aafae7aaf788150ac65b29975b6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pest_generator/2.8.8/download\"],\n strip_prefix = \"pest_generator-2.8.8\",\n build_file = Label(\"@crates//crates:BUILD.pest_generator-2.8.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pest_meta-2.8.8\",\n sha256 = \"85abd351c0de1e8384fc791a0737111a350394937e92b956b743dac12429f57c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pest_meta/2.8.8/download\"],\n strip_prefix = \"pest_meta-2.8.8\",\n build_file = Label(\"@crates//crates:BUILD.pest_meta-2.8.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__proc-macro2-1.0.107\",\n sha256 = \"985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro2/1.0.107/download\"],\n strip_prefix = \"proc-macro2-1.0.107\",\n build_file = Label(\"@crates//crates:BUILD.proc-macro2-1.0.107.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__quote-1.0.47\",\n sha256 = \"1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quote/1.0.47/download\"],\n strip_prefix = \"quote-1.0.47\",\n build_file = Label(\"@crates//crates:BUILD.quote-1.0.47.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-1.13.1\",\n sha256 = \"f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex/1.13.1/download\"],\n strip_prefix = \"regex-1.13.1\",\n build_file = Label(\"@crates//crates:BUILD.regex-1.13.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-automata-0.4.16\",\n sha256 = \"8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex-automata/0.4.16/download\"],\n strip_prefix = \"regex-automata-0.4.16\",\n build_file = Label(\"@crates//crates:BUILD.regex-automata-0.4.16.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-syntax-0.8.11\",\n sha256 = \"d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex-syntax/0.8.11/download\"],\n strip_prefix = \"regex-syntax-0.8.11\",\n build_file = Label(\"@crates//crates:BUILD.regex-syntax-0.8.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustc_version-0.4.1\",\n sha256 = \"cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc_version/0.4.1/download\"],\n strip_prefix = \"rustc_version-0.4.1\",\n build_file = Label(\"@crates//crates:BUILD.rustc_version-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ryu-1.0.23\",\n sha256 = \"9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ryu/1.0.23/download\"],\n strip_prefix = \"ryu-1.0.23\",\n build_file = Label(\"@crates//crates:BUILD.ryu-1.0.23.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__semver-1.0.28\",\n sha256 = \"8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/semver/1.0.28/download\"],\n strip_prefix = \"semver-1.0.28\",\n build_file = Label(\"@crates//crates:BUILD.semver-1.0.28.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde-1.0.229\",\n sha256 = \"4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde/1.0.229/download\"],\n strip_prefix = \"serde-1.0.229\",\n build_file = Label(\"@crates//crates:BUILD.serde-1.0.229.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_core-1.0.229\",\n sha256 = \"67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_core/1.0.229/download\"],\n strip_prefix = \"serde_core-1.0.229\",\n build_file = Label(\"@crates//crates:BUILD.serde_core-1.0.229.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_derive-1.0.229\",\n sha256 = \"e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_derive/1.0.229/download\"],\n strip_prefix = \"serde_derive-1.0.229\",\n build_file = Label(\"@crates//crates:BUILD.serde_derive-1.0.229.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_json-1.0.151\",\n sha256 = \"c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_json/1.0.151/download\"],\n strip_prefix = \"serde_json-1.0.151\",\n build_file = Label(\"@crates//crates:BUILD.serde_json-1.0.151.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_yaml-0.9.34-deprecated\",\n sha256 = \"6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_yaml/0.9.34+deprecated/download\"],\n strip_prefix = \"serde_yaml-0.9.34+deprecated\",\n build_file = Label(\"@crates//crates:BUILD.serde_yaml-0.9.34+deprecated.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strsim-0.11.1\",\n sha256 = \"7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strsim/0.11.1/download\"],\n strip_prefix = \"strsim-0.11.1\",\n build_file = Label(\"@crates//crates:BUILD.strsim-0.11.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-2.0.119\",\n sha256 = \"872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/2.0.119/download\"],\n strip_prefix = \"syn-2.0.119\",\n build_file = Label(\"@crates//crates:BUILD.syn-2.0.119.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-3.0.3\",\n sha256 = \"53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/3.0.3/download\"],\n strip_prefix = \"syn-3.0.3\",\n build_file = Label(\"@crates//crates:BUILD.syn-3.0.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__termcolor-1.4.1\",\n sha256 = \"06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/termcolor/1.4.1/download\"],\n strip_prefix = \"termcolor-1.4.1\",\n build_file = Label(\"@crates//crates:BUILD.termcolor-1.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thiserror-1.0.69\",\n sha256 = \"b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror/1.0.69/download\"],\n strip_prefix = \"thiserror-1.0.69\",\n build_file = Label(\"@crates//crates:BUILD.thiserror-1.0.69.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thiserror-impl-1.0.69\",\n sha256 = \"4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror-impl/1.0.69/download\"],\n strip_prefix = \"thiserror-impl-1.0.69\",\n build_file = Label(\"@crates//crates:BUILD.thiserror-impl-1.0.69.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ucd-trie-0.1.7\",\n sha256 = \"2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ucd-trie/0.1.7/download\"],\n strip_prefix = \"ucd-trie-0.1.7\",\n build_file = Label(\"@crates//crates:BUILD.ucd-trie-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-ident-1.0.24\",\n sha256 = \"e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-ident/1.0.24/download\"],\n strip_prefix = \"unicode-ident-1.0.24\",\n build_file = Label(\"@crates//crates:BUILD.unicode-ident-1.0.24.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unsafe-libyaml-0.2.11\",\n sha256 = \"673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unsafe-libyaml/0.2.11/download\"],\n strip_prefix = \"unsafe-libyaml-0.2.11\",\n build_file = Label(\"@crates//crates:BUILD.unsafe-libyaml-0.2.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__utf8parse-0.2.2\",\n sha256 = \"06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/utf8parse/0.2.2/download\"],\n strip_prefix = \"utf8parse-0.2.2\",\n build_file = Label(\"@crates//crates:BUILD.utf8parse-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__winapi-util-0.1.11\",\n sha256 = \"c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winapi-util/0.1.11/download\"],\n strip_prefix = \"winapi-util-0.1.11\",\n build_file = Label(\"@crates//crates:BUILD.winapi-util-0.1.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-link-0.2.1\",\n sha256 = \"f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-link/0.2.1/download\"],\n strip_prefix = \"windows-link-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-link-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.61.2\",\n sha256 = \"ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.61.2/download\"],\n strip_prefix = \"windows-sys-0.61.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.61.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zmij-1.0.23\",\n sha256 = \"29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zmij/1.0.23/download\"],\n strip_prefix = \"zmij-1.0.23\",\n build_file = Label(\"@crates//crates:BUILD.zmij-1.0.23.bazel\"),\n )\n\n return [\n struct(repo=\"crates__clap-4.6.5\", is_dev_dep = False),\n struct(repo=\"crates__env_logger-0.10.2\", is_dev_dep = False),\n struct(repo=\"crates__flatbuffers-25.12.19\", is_dev_dep = False),\n struct(repo=\"crates__log-0.4.33\", is_dev_dep = False),\n struct(repo=\"crates__once_cell-1.21.4\", is_dev_dep = False),\n struct(repo=\"crates__pest-2.8.8\", is_dev_dep = False),\n struct(repo=\"crates__pest_derive-2.8.8\", is_dev_dep = False),\n struct(repo=\"crates__serde-1.0.229\", is_dev_dep = False),\n struct(repo=\"crates__serde_json-1.0.151\", is_dev_dep = False),\n struct(repo=\"crates__serde_yaml-0.9.34-deprecated\", is_dev_dep = False),\n struct(repo=\"crates__thiserror-1.0.69\", is_dev_dep = False),\n ]\n" + } + } + }, + "crates__aho-corasick-1.1.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/aho-corasick/1.1.5/download" + ], + "strip_prefix": "aho-corasick-1.1.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"aho_corasick\",\n deps = [\n \"@crates__memchr-2.8.3//:memchr\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"perf-literal\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=aho-corasick\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.5\",\n)\n" + } + }, + "crates__anstream-1.0.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstream/1.0.0/download" + ], + "strip_prefix": "anstream-1.0.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstream\",\n deps = [\n \"@crates__anstyle-1.0.14//:anstyle\",\n \"@crates__anstyle-parse-1.0.0//:anstyle_parse\",\n \"@crates__anstyle-query-1.1.5//:anstyle_query\",\n \"@crates__colorchoice-1.0.5//:colorchoice\",\n \"@crates__is_terminal_polyfill-1.70.2//:is_terminal_polyfill\",\n \"@crates__utf8parse-0.2.2//:utf8parse\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__anstyle-wincon-3.0.11//:anstyle_wincon\", # x86_64-pc-windows-msvc\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"auto\",\n \"default\",\n \"wincon\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstream\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.0\",\n)\n" + } + }, + "crates__anstyle-1.0.14": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle/1.0.14/download" + ], + "strip_prefix": "anstyle-1.0.14", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstyle\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstyle\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.14\",\n)\n" + } + }, + "crates__anstyle-parse-1.0.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle-parse/1.0.0/download" + ], + "strip_prefix": "anstyle-parse-1.0.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstyle_parse\",\n deps = [\n \"@crates__utf8parse-0.2.2//:utf8parse\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"utf8\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstyle-parse\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.0\",\n)\n" + } + }, + "crates__anstyle-query-1.1.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle-query/1.1.5/download" + ], + "strip_prefix": "anstyle-query-1.1.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstyle_query\",\n deps = select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.61.2//:windows_sys\", # cfg(windows)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstyle-query\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.5\",\n)\n" + } + }, + "crates__anstyle-wincon-3.0.11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle-wincon/3.0.11/download" + ], + "strip_prefix": "anstyle-wincon-3.0.11", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstyle_wincon\",\n deps = [\n \"@crates__anstyle-1.0.14//:anstyle\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__once_cell_polyfill-1.70.2//:once_cell_polyfill\", # cfg(windows)\n \"@crates__windows-sys-0.61.2//:windows_sys\", # cfg(windows)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstyle-wincon\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"3.0.11\",\n)\n" + } + }, + "crates__bitflags-2.13.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/bitflags/2.13.1/download" + ], + "strip_prefix": "bitflags-2.13.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bitflags\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bitflags\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.13.1\",\n)\n" + } + }, + "crates__clap-4.6.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "301b56658598e48f3648647ac6fc887be7e7108eddfa4e9b63fcf3ec58c0cadf", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap/4.6.5/download" + ], + "strip_prefix": "clap-4.6.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"clap\",\n deps = [\n \"@crates__clap_builder-4.6.5//:clap_builder\",\n ],\n proc_macro_deps = [\n \"@crates__clap_derive-4.6.4//:clap_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"color\",\n \"default\",\n \"derive\",\n \"error-context\",\n \"help\",\n \"std\",\n \"suggestions\",\n \"usage\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=clap\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.6.5\",\n)\n" + } + }, + "crates__clap_builder-4.6.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "94a65403d1a1bd28f7dc68eb8506e8874808ee5eecb59298de588e2e1407a078", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap_builder/4.6.5/download" + ], + "strip_prefix": "clap_builder-4.6.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"clap_builder\",\n deps = [\n \"@crates__anstream-1.0.0//:anstream\",\n \"@crates__anstyle-1.0.14//:anstyle\",\n \"@crates__clap_lex-1.1.0//:clap_lex\",\n \"@crates__strsim-0.11.1//:strsim\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"color\",\n \"error-context\",\n \"help\",\n \"std\",\n \"suggestions\",\n \"usage\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=clap_builder\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.6.5\",\n)\n" + } + }, + "crates__clap_derive-4.6.4": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap_derive/4.6.4/download" + ], + "strip_prefix": "clap_derive-4.6.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"clap_derive\",\n deps = [\n \"@crates__heck-0.5.0//:heck\",\n \"@crates__proc-macro2-1.0.107//:proc_macro2\",\n \"@crates__quote-1.0.47//:quote\",\n \"@crates__syn-3.0.3//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=clap_derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.6.4\",\n)\n" + } + }, + "crates__clap_lex-1.1.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap_lex/1.1.0/download" + ], + "strip_prefix": "clap_lex-1.1.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"clap_lex\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=clap_lex\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.0\",\n)\n" + } + }, + "crates__colorchoice-1.0.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/colorchoice/1.0.5/download" + ], + "strip_prefix": "colorchoice-1.0.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"colorchoice\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=colorchoice\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.5\",\n)\n" + } + }, + "crates__env_logger-0.10.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/env_logger/0.10.2/download" + ], + "strip_prefix": "env_logger-0.10.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"env_logger\",\n deps = [\n \"@crates__humantime-2.4.0//:humantime\",\n \"@crates__is-terminal-0.4.17//:is_terminal\",\n \"@crates__log-0.4.33//:log\",\n \"@crates__regex-1.13.1//:regex\",\n \"@crates__termcolor-1.4.1//:termcolor\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"auto-color\",\n \"color\",\n \"default\",\n \"humantime\",\n \"regex\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=env_logger\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.10.2\",\n)\n" + } + }, + "crates__equivalent-1.0.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/equivalent/1.0.2/download" + ], + "strip_prefix": "equivalent-1.0.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"equivalent\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=equivalent\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.2\",\n)\n" + } + }, + "crates__flatbuffers-25.12.19": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "35f6839d7b3b98adde531effaf34f0c2badc6f4735d26fe74709d8e513a96ef3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/flatbuffers/25.12.19/download" + ], + "strip_prefix": "flatbuffers-25.12.19", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"flatbuffers\",\n deps = [\n \"@crates__bitflags-2.13.1//:bitflags\",\n \"@crates__flatbuffers-25.12.19//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=flatbuffers\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"25.12.19\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__rustc_version-0.4.1//:rustc_version\",\n ],\n edition = \"2018\",\n pkg_name = \"flatbuffers\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=flatbuffers\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"25.12.19\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crates__hashbrown-0.17.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/hashbrown/0.17.1/download" + ], + "strip_prefix": "hashbrown-0.17.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hashbrown\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hashbrown\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.17.1\",\n)\n" + } + }, + "crates__heck-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/heck/0.5.0/download" + ], + "strip_prefix": "heck-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"heck\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=heck\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crates__hermit-abi-0.5.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/hermit-abi/0.5.2/download" + ], + "strip_prefix": "hermit-abi-0.5.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hermit_abi\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hermit-abi\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.2\",\n)\n" + } + }, + "crates__humantime-2.4.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "15cdd26707701c53297e2fa6afb323d55fbc1d0810c3aec078ae3ef0424c3c15", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/humantime/2.4.0/download" + ], + "strip_prefix": "humantime-2.4.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"humantime\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=humantime\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.4.0\",\n)\n" + } + }, + "crates__indexmap-2.14.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/indexmap/2.14.0/download" + ], + "strip_prefix": "indexmap-2.14.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"indexmap\",\n deps = [\n \"@crates__equivalent-1.0.2//:equivalent\",\n \"@crates__hashbrown-0.17.1//:hashbrown\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=indexmap\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.14.0\",\n)\n" + } + }, + "crates__is-terminal-0.4.17": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/is-terminal/0.4.17/download" + ], + "strip_prefix": "is-terminal-0.4.17", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"is_terminal\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.189//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.189//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__libc-0.2.189//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.61.2//:windows_sys\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.189//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.189//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=is-terminal\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.17\",\n)\n" + } + }, + "crates__is_terminal_polyfill-1.70.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/is_terminal_polyfill/1.70.2/download" + ], + "strip_prefix": "is_terminal_polyfill-1.70.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"is_terminal_polyfill\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=is_terminal_polyfill\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.70.2\",\n)\n" + } + }, + "crates__itoa-1.0.18": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/itoa/1.0.18/download" + ], + "strip_prefix": "itoa-1.0.18", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"itoa\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=itoa\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.18\",\n)\n" + } + }, + "crates__libc-0.2.189": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/libc/0.2.189/download" + ], + "strip_prefix": "libc-0.2.189", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"libc\",\n deps = [\n \"@crates__libc-0.2.189//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=libc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.189\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"libc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=libc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.189\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crates__log-0.4.33": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/log/0.4.33/download" + ], + "strip_prefix": "log-0.4.33", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"log\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=log\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.33\",\n)\n" + } + }, + "crates__memchr-2.8.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/memchr/2.8.3/download" + ], + "strip_prefix": "memchr-2.8.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"memchr\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=memchr\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.8.3\",\n)\n" + } + }, + "crates__once_cell-1.21.4": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/once_cell/1.21.4/download" + ], + "strip_prefix": "once_cell-1.21.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"once_cell\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"race\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=once_cell\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.21.4\",\n)\n" + } + }, + "crates__once_cell_polyfill-1.70.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/once_cell_polyfill/1.70.2/download" + ], + "strip_prefix": "once_cell_polyfill-1.70.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"once_cell_polyfill\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=once_cell_polyfill\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.70.2\",\n)\n" + } + }, + "crates__pest-2.8.8": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7df728be843c7070fab6ab7c328c4e9e9d78e23bf749c0669c86ee7ebfa050a2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pest/2.8.8/download" + ], + "strip_prefix": "pest-2.8.8", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"pest\",\n deps = [\n \"@crates__memchr-2.8.3//:memchr\",\n \"@crates__ucd-trie-0.1.7//:ucd_trie\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"memchr\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pest\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.8.8\",\n)\n" + } + }, + "crates__pest_derive-2.8.8": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9e2dd6fc3b26b3462ee188aac870f5a41d398f1cd5e2408d16531bd71c9591fd", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pest_derive/2.8.8/download" + ], + "strip_prefix": "pest_derive-2.8.8", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"pest_derive\",\n deps = [\n \"@crates__pest-2.8.8//:pest\",\n \"@crates__pest_generator-2.8.8//:pest_generator\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pest_derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.8.8\",\n)\n" + } + }, + "crates__pest_generator-2.8.8": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6a7a9205cfb6f596a9e8b689c0a15f9ceb7a1aafae7aaf788150ac65b29975b6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pest_generator/2.8.8/download" + ], + "strip_prefix": "pest_generator-2.8.8", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"pest_generator\",\n deps = [\n \"@crates__pest-2.8.8//:pest\",\n \"@crates__pest_meta-2.8.8//:pest_meta\",\n \"@crates__proc-macro2-1.0.107//:proc_macro2\",\n \"@crates__quote-1.0.47//:quote\",\n \"@crates__syn-2.0.119//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pest_generator\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.8.8\",\n)\n" + } + }, + "crates__pest_meta-2.8.8": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "85abd351c0de1e8384fc791a0737111a350394937e92b956b743dac12429f57c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pest_meta/2.8.8/download" + ], + "strip_prefix": "pest_meta-2.8.8", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"pest_meta\",\n deps = [\n \"@crates__pest-2.8.8//:pest\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pest_meta\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.8.8\",\n)\n" + } + }, + "crates__proc-macro2-1.0.107": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/proc-macro2/1.0.107/download" + ], + "strip_prefix": "proc-macro2-1.0.107", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"proc_macro2\",\n deps = [\n \"@crates__proc-macro2-1.0.107//:build_script_build\",\n \"@crates__unicode-ident-1.0.24//:unicode_ident\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"proc-macro\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=proc-macro2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.107\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"proc-macro\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"proc-macro2\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=proc-macro2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.107\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crates__quote-1.0.47": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/quote/1.0.47/download" + ], + "strip_prefix": "quote-1.0.47", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"quote\",\n deps = [\n \"@crates__proc-macro2-1.0.107//:proc_macro2\",\n \"@crates__quote-1.0.47//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"proc-macro\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=quote\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.47\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"proc-macro\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"quote\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=quote\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.47\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crates__regex-1.13.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/regex/1.13.1/download" + ], + "strip_prefix": "regex-1.13.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"regex\",\n deps = [\n \"@crates__aho-corasick-1.1.5//:aho_corasick\",\n \"@crates__memchr-2.8.3//:memchr\",\n \"@crates__regex-automata-0.4.16//:regex_automata\",\n \"@crates__regex-syntax-0.8.11//:regex_syntax\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"perf\",\n \"perf-backtrack\",\n \"perf-cache\",\n \"perf-dfa\",\n \"perf-inline\",\n \"perf-literal\",\n \"perf-onepass\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=regex\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.13.1\",\n)\n" + } + }, + "crates__regex-automata-0.4.16": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/regex-automata/0.4.16/download" + ], + "strip_prefix": "regex-automata-0.4.16", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"regex_automata\",\n deps = [\n \"@crates__aho-corasick-1.1.5//:aho_corasick\",\n \"@crates__memchr-2.8.3//:memchr\",\n \"@crates__regex-syntax-0.8.11//:regex_syntax\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"dfa-onepass\",\n \"hybrid\",\n \"meta\",\n \"nfa-backtrack\",\n \"nfa-pikevm\",\n \"nfa-thompson\",\n \"perf-inline\",\n \"perf-literal\",\n \"perf-literal-multisubstring\",\n \"perf-literal-substring\",\n \"std\",\n \"syntax\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=regex-automata\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.16\",\n)\n" + } + }, + "crates__regex-syntax-0.8.11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/regex-syntax/0.8.11/download" + ], + "strip_prefix": "regex-syntax-0.8.11", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"regex_syntax\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=regex-syntax\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.11\",\n)\n" + } + }, + "crates__rustc_version-0.4.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rustc_version/0.4.1/download" + ], + "strip_prefix": "rustc_version-0.4.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rustc_version\",\n deps = [\n \"@crates__semver-1.0.28//:semver\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rustc_version\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.1\",\n)\n" + } + }, + "crates__ryu-1.0.23": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/ryu/1.0.23/download" + ], + "strip_prefix": "ryu-1.0.23", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ryu\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ryu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.23\",\n)\n" + } + }, + "crates__semver-1.0.28": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/semver/1.0.28/download" + ], + "strip_prefix": "semver-1.0.28", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"semver\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=semver\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.28\",\n)\n" + } + }, + "crates__serde-1.0.229": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde/1.0.229/download" + ], + "strip_prefix": "serde-1.0.229", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde\",\n deps = [\n \"@crates__serde-1.0.229//:build_script_build\",\n \"@crates__serde_core-1.0.229//:serde_core\",\n ],\n proc_macro_deps = [\n \"@crates__serde_derive-1.0.229//:serde_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"derive\",\n \"serde_derive\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.229\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"derive\",\n \"serde_derive\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"serde\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.229\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crates__serde_core-1.0.229": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_core/1.0.229/download" + ], + "strip_prefix": "serde_core-1.0.229", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde_core\",\n deps = [\n \"@crates__serde_core-1.0.229//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"result\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.229\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"result\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"serde_core\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.229\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crates__serde_derive-1.0.229": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_derive/1.0.229/download" + ], + "strip_prefix": "serde_derive-1.0.229", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"serde_derive\",\n deps = [\n \"@crates__proc-macro2-1.0.107//:proc_macro2\",\n \"@crates__quote-1.0.47//:quote\",\n \"@crates__syn-3.0.3//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.229\",\n)\n" + } + }, + "crates__serde_json-1.0.151": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_json/1.0.151/download" + ], + "strip_prefix": "serde_json-1.0.151", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde_json\",\n deps = [\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__memchr-2.8.3//:memchr\",\n \"@crates__serde_core-1.0.229//:serde_core\",\n \"@crates__serde_json-1.0.151//:build_script_build\",\n \"@crates__zmij-1.0.23//:zmij\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_json\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.151\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"serde_json\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_json\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.151\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crates__serde_yaml-0.9.34-deprecated": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_yaml/0.9.34+deprecated/download" + ], + "strip_prefix": "serde_yaml-0.9.34+deprecated", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde_yaml\",\n deps = [\n \"@crates__indexmap-2.14.0//:indexmap\",\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__ryu-1.0.23//:ryu\",\n \"@crates__serde-1.0.229//:serde\",\n \"@crates__unsafe-libyaml-0.2.11//:unsafe_libyaml\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_yaml\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.34+deprecated\",\n)\n" + } + }, + "crates__strsim-0.11.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/strsim/0.11.1/download" + ], + "strip_prefix": "strsim-0.11.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"strsim\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=strsim\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.11.1\",\n)\n" + } + }, + "crates__syn-2.0.119": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/syn/2.0.119/download" + ], + "strip_prefix": "syn-2.0.119", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"syn\",\n deps = [\n \"@crates__proc-macro2-1.0.107//:proc_macro2\",\n \"@crates__quote-1.0.47//:quote\",\n \"@crates__unicode-ident-1.0.24//:unicode_ident\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"clone-impls\",\n \"default\",\n \"derive\",\n \"parsing\",\n \"printing\",\n \"proc-macro\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=syn\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.0.119\",\n)\n" + } + }, + "crates__syn-3.0.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/syn/3.0.3/download" + ], + "strip_prefix": "syn-3.0.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"syn\",\n deps = [\n \"@crates__proc-macro2-1.0.107//:proc_macro2\",\n \"@crates__quote-1.0.47//:quote\",\n \"@crates__unicode-ident-1.0.24//:unicode_ident\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"clone-impls\",\n \"default\",\n \"derive\",\n \"full\",\n \"parsing\",\n \"printing\",\n \"proc-macro\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=syn\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"3.0.3\",\n)\n" + } + }, + "crates__termcolor-1.4.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/termcolor/1.4.1/download" + ], + "strip_prefix": "termcolor-1.4.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"termcolor\",\n deps = select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__winapi-util-0.1.11//:winapi_util\", # cfg(windows)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=termcolor\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.4.1\",\n)\n" + } + }, + "crates__thiserror-1.0.69": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/thiserror/1.0.69/download" + ], + "strip_prefix": "thiserror-1.0.69", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"thiserror\",\n deps = [\n \"@crates__thiserror-1.0.69//:build_script_build\",\n ],\n proc_macro_deps = [\n \"@crates__thiserror-impl-1.0.69//:thiserror_impl\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=thiserror\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.69\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"thiserror\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=thiserror\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.69\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crates__thiserror-impl-1.0.69": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/thiserror-impl/1.0.69/download" + ], + "strip_prefix": "thiserror-impl-1.0.69", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"thiserror_impl\",\n deps = [\n \"@crates__proc-macro2-1.0.107//:proc_macro2\",\n \"@crates__quote-1.0.47//:quote\",\n \"@crates__syn-2.0.119//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=thiserror-impl\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.69\",\n)\n" + } + }, + "crates__ucd-trie-0.1.7": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/ucd-trie/0.1.7/download" + ], + "strip_prefix": "ucd-trie-0.1.7", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ucd_trie\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ucd-trie\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.7\",\n)\n" + } + }, + "crates__unicode-ident-1.0.24": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicode-ident/1.0.24/download" + ], + "strip_prefix": "unicode-ident-1.0.24", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"unicode_ident\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=unicode-ident\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.24\",\n)\n" + } + }, + "crates__unsafe-libyaml-0.2.11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unsafe-libyaml/0.2.11/download" + ], + "strip_prefix": "unsafe-libyaml-0.2.11", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"unsafe_libyaml\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=unsafe-libyaml\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.11\",\n)\n" + } + }, + "crates__utf8parse-0.2.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/utf8parse/0.2.2/download" + ], + "strip_prefix": "utf8parse-0.2.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"utf8parse\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=utf8parse\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.2\",\n)\n" + } + }, + "crates__winapi-util-0.1.11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/winapi-util/0.1.11/download" + ], + "strip_prefix": "winapi-util-0.1.11", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"winapi_util\",\n deps = select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.61.2//:windows_sys\", # cfg(windows)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=winapi-util\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.11\",\n)\n" + } + }, + "crates__windows-link-0.2.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-link/0.2.1/download" + ], + "strip_prefix": "windows-link-0.2.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_link\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-link\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.1\",\n)\n" + } + }, + "crates__windows-sys-0.61.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-sys/0.61.2/download" + ], + "strip_prefix": "windows-sys-0.61.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_sys\",\n deps = [\n \"@crates__windows-link-0.2.1//:windows_link\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"Win32\",\n \"Win32_Foundation\",\n \"Win32_Storage\",\n \"Win32_Storage_FileSystem\",\n \"Win32_System\",\n \"Win32_System_Console\",\n \"Win32_System_SystemInformation\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.61.2\",\n)\n" + } + }, + "crates__zmij-1.0.23": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/zmij/1.0.23/download" + ], + "strip_prefix": "zmij-1.0.23", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_tooling'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"zmij\",\n deps = [\n \"@crates__zmij-1.0.23//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zmij\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.23\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"zmij\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zmij\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.23\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ], + [ + "rules_cc+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_cc+", + "cc_compatibility_proxy", + "rules_cc++compatibility_proxy+cc_compatibility_proxy" + ], + [ + "rules_cc+", + "rules_cc", + "rules_cc+" + ], + [ + "rules_cc++compatibility_proxy+cc_compatibility_proxy", + "rules_cc", + "rules_cc+" + ], + [ + "rules_rust+", + "bazel_features", + "bazel_features+" + ], + [ + "rules_rust+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "rules_rust+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_rust+", + "rules_cc", + "rules_cc+" + ], + [ + "rules_rust+", + "rules_rust", + "rules_rust+" + ] + ] + } + }, + "@@rules_rust+//crate_universe/private:internal_extensions.bzl%cu_nr": { + "general": { + "bzlTransitiveDigest": "eGCmHHxe/M8Z+BXrbeIHzphO3YcLDANBtQnsHLIerhs=", + "usagesDigest": "ZmL90WEq2B6/NJ8rtHAqdnDPn+/9xG/GWR5K4UU4tyo=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "cargo_bazel_bootstrap": { + "repoRuleId": "@@rules_rust+//cargo/private:cargo_bootstrap.bzl%cargo_bootstrap_repository", + "attributes": { + "srcs": [ + "@@rules_rust+//crate_universe:src/api.rs", + "@@rules_rust+//crate_universe:src/api/lockfile.rs", + "@@rules_rust+//crate_universe:src/cli.rs", + "@@rules_rust+//crate_universe:src/cli/generate.rs", + "@@rules_rust+//crate_universe:src/cli/query.rs", + "@@rules_rust+//crate_universe:src/cli/render.rs", + "@@rules_rust+//crate_universe:src/cli/splice.rs", + "@@rules_rust+//crate_universe:src/cli/vendor.rs", + "@@rules_rust+//crate_universe:src/config.rs", + "@@rules_rust+//crate_universe:src/context.rs", + "@@rules_rust+//crate_universe:src/context/crate_context.rs", + "@@rules_rust+//crate_universe:src/context/platforms.rs", + "@@rules_rust+//crate_universe:src/lib.rs", + "@@rules_rust+//crate_universe:src/lockfile.rs", + "@@rules_rust+//crate_universe:src/main.rs", + "@@rules_rust+//crate_universe:src/metadata.rs", + "@@rules_rust+//crate_universe:src/metadata/cargo_bin.rs", + "@@rules_rust+//crate_universe:src/metadata/cargo_tree_resolver.rs", + "@@rules_rust+//crate_universe:src/metadata/cargo_tree_rustc_wrapper.bat", + "@@rules_rust+//crate_universe:src/metadata/cargo_tree_rustc_wrapper.sh", + "@@rules_rust+//crate_universe:src/metadata/dependency.rs", + "@@rules_rust+//crate_universe:src/metadata/metadata_annotation.rs", + "@@rules_rust+//crate_universe:src/rendering.rs", + "@@rules_rust+//crate_universe:src/rendering/template_engine.rs", + "@@rules_rust+//crate_universe:src/rendering/templates/module_bzl.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/header.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/module/aliases_map.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/module/deps_map.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/module/repo_git.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/module/repo_http.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/vendor_module.j2", + "@@rules_rust+//crate_universe:src/rendering/verbatim/alias_rules.bzl", + "@@rules_rust+//crate_universe:src/select.rs", + "@@rules_rust+//crate_universe:src/splicing.rs", + "@@rules_rust+//crate_universe:src/splicing/cargo_config.rs", + "@@rules_rust+//crate_universe:src/splicing/crate_index_lookup.rs", + "@@rules_rust+//crate_universe:src/splicing/splicer.rs", + "@@rules_rust+//crate_universe:src/test.rs", + "@@rules_rust+//crate_universe:src/utils.rs", + "@@rules_rust+//crate_universe:src/utils/starlark.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/glob.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/label.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select_dict.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select_list.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select_scalar.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select_set.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/serialize.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/target_compatible_with.rs", + "@@rules_rust+//crate_universe:src/utils/symlink.rs", + "@@rules_rust+//crate_universe:src/utils/target_triple.rs" + ], + "binary": "cargo-bazel", + "cargo_lockfile": "@@rules_rust+//crate_universe:Cargo.lock", + "cargo_toml": "@@rules_rust+//crate_universe:Cargo.toml", + "version": "1.95.0", + "timeout": 900, + "rust_toolchain_cargo_template": "@rust_host_tools//:bin/{tool}", + "rust_toolchain_rustc_template": "@rust_host_tools//:bin/{tool}", + "compressed_windows_toolchain_names": false + } + } + }, + "moduleExtensionMetadata": { + "explicitRootModuleDirectDeps": [ + "cargo_bazel_bootstrap" + ], + "explicitRootModuleDirectDevDeps": [], + "useAllRepos": "NO", + "reproducible": false + }, + "recordedRepoMappingEntries": [ + [ + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ], + [ + "rules_cc+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_cc+", + "cc_compatibility_proxy", + "rules_cc++compatibility_proxy+cc_compatibility_proxy" + ], + [ + "rules_cc+", + "rules_cc", + "rules_cc+" + ], + [ + "rules_cc++compatibility_proxy+cc_compatibility_proxy", + "rules_cc", + "rules_cc+" + ], + [ + "rules_rust+", + "bazel_features", + "bazel_features+" + ], + [ + "rules_rust+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "rules_rust+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_rust+", + "cui", + "rules_rust++cu+cui" + ], + [ + "rules_rust+", + "rrc", + "rules_rust++i2+rrc" + ], + [ + "rules_rust+", + "rules_cc", + "rules_cc+" + ], + [ + "rules_rust+", + "rules_rust", + "rules_rust+" + ] + ] + } + }, + "@@rules_swift+//swift:extensions.bzl%non_module_deps": { + "general": { + "bzlTransitiveDigest": "TdyDy4TBpjOHwrF4hSiQwGdsTAvssvyD6vUJBx+7nt4=", + "usagesDigest": "mhACFnrdMv9Wi0Mt67bxocJqviRkDSV+Ee5Mqdj5akA=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_github_apple_swift_protobuf": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-protobuf/archive/1.20.2.tar.gz" + ], + "sha256": "3fb50bd4d293337f202d917b6ada22f9548a0a0aed9d9a4d791e6fbd8a246ebb", + "strip_prefix": "swift-protobuf-1.20.2/", + "build_file": "@@rules_swift+//third_party:com_github_apple_swift_protobuf/BUILD.overlay" + } + }, + "com_github_grpc_grpc_swift": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/grpc/grpc-swift/archive/1.16.0.tar.gz" + ], + "sha256": "58b60431d0064969f9679411264b82e40a217ae6bd34e17096d92cc4e47556a5", + "strip_prefix": "grpc-swift-1.16.0/", + "build_file": "@@rules_swift+//third_party:com_github_grpc_grpc_swift/BUILD.overlay" + } + }, + "com_github_apple_swift_docc_symbolkit": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-docc-symbolkit/archive/refs/tags/swift-5.10-RELEASE.tar.gz" + ], + "sha256": "de1d4b6940468ddb53b89df7aa1a81323b9712775b0e33e8254fa0f6f7469a97", + "strip_prefix": "swift-docc-symbolkit-swift-5.10-RELEASE", + "build_file": "@@rules_swift+//third_party:com_github_apple_swift_docc_symbolkit/BUILD.overlay" + } + }, + "com_github_apple_swift_nio": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-nio/archive/2.42.0.tar.gz" + ], + "sha256": "e3304bc3fb53aea74a3e54bd005ede11f6dc357117d9b1db642d03aea87194a0", + "strip_prefix": "swift-nio-2.42.0/", + "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio/BUILD.overlay" + } + }, + "com_github_apple_swift_nio_http2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-nio-http2/archive/1.26.0.tar.gz" + ], + "sha256": "f0edfc9d6a7be1d587e5b403f2d04264bdfae59aac1d74f7d974a9022c6d2b25", + "strip_prefix": "swift-nio-http2-1.26.0/", + "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio_http2/BUILD.overlay" + } + }, + "com_github_apple_swift_nio_transport_services": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-nio-transport-services/archive/1.15.0.tar.gz" + ], + "sha256": "f3498dafa633751a52b9b7f741f7ac30c42bcbeb3b9edca6d447e0da8e693262", + "strip_prefix": "swift-nio-transport-services-1.15.0/", + "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio_transport_services/BUILD.overlay" + } + }, + "com_github_apple_swift_nio_extras": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-nio-extras/archive/1.4.0.tar.gz" + ], + "sha256": "4684b52951d9d9937bb3e8ccd6b5daedd777021ef2519ea2f18c4c922843b52b", + "strip_prefix": "swift-nio-extras-1.4.0/", + "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio_extras/BUILD.overlay" + } + }, + "com_github_apple_swift_log": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-log/archive/1.4.4.tar.gz" + ], + "sha256": "48fe66426c784c0c20031f15dc17faf9f4c9037c192bfac2f643f65cb2321ba0", + "strip_prefix": "swift-log-1.4.4/", + "build_file": "@@rules_swift+//third_party:com_github_apple_swift_log/BUILD.overlay" + } + }, + "com_github_apple_swift_nio_ssl": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-nio-ssl/archive/2.23.0.tar.gz" + ], + "sha256": "4787c63f61dd04d99e498adc3d1a628193387e41efddf8de19b8db04544d016d", + "strip_prefix": "swift-nio-ssl-2.23.0/", + "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio_ssl/BUILD.overlay" + } + }, + "com_github_apple_swift_collections": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-collections/archive/1.0.4.tar.gz" + ], + "sha256": "d9e4c8a91c60fb9c92a04caccbb10ded42f4cb47b26a212bc6b39cc390a4b096", + "strip_prefix": "swift-collections-1.0.4/", + "build_file": "@@rules_swift+//third_party:com_github_apple_swift_collections/BUILD.overlay" + } + }, + "com_github_apple_swift_atomics": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/apple/swift-atomics/archive/1.1.0.tar.gz" + ], + "sha256": "1bee7f469f7e8dc49f11cfa4da07182fbc79eab000ec2c17bfdce468c5d276fb", + "strip_prefix": "swift-atomics-1.1.0/", + "build_file": "@@rules_swift+//third_party:com_github_apple_swift_atomics/BUILD.overlay" + } + }, + "build_bazel_rules_swift_index_import": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@rules_swift+//third_party:build_bazel_rules_swift_index_import/BUILD.overlay", + "canonical_id": "index-import-5.8", + "urls": [ + "https://github.com/MobileNativeFoundation/index-import/releases/download/5.8.0.1/index-import.tar.gz" + ], + "sha256": "28c1ffa39d99e74ed70623899b207b41f79214c498c603915aef55972a851a15" + } + }, + "build_bazel_rules_swift_local_config": { + "repoRuleId": "@@rules_swift+//swift/internal:swift_autoconfiguration.bzl%swift_autoconfiguration", + "attributes": {} + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_swift+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_swift+", + "build_bazel_rules_swift", + "rules_swift+" + ] + ] + } + }, + "@@score_bazel_cpp_toolchains+//extensions:gcc.bzl%gcc": { + "general": { + "bzlTransitiveDigest": "muOim1Y4TLSENpinhZF/JtW1n+MCplZTMixloQg5zbI=", + "usagesDigest": "I5884K0MzTutS9ShDT7kU/rfU7wXKIn15iA5wpaHSqY=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "score_gcc_x86_64_toolchain_pkg": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/eclipse-score/toolchains_gcc_packages/releases/download/v0.0.4/x86_64-unknown-linux-gnu_gcc12.tar.gz" + ], + "build_file": "@@score_bazel_cpp_toolchains+//packages/linux/x86_64/gcc/12.2.0:gcc.BUILD", + "patch_args": [], + "patch_cmds": [], + "patch_strip": 0, + "patch_tool": "", + "sha256": "e9b9a7a63a5f8271b76d6e2057906b95c7a244e4931a8e10edeaa241e9f7c11e", + "strip_prefix": "x86_64-unknown-linux-gnu", + "patches": [], + "files": {} + } + }, + "score_gcc_aarch64_toolchain_pkg": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/eclipse-score/toolchains_gcc_packages/releases/download/v0.0.4/aarch64-unknown-linux-gnu_gcc12.tar.gz" + ], + "build_file": "@@score_bazel_cpp_toolchains+//packages/linux/aarch64/gcc/12.2.0:gcc.BUILD", + "patch_args": [], + "patch_cmds": [], + "patch_strip": 0, + "patch_tool": "", + "sha256": "7279b1adb50361b21f5266b001980b6febb35fa8d83170901196b9edae3f06d9", + "strip_prefix": "aarch64-unknown-linux-gnu", + "patches": [], + "files": {} + } + }, + "score_ebclfsa_toolchain_pkg": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/Elektrobit/eb_corbos_toolkit/releases/download/v2.0.0-beta1/fastdev-sdk-ubuntu-ebclfsa-ebcl-qemuarm64.tar.gz" + ], + "build_file": "@@score_bazel_cpp_toolchains+//packages/linux/aarch64/ebclfsa/0.1.0:ebclfsa.BUILD", + "patch_args": [], + "patch_cmds": [], + "patch_strip": 0, + "patch_tool": "", + "sha256": "f44286c28d831dc40acdac08ef49f38a2e9cbb057bea38c25834964693785287", + "strip_prefix": "fastdev-sdk-ubuntu-ebclfsa-ebcl-qemuarm64", + "patches": [], + "files": {} + } + }, + "score_autosd10_x86_64_toolchain_pkg": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/eclipse-score/os_autosd/releases/download/v0.0.2/autosd-toolchain-x86_64.tar.gz" + ], + "build_file": "@@score_bazel_cpp_toolchains+//packages/linux/x86_64/autosd/10.0:autosd.BUILD", + "patch_args": [], + "patch_cmds": [], + "patch_strip": 0, + "patch_tool": "", + "sha256": "25991056bd29d4cb37b11e42d0c09f55dc61d0b9d703f75d854cf614f688c96f", + "strip_prefix": "sysroot", + "patches": [], + "files": {} + } + }, + "score_autosd10_aarch64_toolchain_pkg": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/eclipse-score/os_autosd/releases/download/v0.0.2/autosd-toolchain-aarch64.tar.gz" + ], + "build_file": "@@score_bazel_cpp_toolchains+//packages/linux/aarch64/autosd/10.0:autosd.BUILD", + "patch_args": [], + "patch_cmds": [], + "patch_strip": 0, + "patch_tool": "", + "sha256": "e2f6a21681730e61ce39af19758003ba3568b093956a57cde136d5c73cf6540a", + "strip_prefix": "sysroot", + "patches": [], + "files": {} + } + }, + "score_qcc_aarch64_toolchain_pkg": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://www.qnx.com/download/download/88447/installation_qnx_804_260520.tar.xz" + ], + "build_file": "@@score_bazel_cpp_toolchains+//packages/qnx/aarch64/sdp/8.0.0:sdp.BUILD", + "patch_args": [], + "patch_cmds": [], + "patch_strip": 0, + "patch_tool": "", + "sha256": "146312c0bf22aab66e8294a06403f2ec6cfeeb074d8fa11549faffd84b7fe778", + "strip_prefix": "", + "patches": [], + "files": {} + } + }, + "score_qcc_x86_64_toolchain_pkg": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://www.qnx.com/download/download/88447/installation_qnx_804_260520.tar.xz" + ], + "build_file": "@@score_bazel_cpp_toolchains+//packages/qnx/x86_64/sdp/8.0.0:sdp.BUILD", + "patch_args": [], + "patch_cmds": [], + "patch_strip": 0, + "patch_tool": "", + "sha256": "146312c0bf22aab66e8294a06403f2ec6cfeeb074d8fa11549faffd84b7fe778", + "strip_prefix": "", + "patches": [], + "files": {} + } + }, + "score_gcc_x86_64_toolchain": { + "repoRuleId": "@@score_bazel_cpp_toolchains+//rules:gcc.bzl%gcc_toolchain", + "attributes": { + "extra_compile_flags": [], + "extra_c_compile_flags": [], + "extra_cxx_compile_flags": [], + "extra_known_features": [ + "@@score_cpp_policies+//warnings/gcc/features:strict_warnings", + "@@score_cpp_policies+//warnings/gcc/features:all_wall_warnings" + ], + "extra_enabled_features": [ + "@@score_cpp_policies+//warnings/gcc/features:minimal_warnings", + "@@score_cpp_policies+//warnings/gcc/features:warnings_as_errors" + ], + "extra_link_flags": [], + "license_info_variable": "", + "license_info_value": "", + "license_path": "/opt/score_qnx/license/licenses", + "sdk_version": "", + "sdp_version": "", + "tc_compiler_library_search_paths": [], + "tc_cpu": "x86_64", + "tc_identifier": "gcc_12.2.0", + "tc_os": "linux", + "tc_pkg_repo": "score_gcc_x86_64_toolchain_pkg", + "tc_system_toolchain": false, + "tc_runtime_ecosystem": "", + "gcc_version": "12.2.0", + "cc_toolchain_config": "@@score_bazel_cpp_toolchains+//templates:cc_toolchain_config.bzl.template", + "use_base_constraints_only": false + } + }, + "score_gcc_aarch64_toolchain": { + "repoRuleId": "@@score_bazel_cpp_toolchains+//rules:gcc.bzl%gcc_toolchain", + "attributes": { + "extra_compile_flags": [], + "extra_c_compile_flags": [], + "extra_cxx_compile_flags": [], + "extra_known_features": [ + "@@score_cpp_policies+//warnings/gcc/features:strict_warnings", + "@@score_cpp_policies+//warnings/gcc/features:all_wall_warnings" + ], + "extra_enabled_features": [ + "@@score_cpp_policies+//warnings/gcc/features:minimal_warnings", + "@@score_cpp_policies+//warnings/gcc/features:warnings_as_errors" + ], + "extra_link_flags": [], + "license_info_variable": "", + "license_info_value": "", + "license_path": "/opt/score_qnx/license/licenses", + "sdk_version": "", + "sdp_version": "", + "tc_compiler_library_search_paths": [], + "tc_cpu": "aarch64", + "tc_identifier": "gcc_12.2.0", + "tc_os": "linux", + "tc_pkg_repo": "score_gcc_aarch64_toolchain_pkg", + "tc_system_toolchain": false, + "tc_runtime_ecosystem": "", + "gcc_version": "12.2.0", + "cc_toolchain_config": "@@score_bazel_cpp_toolchains+//templates:cc_toolchain_config.bzl.template", + "use_base_constraints_only": false + } + }, + "score_ebclfsa_toolchain": { + "repoRuleId": "@@score_bazel_cpp_toolchains+//rules:gcc.bzl%gcc_toolchain", + "attributes": { + "extra_compile_flags": [], + "extra_c_compile_flags": [ + "-nostdinc", + "-isystem", + "external/%{toolchain_pkg}%/usr/lib/gcc-cross/aarch64-linux-gnu/13/include", + "-isystem", + "external/%{toolchain_pkg}%/usr/aarch64-linux-gnu/include", + "-L", + "external/%{toolchain_pkg}%/lib/aarch64-linux-gnu", + "-L", + "external/%{toolchain_pkg}%/usr/aarch64-linux-gnu/lib", + "-L", + "external/%{toolchain_pkg}%/usr/lib/x86_64-linux-gnu", + "--no-canonical-prefixes" + ], + "extra_cxx_compile_flags": [ + "-nostdinc++", + "-isystem", + "external/%{toolchain_pkg}%/usr/aarch64-linux-gnu/include/c++/13", + "-isystem", + "external/%{toolchain_pkg}%/usr/aarch64-linux-gnu/include/c++/13/aarch64-linux-gnu", + "-isystem", + "external/%{toolchain_pkg}%/usr/aarch64-linux-gnu/include/c++/13/backward", + "-nostdinc", + "-isystem", + "external/%{toolchain_pkg}%/usr/lib/gcc-cross/aarch64-linux-gnu/13/include", + "-isystem", + "external/%{toolchain_pkg}%/usr/aarch64-linux-gnu/include", + "-L", + "external/%{toolchain_pkg}%/lib/aarch64-linux-gnu", + "-L", + "external/%{toolchain_pkg}%/usr/aarch64-linux-gnu/lib", + "-L", + "external/%{toolchain_pkg}%/usr/lib/x86_64-linux-gnu", + "--no-canonical-prefixes" + ], + "extra_known_features": [], + "extra_enabled_features": [], + "extra_link_flags": [ + "-B", + "external/%{toolchain_pkg}%/usr/aarch64-linux-gnu/bin", + "-L", + "external/%{toolchain_pkg}%/lib/aarch64-linux-gnu", + "-L", + "external/%{toolchain_pkg}%/usr/aarch64-linux-gnu/lib", + "-L", + "external/%{toolchain_pkg}%/usr/lib/x86_64-linux-gnu", + "-lm", + "-ldl", + "-lrt", + "-static-libstdc++", + "-static-libgcc", + "-static", + "--no-canonical-prefixes" + ], + "license_info_variable": "", + "license_info_value": "", + "license_path": "/opt/score_qnx/license/licenses", + "sdk_version": "0.1.0", + "sdp_version": "", + "tc_compiler_library_search_paths": [ + "external/%{toolchain_pkg}%/usr/lib/x86_64-linux-gnu", + "external/%{toolchain_pkg}%/lib/x86_64-linux-gnu" + ], + "tc_cpu": "aarch64", + "tc_identifier": "sdk_0.1.0", + "tc_os": "linux", + "tc_pkg_repo": "score_ebclfsa_toolchain_pkg", + "tc_system_toolchain": false, + "tc_runtime_ecosystem": "ebclfsa", + "gcc_version": "", + "cc_toolchain_config": "@@score_bazel_cpp_toolchains+//templates:cc_toolchain_config.bzl.template", + "use_base_constraints_only": false + } + }, + "score_autosd10_x86_64_toolchain": { + "repoRuleId": "@@score_bazel_cpp_toolchains+//rules:gcc.bzl%gcc_toolchain", + "attributes": { + "extra_compile_flags": [], + "extra_c_compile_flags": [ + "-nostdinc", + "-isystem", + "external/%{toolchain_pkg}%/usr/lib/gcc/x86_64-redhat-linux/14/include", + "-isystem", + "external/%{toolchain_pkg}%/usr/include" + ], + "extra_cxx_compile_flags": [ + "-nostdinc++", + "-isystem", + "external/%{toolchain_pkg}%/usr/include/c++/14", + "-isystem", + "external/%{toolchain_pkg}%/usr/include/c++/14/x86_64-redhat-linux", + "-isystem", + "external/%{toolchain_pkg}%/usr/include/c++/14/backward", + "-nostdinc", + "-isystem", + "external/%{toolchain_pkg}%/usr/lib/gcc/x86_64-redhat-linux/14/include", + "-isystem", + "external/%{toolchain_pkg}%/usr/include" + ], + "extra_known_features": [], + "extra_enabled_features": [], + "extra_link_flags": [ + "-B", + "external/%{toolchain_pkg}%/usr/bin", + "-L", + "external/%{toolchain_pkg}%/lib64", + "-L", + "external/%{toolchain_pkg}%/lib", + "-L", + "external/%{toolchain_pkg}%/usr/lib/gcc/x86_64-redhat-linux/14", + "-L", + "external/%{toolchain_pkg}%/usr/lib64", + "-L", + "external/%{toolchain_pkg}%/usr/lib", + "-lm", + "-ldl", + "-lrt", + "-lstdc++" + ], + "license_info_variable": "", + "license_info_value": "", + "license_path": "/opt/score_qnx/license/licenses", + "sdk_version": "", + "sdp_version": "", + "tc_compiler_library_search_paths": [], + "tc_cpu": "x86_64", + "tc_identifier": "", + "tc_os": "linux", + "tc_pkg_repo": "score_autosd10_x86_64_toolchain_pkg", + "tc_system_toolchain": false, + "tc_runtime_ecosystem": "autosd10", + "gcc_version": "", + "cc_toolchain_config": "@@score_bazel_cpp_toolchains+//templates:cc_toolchain_config.bzl.template", + "use_base_constraints_only": false + } + }, + "score_autosd10_aarch64_toolchain": { + "repoRuleId": "@@score_bazel_cpp_toolchains+//rules:gcc.bzl%gcc_toolchain", + "attributes": { + "extra_compile_flags": [], + "extra_c_compile_flags": [ + "-nostdinc", + "-isystem", + "external/%{toolchain_pkg}%/usr/lib/gcc/aarch64-redhat-linux/14/include", + "-isystem", + "external/%{toolchain_pkg}%/usr/include" + ], + "extra_cxx_compile_flags": [ + "-nostdinc++", + "-isystem", + "external/%{toolchain_pkg}%/usr/include/c++/14", + "-isystem", + "external/%{toolchain_pkg}%/usr/include/c++/14/aarch64-redhat-linux", + "-isystem", + "external/%{toolchain_pkg}%/usr/include/c++/14/backward", + "-nostdinc", + "-isystem", + "external/%{toolchain_pkg}%/usr/lib/gcc/aarch64-redhat-linux/14/include", + "-isystem", + "external/%{toolchain_pkg}%/usr/include" + ], + "extra_known_features": [], + "extra_enabled_features": [], + "extra_link_flags": [ + "-B", + "external/%{toolchain_pkg}%/usr/bin", + "-L", + "external/%{toolchain_pkg}%/lib64", + "-L", + "external/%{toolchain_pkg}%/lib", + "-L", + "external/%{toolchain_pkg}%/usr/lib/gcc/aarch64-redhat-linux/14", + "-L", + "external/%{toolchain_pkg}%/usr/lib64", + "-L", + "external/%{toolchain_pkg}%/usr/lib", + "-lm", + "-ldl", + "-lrt", + "-lstdc++" + ], + "license_info_variable": "", + "license_info_value": "", + "license_path": "/opt/score_qnx/license/licenses", + "sdk_version": "", + "sdp_version": "", + "tc_compiler_library_search_paths": [], + "tc_cpu": "aarch64", + "tc_identifier": "", + "tc_os": "linux", + "tc_pkg_repo": "score_autosd10_aarch64_toolchain_pkg", + "tc_system_toolchain": false, + "tc_runtime_ecosystem": "autosd10", + "gcc_version": "", + "cc_toolchain_config": "@@score_bazel_cpp_toolchains+//templates:cc_toolchain_config.bzl.template", + "use_base_constraints_only": false + } + }, + "score_qcc_aarch64_toolchain": { + "repoRuleId": "@@score_bazel_cpp_toolchains+//rules:gcc.bzl%gcc_toolchain", + "attributes": { + "extra_compile_flags": [], + "extra_c_compile_flags": [], + "extra_cxx_compile_flags": [], + "extra_known_features": [ + "@@score_cpp_policies+//warnings/gcc/features:strict_warnings", + "@@score_cpp_policies+//warnings/gcc/features:all_wall_warnings" + ], + "extra_enabled_features": [ + "@@score_cpp_policies+//warnings/gcc/features:minimal_warnings", + "@@score_cpp_policies+//warnings/gcc/features:warnings_as_errors" + ], + "extra_link_flags": [], + "license_info_variable": "", + "license_info_value": "", + "license_path": "/opt/score_qnx/license/licenses", + "sdk_version": "", + "sdp_version": "8.0.4", + "tc_compiler_library_search_paths": [], + "tc_cpu": "aarch64", + "tc_identifier": "sdp_8.0.0", + "tc_os": "qnx", + "tc_pkg_repo": "score_qcc_aarch64_toolchain_pkg", + "tc_system_toolchain": false, + "tc_runtime_ecosystem": "", + "gcc_version": "12.2.0", + "cc_toolchain_config": "@@score_bazel_cpp_toolchains+//templates:cc_toolchain_config.bzl.template", + "use_base_constraints_only": false + } + }, + "score_qcc_x86_64_toolchain": { + "repoRuleId": "@@score_bazel_cpp_toolchains+//rules:gcc.bzl%gcc_toolchain", + "attributes": { + "extra_compile_flags": [], + "extra_c_compile_flags": [], + "extra_cxx_compile_flags": [], + "extra_known_features": [ + "@@score_cpp_policies+//warnings/gcc/features:strict_warnings", + "@@score_cpp_policies+//warnings/gcc/features:all_wall_warnings" + ], + "extra_enabled_features": [ + "@@score_cpp_policies+//warnings/gcc/features:minimal_warnings", + "@@score_cpp_policies+//warnings/gcc/features:warnings_as_errors" + ], + "extra_link_flags": [], + "license_info_variable": "", + "license_info_value": "", + "license_path": "/opt/score_qnx/license/licenses", + "sdk_version": "", + "sdp_version": "8.0.4", + "tc_compiler_library_search_paths": [], + "tc_cpu": "x86_64", + "tc_identifier": "sdp_8.0.0", + "tc_os": "qnx", + "tc_pkg_repo": "score_qcc_x86_64_toolchain_pkg", + "tc_system_toolchain": false, + "tc_runtime_ecosystem": "", + "gcc_version": "12.2.0", + "cc_toolchain_config": "@@score_bazel_cpp_toolchains+//templates:cc_toolchain_config.bzl.template", + "use_base_constraints_only": false + } + } + }, + "recordedRepoMappingEntries": [ + [ + "", + "score_cpp_policies", + "score_cpp_policies+" + ], + [ + "bazel_tools", + "rules_cc", + "rules_cc+" + ], + [ + "score_bazel_cpp_toolchains+", + "bazel_tools", + "bazel_tools" + ], + [ + "score_bazel_cpp_toolchains+", + "score_bazel_cpp_toolchains", + "score_bazel_cpp_toolchains+" + ] + ] + } + }, + "@@score_rules_imagefs+//extensions:imagefs.bzl%imagefs": { + "general": { + "bzlTransitiveDigest": "QhWu3S0r+BB5gCeNfjskCjQbAFsZrzik1VQs9hwJLfQ=", + "usagesDigest": "TUQcBJcpnvQIc4czR0m0qMbqkxdrlpJbeQk5WxyE/lM=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "score_qnx_x86_64_ifs_toolchain": { + "repoRuleId": "@@score_rules_imagefs+//rules:imagefs_toolchain.bzl%imagefs_toolchain", + "attributes": { + "tc_cpu": "x86_64", + "tc_os": "qnx", + "tc_pkg_repo": "'@@score_bazel_cpp_toolchains++gcc+score_qcc_x86_64_toolchain_pkg'", + "sdp_version": "8.0.4", + "tc_type": "ifs", + "coreutils_pkg_repo": "" + } + }, + "score_qnx_aarch64_ifs_toolchain": { + "repoRuleId": "@@score_rules_imagefs+//rules:imagefs_toolchain.bzl%imagefs_toolchain", + "attributes": { + "tc_cpu": "aarch64", + "tc_os": "qnx", + "tc_pkg_repo": "'@@score_bazel_cpp_toolchains++gcc+score_qcc_aarch64_toolchain_pkg'", + "sdp_version": "8.0.4", + "tc_type": "ifs", + "coreutils_pkg_repo": "" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "", + "score_qcc_aarch64_toolchain_pkg", + "score_bazel_cpp_toolchains++gcc+score_qcc_aarch64_toolchain_pkg" + ], + [ + "", + "score_qcc_x86_64_toolchain_pkg", + "score_bazel_cpp_toolchains++gcc+score_qcc_x86_64_toolchain_pkg" + ], + [ + "bazel_lib+", + "bazel_tools", + "bazel_tools" + ], + [ + "score_rules_imagefs+", + "bazel_lib", + "bazel_lib+" + ], + [ + "score_rules_imagefs+", + "bazel_tools", + "bazel_tools" + ], + [ + "score_rules_imagefs+", + "score_rules_imagefs", + "score_rules_imagefs+" + ] + ] + } + }, + "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_rules_rust_miri_toolchain_ext": { + "general": { + "bzlTransitiveDigest": "9k8SLwP4ec9xXjFivq0Kn0FradTQhcEA+j/WsLxfVPM=", + "usagesDigest": "1G+0hoRkZx33aQUiAxx8GdGErOPGCHHQXn5lO7fZxgI=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "ferrocene_x86_64_unknown_linux_gnu_rules_rust_miri": { + "repoRuleId": "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_rules_rust_miri_toolchain_repo", + "attributes": { + "ferrocene_repo_name": "ferrocene_x86_64_unknown_linux_gnu", + "toolchain_name": "rust_ferrocene", + "env": {}, + "exec_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "target_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ] + } + }, + "ferrocene_aarch64_unknown_linux_gnu_rules_rust_miri": { + "repoRuleId": "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_rules_rust_miri_toolchain_repo", + "attributes": { + "ferrocene_repo_name": "ferrocene_aarch64_unknown_linux_gnu", + "toolchain_name": "rust_ferrocene", + "env": {}, + "exec_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "target_compatible_with": [ + "@platforms//cpu:aarch64", + "@platforms//os:linux" + ] + } + }, + "ferrocene_x86_64_pc_nto_qnx800_rules_rust_miri": { + "repoRuleId": "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_rules_rust_miri_toolchain_repo", + "attributes": { + "ferrocene_repo_name": "ferrocene_x86_64_pc_nto_qnx800", + "toolchain_name": "rust_ferrocene", + "env": {}, + "exec_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "target_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:qnx" + ] + } + }, + "ferrocene_aarch64_unknown_nto_qnx800_rules_rust_miri": { + "repoRuleId": "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_rules_rust_miri_toolchain_repo", + "attributes": { + "ferrocene_repo_name": "ferrocene_aarch64_unknown_nto_qnx800", + "toolchain_name": "rust_ferrocene", + "env": {}, + "exec_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "target_compatible_with": [ + "@platforms//cpu:aarch64", + "@platforms//os:qnx" + ] + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_toolchain_ext": { + "general": { + "bzlTransitiveDigest": "9k8SLwP4ec9xXjFivq0Kn0FradTQhcEA+j/WsLxfVPM=", + "usagesDigest": "axLJQNLTGRQbV+pVPcXZ7Qh0rSoyoXLX2Povpmj1m3s=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "ferrocene_aarch64_ebclfsa": { + "repoRuleId": "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_toolchain_repo", + "attributes": { + "url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.0.1/ferrocene-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-aarch64-unknown-linux-gnu.tar.gz", + "sha256": "b1f1eb1146bf595fe1f4a65d5793b7039b37d2cb6d395d1c3100fa7d0377b6c9", + "strip_prefix": "", + "toolchain_name": "rust_ferrocene", + "target_triple": "aarch64-unknown-linux-gnu", + "exec_triple": "x86_64-unknown-linux-gnu", + "staticlib_ext": ".a", + "dylib_ext": ".so", + "binary_ext": "", + "default_edition": "2021", + "stdlib_linkflags": [], + "extra_rustc_flags": [ + "-Clink-arg=-Wl,--no-as-needed", + "-Clink-arg=-lstdc++", + "-Clink-arg=-static-libstdc++", + "-Clink-arg=-static", + "-Clink-arg=-lm", + "-Clink-arg=-lc" + ], + "extra_exec_rustc_flags": [], + "env": {}, + "exec_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "target_compatible_with": [ + "@platforms//cpu:aarch64", + "@platforms//os:linux" + ], + "coverage_tools_url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.0.1/coverage-tools-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-unknown-linux-gnu.tar.gz", + "coverage_tools_sha256": "497958e925bc94833ea226d68f6d5ba38bd890f571c73e230141d2923e30dd94", + "coverage_tools_strip_prefix": "779fbed05ae9e9fe2a04137929d99cc9b3d516fd/x86_64-unknown-linux-gnu", + "miri_sysroot_url": "", + "miri_sysroot_sha256": "", + "miri_sysroot_strip_prefix": "" + } + }, + "ferrocene_x86_64_unknown_linux_gnu": { + "repoRuleId": "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_toolchain_repo", + "attributes": { + "url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.3.1/ferrocene-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-unknown-linux-gnu.tar.gz", + "sha256": "6fd7c7053a80463b2bfd24202de02e16959b18ed185c55b738148e9caac42eff", + "strip_prefix": "", + "toolchain_name": "rust_ferrocene", + "target_triple": "x86_64-unknown-linux-gnu", + "exec_triple": "x86_64-unknown-linux-gnu", + "staticlib_ext": ".a", + "dylib_ext": ".so", + "binary_ext": "", + "default_edition": "2021", + "stdlib_linkflags": [], + "extra_rustc_flags": [ + "-Clink-arg=-Wl,--no-as-needed", + "-Clink-arg=-lstdc++", + "-Clink-arg=-lm", + "-Clink-arg=-lc" + ], + "extra_exec_rustc_flags": [], + "env": {}, + "exec_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "target_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "coverage_tools_url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.3.1/coverage-tools-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-unknown-linux-gnu.tar.gz", + "coverage_tools_sha256": "9cf5d76b2e505bf2a8b2b47c60f191ac1273f87851ed387e53080b8e5d14dedf", + "coverage_tools_strip_prefix": "779fbed05ae9e9fe2a04137929d99cc9b3d516fd/x86_64-unknown-linux-gnu", + "miri_sysroot_url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.3.1/miri-sysroot-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-unknown-linux-gnu.tar.gz", + "miri_sysroot_sha256": "143260fe3873249160d57b370717005828e129d3b6782448a32d8cc578384fe0", + "miri_sysroot_strip_prefix": "x86_64-unknown-linux-gnu" + } + }, + "ferrocene_aarch64_unknown_linux_gnu": { + "repoRuleId": "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_toolchain_repo", + "attributes": { + "url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.3.1/ferrocene-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-aarch64-unknown-linux-gnu.tar.gz", + "sha256": "06ee88a935083068325b69028e9d4e9adc696542cea9b4322642a55dafcae552", + "strip_prefix": "", + "toolchain_name": "rust_ferrocene", + "target_triple": "aarch64-unknown-linux-gnu", + "exec_triple": "x86_64-unknown-linux-gnu", + "staticlib_ext": ".a", + "dylib_ext": ".so", + "binary_ext": "", + "default_edition": "2021", + "stdlib_linkflags": [], + "extra_rustc_flags": [ + "-Clink-arg=-Wl,--no-as-needed", + "-Clink-arg=-lstdc++", + "-Clink-arg=-lm", + "-Clink-arg=-lc", + "-Clink-arg=-lgcc" + ], + "extra_exec_rustc_flags": [], + "env": {}, + "exec_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "target_compatible_with": [ + "@platforms//cpu:aarch64", + "@platforms//os:linux" + ], + "coverage_tools_url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.3.1/coverage-tools-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-unknown-linux-gnu.tar.gz", + "coverage_tools_sha256": "9cf5d76b2e505bf2a8b2b47c60f191ac1273f87851ed387e53080b8e5d14dedf", + "coverage_tools_strip_prefix": "779fbed05ae9e9fe2a04137929d99cc9b3d516fd/x86_64-unknown-linux-gnu", + "miri_sysroot_url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.3.1/miri-sysroot-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-aarch64-unknown-linux-gnu.tar.gz", + "miri_sysroot_sha256": "4059e74c79147b942eb595c14a5f998ebdb1063764ea756b4f32c21bf5903a16", + "miri_sysroot_strip_prefix": "aarch64-unknown-linux-gnu" + } + }, + "ferrocene_x86_64_pc_nto_qnx800": { + "repoRuleId": "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_toolchain_repo", + "attributes": { + "url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.3.1/ferrocene-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-pc-nto-qnx800.tar.gz", + "sha256": "655ad0d212baf63f4dd03065735ca55cddadc86cf6bd005aeb19689e348a0023", + "strip_prefix": "", + "toolchain_name": "rust_ferrocene", + "target_triple": "x86_64-pc-nto-qnx800", + "exec_triple": "x86_64-unknown-linux-gnu", + "staticlib_ext": ".a", + "dylib_ext": ".so", + "binary_ext": "", + "default_edition": "2021", + "stdlib_linkflags": [], + "extra_rustc_flags": [ + "-Clink-arg=-Wl,--no-as-needed", + "-Clink-arg=-lc++", + "-Clink-arg=-lm", + "-Clink-arg=-lc" + ], + "extra_exec_rustc_flags": [], + "env": {}, + "exec_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "target_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:qnx" + ], + "coverage_tools_url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.3.1/coverage-tools-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-unknown-linux-gnu.tar.gz", + "coverage_tools_sha256": "9cf5d76b2e505bf2a8b2b47c60f191ac1273f87851ed387e53080b8e5d14dedf", + "coverage_tools_strip_prefix": "779fbed05ae9e9fe2a04137929d99cc9b3d516fd/x86_64-unknown-linux-gnu", + "miri_sysroot_url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.3.1/miri-sysroot-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-pc-nto-qnx800.tar.gz", + "miri_sysroot_sha256": "9684ea089c883a0739f402165fc6aa374a69641e763957c314688779e8124931", + "miri_sysroot_strip_prefix": "x86_64-pc-nto-qnx800" + } + }, + "ferrocene_aarch64_unknown_nto_qnx800": { + "repoRuleId": "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_toolchain_repo", + "attributes": { + "url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.3.1/ferrocene-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-aarch64-unknown-nto-qnx800.tar.gz", + "sha256": "a8e80da21c6abebfb31063f3815cd3a4bbb5a1466855a12043d7c243ef152715", + "strip_prefix": "", + "toolchain_name": "rust_ferrocene", + "target_triple": "aarch64-unknown-nto-qnx800", + "exec_triple": "x86_64-unknown-linux-gnu", + "staticlib_ext": ".a", + "dylib_ext": ".so", + "binary_ext": "", + "default_edition": "2021", + "stdlib_linkflags": [], + "extra_rustc_flags": [ + "-Clink-arg=-Wl,--no-as-needed", + "-Clink-arg=-lc++", + "-Clink-arg=-lm", + "-Clink-arg=-lc" + ], + "extra_exec_rustc_flags": [], + "env": {}, + "exec_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "target_compatible_with": [ + "@platforms//cpu:aarch64", + "@platforms//os:qnx" + ], + "coverage_tools_url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.3.1/coverage-tools-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-unknown-linux-gnu.tar.gz", + "coverage_tools_sha256": "9cf5d76b2e505bf2a8b2b47c60f191ac1273f87851ed387e53080b8e5d14dedf", + "coverage_tools_strip_prefix": "779fbed05ae9e9fe2a04137929d99cc9b3d516fd/x86_64-unknown-linux-gnu", + "miri_sysroot_url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.3.1/miri-sysroot-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-aarch64-unknown-nto-qnx800.tar.gz", + "miri_sysroot_sha256": "3077170b7384d6bcf2cf8f53db8b670d48fc7e2237285b4fd799c64e7412bdff", + "miri_sysroot_strip_prefix": "aarch64-unknown-nto-qnx800" + } + } + }, + "recordedRepoMappingEntries": [] + } + } + }, + "facts": {} +} diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..98e3216 --- /dev/null +++ b/NOTICE @@ -0,0 +1,47 @@ + + +# Notices for Eclipse Safe Open Vehicle Core + +This content is produced and maintained by the Eclipse Safe Open Vehicle Core project. + + * Project home: https://projects.eclipse.org/projects/automotive.score + +## Trademarks + +Eclipse, and the Eclipse Logo are registered trademarks of the Eclipse Foundation. + +## Copyright + +All content is the property of the respective authors or their employers. +For more information regarding authorship of content, please consult the +listed source code repository logs. + +## Declared Project Licenses + +This program and the accompanying materials are made available under the terms +of the Apache License Version 2.0 which is available at +https://www.apache.org/licenses/LICENSE-2.0. + +SPDX-License-Identifier: Apache-2.0 + +## Cryptography + +Content may contain encryption software. The country in which you are currently +may have restrictions on the import, possession, and use, and/or re-export to +another country, of encryption software. BEFORE using any encryption software, +please check the country's laws, regulations and policies concerning the import, +possession, or use, and re-export of encryption software, to see if this is +permitted. diff --git a/README.md b/README.md index 3c4f3eb..cb3e742 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,35 @@ -# contributor_training -Contributor training for S-CORE + + +# S-CORE contributor training + +A self-paced, hands-on training for people who want to contribute to +[Eclipse S-CORE](https://projects.eclipse.org/projects/automotive.score): build, review, fix and +rebase in a realistic S-CORE module, without any risk to a real project. + +- **Your own copy.** You make a copy of this repository in your own GitHub account and run the + setup there. It fills the copy with defect branches, prepared pull requests and about fifteen + task issues. +- **A fictive module.** `Training_Module` is made from the S-CORE module template and follows the + S-CORE process description. Some of its documents are wrong on purpose. +- **Tracks:** quality, safety, security. About five working days. +- **Self-organised.** There is no tutor and no support. When something breaks, you repair it + yourself; `TRAINING.md` says how. +- **Open solutions.** [`training/SOLUTIONS.md`](training/SOLUTIONS.md) lists every defect. + Reading it first only shortens what you learn. +- **Certificate.** When every task is done, a workflow in your copy issues a certificate of + completion. + +**Start here: [`TRAINING.md`](TRAINING.md).** Maintaining or extending the training: +[`training/README.md`](training/README.md). Feedback and bug reports: the issue forms of this +repository. diff --git a/REUSE.toml b/REUSE.toml new file mode 100644 index 0000000..30d4b46 --- /dev/null +++ b/REUSE.toml @@ -0,0 +1,44 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +version = 1 + +[[annotations]] +path = [".devcontainer/*.json"] +SPDX-FileCopyrightText = "Copyright (c) 2026 Contributors to the Eclipse Foundation" +SPDX-License-Identifier = "Apache-2.0" + +[[annotations]] +path = [".vscode/*.json", ".vscode/restructuredtext.code-snippets"] +SPDX-FileCopyrightText = "Copyright (c) 2026 Contributors to the Eclipse Foundation" +SPDX-License-Identifier = "Apache-2.0" + +[[annotations]] +path = ["**/*.lock.json", "**/Cargo.lock", "MODULE.bazel.lock"] +SPDX-FileCopyrightText = "Copyright (c) 2026 Contributors to the Eclipse Foundation" +SPDX-License-Identifier = "Apache-2.0" + +[[annotations]] +path = [".github/templatesyncignore.txt"] +SPDX-FileCopyrightText = "Copyright (c) 2026 Contributors to the Eclipse Foundation" +SPDX-License-Identifier = "Apache-2.0" + +[[annotations]] +path = [".bazelversion"] +SPDX-FileCopyrightText = "Copyright (c) 2026 Contributors to the Eclipse Foundation" +SPDX-License-Identifier = "Apache-2.0" + +[[annotations]] +path = ["training/reviews/*.json"] +SPDX-FileCopyrightText = "Copyright (c) 2026 Contributors to the Eclipse Foundation" +SPDX-License-Identifier = "Apache-2.0" diff --git a/TRAINING.md b/TRAINING.md new file mode 100644 index 0000000..01ff677 --- /dev/null +++ b/TRAINING.md @@ -0,0 +1,152 @@ + + +# S-CORE contributor training + +You work in your own copy of a training module, `Training_Module`. It is built like a real S-CORE +module: the module template, the S-CORE process description and the S-CORE tooling. Nothing you do +in your copy can break a real project, so try things, break the build and repair it. + +The module is fictive. Some of its documents are wrong on purpose. Finding out what is wrong, and +proving it, is the training. + +**The training is self-organised.** There is no tutor and no support. You set up your copy +yourself, you work through it at your own pace, and when something breaks, you repair it yourself: +see [When something breaks](#when-something-breaks). Repairing it is part of the training. + +**The solutions are open.** `training/SOLUTIONS.md` lists every built-in defect. The training is +voluntary: if you read the solutions first, you only shorten what you learn. + +## Tracks + +Choose one track. The tasks are the same for every track; the documents you review and fill in are +your track's. + +| Track | Your document in stage 5 | +| --- | --- | +| `quality` | module verification report and release note | +| `safety` | module safety plan | +| `security` | module security plan | + +More tracks can be added; `training/README.md` says how. + +## Set up your copy + +You need a GitHub account, `git`, and `gh` logged in (`gh auth login`). + +1. On this repository's GitHub page, choose **Use this template → Create a new repository**: owner + your own account, any name, **Private** or **Public**. Leave **"Include all branches" + unticked**; the setup refuses a copy with other branches than `main`. +2. Clone your copy and run the setup from it. Try it with `--dry-run` first: it clones, applies + and renders everything without pushing or creating anything. + + ```bash + git clone git@github.com:/.git + cd + python3 training/setup.py / --dry-run + python3 training/setup.py / + ``` + + It creates the labels, the defect branches, five prepared pull requests and the task issues in + your copy. The prepared pull requests and the review comments on one of them are posted under + your own account: read them as if a colleague had written them. +3. Then, in your clone: + + ```bash + git pull + git remote add upstream https://github.com/eclipse-score/module_template.git + pre-commit install + rm -rf _build && bazel run //:docs + ``` + + `upstream` is the public S-CORE module template this training module was made from. Open the + issue labelled `stage-0`. + +**Protect `main`**, if you can: a public copy can have a ruleset that requires a pull request and +the checks "Build Documentation" and "🔬 Pre-Commit" (`training/setup.py --ruleset` creates it). A +private copy on a free account cannot. Then "green CI before merging" is your own discipline. + +## The week + +Plan about **five working days**. Every task is an issue in your copy, labelled `stage-0` to +`stage-6`. Work through them in order. + +| Day | Stages | Done in the evening | +| --- | --- | --- | +| 1 | 0 environment, 1 git | environment works, first pull request merged | +| 2 | 2 build | all defect branches are green | +| 3 | 3 process, 4 review | findings recorded, reviews submitted | +| 4 | 5 module | template update rebased and merged, your track's document filled in | +| 5 | 6 wrap-up | cross-review, formal review and retrospective done, certificate issued | + +## Rules + +1. **Every issue is closed by a merged pull request** whose description says `Closes #`, with + green CI. One pull request may close several issues, with one keyword per issue: + `Closes #8, closes #23`. "Resolves #8 and #23" closes only #8. An issue you close by hand + counts only when a merged pull request mentions it, or when the issue names a merged pull + request as its result, in its text or in a comment. The continuous improvement issue is the + exception: it may stay open. +2. **Some issues you create yourself.** The task tells you when. On GitHub, choose + **Issues → New issue → Training finding** (the template is in + `.github/ISSUE_TEMPLATE/training_finding.md`) and add the labels `stage-` and your track. + An issue must be workable without asking you: what is wrong, where, and how one recognises that + it is fixed. +3. **The commit carries the reasoning.** Say what you checked and what it returned. In S-CORE a + reviewer reads your pull request without you in the room; the reasoning has to be in it. +4. **You merge your own pull requests** once CI is green. Nobody reviews your copy: the closed + issues and pull requests are your own record of what you did. + +## Certificate + +When every issue is closed, the last step is your **certificate of completion**: on GitHub, choose +**Actions → Certificate → Run workflow**, enter your full name and run it. The workflow checks rule 1 +for every issue in your copy. If one does not meet it, the run fails and its summary lists the +issues and what to do; repair them and run it again. Otherwise download the PDF from the run's +**Artifacts**. + +The certificate lists the stages you completed, your track, and how many tasks and own findings +your pull requests closed. It confirms that you completed the training, not that you are competent +in a role. It is not an Eclipse Foundation certification. + +Then tell the training that you finished: in `eclipse-score/contributor_training`, open +**Issues → New issue → Training completed**. That issue is the record that the training was done. + +## When something breaks + +There is no support, so here is what to do yourself. + +| What happened | What to do | +| --- | --- | +| `training/setup.py` stopped half-way | Run it again. It takes over what it already created instead of duplicating it. | +| A defect branch or prepared pull request is damaged beyond repair | Recreate it from your copy's first commit, which is where the setup made it: `git switch -C $(git rev-list --max-parents=0 HEAD) && git am training/patches/.patch && git push -f origin `. The patch names are in `training/README.md`. | +| `main` is broken and you cannot find why | `git log` and `git revert` the merge that broke it, in a pull request. Finding that merge is a good exercise. | +| The copy is beyond repair | Delete the repository, make a new copy and run the setup again. Your progress is in the old copy's issues; read them before you delete it. | +| Actions minutes run out (private copies) | A free account has 2,000 minutes a month; the training needs a few hundred. Wait for the next month or make the copy public. | +| A task text is wrong, or a defect does not behave as described | That is a bug in the training: report it (below), work around it, and say so in your pull request. | + +## Feedback, bugs and questions + +- **Feedback or a bug in the training:** in `eclipse-score/contributor_training`, open + **Issues → New issue → Feedback** or **Bug report**. Not in your copy: nobody else can see it. + The maintainers read them; they do not give support. +- **Questions about S-CORE itself** go to the role that owns the topic, through the channels + listed in the S-CORE User's Guide, "What's Next?": + + | Topic | Role | + | --- | --- | + | Process description | Process Community | + | Quality, safety, security | Quality Manager, Safety Manager, Security Manager | + | Code of a module | that module's Committers | + | Tooling, CI, docs-as-code | Infrastructure Tooling Community | + | Direction, getting involved | Project Leads | diff --git a/docs/components/index.rst b/docs/components/index.rst new file mode 100644 index 0000000..c8b334f --- /dev/null +++ b/docs/components/index.rst @@ -0,0 +1,23 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +.. _ components:: + +Components +~~~~~~~~~~ + +.. toctree will be filled by docs_bundle via bazel + +.. toctree:: + :maxdepth: 1 diff --git a/docs/features/architecture/arc_inspection.rst b/docs/features/architecture/arc_inspection.rst new file mode 100644 index 0000000..22f12c2 --- /dev/null +++ b/docs/features/architecture/arc_inspection.rst @@ -0,0 +1,235 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Feature Name] Architecture Inspection +====================================== + +.. document:: [Feature Name] Architecture Inspection + :id: doc__feature_name_arc_inspection + :status: draft + :version: 3 + :safety: ASIL_B + :security: YES + :realizes: wp__sw_arch_verification + :tags: template + +.. attention:: + The above directive must be updated according to your Feature. + + - Modify ``Feature Name`` to be your Feature Name + - Modify ``id`` to be your Feature Name in lower snake case preceded by ``doc__`` and followed by ``_arc_inspection`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety``, ``security`` and ``tags`` according to your needs + +Participants +------------ + +.. note:: + + As described in the concept :need:`doc_concept__wp_inspections` the following “inspection roles” are expected to be filled: + + * content responsible (author): + * reviewer: + * moderator: + + +.. list-table:: Architecture Inspection Participants + :header-rows: 1 + + * - Author(s) + - Reviewer(s) + - Moderator + * - ``_, ``_ + - ``_, ``_ + - ``_ + + +Architecture Inspection Checklist +--------------------------------- + +.. note:: + + **Purpose** + + The purpose of the software architecture checklist is to ensure that the design meets the criteria and quality standards + defined by project processes and guidelines for feature and component architectural design elements. + It helps check compliance with requirements, identify errors or inconsistencies, and ensure adherence to best practices. + The checklist guides the evaluation of the architecture design, identifies potential problems, and aids in communication and + documentation of architectural decisions to stakeholders. + + **Checklist** + + Enter “yes” or “no” in the “Passed” column for each applicable checklist item, and explain the result in the “Remarks” column. + If “no” is entered, add an issue link in the “Issue link” column unless the finding is already tracked in the current issue. + If a Review ID is not applicable to your architecture, enter “n/a” in the “Passed” column and explain why in the “Remarks” column. + See also :need:`doc_concept__wp_inspections` for further information about reviews in general and inspection in particular. + +.. list-table:: Architecture Inspection Checklist + :header-rows: 1 + + * - Review ID + - Acceptance criteria + - Guidance + - Passed + - Remarks + - Issue link + * - ARC_01_01 + - Does the software architecture design take into account all requirements allocated to the architectural element, including functional, non-functional, safety, and security requirements, as well as all related design decisions? + - Check whether all requirements allocated to the architectural element are considered in the design. These include functional requirements (e.g., functional safety requirements), non-functional requirements (e.g., performance and reliability), and security requirements (e.g., confidentiality and integrity). Also ensure that all related design decisions are taken into account and documented in the architectural design. Security-related requirements should also be reviewed through the applicable cybersecurity process; this checklist does not replace cybersecurity activities. + - + - + - + * - ARC_01_02 + - If the architectural element is related to any supplier manuals (including safety and security), are the relevant parts covered? + - If the architecture makes use of supplied elements, their manuals (e.g., safety manuals) must be considered; their functionality must match expectations, and their assumptions must be fulfilled. For a safety component, this means that the assumed Technical Safety Requirements and assumptions of use (AoUs) in the safety manual are covered. + - + - + - + * - ARC_01_03 + - Is the architectural element traceable to lower-level artifacts as defined by work-product traceability? + - Check if every logical interface is provided by exactly one component and used by at least one. CHeck if every component of the feature is included by exactly one module. + - + - + - + * - ARC_02_01 + - Is the software architecture design compliant with the overall feature architecture? + - At the component level, check against the feature architecture. At the feature level, check other features that use common components. + - + - + - + * - ARC_02_02 + - Are operations and interfaces named appropriately and comprehensibly in the architectural design? + - Check :need:`gd_guidl__arch_design` + - + - + - + * - ARC_02_03 + - Has the correctness of data and control flows within the architectural elements been considered? + - For example, examine data definitions, transformations, integrity, and interactions; check error handling, data exchange between elements, correct responses to inputs, and documented decision-making. + Note: Consistency is ensured by the process and tooling, which define each interface only once. + - + - + - + * - ARC_02_04 + - Are the interfaces between the software architectural element and other architectural elements well defined and described? + - Check whether the interface description specifies expected behaviour for invalid inputs and errors. Could established protocols be used? Does the interface description document inputs, outputs, and error handling? Have loose coupling and limited exposure been considered? Can unit or integration tests be written against the interface? Has the amount of data transferred been considered appropriately? Is sensitive data protected appropriately, with no sensitive data exposed? + - + - + - + * - ARC_02_05 + - Does the software architectural element take applicable timing requirements into account? + - If there are strict timing requirements, execution-time analysis or estimation should be performed, and appropriate deadline monitoring should be considered. + - + - + - + * - ARC_02_06 + - Is the documentation of the software architectural element, including textual and graphical descriptions (e.g., UML diagrams), clear and complete? + - The use of semi-formal notation is expected for architectural elements with an allocated ASIL level. Is the architecture template filled out correctly? + - + - + - + * - ARC_03_01 + - Is the architectural element modular and encapsulated? + - Check, for example, that only the necessary interfaces are used and that interfaces and interactions are clearly defined. Project-specific design and coding guidelines may additionally require object-oriented design, appropriate use of access controls (e.g., private or protected), and limits on global variables. + - + - + - + * - ARC_03_02 + - Is the suitability of the software architecture for future modifications and maintainability considered? + - Check for loose coupling, separation of concerns, high cohesion, an interface versioning strategy, decision records, and the use of established design patterns. + - + - + - + * - ARC_03_03 + - Does the software architecture demonstrate simplicity and avoid unnecessary complexity? + - Indicators of complexity include the number of use cases (corresponding to dynamic diagrams) allocated to a single design element; the number of interfaces and operations in an interface; the number of function parameters; global variables; complex types; and limited comprehensibility. The thresholds below are project-defined criteria, not ISO 26262 limits. + + Notes: + + A design rationale is mandatory if any of the following applies: the number of use cases or interfaces exceeds "3"; the number of function parameters exceeds "5"; the number of operations exceeds "20"; or global variables are used. + - + - + - + * - ARC_03_04 + - Does the software architecture design follow best practices and design principles? + - Refer to architectural guidelines and recommendations within the project documentation. + - + - + - + * - ARC_04_01 + - Where software elements with different safety classifications (e.g., different ASILs, or QM and ASIL) share resources, have applicable freedom-from-interference requirements been identified and addressed? Consider shared resources such as CPU time and memory. See also ARC_04_03. + + Note: See :need:`std_req__iso26262__software_749` and Annex D for partitioning and freedom-from-interference considerations. + - Check whether your architecture design complies with project guidelines for establishing freedom from interference between components. This can be achieved, for example, by using a hypervisor or an OS that supports partitioning with an MMU or specific scheduling mechanisms, as well as safety mechanisms such as watchdogs or program-flow monitoring. + Identify the shared resources and potential interference paths, and check that the selected measures address the applicable requirements. A hypervisor, operating system feature, or safety mechanism is not by itself evidence that freedom from interference has been achieved. Where the design relies on operating-system or platform guarantees, verify that these guarantees are specified and supported by applicable assumptions of use. For example, see `score aou_req__platform__process_isolation `_. + - + - + - + * - ARC_04_02 + - Does the software architectural design consider feasibility with respect to the resources required by the embedded software, especially time-critical aspects such as startup time, as well as RAM, ROM, non-volatile memory, communication bandwidth, and processing-time limits, according to requirements or foreseeable customer needs? See also ARC_02_05. + + Note: See :need:`std_req__iso26262__software_7413`. + - + Check whether there are any limits on resource consumption or timing in your project, such as startup time, communication bandwidth, or memory usage. If such limits exist, ensure that your architecture takes them into account, especially with respect to scalability. To do this, estimate the required resources based on the architectural design and a prototype or measurements of an existing implementation, and compare the estimates with the defined limits or planned scalability. Check whether any bottlenecks in the architecture could lead to excessive resource use or timing violations. + - + - + - + * - ARC_04_03 + - If your software architectural design includes processes and tasks, are their scheduling policies and priorities (or at least the necessary relationships among them) defined to ensure that timing requirements are met? Please note that the specific priorities or priority ranges will probably be defined in the project handbook or the software development plan. + + Note: See :need:`std_req__iso26262__software_743`. + - Provide a rationale for these scheduling policies and priorities, or explain why they are not needed. + - + - + - + + +Summary +------- + +.. note:: + + The filtering must be updated according to your Feature. + +Inspected Static Architecture Views +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The following static views in "valid" state and with "inspected" tag set are in the scope of this inspection: + +.. needtable:: + :filter: "feature_name" in docname and "architecture" in docname and docname is not None and status == "valid" + :style: table + :types: feat_arc_sta + :tags: feature_name + :columns: id;status;tags + :colwidths: 25,25,25 + :sort: title + +Inspected Dynamic Architecture Views +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +and the following dynamic views "valid" state and with "inspected" tag set are in the scope of this inspection: + +.. needtable:: + :filter: "feature_name" in docname and "architecture" in docname and docname is not None and status == "valid" + :style: table + :types: feat_arc_dyn + :tags: feature_name + :columns: id;status;tags + :colwidths: 25,25,25 + :sort: title + +.. note:: + + For these static and dynamic views the inspected ground truth is documented in the rendered documentation and not in the source read by the drawing tool. diff --git a/docs/features/architecture/index.rst b/docs/features/architecture/index.rst new file mode 100644 index 0000000..9c27572 --- /dev/null +++ b/docs/features/architecture/index.rst @@ -0,0 +1,116 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Feature Name] Architecture +=========================== + +.. document:: [Feature Name] Architecture + :id: doc__feature_example_architecture + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__feature_arch + :tags: template + +.. attention:: + The above directive must be updated according to your Feature. + + - Modify ``Feature Name`` to be your Feature Name + - Modify ``id`` to be your Feature Name in lower snake case preceded by ``doc__`` and followed by ``_architecture`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety``, ``security`` and ``tags`` according to your needs + +Overview +-------- + + +Description +----------- + + + + + + + +Requirements +------------ + +The requirements for the feature architecture are defined in the `requirements` section of the feature documentation in the project repository. + +Rationale Behind Architecture Decomposition +******************************************* + +Mandatory: A motivation for the decomposition + +.. note:: Common decisions across features / cross cutting concepts is at the high level. + +Static Architecture +------------------- + + + +.. note:: + The Architecture can be split into multiple files, it is an high level architecture design + which can be shown without actual c++/rust interfaces and data types + and there will be link to internal architecture till code to get actual api descriptions. + +.. code-block:: rst + + .. feat_arc_sta:: Feature Static View + :id: feat_arc_sta__feature_name__static_view + :security: YES + :safety: ASIL_B + :status: invalid + :fulfils: feat_req__feature_name__some_title + :includes: logic_arc_int__feature_name__interface_name1 + :belongs_to: feat__feature_name + + .. needarch:: + :scale: 50 + :align: center + + {{ draw_feature(need(), needs) }} + +Dynamic Architecture +-------------------- + + + +.. code-block:: rst + + .. feat_arc_dyn:: Dynamic View + :id: feat_arc_dyn__feature_name__dynamic_view + :security: YES + :safety: ASIL_B + :status: invalid + :fulfils: feat_req__feature_name__some_title + :belongs_to: feat__feature_name + + Put here a sequence diagram + +Logical Interfaces +------------------ + +The logical interfaces of the feature are defined in the `logical interfaces` section of the feature documentation in the project repository. + +See `SCORE Features `_ for more information. + +Used Components +--------------- + +The components used by the feature are defined in the `components` section of the module documentation. + +See :ref:`component_template` for an example component. diff --git a/docs/features/index.rst b/docs/features/index.rst new file mode 100644 index 0000000..b174ba0 --- /dev/null +++ b/docs/features/index.rst @@ -0,0 +1,30 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Feature Name] +############## + +Feature description and requirements can be found in the SCORE Platform. + +.. toctree:: + :hidden: + + architecture/index.rst + architecture/arc_inspection.rst + safety_analysis/fmea.rst + safety_analysis/dfa.rst + safety_analysis/aou_requirements.rst + safety_planning/index.rst + security_planning/index.rst + security_analysis/aou_requirements.rst diff --git a/docs/features/safety_analysis/aou_requirements.rst b/docs/features/safety_analysis/aou_requirements.rst new file mode 100644 index 0000000..62c0bbf --- /dev/null +++ b/docs/features/safety_analysis/aou_requirements.rst @@ -0,0 +1,49 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Feature Name] Assumptions of Use +================================= + +.. document:: [Feature Name] Feature AoU + :id: doc__feature_name_feat_aou + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__requirements_feat_aou + :tags: template + + +.. attention:: + The above directive must be updated according to your Feature. + + - Modify ``Feature Name`` to be your Feature Name + - Modify ``id`` to be your Feature Name in lower snake case preceded by ``doc__`` and followed by ``_feat_aou`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety``, ``security`` and ``tags`` according to your needs + + +AoU +--- + +.. code-block:: rst + + .. aou_req:: Some Other Title + :id: aou_req__feature_name__some_other_title + :reqtype: Process + :security: NO + :safety: ASIL_B + :status: invalid + + The Feature User shall do xyz to use the feature safely. diff --git a/docs/features/safety_analysis/dfa.rst b/docs/features/safety_analysis/dfa.rst new file mode 100644 index 0000000..c142c83 --- /dev/null +++ b/docs/features/safety_analysis/dfa.rst @@ -0,0 +1,209 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + + +[Feature Name] Dependent Failure Analysis +========================================= + +.. document:: [Feature Name] DFA + :id: doc__feature_name_dfa + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__feature_dfa + :tags: template + +.. note:: Use the content of the document to describe e.g. why a fault model is not applicable for the diagram. + +.. attention:: + The above directive must be updated according to your Feature. + + - Modify ``Feature Name`` to be your Feature Name + - Modify ``id`` to be your Feature Name in lower snake case preceded by ``doc__`` and succeeded by ``_dfa`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +The DFA for the feature [Feature Name] is performed. To show evidence that all failure initiators are considered, the applicability has to be filled out in the +following tables. For all applicable failure initiators, the DFA has to be performed. + +Dependent Failure Initiators +---------------------------- + +Shared resources +^^^^^^^^^^^^^^^^ + +The dependent failure initiators related to shared resources are not applicable for the features. The shared resources +will be considered in the platform DFA. + +Communication between the two elements +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Receiving function is affected by information that is false, lost, sent multiple times, or in the wrong order etc. from the sender. + +.. list-table:: DFA communication between elements + :header-rows: 1 + :widths: 10,20,10,20 + + * - ID + - Violation cause communication between elements + - Applicability + - Rationale + * - CO_01_01 + - Information passed via argument through a function call, or via writing/reading a variable being global to the two software functions (data flow) + - + - + * - CO_01_02 + - Data or message corruption / repetition / loss / delay / masquerading or incorrect addressing of information + - + - + * - CO_01_03 + - Insertion / sequence of information + - + - + * - CO_01_04 + - Corruption of information, inconsistent data + - + - + * - CO_01_05 + - Asymmetric information sent from a sender to multiple receivers, so that not all defined receivers have the same information + - + - + * - CO_01_06 + - Information from a sender received by only a subset of the receivers + - + - + * - CO_01_07 + - Blocking access to a communication channel + - + - + +Shared information inputs +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Same information input used by multiple functions. + +.. list-table:: DFA shared information inputs + :header-rows: 1 + :widths: 10,20,10,20 + + * - ID + - Violation cause shared information inputs + - Applicability + - Rationale + * - SI_01_02 + - Configuration data + - + - + * - SI_01_03 + - Constants, or variables, being global to the two software functions + - + - + * - SI_01_04 + - Basic software passes data (read from hardware register and converted into logical information) to two applications software functions + - + - + * - SI_01_05 + - Data / function parameter arguments / messages delivered by software function to more than one other function + - + - + +Unintended impact +^^^^^^^^^^^^^^^^^ + +Unintended impacts to function due to various failures. + +.. list-table:: DFA unintended impact + :header-rows: 1 + :widths: 10,20,10,20 + + * - ID + - Violation cause unintended impact + - Applicability + - Rationale + * - UI_01_01 + - Memory miss-allocation and leaks + - + - + * - UI_01_02 + - Read/Write access to memory allocated to another software element + - + - + * - UI_01_03 + - Stack/Buffer under-/overflow + - + - + * - UI_01_04 + - Deadlocks + - + - + * - UI_01_05 + - Livelocks + - + - + * - UI_01_06 + - Blocking of execution + - + - + * - UI_01_07 + - Incorrect allocation of execution time + - + - + * - UI_01_08 + - Incorrect execution flow + - + - + * - UI_01_09 + - Incorrect synchronization between software elements + - + - + * - UI_01_10 + - CPU time depletion + - + - + * - UI_01_11 + - Memory depletion + - + - + * - UI_01_12 + - Other HW unavailability + - + - + + +DFA +=== + +For all identified applicable failure initiators, the DFA is performed in the following section. + +.. code-block:: rst + + .. feat_saf_dfa:: + :violates: <Feature architecture> + :id: feat_saf_dfa__<Feature>__<Element descriptor> + :failure_id: <ID from DFA failure initiators :need:`gd_guidl__dfa_failure_initiators`> + :failure_effect: "description of failure effect of the failure initiator on the element" + :safety_relevant: <yes|no> + :mitigated_by: <ID from Feature Requirement | ID from AoU Feature Requirement> + :mitigation_issue: <ID from Issue Tracker> + :sufficient: <yes|no> + :status: <valid|invalid> + + .. note:: Argument is inside the 'content'. Therefore content is mandatory. + +.. attention:: + The above directive must be updated according to your feature DFA. + + - The above "code-block" directive must be updated + - Fill in all the needed information in the <brackets> diff --git a/docs/features/safety_analysis/fmea.rst b/docs/features/safety_analysis/fmea.rst new file mode 100644 index 0000000..29f0ccc --- /dev/null +++ b/docs/features/safety_analysis/fmea.rst @@ -0,0 +1,138 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + + +[Feature Name] Failure Modes and Effects Analysis +================================================= + +.. document:: [Feature Name] FMEA + :id: doc__feature_name_fmea + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__feature_fmea + :tags: template + +.. note:: Use the content of the document to describe e.g. why a fault model is not applicable for the diagram. + +.. attention:: + The above directive must be updated according to your Feature. + + - Modify ``Feature Name`` to be your Feature Name + - Modify ``id`` to be your Feature Name in upper snake case preceded by ``doc__`` and succeeded by ``_fmea`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +The FMEA for the feature [Your Feature Name] is performed. To show evidence that all failure initiators are considered, the applicability has to be filled out in the +following tables. For all applicable failure initiators, the FMEA has to be performed. + +Failure Mode List +----------------- + +.. list-table:: Fault Models for sequence diagrams + :header-rows: 1 + :widths: 10,20,10,20 + + * - ID + - Failure Mode + - Applicability + - Rationale + * - MF_01_01 + - message is not received (is a subset/more precise description of MF_01_05) + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - MF_01_02 + - message received too late (only relevant if delay is a realistic fault) + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - MF_01_03 + - message received too early (usually not a problem) + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - MF_01_04 + - message not received correctly by all recipients (different messages or messages partly lost). Only relevant if the same message goes to multiple recipients. + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - MF_01_05 + - message is corrupted + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - MF_01_06 + - message is not sent + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - MF_01_07 + - message is unintended sent + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - CO_01_01 + - minimum constraint boundary is violated + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - CO_01_02 + - maximum constraint boundary is violated + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - EX_01_01 + - Process calculates wrong result(s) (is a subset/more precise description of MF_01_05 or MF_01_04). This failure mode is related to the analysis if e.g. internal safety mechanisms are required (level 2 function, plausibility check of the output, …) because of the size / complexity of the feature. + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - EX_01_02 + - processing too slow (only relevant if timing is considered) + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - EX_01_03 + - processing too fast (only relevant if timing is considered) + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - EX_01_04 + - loss of execution + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - EX_01_05 + - processing changes to arbitrary process + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - EX_01_06 + - processing is not complete (infinite loop) + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + +FMEA +---- +For all identified applicable failure initiators, the FMEA is performed in the following section. + +.. code-block:: rst + + + .. feat_saf_fmea:: <Title> + :violates: <Feature architecture> + :id: feat_saf_fmea__<Feature>__<Element descriptor> + :fault_id: <ID from fault model :need:`gd_guidl__fault_models`> + :failure_effect: "description of failure effect of the fault model on the element" + :failure_root_cause: "description of the root cause of the failure" + :safety_relevant: <yes|no> + :mitigated_by: <ID from Feature Requirement | ID from AoU Feature Requirement> + :mitigation_issue: <ID from Issue Tracker> + :sufficient: <yes|no> + :status: <valid|invalid> + + .. note:: Argument is inside the 'content'. Therefore content is mandatory. + +.. attention:: + The above directive must be updated according to your feature FMEA. + + - The above "code-block" directive must be updated + - Fill in all the needed information in the <brackets> diff --git a/docs/features/safety_planning/index.rst b/docs/features/safety_planning/index.rst new file mode 100644 index 0000000..963e596 --- /dev/null +++ b/docs/features/safety_planning/index.rst @@ -0,0 +1,156 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + + + +[Feature Name] Safety Work Products List +######################################## + +.. document:: [Feature Name] Safety WPs + :id: doc__feature_example_safety_wp + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__platform_safety_plan + :tags: template + +.. attention:: + The above directive must be updated according to your Feature. + + - Modify ``Feature Name`` to be your Feature Name + - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc__`` and succeeded by ``_safety_wp`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +Tailoring +========= + +Additional to the tailoring in the SW platform project as defined in the project's :need:`wp__platform_safety_plan` we define here the additional tailoring on feature level. + +- Excluded for this feature are additionally the following work products (and their related requirements): + + - <work product/requirement> - <Argumentation why it is not needed or replaced by another work product or activity.> + + +Safety Work Products List +========================= + +.. list-table:: [Feature Name] Safety Work products + :header-rows: 1 + + * - Work product Id + - Link to process + - Process status + - Link to WP + + * - :need:`wp__feat_request` + - :need:`gd_temp__change_feature_request` + - :ndf:`copy('status', need_id='gd_temp__change_feature_request')` + - :need:`doc__feature_name` + + * - :need:`wp__requirements_feat` + - :need:`gd_temp__req_feat_req` + - :ndf:`copy('status', need_id='gd_temp__req_feat_req')` + - :need:`doc__feature_name_requirements` + + * - :need:`wp__requirements_feat_aou` + - :need:`gd_temp__req_aou_req` + - :ndf:`copy('status', need_id='gd_temp__req_aou_req')` + - :need:`doc__feature_name_requirements` + + * - :need:`wp__feature_arch` + - :need:`gd_temp__arch_feature` + - :ndf:`copy('status', need_id='gd_temp__arch_feature')` + - :need:`doc__feature_name_architecture` + + * - :need:`wp__feature_fmea` + - :need:`gd_temp__feat_saf_fmea` + - :ndf:`copy('status', need_id='gd_temp__feat_saf_fmea')` + - :need:`doc__feature_name_fmea` + + * - :need:`wp__feature_dfa` + - :need:`gd_temp__feat_saf_dfa` + - :ndf:`copy('status', need_id='gd_temp__feat_saf_dfa')` + - :need:`doc__feature_name_dfa` + + * - :need:`wp__requirements_inspect` + - :need:`gd_chklst__req_inspection` + - :ndf:`copy('status', need_id='gd_chklst__req_inspection')` + - :need:`doc__feature_name_req_inspection` + + * - :need:`wp__sw_arch_verification` + - :need:`gd_chklst__arch_inspection_checklist` + - :ndf:`copy('status', need_id='gd_chklst__arch_inspection_checklist')` + - :need:`doc__feature_name_arc_inspection` + + * - :need:`wp__verification_feat_int_test` + - :need:`gd_guidl__verification_guide` + - :ndf:`copy('status', need_id='gd_guidl__verification_guide')` + - <Link to WP> + +.. attention:: + The above table must be updated according to your feature safety planning. + + - Fill the work products links + +Feature Safety Package +====================== + +To create the safety package (according to :need:`gd_guidl__saf_package`) the following +documents and work products status have to go to "valid" (after the relevant verification were performed). + +Feature Documents Status +------------------------ + +For all the work product documents the status can be seen by following the "Link to WP". +A summary of the status is also documented in the project's documentation management plan. + +See <add here the section reference to the documentation management plan> + +Feature Requirements Status +--------------------------- + +.. needtable:: + :filter: docname is not None and "feature_example" in docname and "requirements" in docname + :style: table + :types: feat_req + :tags: feature_name + :columns: id;status + :colwidths: 25,25 + :sort: title + +Feature AoU Status +------------------ + +.. needtable:: + :filter: docname is not None and "feature_name" in docname and "requirements" in docname + :style: table + :types: aou_req + :tags: feature_name + :columns: id;status + :colwidths: 25,25 + :sort: title + +Feature Architecture Status +--------------------------- + +.. needtable:: + :filter: docname is not None and "feature_name" in docname and "architecture" in docname + :style: table + :types: feat_arc_sta; feat_arc_dyn + :tags: feature_name + :columns: id;status + :colwidths: 25,25 + :sort: title diff --git a/docs/features/security_analysis/aou_requirements.rst b/docs/features/security_analysis/aou_requirements.rst new file mode 100644 index 0000000..1525dd7 --- /dev/null +++ b/docs/features/security_analysis/aou_requirements.rst @@ -0,0 +1,49 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Feature Name] Security Assumptions of Use +========================================== + +.. document:: [Feature Name] Feature Security AoU + :id: doc__feature_name_sec_feat_aou + :status: draft + :version: 1 + :safety: QM + :security: YES + :realizes: wp__requirements_feat_aou + :tags: template + + +.. attention:: + The above directive must be updated according to your Feature. + + - Modify ``Feature Name`` to be your Feature Name + - Modify ``id`` to be your Feature Name in lower snake case preceded by ``doc__`` and followed by ``_feat_aou`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety``, ``security`` and ``tags`` according to your needs + + +AoU +--- + +.. code-block:: rst + + .. aou_req:: Some Other Title + :id: aou_req__feature_name__sec_some_other_title + :reqtype: Process + :security: YES + :safety: QM + :status: invalid + + The Feature User shall do xyz to use the feature securely. diff --git a/docs/features/security_planning/index.rst b/docs/features/security_planning/index.rst new file mode 100644 index 0000000..94f4407 --- /dev/null +++ b/docs/features/security_planning/index.rst @@ -0,0 +1,144 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Feature Name] Security Work Products List +########################################## + +.. document:: [Feature Name] Security WPs + :id: doc__feature_example_security_planning_wp + :status: draft + :version: 1 + :safety: ASIL_B + :security: YES + :realizes: wp__platform_security_plan + :tags: template + +.. attention:: + The above directive must be updated according to your Feature. + + - Modify ``Feature Name`` to be your Feature Name + - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc__`` and succeeded by ``_security_wp`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +Tailoring +========= + +Additional to the tailoring in the SW platform project as defined in the project's :need:`wp__platform_security_plan` we define here the additional tailoring on feature level. + +- Excluded for this feature are additionally the following work products (and their related requirements): + + - <work product/requirement> - <Argumentation why it is not needed or replaced by another work product or activity.> + + +Security Work Products List +=========================== + +.. list-table:: [Feature Name] Security Work products + :header-rows: 1 + + * - Work product Id + - Link to process + - Process status + - Link to WP + + * - :need:`wp__feat_request` + - :need:`gd_temp__change_feature_request` + - :ndf:`copy('status', need_id='gd_temp__change_feature_request')` + - :need:`doc__feature_name` + + * - :need:`wp__requirements_feat` + - :need:`gd_temp__req_feat_req` + - :ndf:`copy('status', need_id='gd_temp__req_feat_req')` + - :need:`doc__feature_name_requirements` + + * - :need:`wp__requirements_feat_aou` + - :need:`gd_temp__req_aou_req` + - :ndf:`copy('status', need_id='gd_temp__req_aou_req')` + - :need:`doc__feature_name_requirements` + + * - :need:`wp__feature_arch` + - :need:`gd_temp__arch_feature` + - :ndf:`copy('status', need_id='gd_temp__arch_feature')` + - :need:`doc__feature_name_architecture` + + * - :need:`wp__requirements_inspect` + - :need:`gd_chklst__req_inspection` + - :ndf:`copy('status', need_id='gd_chklst__req_inspection')` + - :need:`doc__feature_name_req_inspection` + + * - :need:`wp__sw_arch_verification` + - :need:`gd_chklst__arch_inspection_checklist` + - :ndf:`copy('status', need_id='gd_chklst__arch_inspection_checklist')` + - :need:`doc__feature_name_arc_inspection` + + * - :need:`wp__verification_feat_int_test` + - :need:`gd_guidl__verification_guide` + - :ndf:`copy('status', need_id='gd_guidl__verification_guide')` + - <Link to WP> + +.. attention:: + The above table must be updated according to your feature security planning. + + - Fill the work producs links + +Feature Security Package +======================== + +To create the security package (according to :need:`gd_guidl__security_package`) the following +documents and work products status have to go to "valid" (after the relevant verification were performed). + +Feature Documents Status +------------------------ + +For all the work product documents the status can be seen by following the "Link to WP". +A summary of the status is also documented in the project's documentation management plan. + +See <add here the section reference to the documentation management plan> + +Feature Requirements Status +--------------------------- + +.. needtable:: + :filter: docname is not None and "feature_name" in docname and "requirements" in docname + :style: table + :types: feat_req + :tags: feature_name + :columns: id;status + :colwidths: 25,25 + :sort: title + +Feature AoU Status +------------------ + +.. needtable:: + :filter: docname is not None and "feature_name" in docname and "requirements" in docname + :style: table + :types: aou_req + :tags: feature_name + :columns: id;status + :colwidths: 25,25 + :sort: title + +Feature Architecture Status +--------------------------- + +.. needtable:: + :filter: docname is not None and "feature_name" in docname and "architecture" in docname + :style: table + :types: feat_arc_sta; feat_arc_dyn + :tags: feature_name + :columns: id;status + :colwidths: 25,25 + :sort: title diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000..cf77ab9 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,157 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Training_Module Documentation +============================= + +Training_Module is a fictive software module used to train Quality, Safety and Security Managers. +It follows the S-CORE module template and processes but implements no real functionality. + +<Further documentation of the module +and the implemented feature(s) should be added in the respective sections of the documentation +(e.g., feature architecture, safety analysis, security analysis, manuals, etc.) following the provided +templates and guidelines.> + +.. toctree:: + :titlesonly: + :hidden: + :glob: + + template/index + participants/index + +Feature Documentation +--------------------- + +The Feature documentation covers the feature-level definition of Training_Module, including architecture and safety planning artifacts. + +.. toctree:: + :maxdepth: 1 + + features/index + +.. needtable:: + :filter: docname is not None and docname.startswith("features/") + :style: table + :types: document + :columns: title;id;safety;security;status + :colwidths: 25,35,15,15,15 + :sort: title + +Module Documentation +-------------------- + +The Module documentation covers the module-level view, including architecture, safety management documents, and the user manual. + +.. toctree:: + :maxdepth: 1 + + module/index + verification_report/module_verification_report + +.. needtable:: + :filter: docname is not None and (docname.startswith("module/") or docname.startswith("verification_report/")) + :style: table + :types: document + :columns: title;id;safety;security;status + :colwidths: 25,35,15,15,15 + :sort: title + +Component Documentation +----------------------- + +The Components documentation provides detailed documentation for each individual library component, including requirements, architecture, and design decisions: + +.. toctree:: + :maxdepth: 1 + + components/index + +.. needtable:: + :filter: docname is not None and docname.startswith("components/") + :style: table + :types: document + :columns: title;id;safety;security;status + :colwidths: 25,35,15,15,15 + :sort: title + +Architecture Modeling Example +----------------------------- + +An example of modeling architecture in Sphinx Needs can be found in + +.. toctree:: + :maxdepth: 1 + + examples/index + +Please note, that is not a template for architecture documentation, but an example of how to use Sphinx Needs for architecture modeling. The architecture documentation of the components and features of the module should follow the provided templates and guidelines. + + +.. _quick-start-building-testing: + +Quick Start - Building and Testing +================================== + +.. attention:: + This could also contain just a link to the repository's README + +To build the entire module: + +.. code-block:: bash + + bazel build //src/... + +To run all tests: + +.. code-block:: bash + + bazel test //... + +To run only unit tests: + +.. code-block:: bash + + bazel test //src/... + +To run only component or feature integration tests: + +.. code-block:: bash + + bazel test //tests/... + + +Module Build Configuration +-------------------------- + +The ``project_config.bzl`` file at the root of the module defines metadata used by Bazel macros. +This file controls build behavior and project-specific settings. It should follow the S-CORE definition. +See `S-CORE user guide for project_config.bzl <https://eclipse-score.github.io/score/main/users_guide/building_simple_application/first_score_module.html#project-config-bzl>`_ for details. + +The configuration enables conditional build behavior: + +* **Language-specific tools**: For C++ code, tools like ``clang-tidy`` are used; for Rust code, ``clippy`` is used +* **Safety level**: The ASIL level affects safety-related build settings and validation +* **Source code languages**: The build system optimizes for the configured languages + + +Release Notes +------------- + +The Module documentation covers the module-level view, including architecture, safety management documents, and the user manual. + +.. toctree:: + :maxdepth: 1 + + release_notes/index diff --git a/docs/module/index.rst b/docs/module/index.rst new file mode 100644 index 0000000..7123fec --- /dev/null +++ b/docs/module/index.rst @@ -0,0 +1,51 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Module +====== + +<Module sphinx documentation template snippets for the module. The directives and their parameters +should be updated according to the module and it's components.> + +.. code-block:: rst + + .. mod:: Module Name + :id: mod__module_name + :includes: comp__component_name_template + +Module View +----------- + +.. code-block:: rst + + .. mod_view_sta:: Module Name Static View + :id: mod_view_sta__feature_name__module_name + :includes: comp__component_name_template + + .. needarch:: + :scale: 50 + :align: center + + {{ draw_module(need(), needs) }} + +Module Documents +---------------- + +.. toctree:: + :maxdepth: 1 + + manuals/index + release/release_note + safety_mgt/index + security_mgt/index diff --git a/docs/module/manuals/api_description/.gitkeep b/docs/module/manuals/api_description/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docs/module/manuals/config/.gitkeep b/docs/module/manuals/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docs/module/manuals/examples/.gitkeep b/docs/module/manuals/examples/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docs/module/manuals/index.rst b/docs/module/manuals/index.rst new file mode 100644 index 0000000..3c905d7 --- /dev/null +++ b/docs/module/manuals/index.rst @@ -0,0 +1,23 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Manuals +####### + +.. toctree:: + :titlesonly: + + user_manual + safety_manual + security_manual diff --git a/docs/module/manuals/performance/.gitkeep b/docs/module/manuals/performance/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docs/module/manuals/safety_manual.rst b/docs/module/manuals/safety_manual.rst new file mode 100644 index 0000000..b054510 --- /dev/null +++ b/docs/module/manuals/safety_manual.rst @@ -0,0 +1,110 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Module Name] Safety Manual +=========================== + +.. note:: Document header + +.. document:: [Module Name] Safety Manual + :id: doc__mod_temp_module_name_safety_manual + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__module_safety_manual + :tags: template + +.. attention:: + The above directive must be updated according to your Module. + + - Modify ``Your Module Name`` to be your Module Name or put "Platform" + - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc__`` and succeeded by ``safety_manual`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +Introduction/Scope +------------------ +| <Describe here which module (or the platform) is covered by this manual.> + +Assumed Platform Safety Requirements +------------------------------------ +| For the <Project platform / module name> the following safety related stakeholder requirements are assumed to define the top level functionality (purpose) of the <Project platform / module name>. I.e. from these all the feature and component requirements implemented are derived. +| <List here all the stakeholder requirements, with safety not equal to QM, the module's components requirements are derived from. For the platform all are relevant.> + +Assumptions of Use +------------------ + +Assumptions on the Environment +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +| Generally the assumption of the project platform SEooC is that it is integrated in a safe system, i.e. the POSIX OS it runs on is qualified and also the HW related failures are taken into account by the system integrator, if not otherwise stated in the module's safety concept. +| <List here all the OS calls the project platform resp. module expects to be safe.> + +List of AoUs expected from the environment the platform / module runs on: + +.. needtable:: + :style: table + :columns: title;id;status + :colwidths: 25,25,25 + :sort: title + + results = [] + + for need in needs.filter_types(["aou_req"]): + if need and "environment" in need["tags"]: + results.append(need) + +.. attention:: + Make sure these AoU are here for a safety reason, i.e. every one "mitigates" a safety analysis entry. + +Assumptions on the User +^^^^^^^^^^^^^^^^^^^^^^^ +| As there is no assumption on which specific OS and HW is used, the integration testing of the stakeholder and feature requirements is expected to be performed by the user of the platform SEooC. Tests covering all stakeholder and feature requirements performed on a reference platform (tbd link to reference platform specification), reviewed and passed are included in the platform SEooC safety package. +| Additionally the components of the platform may have additional specific assumptions how they are used. These are part of every module documentation: <link to add>. Assumptions from components to their users can be fulfilled in two ways: +| 1. There are assumption which need to be fulfilled by all SW components, e.g. "every user of an IPC mechanism needs to make sure that he provides correct data (including appropriate ASIL level)" - in this case the AoU is marked as "platform". +| 2. There are assumption which can be fulfilled by a safety mechanism realized by some other project platform component and are therefore not relevant for an user who uses the whole platform. But those are relevant if you chose to use the module SEooC stand-alone - in this case the AoU is marked as "module". An example would be the "JSON read" which requires "The user shall provide a string as input which is not corrupted due to HW or QM SW errors." - which is covered when using together with safe project platform persistency feature. + +List of AoUs on the user of the platform or the module of this safety manual: + +Note: Platform safety manual collects all platform wide AoU (have to be fulfilled by the user for any feature). +Module safety manual collects all AoUs specific to a feature and its realizing components. +This means for every feature the user selects, the platform safety manual and the related module manual has to be considered. + +.. needtable:: + :style: table + :columns: title;id;status + :colwidths: 25,25,25 + :sort: title + + results = [] + + for need in needs.filter_types(["aou_req"]): + if need and "environment" not in need["tags"]: + results.append(need) + +.. attention:: + Make sure these AoU are here for a safety reason, i.e. every one "mitigates" a safety analysis entry. + +Safety concept of the SEooC +--------------------------- +| <Describe here the safety concept incl. which faults are taken care of, reactions of the implemented functions under anomalous operating conditions ... if this is not already documented sufficiently in the feature documentation "safety impact" section of all the features the module is used in.> + +Safety Anomalies +---------------- +| Anomalies (bugs in ASIL SW, detected by testing or by users, which could not be fixed) known before release are documented in the platform/module release notes <add link to release note>. + +References +---------- +| <link to the user manual> +| <other links> diff --git a/docs/module/manuals/security_manual.rst b/docs/module/manuals/security_manual.rst new file mode 100644 index 0000000..95e05d1 --- /dev/null +++ b/docs/module/manuals/security_manual.rst @@ -0,0 +1,102 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Module Name] Security Manual +============================= + +.. note:: Document header + +.. document:: [Module Name] Security Manual + :id: doc__mod_temp_module_name_security_manual + :status: draft + :version: 1 + :safety: ASIL_B + :security: YES + :realizes: wp__module_security_manual + :tags: template + +.. attention:: + The above directive must be updated according to your Module. + + - Modify ``Your Module Name`` to be your Module Name + - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc__`` and succeeded by ``_security_manual`` + - Adjust ``status`` to be ``valid`` + - Adjust ``security`` and ``tags`` according to your needs + +Introduction/Scope +------------------ +| <Describe here which module (or the platform) is covered by this manual.> + +Assumed Platform Security Requirements +-------------------------------------- +| For the <Project platform / module name> the following security related stakeholder requirements are assumed to define the top level functionality (purpose) of the <Project platform / module name>. I.e. from these all the feature and component requirements implemented are derived. +| <List here all the stakeholder requirements, with security relevance, the module's components requirements are derived from.> + +Assumptions of Use +------------------ + +Assumptions on the Environment +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +| The platform and its components are developed as Out of Context (OoC) with assumptions on the environment. + It is assumed that the platform/components are integrated in a secure system, i.e. qualified POSIX OS. + Also the HW related failures are taken into account by the system integrator, if not otherwise stated in the module's security concept. +| <List here all the OS calls the Project platform expects to be secure.> + +List of AoUs expected from the environment the platform / module runs on: + +.. needtable:: + :style: table + :columns: title;id;status + :colwidths: 25,25,25 + :sort: title + + results = [] + + for need in needs.filter_types(["aou_req"]): + if need and "environment" in need["tags"]: + results.append(need) + +Assumptions on the User +^^^^^^^^^^^^^^^^^^^^^^^ +| As there is no assumption on which specific OS and HW is used, the integration testing of the stakeholder and feature requirements is expected to be performed by the user of the platform OoC. Tests covering all stakeholder and feature requirements performed on a reference platform (tbd link to reference platform specification), reviewed and passed are included in the platform OoC security package. +| Additionally the components of the platform may have additional specific assumptions how they are used. These are part of every module documentation: <link to add>. Assumptions from components to their users can be fulfilled in two ways: +| 1. There are assumption which need to be fulfilled by all SW components, e.g. "every user of an IPC mechanism needs to make sure that he provides correct data (e.g. including appropriate security (access) control)" - in this case the AoU is marked as "platform". +| 2. There are assumption which can be fulfilled by a security control realized by some other Project platform component and are therefore not relevant for an user who uses the whole platform. But those are relevant if you chose to use the module OcC stand-alone - in this case the AoU is marked as "module". An example would be the "JSON read" which requires "The user shall provide a string as input which is not corrupted due to HW or QM SW errors." - which is covered when using together with safe <Project> platform persistency feature. + +List of AoUs on the user of the platform features or the module of this Security Manual: + +.. needtable:: + :style: table + :columns: title;id;status + :colwidths: 25,25,25 + :sort: title + + results = [] + + for need in needs.filter_types(["aou_req"]): + if need and "environment" not in need["tags"]: + results.append(need) + +Security concept of the OoC +---------------------------- +| <Describe here the security concept incl. which attack paths are taken care of, reactions of the implemented functions under threatened operating conditions ... if this is not already documented sufficiently in the feature documentation "security impact" section of all the features the module is used in.> + +Security Weaknesses, Vulnerabilities +------------------------------------ +| Weaknesses, vulnerabilities (bugs in security relevant SW, detected by testing or by users, which could not be fixed) known before release are documented in the platform/module release notes <add link to release note>. + +References +---------- +| <link to the user manual> +| <other links> diff --git a/docs/module/manuals/user_manual.rst b/docs/module/manuals/user_manual.rst new file mode 100644 index 0000000..d8b32b1 --- /dev/null +++ b/docs/module/manuals/user_manual.rst @@ -0,0 +1,148 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +.. _user_manual: + +[Module Name] User Manual +========================= + +.. document:: [Module Name] User Manual + :id: doc__user_manual + :status: draft + :version: 1 + :safety: QM + :security: NO + :realizes: wp__module_user_manual[version==1] + + +.. attention:: + Update the document metadata according to your needs. + +Overview +======== + +This user manual provides comprehensive guidance for using the [Your Module Name] module from an end customer perspective. +It covers installation, configuration, basic usage, and best practices for integrating this module +into your project. + +.. note:: + This is a template user manual. Replace placeholder text with actual module-specific information. + +For build and test of the module itself, please refer to the :ref:`quick-start-building-testing`. + +Environment Needs +================= + +Basic needed software environment for the module development and usage: + +* **C++**: C++17 or later +* **Rust**: 1.70 or later (if Rust support is included) +* **Build System**: Bazel 6.0 or later +* **Operating Systems**: Linux, QNX + +Dependencies +------------ + +[List key external dependencies, licenses, and version requirements] + +**Example:** + +* Standard library (STL/Core) +* [Other required libraries] + +See also MODULE.bazel files for more details on dependencies. + +Module Configuration Details +============================= + +<A detailed explanation of the module configuration which can be done by end users, including the purpose and effects of the settings might be explained in the files in the config subdirectory.> + +Configuration Effects +--------------------- + +<Explain how the configuration settings affect the module's behavior, performance, and integration with other components. Include examples of typical configurations and their outcomes.> + + +Examples +======== + +<Useful examples and tutorials should be provided in the ``examples/`` directory. Link to specific examples here.> + +API Reference +============= + +For complete and detailed API documentation and descriptions, refer to the API documentation in the ``api_description/`` directory. + +Performance Considerations +========================== + +This section covers performance characteristics, optimization strategies, and resource requirements. +Refer to the ``performance/`` directory for detailed performance guides and benchmarks. + +Integration Guidelines +====================== + +Integrating with Your Project +------------------------------ + +1. Add the module to your Bazel workspace: + + .. code-block:: python + + # In your MODULE.bazel + bazel_dep(name = "module_template", version = "1.0") + +2. Reference in your build files: + + .. code-block:: python + + cc_library( + name = "my_target", + deps = ["@module_template//score/component_example:component"], + ) + +3. Include headers and compile your code + + +Version History, Compatibility, and Troubleshooting +=================================================== + +For comprehensive information on the following topics, refer to :need:`doc__mod_temp_module_name_release_note`: + +* Version history and changes +* Compatibility notes and upgrade instructions +* Known issues and limitations +* Troubleshooting tips and solutions +* Security vulnerabilities (CVEs) + +Safety and Security +=================== + +**Safety-Critical Usage**: If you are using this module in a safety-critical context, +please refer to :doc:`safety_manual` for detailed safety requirements and guidelines. + +**Security Considerations**: For information about security aspects and requirements, +please refer to :doc:`security_manual`. + +License +======= + +This module is licensed under the Apache License Version 2.0. +See the LICENSE file in the repository for full license text. + +Feedback and Contributions +========================== + +Your feedback and contributions are welcome! Please report issues or suggestions through the +project's issue tracker or contribute directly to the repository. diff --git a/docs/module/release/release_note.rst b/docs/module/release/release_note.rst new file mode 100644 index 0000000..d506fa3 --- /dev/null +++ b/docs/module/release/release_note.rst @@ -0,0 +1,121 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Module Name] Release Note +========================== + +.. note:: Document header + +.. document:: [Module Name] Release Note + :id: doc__mod_temp_module_name_release_note + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__module_sw_release_note + :tags: template + +.. attention:: + The above directive must be updated according to your Module. + + - Modify ``Your Module Name`` to be your Module Name + - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc_`` and succeeded by ``release_note`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + + + +| **Module Name:** [Module Name] +| **Release Tag:** vX.Y.Z +| **Origin Release Tag:** vU.V.W +| **Release Date:** YYYY-MM-DD + + +Overview +^^^^^^^^ + +This document provides an overview of the changes, improvements, and bug fixes included in the software module release version vX.Y.Z +as compared to the module's origin release (which is usually the previous release). + +Disclaimer +---------- + +This release note does not "release for production", as it does not come with a safety argumentation and a performed safety assessment. +The work products compiled in the safety package are created with care according to a process satisfying standards, but the as the project, +being a non-profit and open source organization, can not take over any liability for its content. + +Changes to the Module +^^^^^^^^^^^^^^^^^^^^^ + +New Features +------------ + +- **Feature 1:** Brief description of the new feature. +- **Feature 2:** Brief description of the new feature. +- **Feature 3:** Brief description of the new feature. + +Improvements +------------ + +- **Improvement 1:** Brief description of the improvement. +- **Improvement 2:** Brief description of the improvement. +- **Improvement 3:** Brief description of the improvement. + +Bug Fixes +--------- + +- **Bug 1:** Brief description of the bug fix. +- **Bug 2:** Brief description of the bug fix. +- **Bug 3:** Brief description of the bug fix. + +Other changes by Label +---------------------- + +- **Label 1/Refactor 1:** Brief description of the change. +- **Label 2/Refactor 2:** Brief description of the change. +- **Label 3/Refactor 3:** Brief description of the change. + +Compatibility +^^^^^^^^^^^^^ + +- **Dependencies:** List any dependencies and their versions. + +Performed Verification +^^^^^^^^^^^^^^^^^^^^^^ + +This release note is based on the verification as documented in module verification report +:need:`doc__mod_temp_verification_report`. + +Known Issues +------------ + +- **Issue 1:** Brief description of the known issue. Justification regarding safety impact. +- **Issue 2:** Brief description of the known issue. Justification regarding safety impact. +- **Issue 3:** Brief description of the known issue. Justification regarding safety impact. + +Known Vulnerabilities +--------------------- + +- **CVE 1:** Brief description of the known CVE. Justification regarding security impact. +- **CVE 2:** Brief description of the known CVE. Justification regarding security impact. +- **CVE 3:** Brief description of the known CVE. Justification regarding security impact. + +Upgrade Instructions +^^^^^^^^^^^^^^^^^^^^ + +1. **Step 1:** Description of the first step. +2. **Step 2:** Description of the second step. +3. **Step 3:** Description of the third step. + +For any questions or support, please contact the *Project lead* or raise an issue/discussion. diff --git a/docs/module/safety_mgt/index.rst b/docs/module/safety_mgt/index.rst new file mode 100644 index 0000000..87f2a1a --- /dev/null +++ b/docs/module/safety_mgt/index.rst @@ -0,0 +1,24 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Safety Management +################# + +.. toctree:: + :titlesonly: + + module_safety_plan + module_safety_plan_fdr + module_safety_package_fdr + module_safety_analysis_fdr diff --git a/docs/module/safety_mgt/module_safety_analysis_fdr.rst b/docs/module/safety_mgt/module_safety_analysis_fdr.rst new file mode 100644 index 0000000..a56cad6 --- /dev/null +++ b/docs/module/safety_mgt/module_safety_analysis_fdr.rst @@ -0,0 +1,173 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + + +[Module Name] Safety Analysis Checklist +======================================= + +.. document:: [Module Name] Safety Analysis Checklist + :id: doc__mod_temp_module_name_safety_analysis_fdr + :status: draft + :version: 1 + :safety: ASIL_B + :security: YES + :realizes: wp__fdr_reports + :tags: template + +.. attention:: + The above directive must be updated according to your Module. + + - Modify ``Your Module Name`` to be your Module Name + - Modify ``id`` to be your Module Name in lower snake case preceded by ``doc__`` and followed by ``_safety _analysis_fdr`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety``, ``security`` and ``tags`` according to your needs + + +**Purpose** + +The purpose of this Safety Analysis (DFA and FMEA) formal review report template is to collect the topics to be checked during verification of the Safety Analysis. + +**Conduct** + +As described in :need:`wf__p_formal_rv`, the formal document review is performed by an "external" safety manager: + +- reviewer: **<committer with safety manager skills explicitly named here>** +- scope: **<describe the scope of the review here, e.g. "the safety analysis of the module and its results">** + +**Checklist** + +Please note that it is mandatory to fill in the "passed" column with "yes" or "no" for each checklist item and additional to add in the remarks why it is passed or not passed. In case of "no" an issue link to the issue tracking system has to be added in the last column. See also :need:`doc_concept__wp_inspections` for further information about reviews in general and inspection in particular. + + +.. list-table:: General Checklist + :header-rows: 1 + :widths: 10,30,10,30,20 + + * - ID + - Safety analysis activity + - Compliant to ISO 26262? + - Reference + - Comment + + * - Gen 1 + - Are the safety analysis performed according to the defined process and templates? See :need:`gd_req__saf_structure` and also :need:`gd_temp__feat_saf_fmea` and :need:`gd_temp__feat_saf_dfa` + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_841>`, :need:`[[title]] <std_req__iso26262__analysis_849>`, :need:`[[title]] <std_req__iso26262__analysis_8410>`, :need:`[[title]] <std_req__iso26262__analysis_748>` + - <Rationale for result> + + * - Gen 2 + - Are the safety analysis performed in a systematic way to identify the potential dependent failures / failure modes and their effects? Are the failure effect and the mitigation described? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_849>`, :need:`[[title]] <std_req__iso26262__analysis_8410>` + - <Ensured and checked by application of the defined templates and processes> + + * - Gen 3 + - Is the result of the safety analysis indicate if the safety requirements are complied? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_842>` + - <Rationale for result> + + * - Gen 4 + - Are the mitigations effective and implemented? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_844>` + - <Rationale for result> + + * - Gen 5 + - Are all AoU's that are used as mitigation's created and covered in the safety manual? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_845>` + - <Rationale for result> + + * - Gen 6 + - Are additional safety-related test cases determined by potential results of the safety analyses? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_847>` + - <Rationale for result> + + +.. list-table:: DFA Checklist + :header-rows: 1 + :widths: 10,30,10,30,20 + + * - ID + - Safety analysis activity + - Compliant to ISO 26262? + - Reference + - Comment + + * - DFA 1 + - Are the potential dependent failures identified by performing a DFA? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_741>` + - <Rationale for result> + + * - DFA 2 + - Is it plausible that each potential identified dependent failure that has been identified, will lead to a dependent failure which cause a violation of FFI? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_742>` + - <Rationale for result> + + * - DFA 3 + - Are applicable operational situations and operating modes considered? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_743>` + - <Rationale for result> + + * - DFA 4 + - Are the failure initiators :need:`[[title]] <gd_guidl__dfa_failure_initiators>` suitable and applied? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_744>` + - <Rationale for result> + + * - DFA 5 + - Is a rationale provided for each identified potential dependent failure? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_745>` + - <Rationale for result> + + * - DFA 6 + - Are measures defined to resolve the identified potential dependent failures? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_746>`, :need:`[[title]] <std_req__iso26262__analysis_747>`, :need:`[[title]] <std_req__iso26262__analysis_843>` + - <Rationale for result> + + * - DFA 7 + - Can be the required level of independence shown for the identified potential dependent failures? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_748>` + - <Rationale for result> + + +.. list-table:: FMEA Checklist + :header-rows: 1 + :widths: 10,30,10,30,20 + + * - ID + - Safety analysis activity + - Compliant to ISO 26262? + - Reference + - Comment + + * - FMEA 1 + - Are the fault models suitable and applied for the FMEA? See :need:`gd_guidl__fault_models` and also :need:`gd_req__saf_structure` + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_846>` + - <Rationale for result> + + * - FMEA 2 + - Are measures defined to resolve the identified faults? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__analysis_843>` + - <Rationale for result> diff --git a/docs/module/safety_mgt/module_safety_package_fdr.rst b/docs/module/safety_mgt/module_safety_package_fdr.rst new file mode 100644 index 0000000..ddaec27 --- /dev/null +++ b/docs/module/safety_mgt/module_safety_package_fdr.rst @@ -0,0 +1,89 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Module Name] Safety Package Formal Review Report +================================================= + +.. note:: Document header + +.. document:: [Module Name] Safety Package Formal Review + :id: doc__mod_temp_module_name_safety_package_fdr + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__fdr_reports + :tags: template + +.. attention:: + The above directive must be updated according to your Module. + + - Modify ``Your Module Name`` to be your Module Name + - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc_`` and succeeded by ``safety_package_fdr`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + + +**Purpose** + +The purpose of this review checklist is to report status of the formal review for the safety package. + +**Conduct** +As described in :need:`wf__p_formal_rv`, the formal document review is performed by an "external" safety manager: + +- reviewer: <committer with safety manager skills explicitly named here> + +**Checklist** + +See also the review concept for further information about reviews in general and inspection in particular. + +.. list-table:: Safety Package Checklist + :header-rows: 1 + + * - Id + - Safety package activity + - Compliant to ISO 26262? + - Reference + - Comment + + * - 1 + - Is a safety package provided which matches the safety plan (i.e. all planned work products referenced)? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6481>` + - <Rationale for result> + + * - 2 + - Is the argument how functional safety is achieved, provided in the safety package, plausible and sufficient? + - NO + - :need:`[[title]] <std_req__iso26262__management_6481>` + - The argument is intentionally not provided by the project. + + * - 3 + - Are the referenced work products available? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6482>` + - <Rationale for result> + + * - 4 + - Are the referenced work products in released state, including the process safety audit? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6482>` + :need:`[[title]] <std_req__iso26262__management_6469>` + - <Rationale for result> + + * - 5 + - If safety related deviations from the process or safety concept are documented, are these argued understandably? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6481>` + - <Rationale for result> diff --git a/docs/module/safety_mgt/module_safety_plan.rst b/docs/module/safety_mgt/module_safety_plan.rst new file mode 100644 index 0000000..e6e21e8 --- /dev/null +++ b/docs/module/safety_mgt/module_safety_plan.rst @@ -0,0 +1,344 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Module Name] Safety Plan +========================= + +.. note:: Document header + +.. document:: [Module Name] Safety Plan + :id: doc__mod_temp_module_name_safety_plan + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__module_safety_plan + :tags: template + +.. attention:: + The above directive must be updated according to your Module. + + - Modify ``Your Module Name`` to be your Module Name + - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc_`` and succeeded by ``safety_plan`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +:note: The module safety plan shall be continuously maintained during the project. + Deviations to the module safety plan should be documented :ref:`here <module_name_safety_package_deviations>` + +Functional Safety Management Context +==================================== + +This Safety Plan adds to the project's :need:`wp__platform_safety_plan` all the module development relevant work products needed for ISO 26262 conformity. + +Functional Safety Management Scope +================================== + +This Safety Plan's scope is a SW module of the SW platform <link to module documentation in platform/modules/<modulename>/index.rst>. +The module consists of one or more SW components and will be qualified as a SEooC. +Training_Module is classified as QM; no ASIL is allocated to the module. + +Functional Safety Management Roles +================================== + +.. list-table:: Module roles + :header-rows: 1 + + * - Role + - Assignee + + * - Safety Manager + - <link to Module's Safety Manager assignment or name> + + * - Module Project Manager + - <link to Module's Project Manager assignment or name> + +Tailoring +========= + +Additional to the tailoring in the SW platform project as defined in the project's :need:`wp__platform_safety_plan` we define here the additional tailoring on module level. + +- Excluded for this module are additionally the following work products (and their related requirements): + + - <work product/requirement> - <Argumentation why it is not needed or replaced by another work product or activity.> + +Functional Safety Module Work products +====================================== + +One set of work products for the module and one set for each component of the module: + +Module Work products List +------------------------- + +.. list-table:: Module Work products + :header-rows: 1 + + * - Work product Id + - Link to process + - Process status + - Link to WP + + * - :need:`wp__module_safety_plan` + - :need:`gd_guidl__saf_plan_definitions` + - :ndf:`copy('status', need_id='gd_guidl__saf_plan_definitions')` + - this document + + * - :need:`wp__module_safety_package` + - :need:`gd_guidl__saf_package` + - :ndf:`copy('status', need_id='gd_guidl__saf_package')` + - this document (including the linked documentation) + + * - :need:`wp__fdr_reports` (module Safety Plan) + - :need:`gd_chklst__safety_plan` + - :ndf:`copy('status', need_id='gd_chklst__safety_plan')` + - :need:`doc__mod_temp_module_name_safety_plan_fdr` + + * - :need:`wp__fdr_reports` (module Safety Package) + - :need:`gd_chklst__safety_package` + - :ndf:`copy('status', need_id='gd_chklst__safety_package')` + - :need:`doc__mod_temp_module_name_safety_package_fdr` + + * - :need:`wp__fdr_reports` (module's Safety Analyses & DFA) + - :need:`gd_chklst__safety_analysis` + - :ndf:`copy('status', need_id='gd_chklst__safety_analysis')` + - :need:`doc__mod_temp_module_name_safety_analysis_fdr` + + * - :need:`wp__audit_report` + - performed by external experts + - n/a + - <Link to WP> + + * - :need:`wp__module_safety_manual` + - :need:`gd_temp__safety_manual` + - :ndf:`copy('status', need_id='gd_temp__safety_manual')` + - :need:`doc__mod_temp_module_name_safety_manual` + + * - :need:`wp__verification_module_ver_report` + - :need:`gd_temp__mod_ver_report` + - :ndf:`copy('status', need_id='gd_temp__mod_ver_report')` + - :need:`doc__mod_temp_verification_report` + + * - :need:`wp__module_sw_release_note` + - :need:`gd_temp__rel_mod_rel_note` + - :ndf:`copy('status', need_id='gd_temp__rel_mod_rel_note')` + - :need:`doc__mod_temp_module_name_release_note` + +Component <name> Work products List +----------------------------------- + +.. list-table:: Component <name> Work products + :header-rows: 1 + + * - Work product Id + - Link to process + - Process status + - Link to WP + + * - :need:`wp__requirements_comp` + - :need:`gd_temp__req_comp_req` + - :ndf:`copy('status', need_id='gd_temp__req_comp_req')` + - :need:`doc__mod_temp_component_name_requirements` + + * - :need:`wp__requirements_comp_aou` + - :need:`gd_temp__req_aou_req` + - :ndf:`copy('status', need_id='gd_temp__req_aou_req')` + - :need:`doc__mod_temp_component_name_requirements` + + * - :need:`wp__requirements_inspect` + - :need:`gd_chklst__req_inspection` + - :ndf:`copy('status', need_id='gd_chklst__req_inspection')` + - :need:`doc__mod_temp_component_name_req_inspection` + + * - :need:`wp__component_arch` + - :need:`gd_temp__arch_comp` + - :ndf:`copy('status', need_id='gd_temp__arch_comp')` + - :need:`doc__mod_temp_component_name_architecture` + + * - :need:`wp__sw_arch_verification` + - :need:`gd_chklst__arch_inspection_checklist` + - :ndf:`copy('status', need_id='gd_chklst__arch_inspection_checklist')` + - :need:`doc__mod_temp_component_name_arc_inspection` + + * - :need:`wp__sw_component_fmea` + - :need:`gd_temp__comp_saf_fmea` + - :ndf:`copy('status', need_id='gd_temp__comp_saf_fmea')` + - :need:`doc__mod_temp_component_name_fmea` + + * - :need:`wp__sw_component_dfa` + - :need:`gd_temp__comp_saf_dfa` + - :ndf:`copy('status', need_id='gd_temp__comp_saf_dfa')` + - :need:`doc__mod_temp_component_name_dfa` + + * - :need:`wp__sw_implementation` + - :need:`gd_guidl__implementation` + - :ndf:`copy('status', need_id='gd_guidl__implementation')` + - :need:`doc__mod_temp_component_name_detailed_design` & <Link to code> + + * - :need:`wp__verification_sw_unit_test` + - :need:`gd_guidl__verification_guide` + - :ndf:`copy('status', need_id='gd_guidl__verification_guide')` + - <Link to WP> + + * - :need:`wp__sw_implementation_inspection` + - :need:`gd_chklst__impl_inspection_checklist` + - :ndf:`copy('status', need_id='gd_chklst__impl_inspection_checklist')` + - :need:`doc__mod_temp_component_name_impl_inspection` + + * - :need:`wp__verification_comp_int_test` + - :need:`gd_guidl__verification_guide` + - :ndf:`copy('status', need_id='gd_guidl__verification_guide')` + - <Link to WP> + + * - :need:`wp__sw_component_class` + - :need:`gd_guidl__component_classification` + - :ndf:`copy('status', need_id='gd_guidl__component_classification')` + - :need:`doc__mod_temp_component_name_comp_class` + +Note: In case the component is a new development, :need:`wp__sw_component_class` shall be removed from the above list (and also from the folders). +In case an OSS element is used in the module, part 6 has to be filled out. + +OSS (sub-)component qualification plan +-------------------------------------- + +For the selected OSS component the following work products will be implemented (and why): + +If the OSS element is classified as + - component, then the below table shall match the above, adding the reasoning for tailoring of work products according to the OSS component classification. + - lower level component, then no work products additional to the component’s will be planned and activities below are part of the component’s issues. + +.. list-table:: OSS (sub-)component <name> Work products + :header-rows: 1 + + * - Work product Id + - Link to process + - Reasoning for tailoring + + * - :need:`wp__requirements_comp` + - :need:`gd_temp__req_comp_req` + - Always needed (for Q and QR classification) and also improves process Id 2 + + * - :need:`wp__requirements_comp_aou` + - :need:`gd_temp__req_aou_req` + - Always needed (for Q and QR classification) and also improves process Id 5 + + * - :need:`wp__requirements_inspect` + - :need:`gd_chklst__req_inspection` + - <Reasoning for tailoring> + + * - :need:`wf__cr_mt_comparch` + - :need:`gd_temp__arch_comp` + - <Reasoning for tailoring, needed for example in case of deficits in process Id 3&4 and complexity Ids 1&4> + + * - :need:`wp__sw_component_fmea` + - :need:`gd_temp__comp_saf_fmea` + - <Reasoning for tailoring, could help arguing too high cyclomatic complexity covered by safety mechanisms> + + * - :need:`wp__sw_arch_verification` + - :need:`gd_chklst__arch_inspection_checklist` + - <Reasoning for tailoring, needed if also wf__cr_mt_comparch is required> + + * - :need:`wp__sw_implementation` + - n/a + - Tailored - If source code is modified, this is not a OSS qualification any more. + + * - :need:`wp__verification_sw_unit_test` + - :need:`gd_guidl__verification_guide` + - <Reasoning for tailoring, can improve deficits in process Id 6 and complexity Id 3> + + * - :need:`wp__sw_implementation_inspection` + - :need:`gd_chklst__impl_inspection_checklist` + - <Reasoning for tailoring, can improve deficits in process Id 6 and complexity Id 2> + + * - :need:`wp__verification_comp_int_test` + - :need:`gd_guidl__verification_guide` + - Always needed (for Q and QR classification) + + * - :need:`wp__sw_component_class` + - :need:`gd_guidl__component_classification` + - Always needed as basis for tailoring. + +Link to project planning +------------------------ + +<add here a link to your module's planning for the above work products, e.g. a link to a ticket.> + +Module Safety Package +===================== + +To create the safety package (according to :need:`gd_guidl__saf_package`) the following +documents and work products status have to go to "valid" (after the relevant verification were performed). + +Module Documents Status +----------------------- + +For all the work product documents the status can be seen by following the "Link to WP". +A summary of the status is also documented in the project's documentation management plan. + +See <add here the section reference to the documentation management plan> + +Component Documents Status +-------------------------- + +For all the work product documents the status can be seen by following the "Link to WP". +A summary of the status is also documented in the project's documentation management plan. + +See <add here the section reference to the documentation management plan> + +Component Requirements Status +----------------------------- + +.. needtable:: + :filter: docname is not None and "component_name" in docname and "requirements" in docname + :style: table + :types: comp_req + :tags: component_name + :columns: id;status;tags + :colwidths: 25,25,25 + :sort: title + +Component AoU Status +-------------------- + +.. needtable:: + :filter: docname is not None and "component_name" in docname and "requirements" in docname + :style: table + :types: aou_req + :tags: component_name + :columns: id;status;tags + :colwidths: 25,25,25 + :sort: title + +Component Architecture Status +----------------------------- + +.. needtable:: + :filter: docname is not None and "component_name" in docname and "architecture" in docname + :style: table + :types: comp_arc_sta; comp_arc_dyn + :tags: component_name + :columns: id;status;tags + :colwidths: 25,25,25 + :sort: title + +.. _module_name_safety_package_deviations: + +Deviations from Module Safety Plan +---------------------------------- + +The following deviations from the module safety plan are present in the module safety package. +These are deviations from planned processes execution and/or workproduct results, +safety anomalies in the sense of known bugs in the software are reported in the release notes. + +<Describe here the deviations, whether they have an impact on module's safety functions, +how these can be mitigated or argued and if and when a resolution is planned.> diff --git a/docs/module/safety_mgt/module_safety_plan_fdr.rst b/docs/module/safety_mgt/module_safety_plan_fdr.rst new file mode 100644 index 0000000..a13861d --- /dev/null +++ b/docs/module/safety_mgt/module_safety_plan_fdr.rst @@ -0,0 +1,129 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Module Name] Safety Plan Formal Review Report +============================================== + +.. note:: Document header + +.. document:: [Module Name] Safety Plan Formal Review + :id: doc__mod_temp_module_name_safety_plan_fdr + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__fdr_reports + :tags: template + +.. attention:: + The above directive must be updated according to your Module. + + - Modify ``Your Module Name`` to be your Module Name + - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc_`` and succeeded by ``safety_plan_fdr`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +**Purpose** + +The purpose of this safety plan formal review checklist is to report status of the review for the safety plan. + +**Conduct** +As described in :need:`wf__p_formal_rv`, the formal document review is performed by an "external" safety manager: + +- reviewer: <committer with safety manager skills explicitly named here> + +**Checklist** + +See also the review concept for further information about reviews in general and inspection in particular. + +.. list-table:: Safety Plan Checklist + :header-rows: 1 + + * - Id + - Safety plan activity + - Compliant to ISO 26262? + - Reference + - Comment + + * - 1 + - Is the rationale for the safety work products tailoring included? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6451>` + :need:`[[title]] <std_req__iso26262__management_6455>` + :need:`[[title]] <std_req__iso26262__management_6457>` + :need:`[[title]] <std_req__iso26262__management_6467>` + - <Rationale for result> + + * - 2 + - Is impact analysis planned in case of re-use of SW (needed for every release following the first formal release)? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6452>` + - <Rationale for result> + + * - 3 + - Does the safety plan define all needed activities for safety management (incl. formal document review and Safety Audit)? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6465>` + :need:`[[title]] <std_req__iso26262__management_6491>` + :need:`[[title]] <std_req__iso26262__management_64111>` + - <Rationale for result> + + * - 4 + - Does the safety plan define all needed activities for System and SW development, integration and verification? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6465>` + - <Rationale for result> + + * - 5 + - Does the safety plan define all needed activities for safety analysis and DFA? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6465>` + - <Rationale for result> + + * - 6 + - Does the safety plan define all needed activities for supporting processes (incl. tool mgt)? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6465>` + - <Rationale for result> + + * - 7 + - Does the safety plan document a responsible for all activities? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6463>` + - <Rationale for result> + + * - 8 + - If OSS software components is used, is it planned to be qualified? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6455>` + - <Rationale for result> + + * - 9 + - Is a safety manager and a project manager appointed for the project? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6461>` + :need:`[[title]] <std_req__iso26262__management_6462>` + - <Rationale for result> + + * - 10 + - Is safety plan sufficiently linked to the project plan? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6464>` + - <Rationale for result> + + * - 11 + - Is safety plan updated iteratively to show the progress? + - [YES | NO ] + - :need:`[[title]] <std_req__iso26262__management_6468>` + - <Rationale for result> diff --git a/docs/module/security_mgt/index.rst b/docs/module/security_mgt/index.rst new file mode 100644 index 0000000..4d292cc --- /dev/null +++ b/docs/module/security_mgt/index.rst @@ -0,0 +1,23 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Security Management +################### + +.. toctree:: + :titlesonly: + + module_security_plan + module_security_plan_fdr + module_security_package_fdr diff --git a/docs/module/security_mgt/module_security_package_fdr.rst b/docs/module/security_mgt/module_security_package_fdr.rst new file mode 100644 index 0000000..0feef1f --- /dev/null +++ b/docs/module/security_mgt/module_security_package_fdr.rst @@ -0,0 +1,82 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Module Name] Security Package Formal Review Report +=================================================== + +.. note:: Document header + +.. document:: [Module Name] Security Package Formal Review + :id: doc__mod_temp_module_name_sec_pkg_fdr + :status: draft + :version: 1 + :safety: ASIL_B + :security: YES + :realizes: wp__fdr_reports + :tags: template + +.. attention:: + The above directive must be updated according to your Module. + + - Modify ``Your Module Name`` to be your Module Name + - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc_`` and succeeded by ``safety_package_fdr`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + + +**1. Purpose** + +The purpose of this review checklist is to report status of the formal review for the Security Package. + +**2. Checklist** + +See also the review concept for further information about reviews in general and inspection in particular. + +.. list-table:: Security Package Checklist + :header-rows: 1 + + * - Id + - Security Package activity + - Compliant to ISO SAE 21434? + - Comment + + * - 1 + - Is a Security Package provided which matches the Security Plan (i.e. all planned work products referenced)? + - [YES | NO ] + - <Rationale for result> + + * - 2 + - Is the argument how security is achieved, provided in the Security Package, plausible and sufficient? + - NO + - The argument is intentionally not provided by the Project. + + * - 3 + - Are the referenced work products available? + - [YES | NO ] + - <Rationale for result> + + * - 4 + - Are the referenced work products in released state, including the Process Security Audit? + - NO + - Security Audit is currently not planned, tailored out. + + * - 5 + - If security related deviations from the process or security concept are documented, are these argued understandably? + - [YES | NO ] + - <Rationale for result> + + * - 6 + - Are the requirements for post-development available? + - [YES | NO ] + - <Rationale for result> diff --git a/docs/module/security_mgt/module_security_plan.rst b/docs/module/security_mgt/module_security_plan.rst new file mode 100644 index 0000000..32f0908 --- /dev/null +++ b/docs/module/security_mgt/module_security_plan.rst @@ -0,0 +1,221 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Module Name] Security Plan +=========================== + +.. note:: Document header + +.. document:: [Module Name] Security Plan + :id: doc__mod_temp_module_name_security_plan + :status: draft + :version: 1 + :safety: ASIL_B + :security: YES + :realizes: wp__module_security_plan + :tags: template + +.. attention:: + The above directive must be updated according to your Module. + + - Modify ``Your Module Name`` to be your Module Name + - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc_`` and succeeded by ``security_plan`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + + + | **1. Security Management Context** + | This Security Plan adds to the process security management guidance all the module development relevant work products needed for ISO SAE 21434 conformity. + | + | **2. Security Management Scope** + | This Security Plan's scope is a SW module of the SW platform <link to module documentation in platform/modules/<modulename>/index.rst>. + | The module consists of one or more SW components and will be qualified as a OoC. + | + | **3. Security Management Roles** + + +---------------------------+--------------------------------------------------------------+ + | Security Manager | <link to Module's Security Manager assignment or name> | + +---------------------------+--------------------------------------------------------------+ + | Project Manager | <link to Module's Project Lead assignment or name> | + +---------------------------+--------------------------------------------------------------+ + + | **4. Tailoring** + | Additional to the tailoring in the SW platform project as defined in the process security management guidance we define here the additional tailoring on module level. + | + | - Excluded for this module are additionally the following work products (and their related requirements): + | - :need:`std_req__isosae21434__assessment_15621`: cybersecurity assessment - Not performed on module level; the cybersecurity assessment is done once for the platform. + | + | **5. Security Module Work Products** + | One set of work products for the module and one set for each component of the module: + +.. list-table:: Module Work Products + :header-rows: 1 + + * - Work Product Id + - Link to process + - Process status + - Link to issue + - Link to WP + - WP status + + * - :need:`wp__module_security_plan` + - Security management guideline + - <automated> + - <Link to issue> + - this document + - see above + + * - :need:`wp__module_security_package` + - Security management guideline + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__fdr_reports` (Module Security Plan) + - :need:`gd_chklst__security_plan` + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__fdr_reports` (Module Security Package) + - :need:`Security Package Formal Review Checklist <gd_chklst__security_package>` + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__fdr_reports` (Module's Security Analyses) + - Security Analysis FDR tbd + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__audit_report_security` + - performed by external experts + - n/a + - <Link to issue> + - <Link to WP> + - <WP status (manual)> + + * - :need:`wp__module_security_manual` + - :need:`gd_temp__module_security_manual` + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__verification_module_ver_report` + - Verification process guidance + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__module_sw_release_note` + - Release management guidance + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__sw_module_sbom` + - Security management guidance + - not started + - <Link to issue> + - <Link to WP> + - <automated> + + +.. list-table:: Component <name> Work Products + :header-rows: 1 + + * - Work Product Id + - Link to process + - Process status + - Link to issue + - Link to WP + - WP status + + * - :need:`wp__requirements_comp` + - <Link to process> + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__requirements_comp_aou` + - <Link to process> + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__requirements_inspect` + - <Link to process> + - <automated> + - n/a + - Checklist used in Pull Request Review + - n/a + + * - :need:`wp__component_arch` + - <Link to process> + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__sw_component_security_analysis` + - <Link to process> + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__sw_arch_verification` + - <Link to process> + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__sw_implementation` + - <Link to process> + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__verification_sw_unit_test` + - <Link to process> + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__sw_implementation_inspection` + - <Link to process> + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> + + * - :need:`wp__verification_comp_int_test` + - <Link to process> + - <automated> + - <Link to issue> + - <Link to WP> + - <automated> diff --git a/docs/module/security_mgt/module_security_plan_fdr.rst b/docs/module/security_mgt/module_security_plan_fdr.rst new file mode 100644 index 0000000..fe86db3 --- /dev/null +++ b/docs/module/security_mgt/module_security_plan_fdr.rst @@ -0,0 +1,125 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Module Name] Security Plan Formal Review Report +================================================ + +.. note:: Document header + +.. document:: [Module Name] Security Plan Formal Review + :id: doc__mod_temp_module_name_security_plan_fdr + :status: draft + :version: 1 + :safety: ASIL_B + :security: YES + :realizes: wp__fdr_reports + :tags: template + +.. attention:: + The above directive must be updated according to your Module. + + - Modify ``Your Module Name`` to be your Module Name + - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc_`` and succeeded by ``_security_plan_fdr`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +**1. Purpose** + +The purpose of this review checklist is to provide a guidence for reviewing the Security Plans for each module. +Each Module Security Plan shall have one checklist filled. + +**2. Checklist** + +See also the review concept for further information about reviews in general and inspection in particular. + +.. list-table:: Security Plan Checklist + :header-rows: 1 + + * - Id + - Security Plan activity + - Compliant to ISO SAE 21434? + - Comment + + * - 1 + - Is the rationale for the Security Work Products tailoring included? + - [YES | NO ] + - <Rationale for result> + + * - 2 + - Is impact analysis planned in case of re-use of SW (needed for every release following the first formal release)? + - [YES | NO ] + - <Rationale for result> + + * - 3 + - Does the Security Plan define all needed activities for security management (including review and security audit)? + - [YES | NO ] + - <Rationale for result> + + * - 4 + - Does the Security Plan define all needed activities for SW development, integration and verification? + - [YES | NO ] + - <Rationale for result> + + * - 5 + - Does the Security Plan define all needed activities for security analysis? + - [YES | NO ] + - <Rationale for result> + + * - 6 + - Does the Security Plan define all needed activities for supporting processes (incl. tool mgt)? + - [YES | NO ] + - <Rationale for result> + + * - 7 + - Does the Security Plan document a responsible for all activities? + - [YES | NO ] + - <Rationale for result> + + * - 8 + - If OSS software components is used, is it planned to be qualified? + - [YES | NO ] + - <Rationale for result> + + * - 9 + - Is a Security Manager and a Project Lead appointed for the project? + - [YES | NO ] + - <Rationale for result> + + * - 10 + - Is Security Plan sufficiently linked to the Project Plan? + - [YES | NO ] + - <Rationale for result> + + * - 11 + - Is Security Plan updated iteratively to show the progress? + - [YES | NO ] + - <Rationale for result> + + * - 12 + - If Out-of-context software components is used, are the assumptions documented? + - [YES | NO ] + - <Rationale for result> + + * - 13 + - Does the Security Plan define all needed activities for SBOM generation? + - [YES | NO ] + - <Rationale for result> + + * - 14 + - Does the Security Plan define regular vulnerability scans for the generated SBOM? + - [YES | NO ] + - <Rationale for result> + +.. note:: + Off-the-shelf means existing software which may used without modification, e.g. existing OSS diff --git a/docs/participants/index.rst b/docs/participants/index.rst new file mode 100644 index 0000000..062ca42 --- /dev/null +++ b/docs/participants/index.rst @@ -0,0 +1,21 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Participants +============ + +One page per participant, ``<name>.rst`` in this folder. Add your page to the list below. + +.. toctree:: + :maxdepth: 1 diff --git a/docs/release_notes/index.rst b/docs/release_notes/index.rst new file mode 100644 index 0000000..7a53881 --- /dev/null +++ b/docs/release_notes/index.rst @@ -0,0 +1,22 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Release notes +============= + +.. toctree:: + :maxdepth: 1 + :caption: Content + + release_note_v_0_1_0.rst diff --git a/docs/release_notes/release_note_v_0_1_0.rst b/docs/release_notes/release_note_v_0_1_0.rst new file mode 100644 index 0000000..56c9739 --- /dev/null +++ b/docs/release_notes/release_note_v_0_1_0.rst @@ -0,0 +1,182 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Release Note v0.1.0 +=================== + +.. document:: Module Template Release Note v0.1.0 + :id: doc__module_template_release_note_v010 + :status: valid + :safety: ASIL_B + :version: 1 + :security: YES + :realizes: wp__module_sw_release_note + :tags: + +| **Module Name:** Module Template +| **Release Tag:** v0.1.0 +| **Origin Release Tag:** v0.0.1...v0.0.1 +| **Release Date:** 2026-09-02 + +Overview +^^^^^^^^ + +The module module_template provides a template for setting up C++ and Rust projects using Bazel. + +It provides a standardized project structure, ensuring best practices for: + +- Build configuration with Bazel. +- Testing (Component and Feature Integration Tests). +- Documentation setup. +- CI/CD workflows. +- Development environment configuration. + +Disclaimer +---------- + +This release note does not "release for production", as it does not come with a safety +argumentation and a performed safety assessment. +The work products compiled in the safety package are created with care according to a +process satisfying standards, but the project, being a non-profit and open source +organization, can not take over any liability for its content. + +Changes to the Module +^^^^^^^^^^^^^^^^^^^^^ + +New Features +------------ + +Initial Release of the module_template, providing a standardized project structure and best +practices for C++ and Rust projects using Bazel. + +Improvements +------------ + +- template: initial template by @dcalavrezo-qorix in https://github.com/eclipse-score/module_template/pull/1 +- Fix: README.md and directory by @nradakovic in https://github.com/eclipse-score/module_template/pull/2 +- ci: Removed docs workflows by @nicu1989 in https://github.com/eclipse-score/module_template/pull/8 +- Update cr_checker version by @nicu1989 in https://github.com/eclipse-score/module_template/pull/7 +- cicd: integrated reusable workflows by @dcalavrezo-qorix in https://github.com/eclipse-score/module_template/pull/10 +- template: added formatting checker by @dcalavrezo-qorix in https://github.com/eclipse-score/module_template/pull/11 +- dash: rename of module by @dcalavrezo-qorix in https://github.com/eclipse-score/module_template/pull/13 +- infra: Add starpls and basedpyright by @nicu1989 in https://github.com/eclipse-score/module_template/pull/14 +- template: integrate docs-as-code by @dcalavrezo-qorix in https://github.com/eclipse-score/module_template/pull/15 +- template: added docs workflows by @dcalavrezo-qorix in https://github.com/eclipse-score/module_template/pull/17 +- template: added missing permissions to workflows by @dcalavrezo-qorix in https://github.com/eclipse-score/module_template/pull/18 +- docs: permissions by @dcalavrezo-qorix in https://github.com/eclipse-score/module_template/pull/19 +- template: bug by @dcalavrezo-qorix in https://github.com/eclipse-score/module_template/pull/20 +- Dcalavrezo target by @dcalavrezo-qorix in https://github.com/eclipse-score/module_template/pull/21 +- template: bug by @dcalavrezo-qorix in https://github.com/eclipse-score/module_template/pull/24 +- license: uplift dash checker version by @dcalavrezo-qorix in https://github.com/eclipse-score/module_template/pull/26 +- Update for gitlint, docs and rules_python by @umaucher in https://github.com/eclipse-score/module_template/pull/28 +- Update LICENSE and NOTICE files by @AlexanderLanin in https://github.com/eclipse-score/module_template/pull/29 +- Upgrade to docs-as-code 1.0.0 by @MaximilianSoerenPollak in https://github.com/eclipse-score/module_template/pull/32 +- Update default and custom Bazel modules for this repo by @Aymen-Soussi-01 in https://github.com/eclipse-score/module_template/pull/34 +- gitlint: Use gitlint from score by @nicu1989 in https://github.com/eclipse-score/module_template/pull/35 +- Update bazel modules and set dev_dependency by @NEOatNHNG in https://github.com/eclipse-score/module_template/pull/38 +- tests: separate UT and CIT/FIT by @PiotrKorkus in https://github.com/eclipse-score/module_template/pull/42 +- locking: enforce Bzlmod lockfile consistency by @dcalavrezo-qorix in https://github.com/eclipse-score/module_template/pull/44 +- Add sync workflow by @FScholPer in https://github.com/eclipse-score/module_template/pull/46 +- chore(ci): pin cicd-workflows reusable workflows to commit SHA by @AlexanderLanin in https://github.com/eclipse-score/module_template/pull/47 +- Add reuse to pre commit hooks by @lurtz in https://github.com/eclipse-score/module_template/pull/49 +- chore(deps): bump eclipse-score/devcontainer from v1.2.0 to v1.3.0 in /.devcontainer in the all-in-one group across 1 directory by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/56 +- Load user settings in bazel by @lurtz in https://github.com/eclipse-score/module_template/pull/55 +- add documentation examples by @RolandJentschETAS in https://github.com/eclipse-score/module_template/pull/58 +- rename folders according to score definition by @RolandJentschETAS in https://github.com/eclipse-score/module_template/pull/69 +- Feat: Upgrade deps by @MaximilianSoerenPollak in https://github.com/eclipse-score/module_template/pull/67 +- increase copyright year by @RolandJentschETAS in https://github.com/eclipse-score/module_template/pull/70 +- chore(deps): bump the all-in-one group across 1 directory with 7 updates by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/68 +- chore(deps): bump eclipse-score/devcontainer from v1.3.0 to v1.5.0 in /.devcontainer in the all-in-one group across 1 directory by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/60 +- chore(deps): bump the all-in-one group across 1 directory with 4 updates by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/66 +- Hotfix/fix consumer test bump by @FScholPer in https://github.com/eclipse-score/module_template/pull/71 +- update safety analysis template by @RolandJentschETAS in https://github.com/eclipse-score/module_template/pull/74 +- Change implementation documentation by @RolandJentschETAS in https://github.com/eclipse-score/module_template/pull/78 +- Work on detail design warnings by @RolandJentschETAS in https://github.com/eclipse-score/module_template/pull/79 +- fix: update test work product references by @pahmann in https://github.com/eclipse-score/module_template/pull/81 +- increase bazel version to 8.6 by @RolandJentschETAS in https://github.com/eclipse-score/module_template/pull/80 +- update docu for single feature repo structure by @RolandJentschETAS in https://github.com/eclipse-score/module_template/pull/83 +- chore(deps): bump actions/checkout from 3 to 6 by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/51 +- chore(deps): bump googletest from 1.17.0 to 1.17.0.bcr.2 by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/54 +- chore(deps): bump rules_python from 1.8.3 to 2.0.2 by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/77 +- chore(deps): bump aspect_rules_lint from 1.10.2 to 2.6.0 by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/76 +- Update GitHub workflows for improved scheduling and cleanup by @AlexanderLanin in https://github.com/eclipse-score/module_template/pull/88 +- Rename requirements links by @aschemmel-tech in https://github.com/eclipse-score/module_template/pull/93 +- Add codeowners by @PandaeDo in https://github.com/eclipse-score/module_template/pull/94 +- chore(github-actions): bump the github-actions group across 1 directory with 3 updates by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/90 +- FMEA template bug fix and feature/component alignment by @aschemmel-tech in https://github.com/eclipse-score/module_template/pull/96 +- enhance implementation checklist by @RolandJentschETAS in https://github.com/eclipse-score/module_template/pull/95 +- Move documentation to right folders and add user manual by @RolandJentschETAS in https://github.com/eclipse-score/module_template/pull/97 +- Update dependency score_docs_as_code to v4.6.0 by @eclipse-score-bot in https://github.com/eclipse-score/module_template/pull/99 +- Update dependency score_process to v2 by @eclipse-score-bot in https://github.com/eclipse-score/module_template/pull/100 +- chore(github-actions): bump the github-actions group with 2 updates by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/98 +- chore(docker): bump eclipse-score/devcontainer from v1.5.0 to v1.7.0 in /.devcontainer in the docker group across 1 directory by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/89 +- chore(github-actions): bump eclipse-score/cicd-workflows/.github/workflows/daily.yml from f57b605a284ca117bcfd9f83ea427096faaac7d1 to 17318d27366522721504b60040590dc822264a38 in the github-actions group by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/103 +- remove duplicated headers by @masc2023 in https://github.com/eclipse-score/module_template/pull/105 +- Remove invalid sec analysis and correct aou template by @aschemmel-tech in https://github.com/eclipse-score/module_template/pull/101 +- chore(pre-commit): bump https://github.com/eclipse-score/tooling from 31ff8eee214e4e97ef8f5cb46e443273515b63ec to d5dbc41a14d28c8be40077735492bb7808e98fb9 in the pre-commit group across 1 directory by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/104 +- chore(docker): bump eclipse-score/devcontainer from v1.7.0 to v1.8.0 in /.devcontainer in the docker group across 1 directory by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/107 +- Update dependency score_process to v2.0.1 by @eclipse-score-bot in https://github.com/eclipse-score/module_template/pull/106 +- Add checkpoint to req inspection by @aschemmel-tech in https://github.com/eclipse-score/module_template/pull/108 +- Bug fix: correct link in fdr checklist by @aschemmel-tech in https://github.com/eclipse-score/module_template/pull/109 +- chore(pre-commit): bump https://github.com/eclipse-score/tooling from d5dbc41a14d28c8be40077735492bb7808e98fb9 to ade2a09e66423f788d207f8624358047f48ba209 in the pre-commit group by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/110 +- update component request template to consider new FEP proposal by @masc2023 in https://github.com/eclipse-score/module_template/pull/112 +- Update dependency score_process to v2.0.2 by @eclipse-score-bot in https://github.com/eclipse-score/module_template/pull/114 +- Update dependency score_docs_as_code to v4.6.1 by @eclipse-score-bot in https://github.com/eclipse-score/module_template/pull/111 +- chore(pre-commit): bump https://github.com/eclipse-score/tooling from ade2a09e66423f788d207f8624358047f48ba209 to c82be4d499a5a5ec024602329e9733714657f500 in the pre-commit group by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/113 +- chore(github-actions): bump eclipse-score/cicd-workflows/.github/workflows/daily.yml from 17318d27366522721504b60040590dc822264a38 to 4ce43f957a0e164827ad2906a2ec69fd7f420b5d in the github-actions group by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/115 +- chore(pre-commit): bump https://github.com/eclipse-score/tooling from c82be4d499a5a5ec024602329e9733714657f500 to 50ce3b964e4f7ee60b8dd36146a4b3647a4707f4 in the pre-commit group by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/116 +- Update dependency score_docs_as_code to v5 by @eclipse-score-bot in https://github.com/eclipse-score/module_template/pull/117 +- chore(docker): bump eclipse-score/devcontainer from v1.8.0 to v1.9.0 in /.devcontainer in the docker group across 1 directory by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/118 +- chore(pre-commit): bump https://github.com/eclipse-score/tooling from 50ce3b964e4f7ee60b8dd36146a4b3647a4707f4 to 9baca712bb4d23fcb9b09c62aa38ddf9c9a038ee in the pre-commit group by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/121 +- chore(github-actions): bump eclipse-score/cicd-workflows/.github/workflows/daily.yml from 4ce43f957a0e164827ad2906a2ec69fd7f420b5d to 3eb9c766349cf0c2225fef29f76601c6e7858688 in the github-actions group by @dependabot[bot] in https://github.com/eclipse-score/module_template/pull/120 + +Bug Fixes +--------- + +not applicable + +Other changes by Label +---------------------- + +not applicable + +Compatibility +^^^^^^^^^^^^^ + +Doc-as-code, process_description + +For a detailed list checkout here: https://github.com/eclipse-score/module_template/blob/main/MODULE.bazel + +Performed Verification +^^^^^^^^^^^^^^^^^^^^^^ + +Committer reviews, User Feedback + +Known Issues +------------ + +not applicable + +Known Vulnerabilities +--------------------- + +None + +Upgrade Instructions +^^^^^^^^^^^^^^^^^^^^ + +not applicable + +Contact Information +For any questions or support, please contact the SW Process Development Community (https://github.com/orgs/eclipse-score/discussions/108) or raise an issue/discussion. diff --git a/docs/template/index.rst b/docs/template/index.rst new file mode 100644 index 0000000..5917d8f --- /dev/null +++ b/docs/template/index.rst @@ -0,0 +1,103 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Template Information +==================== + +This information describes the structure, usage and configuration of the Bazel-based C++/Rust module template according to the `SCORE module folder structure <https://eclipse-score.github.io/score/main/contribute/general/folder.html#module-folder-structure>`_ and the `SCORE building blocks concept <https://eclipse-score.github.io/process_description/main/general_concepts/score_building_blocks_concept.html>`_. + + +Overview +-------- + +This repository provides a standardized setup for projects using **C++** or **Rust** and **Bazel** as a build system. +It integrates best practices for build, test, CI/CD and documentation. +It also provides an example for the documentation of an module with all necessary artifacts for safety and security management, verification and release management. +It also provides an example of modeling architecture in Sphinx Needs in :ref:`definition_architectural_design`. +It also provides the component architecture template snippets in :ref:`component_architecture`. +It also provides an example of documenting detailed design in :ref:`detailed_design_example`. + + +Module Folder Structure +----------------------- + +.. note:: + When only a single feature is implemented in the module, the additional feature-name nesting under ``docs/features/`` can be omitted. + If multiple features are to be references, then structure them under ``docs/features/<feature_name>/``. + +.. parsed-literal:: + + <module_name>/ # Root folder of the module, subfolder only if more than one module exists in the repository + ├── .github/ # GitHub configuration + │ └── workflows/ # CI/CD pipelines + ├── docs/ # Global documentation of the module + │ ├── features/ # Feature documentation and architecture + │ │ └── <feature_name>/ # Folder for each feature parts which should be in module documentation. Omit in single feature case. + │ │ ├── architecture/ # Feature architecture [:need:`wp__feature_arch`] + | | | # and of architecture review [:need:`wp__sw_arch_verification`] + │ │ ├── safety_analysis/ # Feature safety analysis artifacts + | | | # ([:need:`wp__feature_fmea`], [:need:`wp__feature_dfa`], [:need:`wp__requirements_feat_aou`]) + │ │ ├── safety_planning/ # Feature safety planning artifacts + │ │ ├── security_analysis/ # Feature security analysis artifacts + | | | # ([:need:`wp__feature_security_analysis`], [:need:`wp__requirements_feat_aou`]) + │ │ └── security_planning/ # Feature security planning artifacts + │ ├── module/ # Module documentation + │ | ├── manuals/ # User manual, integration manual, table of assumptions of use + │ │ | | # safety manual [:need:`wp__module_safety_manual`], + │ │ | | # needs table of [:need:`wp__requirements_feat_aou`] + │ │ | | # security manual [:need:`wp__module_security_manual`] + │ │ | │ # Additional optional user centric documentation (e.g. configuration guide, + │ │ | │ # examples user guide, APIs & usage, performance analysis) + │ │ | ├── config/ # Configuration guide (optional) + │ │ | ├── examples/ # Examples user guide (optional) + │ │ | ├── api_description/ # API detail description (optional) + │ │ | └── performance/ # Performance analysis (optional) + │ | ├── release/ # Module release note [:need:`wp__module_sw_release_note`] + │ | ├── safety_mgt/ # Module safety plan [:need:`wp__module_safety_plan`], + │ | │ # module safety package [:need:`wp__module_safety_package`], + │ | │ # formal document and safety analysis reviews [:need:`wp__fdr_reports`] + │ | └── security_mgt/ # Module security plan [:need:`wp__module_security_plan`], + │ | # module security package [:need:`wp__module_security_package`], + │ | # formal document reviews [:need:`wp__fdr_reports_security`], + │ | # module SW bill of material [:need:`wp__sw_module_sbom`] + │ └── verification_report/ # Module verification report, + │ # module verifications [:need:`wp__verification_module_ver_report`], + ├── examples/ # Usage examples for the module / features + ├── score/ # Components of the module + │ ├── tests/ # Module-level tests (i.e., feature integration tests) [:need:`wp__verification_feat_int_test`] + │ └── <component_name>/ # Component folder for each component of the module + │ ├── docs/ # Documentation of the component + │ │ ├── architecture/ # Component architecture [:need:`wp__component_arch`] + │ │ │ # (only if lower level components exist) + | | | # architecture review [:need:`wp__sw_arch_verification`], + │ │ ├── detailed_design/ # Detailed design [:need:`wp__sw_implementation`] + │ │ │ # code inspection [:need:`wp__sw_implementation_inspection`] + │ │ ├── requirements/ # Component requirements [:need:`wp__requirements_comp`], [:need:`wp__requirements_inspect`] + │ │ ├── safety_analysis/ # Safety analysis [:need:`wp__sw_component_fmea`], [:need:`wp__sw_component_dfa`], [:need:`wp__requirements_comp_aou`] + │ │ │ # Component classification [:need:`wp__sw_component_class`] for pre-existing software + | | | # (only if component architecture exists) + │ │ ├── security_analysis/ # Security analysis [:need:`wp__sw_component_security_analysis`] + | | | # (only if component architecture exists) + │ │ │ # component AoU requirements [:need:`wp__requirements_comp_aou`] + │ │ └── manuals/ # User documentation (of a single component, e.g., user manual of a library component, optional) + │ ├── src/ # Source files, include files, unit tests [:need:`wp__verification_sw_unit_test`], + │ │ └── <lower_level_comp>/ # Lower level component (follows <component_name> structure) + │ └── tests/ # Component-level tests (e.g., integration or complex unit tests) [:need:`wp__verification_comp_int_test`] + ├── MODULE.bazel # Bazel module definition + ├── BUILD # Root build rules + ├── project_config.bzl # Project metadata used by Bazel macros + └── README.md # Entry point of the repository + +.. attention:: + This page is describing the module template and shall be deleted in the module's documentation. diff --git a/docs/verification_report/module_verification_report.rst b/docs/verification_report/module_verification_report.rst new file mode 100644 index 0000000..35a5ccf --- /dev/null +++ b/docs/verification_report/module_verification_report.rst @@ -0,0 +1,130 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Verification Report +=================== + +.. document:: [Module Name] Verification Report + :id: doc__mod_temp_verification_report + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__verification_module_ver_report + :tags: template + + Verification report for the [Module Name] module. This report is generated based on the module verification plan and the module verification work product (:need:`wp__verification_module_ver_report`), and covers all components of the module. + +.. attention:: + + The verification report is automatically generated by a tool based on the code block above (see `module_verification_report.need <https://github.com/eclipse-score/docs-as-code/blob/main/src/needs_templates/module_verification_report.need>`_). It contains all information required for module verification, is based on the module verification plan and the module verification work product (:need:`wp__verification_module_ver_report`), and covers all components of the module. + + When this template is used in a module, replace the placeholder directive above with a module-specific directive. The following example shows the required structure; adapt its values to your module as described below. + + - Modify ``module pretty name`` to be your Module Name + - Modify ``module formal name`` to be your Module Name in lower case + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +.. code-block:: rst + + .. document:: {module pretty name} Module Verification Report + :id: doc__{module formal name = same as in ..mod}_verification_report + :post_template: module_verification_report + :status: valid + :safety: QM + :security: NO + :realizes: wp__verification_module_ver_report + :version: 1 + +.. note:: + + An possible example for a generated verification report is shown below and might contain the following parts, which are described in the following sections and is based on the :need:`gd_temp__verification_plan`. This description can be deleted in a real module, but is kept here in the module template for documentation purposes. + + .. code-block:: rst + + **1. Verification Coverage** + + **1.1. on Requirements** + - Lists of component requirements (incl. AoU satisfied by the component) tested by which test + case, passed/failed and completeness verdict + - (this shall be generated by tools and accompanied by progress charts to be usable also for + project steering) + - For external component Assumptions of Use: coverage by platform safety manual or + feature/components incl. test case, passed/failed and completeness verdict + - This is split in a list of QM requirements tested and a separate list of tests for ASIL + rated requirements. + - List of component requirements (ASIL rated) linked to inspection checklist and verdict + (derived from PR export) + + **1.2. on Architecture** + - List of component architecture tags tested by which test case, passed/failed and completeness + verdict + - (this shall be generated by tools and accompanied by progress charts to be usable also for + project steering) + - This is split in a list of QM components tested and a separate list of tests for ASIL rated + components. + - List of component architecture tags (ASIL rated) linked to inspection checklist and verdict + (derived from PR export) + + **1.3. on Detailed Design** + - List of detailed design tags tested by which test case, passed/failed and completeness verdict + - (this shall be generated by tools and accompanied by progress charts to be usable also for + project steering) + - This is split in a list of QM components tested and a separate list of tests for ASIL rated + components. + - List of detailed design tags (ASIL rated) linked to inspection checklist and verdict (derived + from PR export) + - The lists may also contain other verification methods like "Analysis" - for example + by :need:`doc__mod_temp_component_name_impl_inspection` + + **2. DFA Report** + - List of the performed component DFA, pass/fail with open mitigations + + **3. Safety Analysis Report** + - List of the performed component Safety Analysis, pass/fail with open mitigations + + **4. Unit Verification Coverage** + + **4.1. Structural Coverage** + - List of the units with C0(line) and C1(branch) coverage absolute and percentage + - (this shall be generated by tools and accompanied by progress charts to be usable also for + project steering) + - List includes a column for the safety rating of each unit. + - Target for Training_Module: 100 % C0 and 100 % C1 coverage for every unit at every merge, + and zero open findings from reviews and static analysis at any time. + + **4.2. Static Code Analysis** + - List of the units with compiler warning numbers and coding rule violation numbers + - (this shall be generated by tools and accompanied by progress charts to be usable also for + project steering) + - List includes a column for the safety rating of each unit. + + **4.3. Manual Code Inspection** + - List of components (ASIL rated) linked to inspection checklist and verdict (derived from PR + export) + + **5. Software component qualification verification report** + - Contains the needed verification results if for some components a qualification of pre-developed + SW is performed. + + **6. Test results** + - Test result per test case with status passed/failed/not_run + + **7. Test logs** + - Test log per test case with status passed/failed/not_run + + **Note1:** The verification report is valid for the module version tagged together with the report + + **Note2:** All the above lists are generated automatically diff --git a/examples/BUILD b/examples/BUILD new file mode 100644 index 0000000..0b2cf2d --- /dev/null +++ b/examples/BUILD @@ -0,0 +1,29 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +load("@score_docs_as_code//:docs.bzl", "docs_bundle") + +docs_bundle( + name = "docs", + source_dir = "docs", + visibility = ["//visibility:public"], +) + +# Needed for Dash tool to check python dependency licenses. +filegroup( + name = "cargo_lock", + srcs = [ + "Cargo.lock", + ], + visibility = ["//visibility:public"], +) diff --git a/examples/Cargo.lock b/examples/Cargo.lock new file mode 100644 index 0000000..cd1fbfa --- /dev/null +++ b/examples/Cargo.lock @@ -0,0 +1,18 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" diff --git a/examples/docs/architecture_modeling_example.rst b/examples/docs/architecture_modeling_example.rst new file mode 100644 index 0000000..ee513a5 --- /dev/null +++ b/examples/docs/architecture_modeling_example.rst @@ -0,0 +1,374 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +.. _definition_architectural_design: + +Example model of architectural design +##################################### + +This chapter only serves as an example how an architecture could be modeled in *Sphinx Needs*. All the needs are required to print the views which are displayed in the Static- and Interface Views. In the actual process this files would be split into multiple different files: + +Feature Architecture File +========================= + +.. note:: The feature and the logical interfaces are normally defined in the platform repo (`features folder <https://eclipse-score.github.io/score/main/features/index.html>`_) and imported from there as sphinx needs objects. In this example it is defined here only, to hold the example consistent. + +.. Logical Interface Operations and Module Mapping + +.. feat:: Feature 1 + :id: feat__mtef + :security: YES + :safety: QM + :status: valid + :version: 1 + + This is the example feature which shall normally defined in the platform repo. + +.. feat_arc_sta:: Feature 1 Static View + :id: feat_arc_sta__example_feature__sta + :security: YES + :safety: QM + :status: valid + :version: 1 + :includes: logic_arc_int__example_feature__if_1, logic_arc_int__example_feature__if_2, logic_arc_int__example_feature__if_3 + :fulfils: feat_req__example_feature__example_req + :belongs_to: feat__mtef + + .. needarch:: + :scale: 50 + :align: center + + {{ draw_feature(need(), needs) }} + +.. Logical Interfaces + +.. logic_arc_int:: Logical Interface 1 + :id: logic_arc_int__example_feature__if_1 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :included_by: feat__mtef + :fulfils: feat_req__example_feature__example_req + + This interface carries the feature's primary control requests and status data. It connects the feature to the component responsible for core control, with inputs validated and errors reported through the operation results. + + .. needarch:: + :scale: 50 + :align: center + + {{ draw_interface(need(), needs) }} + + +.. logic_arc_int:: Logical Interface 2 + :id: logic_arc_int__example_feature__if_2 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :included_by: feat__mtef + :fulfils: feat_req__example_feature__example_req + + This interface transfers data between the feature and the component responsible for processing it. It supports data submission and retrieval, with operation results indicating success or an applicable error. + + .. needarch:: + :scale: 50 + :align: center + + {{ draw_interface(need(), needs) }} + + +.. logic_arc_int:: Logical Interface 3 + :id: logic_arc_int__example_feature__if_3 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :included_by: feat__mtef + :fulfils: feat_req__example_feature__example_req + + This interface exposes the feature's monitoring and diagnostic information. It provides status and event data to authorized consumers and reports errors when requested information is unavailable. + +.. Logical Interface Operation + +.. logic_arc_int_op:: Logical Operation 1 + :id: logic_arc_int_op__example_feature__op_1 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :included_by: logic_arc_int__example_feature__if_1 + + Accepts a control request and returns whether the request was accepted or an error occurred. + +.. logic_arc_int_op:: Logical Operation 2 + :id: logic_arc_int_op__example_feature__op_2 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :included_by: logic_arc_int__example_feature__if_1 + + Returns the current control status so the caller can determine the feature's state. + +.. logic_arc_int_op:: Logical Operation 3 + :id: logic_arc_int_op__example_feature__op_3 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :included_by: logic_arc_int__example_feature__if_2 + + Submits data for processing and reports whether the data was accepted or invalid. + +.. logic_arc_int_op:: Logical Operation 4 + :id: logic_arc_int_op__example_feature__op_4 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :included_by: logic_arc_int__example_feature__if_2 + + Retrieves the result of a completed data-processing request or reports that no result is available. + +.. logic_arc_int_op:: Logical Operation 5 + :id: logic_arc_int_op__example_feature__op_5 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :included_by: logic_arc_int__example_feature__if_3 + + Returns a health summary for the feature's monitored components. + +.. logic_arc_int_op:: Logical Operation 6 + :id: logic_arc_int_op__example_feature__op_6 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :included_by: logic_arc_int__example_feature__if_3 + + Retrieves diagnostic information for an identified component or reports that the information is unavailable. + +.. logic_arc_int_op:: Logical Operation 7 + :id: logic_arc_int_op__example_feature__op_7 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :included_by: logic_arc_int__example_feature__if_3 + + Publishes a monitoring event when a component's status changes. + +.. logic_arc_int_op:: Logical Operation 8 + :id: logic_arc_int_op__example_feature__op_8 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :included_by: logic_arc_int__example_feature__if_3 + + Acknowledges a monitoring event and reports whether the event identifier is valid. + + +Module View File +================ + +.. mod:: Module 1 + :id: mod__mtef_archex_module_1 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :includes: comp__mod_temp_component_example_1, comp__mod_temp_component_example_2, comp__mod_temp_archex_sub_component_1, comp__mod_temp_archex_sub_component_2 + + This module describes the mapping and implementation of logical interfaces through their implementing components and sub-components. + Logical Interface 1 is implemented by Component 1 and Sub-Component 1 (core control logic, operations 1 and 2). + Logical Interface 2 is implemented by Component 2 and Sub-Component 2 (data flow and processing, operations 3 and 4). + +.. mod_view_sta:: Module 1 Static View + :id: mod_view_sta__example_feature__1 + :version: 1 + :includes: comp__mod_temp_component_example_1, comp__mod_temp_component_example_2 + + .. needarch:: + :scale: 50 + :align: center + + {{ draw_module(need(), needs) }} + +.. mod:: Module 2 + :id: mod__mtef_archex_module_2 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :includes: comp__mod_temp_component_example_3 + + This module contains Component 3 which implements Logical Interface 3 with support and monitoring capabilities. + + This is Module 2. + +.. mod_view_sta:: Module 2 Static View + :id: mod_view_sta__example_feature__2 + :version: 1 + :includes: comp__mod_temp_component_example_3 + + .. needarch:: + :scale: 50 + :align: center + + {{ draw_module(need(), needs) }} + +Feature or Component Architecture File(s) +========================================= + +.. comp:: Component 1 + :id: comp__mod_temp_component_example_1 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :implements: logic_arc_int__example_feature__if_1 + :consists_of: comp__mod_temp_archex_sub_component_1, comp__mod_temp_archex_sub_component_2, comp__mod_temp_archex_sub_component_3 + :belongs_to: feat__mtef + + Example Component 1 description. + +.. comp:: Component 2 + :id: comp__mod_temp_component_example_2 + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :implements: logic_arc_int__example_feature__if_2 + :belongs_to: feat__mtef + + Example Component 2 description. + +.. comp:: Component 3 + :id: comp__mod_temp_component_example_3 + :security: YES + :safety: QM + :status: valid + :version: 1 + :implements: logic_arc_int__example_feature__if_3 + :belongs_to: feat__mtef + + Example Component 3 description. + +.. comp_arc_sta:: Component 1 Static View + :id: comp_arc_sta__example_feature__comp_1 + :status: valid + :version: 1 + :safety: ASIL_B + :security: NO + :belongs_to: comp__mod_temp_component_example_1 + :fulfils: comp_req__example_feature__example_req + + .. needarch:: + :scale: 50 + :align: center + + {{ draw_component(need(), needs) }} + +.. Subcomponents + +.. comp:: Component 1_1 + :id: comp__mod_temp_archex_sub_component_1 + :status: valid + :version: 1 + :safety: ASIL_B + :security: NO + :uses: logic_arc_int__example_feature__if_2 + :implements: logic_arc_int__example_feature__if_1 + :belongs_to: feat__mtef + + Sub-Component 1 implements Logical Interface 1 and provides the core control logic. + + This module handles the primary operations required by the feature interface and coordinates + with other sub-components through Logical Interface 2 for data exchange and synchronization. + +.. comp:: Component 1_2 + :id: comp__mod_temp_archex_sub_component_2 + :status: valid + :version: 1 + :safety: ASIL_B + :security: NO + :uses: logic_arc_int__example_feature__if_2 + :implements: logic_arc_int__example_feature__if_2 + :belongs_to: feat__mtef + + Sub-Component 2 implements Logical Interface 2 and provides data processing capabilities. + + This module manages data flow, processing, and communication services required by the feature. + It ensures proper data handling and supports the operations defined in the logical interfaces. + +.. comp:: Component 1_3 + :id: comp__mod_temp_archex_sub_component_3 + :status: valid + :version: 1 + :safety: ASIL_B + :security: NO + :belongs_to: feat__mtef + + Example Sub-Component 3 description as part of Component 1. + + +Requirements for the Example +============================= + +.. Requirements + +.. note:: The stakeholder requirements shall be defined in the platform repo (`stakeholder requirements folder <https://eclipse-score.github.io/score/main/requirements/index.html>`_) and imported as sphinx needs objects. Here it is defined only to hold the example together and prevent errors because the sphinx needs meta model have mandatory links to it. + +.. stkh_req:: Example Stkh Req + :id: stkh_req__mtfn__example_req + :reqtype: Functional + :safety: ASIL_B + :security: YES + :rationale: needed for archdes example + :status: valid + :version: 1 + :valid_from: v1.0.0 + + The platform shall provide the feature .... + +.. note:: The feature requirements shall be defined in the platform repo (in the requirements folder of the (`features <https://eclipse-score.github.io/score/main/features/index.html>`_)) and imported as sphinx needs objects. Here it is defined only to hold the example together and prevent errors because the sphinx needs meta model have mandatory links to it. + +.. feat_req:: Example Feature Req + :id: feat_req__example_feature__example_req + :reqtype: Functional + :security: YES + :safety: ASIL_B + :derived_from: stkh_req__mtfn__example_req + :status: valid + :version: 1 + :valid_from: v1.0.0 + :satisfied_by: feat__mtef + + The feature shall provide the functionality to .... + +.. comp_req:: Example Component Req + :id: comp_req__example_feature__example_req + :reqtype: Functional + :security: YES + :safety: ASIL_B + :derived_from: feat_req__example_feature__example_req + :status: valid + :version: 1 + :satisfied_by: comp__mod_temp_component_example_2 + + The component shall provide the Logical Operation 4 to get the .. diff --git a/examples/docs/index.rst b/examples/docs/index.rst new file mode 100644 index 0000000..7978695 --- /dev/null +++ b/examples/docs/index.rst @@ -0,0 +1,23 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Examples +~~~~~~~~ + +An example of modeling architecture in Sphinx Needs can be found in + +.. toctree:: + :maxdepth: 1 + + architecture_modeling_example diff --git a/project_config.bzl b/project_config.bzl new file mode 100644 index 0000000..df83e7c --- /dev/null +++ b/project_config.bzl @@ -0,0 +1,17 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +# project_config.bzl +PROJECT_CONFIG = { + "asil_level": "QM", + "source_code": ["rust"], +} diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..c7d5fac --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,22 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +[tool.basedpyright] +extends = "bazel-bin/ide_support.runfiles/score_tooling+/python_basics/pyproject.toml" +verboseOutput = true + +exclude = [ + "**/__pycache__", + "**/.*", + "**/bazel-*", +] diff --git a/score.bazelrc/score_toolchain.bazelrc b/score.bazelrc/score_toolchain.bazelrc new file mode 100644 index 0000000..b938a2b --- /dev/null +++ b/score.bazelrc/score_toolchain.bazelrc @@ -0,0 +1,62 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +build:_score_common --cxxopt=-Wno-error=mismatched-new-delete +build:_score_common --host_platform=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix +build:_score_common --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_unknown_linux_gnu +build:_score_common --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux-gcc_12.2.0 + +build:score-qnx-x86_64 --config=_score_common +build:score-qnx-x86_64 --noexperimental_merged_skyframe_analysis_execution +build:score-qnx-x86_64 --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 +build:score-qnx-x86_64 --incompatible_enable_cc_toolchain_resolution +build:score-qnx-x86_64 --incompatible_strict_action_env +build:score-qnx-x86_64 --sandbox_writable_path=/var/tmp +build:score-qnx-x86_64 --platforms=@score_bazel_platforms//:x86_64-qnx-sdp_8.0.0-posix +build:score-qnx-x86_64 --extra_toolchains=@score_qcc_x86_64_toolchain//:x86_64-qnx-sdp_8.0.0 +build:score-qnx-x86_64 --extra_toolchains=@score_qnx_x86_64_ifs_toolchain//:ifs-x86_64-qnx-sdp_8.0.0 +build:score-qnx-x86_64 --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_pc_nto_qnx800 + +build:score-qnx-aarch64 --config=_score_common +build:score-qnx-aarch64 --noexperimental_merged_skyframe_analysis_execution +build:score-qnx-aarch64 --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 +build:score-qnx-aarch64 --incompatible_enable_cc_toolchain_resolution +build:score-qnx-aarch64 --incompatible_strict_action_env +build:score-qnx-aarch64 --sandbox_writable_path=/var/tmp +build:score-qnx-aarch64 --platforms=@score_bazel_platforms//:aarch64-qnx-sdp_8.0.0-posix +build:score-qnx-aarch64 --extra_toolchains=@score_qcc_aarch64_toolchain//:aarch64-qnx-sdp_8.0.0 +build:score-qnx-aarch64 --extra_toolchains=@score_qnx_aarch64_ifs_toolchain//:ifs-aarch64-qnx-sdp_8.0.0 +build:score-qnx-aarch64 --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_aarch64_unknown_nto_qnx800 + +build:score-linux-x86_64 --config=_score_common +build:score-linux-x86_64 --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux-gcc_12.2.0 +build:score-linux-x86_64 --platforms=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix + +build:score-linux-aarch64 --config=_score_common +build:score-linux-aarch64 --extra_toolchains=@score_gcc_aarch64_toolchain//:aarch64-linux-gcc_12.2.0 +build:score-linux-aarch64 --platforms=@score_bazel_platforms//:aarch64-linux-gcc_12.2.0-posix + +build:score-eb-aarch64 --config=_score_common +build:score-eb-aarch64 --extra_toolchains=@score_ebclfsa_toolchain//:aarch64-linux-sdk_0.1.0-ebclfsa +build:score-eb-aarch64 --extra_toolchains=@ferrocene_aarch64_ebclfsa//:rust_ferrocene_toolchain +build:score-eb-aarch64 --platforms=@score_bazel_platforms//:aarch64-linux-sdk_0.1.0-ebclfsa + +build:score-autosd-x86_64 --config=_score_common +build:score-autosd-x86_64 --force_pic +build:score-autosd-x86_64 --platforms=@score_bazel_platforms//:x86_64-linux-autosd10 +build:score-autosd-x86_64 --extra_toolchains=@score_autosd10_x86_64_toolchain//:x86_64-linux-autosd10 + +build:score-autosd-aarch64 --force_pic +build:score-autosd-aarch64 --platforms=@score_bazel_platforms//:aarch64-linux-autosd10 +build:score-autosd-aarch64 --extra_toolchains=@score_autosd10_aarch64_toolchain//:aarch64-linux-autosd10 +build:score-autosd-aarch64 --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_aarch64_unknown_linux_gnu diff --git a/score/BUILD b/score/BUILD new file mode 100644 index 0000000..ca5de74 --- /dev/null +++ b/score/BUILD @@ -0,0 +1,12 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* diff --git a/score/component_example/BUILD b/score/component_example/BUILD new file mode 100644 index 0000000..fac890c --- /dev/null +++ b/score/component_example/BUILD @@ -0,0 +1,50 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +load("@score_docs_as_code//:docs.bzl", "docs_bundle") + +cc_library( + name = "component_example", + srcs = ["src/component_example.cpp"], + hdrs = ["src/component_example.hpp"], + visibility = ["//visibility:public"], +) + +cc_test( + name = "component_example_unit_tests", + size = "small", + srcs = ["src/component_example_test.cpp"], + deps = [ + ":component_example", + "@googletest//:gtest_main", + ], +) + +cc_test( + name = "component_example_component_integration_tests", + size = "small", + srcs = ["tests/component_example_test.cpp"], + deps = [ + ":component_example", + "@googletest//:gtest_main", + ], +) + +docs_bundle( + name = "docs", + code_targets = [ + ":component_example", + ], + source_dir = "docs", + visibility = ["//visibility:public"], +) diff --git a/score/component_example/docs/architecture/chklst_arc_inspection.rst b/score/component_example/docs/architecture/chklst_arc_inspection.rst new file mode 100644 index 0000000..7605626 --- /dev/null +++ b/score/component_example/docs/architecture/chklst_arc_inspection.rst @@ -0,0 +1,215 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Component Name] Architecture Inspection +======================================== + +.. document:: [Component Name] Architecture Inspection + :id: doc__mod_temp_component_name_arc_inspection + :status: draft + :version: 2 + :safety: ASIL_B + :security: YES + :realizes: wp__sw_arch_verification + :tags: template + +.. attention:: + The above directive must be updated according to your component. + + - Modify ``Component Name`` to be your component Name + - Modify ``id`` to be your component Name in lower snake case preceded by ``doc__`` and followed by ``_arc_inspection`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety``, ``security`` and ``tags`` according to your needs + +Participants +------------ + +.. note:: + + As described in the concept :need:`doc_concept__wp_inspections` the following “inspection roles” are expected to be filled: + + * content responsible (author): <contributor/committer explicitly named here, who is the main author, as can be seen in config mgt tooling> + * reviewer: <contributor/committer explicitly named here, who is the main content reviewer, must be different from content responsible> + * moderator: <committer explicitly named here, who is is the safety manager, security manager or quality manager initiating the inspection> + + +.. list-table:: Architecture Inspection Participants + :header-rows: 1 + + * - Author(s) + - Reviewer(s) + - Moderator + * - `<https://github.com/NN>`_, `<https://github.com/NN>`_ + - `<https://github.com/NN>`_, `<https://github.com/NN>`_ + - `<https://github.com/NN>`_ + +.. note:: + + **Purpose** + + The purpose of the software architecture checklist is to ensure that the design meets the criteria and quality standards + defined by project processes and guidelines for feature and component architectural design elements. + It helps check compliance with requirements, identify errors or inconsistencies, and ensure adherence to best practices. + The checklist guides the evaluation of the architecture design, identifies potential problems, and aids in communication and + documentation of architectural decisions to stakeholders. + + **Checklist** + + Enter “yes” or “no” in the “Passed” column for each applicable checklist item, and explain the result in the “Remarks” column. + If “no” is entered, add an issue link in the “Issue link” column unless the finding is already tracked in the current issue. + If a Review ID is not applicable to your architecture, enter “n/a” in the “Passed” column and explain why in the “Remarks” column. + See also :need:`doc_concept__wp_inspections` for further information about reviews in general and inspection in particular. + +.. list-table:: Architecture Inspection Checklist + :header-rows: 1 + + * - Review ID + - Acceptance criteria + - Guidance + - Passed + - Remarks + - Issue link + * - ARC_01_01 + - Does the software architecture design take into account all requirements allocated to the architectural element, including functional, non-functional, safety, and security requirements, as well as all related design decisions? + - Check whether all requirements allocated to the architectural element are considered in the design. These include functional requirements (e.g., functional safety requirements), non-functional requirements (e.g., performance and reliability), and security requirements (e.g., confidentiality and integrity). Also ensure that all related design decisions are taken into account and documented in the architectural design. Security-related requirements should also be reviewed through the applicable cybersecurity process; this checklist does not replace cybersecurity activities. + - + - + - + * - ARC_01_02 + - If the architectural element is related to any supplier manuals (incl. safety and security) + are the relevant parts covered? + - If the architecture makes use of supplied elements, their manuals (e.g., safety manuals) must be considered; their functionality must match expectations, and their assumptions must be fulfilled. For a safety component, this means that the assumed Technical Safety Requirements and assumptions of use (AoUs) in the safety manual are covered. + - + - + - + * - ARC_01_03 + - Is the architectural element traceable to lower level artifacts as defined by workproduct traceability? + - All components defined in the architecture should be traceable to source (folders) and their (executable) build instructions. + - + - + - + * - ARC_02_01 + - Is the software architecture design compliant with the overall feature architecture? + - At the component level, check against the feature architecture. At the feature level, check other features that use common components. + - + - + - + * - ARC_02_02 + - Are operations and interfaces named appropriately and comprehensibly in the architectural design? + - Check :need:`gd_guidl__arch_design` + - + - + - + * - ARC_02_03 + - Has the correctness of data and control flows within the architectural elements been considered? + - For example, examine data definitions, transformations, integrity, and interactions; check error handling, data exchange between elements, correct responses to inputs, and documented decision-making. + Note: Consistency is ensured by the process and tooling, which define each interface only once. + - + - + - + * - ARC_02_04 + - Are the interfaces between the software architectural element and other architectural elements well defined and described? + - Check whether the interface description specifies expected behaviour for invalid inputs and errors. Could established protocols be used? Does the interface description document inputs, outputs, and error handling? Have loose coupling and limited exposure been considered? Can unit or integration tests be written against the interface? Has the amount of data transferred been considered appropriately? Is sensitive data protected appropriately, with no sensitive data exposed? + - + - + - + * - ARC_02_05 + - Does the software architectural element take applicable timing requirements into account? + - If there are strict timing requirements, execution-time analysis or estimation should be performed, and appropriate deadline monitoring should be considered. + - + - + - + * - ARC_02_06 + - Is the documentation of the software architectural element, including textual and graphical descriptions (e.g., UML diagrams), clear and complete? + - The use of semi-formal notation is expected for architectural elements with an allocated ASIL level. Is the architecture template filled out correctly? + - + - + - + * - ARC_03_01 + - Is the architectural element modular and encapsulated? + - Check, for example, that only the necessary interfaces are used and that interfaces and interactions are clearly defined. Project-specific design and coding guidelines may additionally require object-oriented design, appropriate use of access controls (e.g., private or protected), and limits on global variables. + - + - + - + * - ARC_03_02 + - Is the suitability of the software architecture for future modifications and maintainability considered? + - Check for loose coupling, separation of concerns, high cohesion, an interface versioning strategy, decision records, and the use of established design patterns. + - + - + - + * - ARC_03_03 + - Does the software architecture demonstrate simplicity and avoid unnecessary complexity? + - Indicators of complexity include the number of use cases (corresponding to dynamic diagrams) allocated to a single design element; the number of interfaces and operations in an interface; the number of function parameters; global variables; complex types; and limited comprehensibility. The thresholds below are project-defined criteria, not ISO 26262 limits. + + Notes: + + A design rationale is mandatory if any of the following applies: the number of use cases or interfaces exceeds "3"; the number of function parameters exceeds "5"; the number of operations exceeds "20"; or global variables are used. + - + - + - + * - ARC_03_04 + - Does the software architecture design follow best practices and design principles? + - Refer to architectural guidelines and recommendations within the project documentation. + - + - + - + * - ARC_04_03 + - If your software architectural design of the component includes processes and tasks, are their scheduling policies and priorities (or at least the necessary relationships among them) defined to ensure that timing requirements are met? Please note that the specific priorities or priority ranges will probably be defined in the project handbook or the software development plan. + + Note: See :need:`std_req__iso26262__software_743`. + - Give a reason for these scheduling policies and priorities or explain why not needed. + - + - + - + + +Summary +------- + +.. note:: + + The filtering must be updated according to your Component. + +Inspected Static Architecture Views +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The following static views in "valid" state and with "inspected" tag set are in the scope of this inspection: + +.. needtable:: + :filter: "component_name" in docname and "architecture" in docname and docname is not None and status == "valid" + :style: table + :types: comp_arc_sta + :tags: component_name + :columns: id;status;tags + :colwidths: 25,25,25 + :sort: title + +Inspected Dynamic Architecture Views +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +and the following dynamic views: + +.. needtable:: + :filter: "component_name" in docname and "architecture" in docname and docname is not None and status == "valid" + :style: table + :types: comp_arc_dyn + :tags: component_name + :columns: id;status;tags + :colwidths: 25,25,25 + :sort: title + + +.. note:: + + For these static and dynamic views the inspected ground truth is documented in the rendered documentation and not in the source read by the drawing tool. diff --git a/score/component_example/docs/architecture/component_architecture.rst b/score/component_example/docs/architecture/component_architecture.rst new file mode 100644 index 0000000..f93b55d --- /dev/null +++ b/score/component_example/docs/architecture/component_architecture.rst @@ -0,0 +1,151 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +.. _component_architecture: + +[Component Name] Component Architecture Documentation +===================================================== + +.. document:: [Component Name] Architecture + :id: doc__mod_temp_component_name_architecture + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__component_arch + :tags: template + +.. attention:: + The above directive must be updated according to your needs. + + - Modify ``Component Name`` to be your Component Name + - Modify ``id`` to be your Component Name in upper snake case preceded by ``doc__`` and followed by ``_architecture`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +.. note:: Create separate architecture, safety-analysis, and security-analysis documentation for lower-level components only when the component is decomposed into subcomponents and those artifacts apply. This document describes the current component and may be needed even when it has no subcomponents. + + +Overview +-------- + +<Brief summary of the architecture.> + +Requirements Linked to Component Architecture +--------------------------------------------- + +.. code-block:: none + + .. needtable:: Overview of Component Requirements + :style: table + :columns: title;id + :filter: search("comp_arch_sta__archdes$", "fulfils_back") + :colwidths: 70,30 + +Description +----------- + +<General Description> + +<Design Decisions - For the documentation of the decision the :need:`gd_temp__change_decision_record` can be used.> + +<Design Constraints> + +Rationale Behind Architecture Decomposition +******************************************* + +Mandatory: A motivation for the decomposition or reason for not further splitting it into internal components. + +.. note:: Common decisions across components / cross cutting concepts is at the higher level. + +Static Architecture +------------------- + +The components are designed to cover the expectations from the feature architecture +(i.e. if already exists a definition it should be taken over and enriched). + +A component can optional also consist of lower level components to further structure the architecture. The component and its static views can also optionally use interfaces provided by other components. + +.. code-block:: rst + + .. comp_arc_sta:: Component Name (Static View) + :id: comp_arc_sta__mod_temp_component_name__sv + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :belongs_to: comp__mod_temp_component_name_template + :fulfils: comp_req__mod_temp_component_name__some_title + + .. needarch:: + :scale: 50 + :align: center + + {{ draw_component(need(), needs) }} + +Dynamic Architecture +-------------------- + +.. code-block:: rst + + .. comp_arc_dyn:: Dynamic View + :id: comp_arc_dyn__mod_temp_component_name__dv + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + :belongs_to: comp__mod_temp_component_name_template + :fulfils: comp_req__mod_temp_component_name__some_title + + Put here a sequence diagram + + +Interfaces +---------- + +.. code-block:: rst + + .. real_arc_int:: <Title> + :id: real_arc_int__<component>__<Title> + :security: <YES|NO> + :safety: <QM|ASIL_B> + :fulfils: <link to component requirement id> + :language: cpp + +Internal Components +------------------- + +<If a component is further split into internal components, the internal components are described here.> + +.. code-block:: rst + + .. comp_arc_sta:: Component Name Static View + :id: comp_arc_sta__mod_temp_component_name__2 + :status: valid + :version: 1 + :safety: ASIL_B + :security: YES + :fulfils: comp_req__mod_temp_component_name__some_title + :belongs_to: comp__mod_temp_component_example_2 + + No architecture but detailed design + +.. note:: + Architecture can be split into multiple files. At component level the public interfaces to be used by the user and tester to be shown. + +.. attention:: + The above directives must be updated according to your component architecture. + + - Replace the example content by the real content (according to :need:`gd_guidl__arch_design`) + - Set the status to valid and start the review/merge process diff --git a/score/component_example/docs/architecture/index.rst b/score/component_example/docs/architecture/index.rst new file mode 100644 index 0000000..1f378c7 --- /dev/null +++ b/score/component_example/docs/architecture/index.rst @@ -0,0 +1,23 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +.. _component_architecture_template: + +[Component Name] Component Architecture +======================================= + +.. toctree:: + + component_architecture + chklst_arc_inspection diff --git a/score/component_example/docs/detailed_design/chklst_impl_inspection.rst b/score/component_example/docs/detailed_design/chklst_impl_inspection.rst new file mode 100644 index 0000000..2c48f1a --- /dev/null +++ b/score/component_example/docs/detailed_design/chklst_impl_inspection.rst @@ -0,0 +1,120 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +.. document:: [Component Name] Implementation Inspection Checklist + :id: doc__mod_temp_component_name_impl_inspection + :status: draft + :version: 2 + :safety: ASIL_B + :security: YES + :realizes: wp__sw_implementation_inspection + :tags: template + +.. attention:: + The above directive must be updated according to your Component. + + - Modify ``Component Name`` to be your Component Name + - Modify ``id`` to be your Component Name in lower snake case preceded by ``doc__`` and followed by ``_impl_inspection`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety``, ``security`` and ``tags`` according to your needs + +[Component Name] Implementation Inspection Checklist +==================================================== + +Purpose +------- + +The purpose of this checklist is to define the topics to be reviewed during implementation, +including the detailed design and unit source code. Unit testing and structural coverage are +addressed separately through the verification activities and report. + +The checklist is intended to be language-agnostic. Language-specific guidance should be referenced +where applicable, for example, in the C++ or Rust documentation. + +Conduct +------- + +As described in the concept :need:`doc_concept__wp_inspections`, the following inspection roles are expected to be assigned: + +- content responsible (author): <contributor/committer explicitly named here who is the main author, as shown in configuration management tooling> +- reviewer: <contributor/committer explicitly named here who is the main content reviewer; this person must differ from the content responsible> +- moderator: <committer explicitly named here who initiates the inspection as the safety, security, or quality manager> + +Checklist +--------- + +Enter "yes" or "no" in the "Passed" column for each checklist item, and explain the result in the "Remarks" column. +If "no" is entered, add a link to the corresponding issue in the "Issue link" column unless the finding is already tracked in the issue conducting the inspection. +See also :need:`doc_concept__wp_inspections` for further information about reviews in general and inspection in particular. + +.. list-table:: Implementation Checklist + :header-rows: 1 + :widths: 10,30,50,6,6,8 + + * - Review ID + - Acceptance criteria + - Guidance + - Passed + - Remarks + - Issue link + * - IMPL_01_01 + - Does the detailed design follow the applicable project guidelines? + - See :need:`gd_temp__detailed_design` and :need:`doc_concept__imp_concept`. + For example, check whether design views use the notations recommended by the project. + - + - + - + * - IMPL_01_02 + - Does the implementation conform to the allocated requirements, architecture, and detailed design? + - Check whether the linked component requirements are fulfilled and whether the detailed design is consistent with the architecture description. + - + - + - + * - IMPL_01_03 + - Are the design decisions, assumptions, and constraints documented and justified? + - Check whether the rationale is clear and consistent with the requirements and architecture. + - + - + - + * - IMPL_01_04 + - Are all external libraries and other third-party dependencies used by the component identified and assessed for the intended use? + - Check the automated dependency analysis and confirm that relevant safety evidence, assumptions, constraints, and usage conditions are documented. Where a dependency is used in a safety-related context, justify its suitability for the required safety integrity level; do not assume that an "ASIL-rated" label alone demonstrates suitability. + - + - + - + * - IMPL_02_01 + - Have the static and dynamic code-analysis results been reviewed, and have the findings been resolved or justified? + - Review findings against the applicable coding guidelines. Resolve findings or document and approve the rationale for accepted deviations, especially in safety-related code. + - + - + - + * - IMPL_02_02 + - Have the manual checks required by the applicable coding guidelines been performed, with findings resolved or justified? + - Use the checks applicable to the programming language (e.g., C++ <link_to_checks_list>, Rust <link_to_checks_list>). + - + - + - + * - IMPL_03_01 + - Are the interface UIDs in the component documentation traceable to the corresponding implemented public interfaces? + - Compare the interface UIDs in the component architecture and detailed design documentation with the corresponding public interfaces in the source code (e.g., API headers, traits, public types, or functions). The identifiers need not match source-level names exactly, but their correspondence should be clear. + - + - + - + * - IMPL_03_02 + - Are the detailed design and source code consistent, and is traceability between them established? + - Check whether available static and dynamic design diagrams and textual descriptions match the code (e.g., the names of interfaces, units, functions, operations, messages, and data types). + Where required by project conventions, check whether unit folder and file names reflect their intended functionality. For example, a unit named "communication" should not contain unrelated data-processing code. + - + - + - diff --git a/score/component_example/docs/detailed_design/dd_example_ex_dyn.puml b/score/component_example/docs/detailed_design/dd_example_ex_dyn.puml new file mode 100644 index 0000000..a37310d --- /dev/null +++ b/score/component_example/docs/detailed_design/dd_example_ex_dyn.puml @@ -0,0 +1,26 @@ +' ******************************************************************************* +' Copyright (c) 2026 Contributors to the Eclipse Foundation +' +' See the NOTICE file(s) distributed with this work for additional +' information regarding copyright ownership. +' +' This program and the accompanying materials are made available under the +' terms of the Apache License Version 2.0 which is available at +' https://www.apache.org/licenses/LICENSE-2.0 +' +' SPDX-License-Identifier: Apache-2.0 +' ******************************************************************************* + +/' +'/ + +@startuml dd_example_ex_dyn +title Detailed Design Example Dynamic View + +participant unit1 +participant unit2 + +unit1 -> unit2 : call +unit2 --> unit1 : result + +@enduml diff --git a/score/component_example/docs/detailed_design/dd_example_ex_sta.puml b/score/component_example/docs/detailed_design/dd_example_ex_sta.puml new file mode 100644 index 0000000..fe9f317 --- /dev/null +++ b/score/component_example/docs/detailed_design/dd_example_ex_sta.puml @@ -0,0 +1,25 @@ +' ******************************************************************************* +' Copyright (c) 2026 Contributors to the Eclipse Foundation +' +' See the NOTICE file(s) distributed with this work for additional +' information regarding copyright ownership. +' +' This program and the accompanying materials are made available under the +' terms of the Apache License Version 2.0 which is available at +' https://www.apache.org/licenses/LICENSE-2.0 +' +' SPDX-License-Identifier: Apache-2.0 +' ******************************************************************************* + +/' +'/ + +@startuml dd_example_ex_sta +title Detailed Design Example Static View + +component unit1 +component unit2 + +unit1 --> unit2 : uses + +@enduml diff --git a/score/component_example/docs/detailed_design/detailed_design_example.rst b/score/component_example/docs/detailed_design/detailed_design_example.rst new file mode 100644 index 0000000..cd25442 --- /dev/null +++ b/score/component_example/docs/detailed_design/detailed_design_example.rst @@ -0,0 +1,94 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +.. _detailed_design_example: + +[Component Name] Detailed Design +================================ + +.. document:: [Component Name] Detailed Design + :id: doc__mod_temp_component_name_detailed_design + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__sw_implementation + :tags: template + +.. attention:: + The above directive must be updated according to your Component. + + - Modify ``Component Name`` to be your Component Name + - Modify ``id`` to be your Component Name in upper snake case preceded by ``doc__`` and followed by ``_detailed_design`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + + + +Description +----------- + +| Design Decisions - For the documentation of the decision the :need:`gd_temp__change_decision_record` can be used. +| Design Constraints + +Example: + + - component is split into two units unit1 and unit2 based on single responsibility principle. + - unit2 is injected to unit1 one via dependency injection for testability. + +Rationale Behind Decomposition into Units +****************************************** +| mandatory: a motivation for the decomposition into one or more units. + +.. note:: Reason for split into multiple units could be- + - Based on design principles like SOLID,DRY etc + - Based on design pattern's etc. + +Static Diagrams for Unit Interactions +------------------------------------- + +A static view provides an overview of the units and their relationships using +UML 2.0 notations (e.g. class diagrams, component diagrams). Use ``.. uml::`` +or ``.. image::`` directives to include the diagram. + +.. uml:: dd_example_ex_sta.puml + +Dynamic Diagrams for Unit Interactions (optional) +-------------------------------------------------- + +A dynamic view illustrates how the units within a component interact over their +interfaces to fulfill a specific use case or functionality. It is optional when the +component's behaviour is straightforward and can be understood from the static view +and interface documentation alone. + +Use standard UML behavioural diagrams (sequence diagrams, state machine diagrams) +with ``.. uml::`` or ``.. image::`` directives. + +.. uml:: dd_example_ex_dyn.puml + +Units within the Component +-------------------------- + +The relationship between a unit and its parent component is established implicitly +through the file path. Each component has its own directory, and units residing +within that directory belong to it. The unit's attributes and behaviour are documented +in the source code itself. A separate static diagram per unit is not required. + +Interface documentation of a software unit is part of the source code (e.g. public +API headers, trait definitions, or documented function signatures). + +Example: + +- unit1: implements the main logic (see source code for details) +- unit2: injected into unit1 via dependency injection for testability diff --git a/score/component_example/docs/detailed_design/index.rst b/score/component_example/docs/detailed_design/index.rst new file mode 100644 index 0000000..97563ed --- /dev/null +++ b/score/component_example/docs/detailed_design/index.rst @@ -0,0 +1,42 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +.. _component_detailed_design_template: + +[Component Name] Detailed Design +================================ + +.. attention:: + + The detailed design document is optional and should be created if the design of the component is complex and cannot be easily understood from the architecture documentation and interface documentation alone. + But the inspection checklist for the implementation is mandatory. + + +Detail design example +--------------------- + +An example of documenting detailed design can be found in: + + .. toctree:: + + detailed_design_example + +Inspection Checklist +-------------------- + +The checklist for verification of the detailed design and code can be found here: + +.. toctree:: + + chklst_impl_inspection diff --git a/score/component_example/docs/index.rst b/score/component_example/docs/index.rst new file mode 100644 index 0000000..a9353de --- /dev/null +++ b/score/component_example/docs/index.rst @@ -0,0 +1,93 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +.. _component_template: + +[Your Component Name] +##################### + +.. note:: Document header + +.. document:: [Your Component Name] + :id: doc__mod_temp_component_name + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__cmpt_request + :tags: template + +.. code-block:: rst + + .. comp:: Component Name + :id: comp__mod_temp_component_name_template + :security: YES + :safety: ASIL_B + :status: valid + :implements: logic_arc_int__example_feature__if_1 + :version: 1 + :belongs_to: feat__mtef + +.. attention:: + The above directives must be updated according to your Component. + + - Modify ``document`` to be your Component Name + - Modify ``id`` to be your Component Name in upper snake case preceded by ``doc__`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +Abstract +======== + +[A short (~200 word) description of the component.] + + +Specification +============= + +[Describe the requirements, architecture of any component.] or + + +How to Teach This +================= + +[How to teach users, new and experienced, how to apply the CR to their work.] + +.. note:: + For a CR that adds new functionality or changes behaviour, it is helpful to include a section on how to teach users, new and experienced, how to apply the CR to their work. + +Footnotes +========= + +[A collection of footnotes cited in the CR, and a place to list non-inline hyperlink targets.] + + +Further Documentation of the component can be found in the following sections: + +Component Detail Information +============================ + +.. note:: The documents listed below describe this component. Create separate architecture, safety-analysis, and security-analysis documents for subcomponents only when this component is decomposed into subcomponents and those artifacts apply. + +.. toctree:: + :maxdepth: 1 + + architecture/index + detailed_design/index + requirements/index + safety_analysis/dfa + safety_analysis/fmea + safety_analysis/aou_requirements + safety_analysis/component_classification + security_analysis/aou_requirements diff --git a/score/component_example/docs/manuals/.gitkeep b/score/component_example/docs/manuals/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/score/component_example/docs/requirements/chklst_req_inspection.rst b/score/component_example/docs/requirements/chklst_req_inspection.rst new file mode 100644 index 0000000..1f3278b --- /dev/null +++ b/score/component_example/docs/requirements/chklst_req_inspection.rst @@ -0,0 +1,195 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + + +.. document:: [Component Name] Requirements Inspection Checklist + :id: doc__mod_temp_component_name_req_inspection + :status: draft + :version: 2 + :safety: ASIL_B + :security: YES + :realizes: wp__requirements_inspect + :tags: template + +.. attention:: + The above directive must be updated according to your Component. + + - Modify ``Component Name`` to be your Component Name + - Modify ``id`` to be your Component Name in lower snake case preceded by ``doc__`` and followed by ``_req_inspection`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety``, ``security`` and ``tags`` according to your needs + +[Component Name] Requirement Inspection Checklist +================================================= + +Purpose +------- + +The purpose of this requirement inspection checklist is to collect the topics to be checked during requirements inspection. + +Conduct +------- + +As described in the concept :need:`doc_concept__wp_inspections` the following "inspection roles" are expected to be filled: + +- content responsible (author): <contributor/committer explicitly named here, who is the main author, as can be seen in config mgt tooling> +- reviewer: <contributor/committer explicitly named here, who is the main content reviewer, must be different from content responsible> +- moderator: <committer explicitly named here, who is is the safety manager, security manager or quality manager initiating the inspection> +- test expert: <one of the reviewers explicitly named here, to cover REQ_08_01 as described> + +Checklist +--------- + +It is mandatory to fill in the "passed" column with "yes" or "no" for each checklist item and additionally to add in the remarks why it is passed or not passed. +In case of "no" an issue link to the issue tracking system has to be added in the last column (if not solved in the same issue). +See also :need:`doc_concept__wp_inspections` for further information about reviews in general and inspection in particular. + +.. list-table:: Component Requirement Inspection Checklist + :header-rows: 1 + :widths: 10,30,50,6,6,8 + + * - Review ID + - Acceptance Criteria + - Guidance + - Passed + - Remarks + - Issue link + * - REQ_01_01 + - Is the requirement formulation template used? + - see :need:`gd_temp__req_formulation`, this includes the use of "shall". + - + - + - + * - REQ_02_01 + - Is the requirement description *comprehensible* ? + - If you think the requirement is hard to understand, comment here. + - + - + - + * - REQ_02_02 + - Is the requirement description *unambiguous* ? + - Especially search for "weak words" like "about", "etc.", "relevant" and others (see the internet documentation on this). This check shall be supported by tooling. + - + - + - + * - REQ_02_03 + - Is the requirement description *atomic* ? + - A good way to think about this is to consider if the requirement may be tested by one (positive) test case or needs more of these. The requirement formulation template should also avoid being non-atomic already. Note that there are cases where also non-atomic requirements are the better ones, for example if those are better understandable. + - + - + - + * - REQ_02_04 + - Is the requirement description *feasible* ? + - If at the time of the inspection the requirement has already some implementation, the answer is yes. This can be checked via traces, but also :need:`gd_req__req_attr_impl` shows this. In case the requirement has no implementation at the time of inspection (i.e. not implemented at least as "proof-of-concept"), a development expert should be invited to the Pull-Request review to explicitly check this item. + - + - + - + * - REQ_02_05 + - Is the requirement description *independent from implementation* ? + - This checkpoint should improve requirements definition in the sense that the "what" is described and not the "how" - the latter should be described in architecture/design derived from the requirement. But there can also be a good reason for this, for example we would require using a file format like JSON and even specify the formatting standard already on stakeholder requirement level because we want to be compatible. A finding in this checkpoint does not mean there is a safety problem in the requirement. + - + - + - + * - REQ_03_01 + - Is the *linkage to the parent requirement* correct? + - Linkage to correct levels and ASIL attributes is checked automatically, but it needs checking if the child requirement implements (at least) a part of the parent requirement. + - + - + - + * - REQ_04_01 + - Is the requirement *internally and externally consistent*? + - Does the requirement contradict other requirements within the same or higher levels? One may restrict the search to the feature for component requirements, for features to other features using same components. Is the description of the requirement consistent with all its attributes (if not already part of another check, e.g. does the title fit?). + - + - + - + * - REQ_05_01 + - Do the software requirements consider *timing constraints*? + - This checkpoint encourages to think about timing constraints even if those are not explicitly mentioned in the parent requirement. If the reviewer of a requirement already knows or suspects that the code execution will be consuming a lot of time, one should think of the expectation of a "user". + - + - + - + * - REQ_06_01 + - Does the requirement consider *external interfaces*? + - The SW platform's external interfaces (to the user) are defined in the Feature Architecture, so the Feature and Component Requirements should determine the input data use and setting of output data for these interfaces. Are all output values defined? + - + - + - + * - REQ_07_01 + - Is the *safety* attribute set correctly? + - Derived requirements are checked automatically, see :need:`gd_req__req_linkage_safety`. But for the top level requirements (and also all AoU) this needs to be checked manually for correctness. + - + - + - + * - REQ_07_02 + - Is the attribute *security* set correctly? + - For component requirements this checklist item is supported by automated check: "Every requirement which satisfies a feature requirement with security attribute set to YES inherits this". But the component requirements/architecture may additionally also be subject to a :need:`wp__sw_component_security_analysis`. + - + - + - + * - REQ_08_01 + - Is the requirement *verifiable*? + - If at the time of the inspection already tests are created for the requirement, the answer is yes. This can be checked via traces, but also :need:`gd_req__req_attr_test_covered` shows this. In case the requirement is not sufficiently traced to test cases already, a test expert is invited to the inspection to give their opinion whether the requirement is formulated in a way that supports test development and the available test infrastructure is sufficient to perform the test. + - + - + - + * - REQ_08_02 + - Is the requirement verifiable by design or code review in case it is not feasibly testable? + - In very rare cases a requirement may not be verifiable by test cases, for example a specific non-functional requirement. In this case a requirement analysis verifies the requirement by design/code review. If such a requirement is in scope of this inspection, please check this here and link to the respective review record. A test expert is invited to the inspection to confirm their opinion that the requirement is not testable. + - + - + - + * - REQ_09_01 + - Do the requirements that define a safety mechanism specify the error reaction leading to a safe state? + - Alternatively to the safe state there could also be "repair" mechanisms. Also do not forget to consider REQ_05_01 for these. + - + - + - + * - REQ_10_01 + - Is the requirement description *complete* ? + - For every requirement in the inspection, follow to its parent (feature) requirement(s) and then check if this/these are fulfilled completely by its/their linked children (component requirements, including those which are not in scope of the inspection). + - + - + - + +.. attention:: + The above checklist entries must be filled according to your component requirements in scope. + +Note: If a Review ID is not applicable for your requirement, then state ""n/a" in status and comment accordingly in remarks. + +The following requirements in "valid" state and with "inspected" tag set are in the scope of this inspection: + +.. needtable:: + :filter: "component_name" in docname and "requirements" in docname and docname is not None and status == "valid" + :style: table + :types: comp_req + :tags: component_name + :columns: id;status;tags + :colwidths: 25,25,25 + :sort: title + +And also the following AoUs in "valid" state and with "inspected" tag set (for these please answer the questions above as if the AoUs are requirements, except question REQ_03_01): + +.. needtable:: + :filter: "component_name" in docname and "requirements" in docname and docname is not None and status == "valid" + :style: table + :types: aou_req + :tags: component_name + :columns: id;status;tags + :colwidths: 25,25,25 + :sort: title + +.. attention:: + The above tables filtering must be updated according to your Component. + + - Modify ``component_name`` to be your Component Name in lower snake case diff --git a/score/component_example/docs/requirements/index.rst b/score/component_example/docs/requirements/index.rst new file mode 100644 index 0000000..b42a50a --- /dev/null +++ b/score/component_example/docs/requirements/index.rst @@ -0,0 +1,21 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Component Name] Requirements +============================= + +.. toctree:: + + requirements + chklst_req_inspection diff --git a/score/component_example/docs/requirements/requirements.rst b/score/component_example/docs/requirements/requirements.rst new file mode 100644 index 0000000..ed91903 --- /dev/null +++ b/score/component_example/docs/requirements/requirements.rst @@ -0,0 +1,107 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Component Name] Requirements +############################# + +.. document:: [Component Name] Requirements + :id: doc__mod_temp_component_name_requirements + :status: draft + :version: 1 + :safety: ASIL_B + :security: YES + :realizes: wp__requirements_comp[version==1] + :tags: template + +.. attention:: + The above directive must be updated according to your Component. + + - Modify ``Component Name`` to be your Component Name + - Modify ``id`` to be your Component Name in upper snake case preceded by ``doc__`` and followed by ``_requirements`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety``, ``security`` and ``tags`` according to your needs + +<Headlines (for the list of requirements if structuring is needed)> +=================================================================== + +Functional Requirements +----------------------- + +.. code-block:: rst + + .. comp_req:: Some Title + :id: comp_req__mod_temp_component_name__some_title + :reqtype: Process + :security: YES + :safety: ASIL_B + :derived_from: feat_req__example_feature__example_req + :status: valid + :version: 1 + :satisfied_by: comp__mod_temp_component_name_template + + The Component shall do xyz to another component to bring it to this condition at this time + + Note: (optional, not to be verified) + +.. attention:: + The above directive must be updated according to your component requirements. + + - Replace the example content by the real content for your first requirement + - Set ``derived_from`` with links to Feature requirements + - Set ``satisfied_by`` with a link to the right Component id + - Set ``safety`` and ``security`` to the right value + - Set the status to valid and start the review/merge process + - Add other needed requirements for your component + +Assumption of Use Requirements +------------------------------ + +.. aou_req:: Next Title + :id: aou_req__mod_temp_component_name__next_title + :reqtype: Process + :security: YES + :safety: ASIL_B + :status: valid + :version: 1 + + The Component User shall do xyz to use the component safely/securely + +Environmental Requirements +-------------------------- + +.. aou_req:: Another Title + :id: aou_req__mod_temp_component_name__another + :reqtype: Process + :security: YES + :safety: ASIL_B + :status: invalid + :version: 1 + :tags: environment + + The Component shall only be used in a xyz environment to ensure its proper functioning. + +Hints +----- + +.. attention:: + The above directives must be updated according to your feature requirements. + + - Replace the example content by the real content for your first requirement (according to :need:`gd_guidl__req_engineering`) + - Set ``safety`` and ``security`` to the right value (ASIL B/QM; YES/NO) + - Set ``reqtype`` with a link to the right value (<Functional|Interface|Process|Non-Functional>) + - Add other needed requirements for your feature + - Set ``status`` to ``valid`` and start the review/merge process + +.. needextend:: "c.this_doc()" + :+tags: component_name diff --git a/score/component_example/docs/safety_analysis/aou_requirements.rst b/score/component_example/docs/safety_analysis/aou_requirements.rst new file mode 100644 index 0000000..1d89532 --- /dev/null +++ b/score/component_example/docs/safety_analysis/aou_requirements.rst @@ -0,0 +1,61 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Component Name] AoU Component Requirements Template +==================================================== + +.. document:: [Component Name] Component AoU + :id: doc__component_name_feat_aou + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__requirements_comp_aou + :tags: template + + +.. attention:: + The above directive must be updated according to your Component. + + - Modify ``Component Name`` to be your Component Name + - Modify ``id`` to be your Component Name in upper snake case preceded by ``doc__`` and followed by ``_comp_aou`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety``, ``security`` and ``tags`` according to your needs + +This page contains Assumption of Use requirement snippets that belong to the +template repository. + +Component AoU +------------- + +.. code-block:: rst + + .. aou_req:: Next Title + :id: aou_req__mod_temp_component_name__next_title + :reqtype: Process + :security: YES + :safety: ASIL_B + :status: invalid + + The Component User shall do xyz to use the component safely/securely + + .. aou_req:: Another Title + :id: aou_req__mod_temp_component_name__another + :reqtype: Process + :security: YES + :safety: ASIL_B + :status: invalid + :tags: environment + + The Component shall only be used in a xyz environment to ensure its proper functioning. diff --git a/score/component_example/docs/safety_analysis/component_classification.rst b/score/component_example/docs/safety_analysis/component_classification.rst new file mode 100644 index 0000000..8a2371e --- /dev/null +++ b/score/component_example/docs/safety_analysis/component_classification.rst @@ -0,0 +1,197 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Component Name] Component Classification +========================================= + +.. note:: Document header + +.. document:: [Component Name] Component Classification + :id: doc__mod_temp_component_name_comp_class + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__sw_component_class + :tags: template + +.. attention:: + The above directive must be updated according to your Component. + + - Modify ``Component Name`` to be your Component Name + - Modify ``id`` to be your Component Name in upper snake case preceded by ``doc__`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +| Classification of <component> +| +| <Link to OSS component source (e.g. in github) including the selected version> +| +| Additional documentation considered: +| <list of documentation links> + + +Step 1: Determine (P): the uncertainty of the Processes applied +--------------------------------------------------------------- + +| Apply the process measures to determine (P). +| The result of a process measure shall have as outcome [HE, PE, NE] +| - HE: High Evidence +| - PE: Partly Evidence but Manageable +| - NE: No Evidence + +.. list-table:: Determine (P) + :header-rows: 1 + + * - Id + - Indicator for applying process + - Result + - Rationale for result + + * - 1 + - Are rules, state-of-the art processes applied for the design, implementation and verification? + - <HE|PE|NE> + - <Rationale for result> + + * - 2 + - Are requirements available? + - <HE|PE|NE> + - <Rationale for result> + + * - 3 + - Are specifications for functionalities and properties available (architecture)? + - <HE|PE|NE> + - <Rationale for result> + + * - 4 + - Are design specifications available? + - <HE|PE|NE> + - <Rationale for result> + + * - 5 + - Are configuration specification and data available, if applicable? + - <HE|PE|NE> + - <Rationale for result> + + * - 6 + - Are verification measures including tests and reports available? + - <HE|PE|NE> + - <Rationale for result> + + +| (P=1) shall be selected when none of the determined process measures indicate PE or NE. +| (P=2) shall be selected when at least one of the determined process measures indicate PE or NE, but the gaps evaluated are acceptable, means +| the risk of systematic faults due to these gaps is sufficiently low or manageable by mitigating the gaps. +| (P=3) in all other cases. + +<component name> is determined as P=<1|2|3> + + +Step 2: Determine (C): the uncertainty of finding systematic faults based on the Complexity +------------------------------------------------------------------------------------------- + +| Apply the complexity measures to determine (C). +| The result of a complexity measure shall have as outcome [NH, HM, NM] +| - NH: Not High +| - HM: High but Manageable +| - NM: high and Not Manageable +| +| **Complexity measure for programming language: <C++ or RUST>** + +<select the correct table below (table for C++ is TBD)> + +.. list-table:: Determine (C) for RUST + :header-rows: 1 + + * - Id + - Indicator for high Complexity + - Complexity measure Tool + - Result + - Number + + * - 1 + - High amount of Lines of Code + - Lines of Code (without comments) (generated code is excluded, e.g. ProtoCmpl) + - <NH|HM|NM> + - <Number> + + * - 2 + - Unsafe code used / total unsafe code + - Count: + * LoUC+N: lines of unsafe code with safety note + * LoUC : lines of unsafe code, no safety note + - <NH|HM|NM> + - <Number> + + * - 3 + - | Test exists / Coverage (Function, Line) + | (maybe better: testability, but how to measure?) + - Existing Tests Coverage + - <NH|HM|NM> + - <Number> + + * - 4 + - High amount of public function interfaces + - Number of public function interfaces + - <NH|HM|NM> + - <RNumber> + + * - 5 + - High amount of function parameters + - Number of parameters + - <NH|HM|NM> + - <Number> + + +| (C=1) shall be selected when none of the determined complexity measures indicate HM or NM. +| (C=2) shall be selected when at least one of the determined complexity measures indicate HM or NM, but the gaps evaluated are acceptable, means +| the risk of systematic faults due to these gaps is sufficiently low in the context of the project or manageable by mitigating the gaps. +| (C=3) in all other cases. +| + +<component name> is determined as C=<1|2|3> + + +Step 3: Determine (CLAS_OUT): the classification outcome +-------------------------------------------------------- + +| Select CLAS_OUT depending on the determined values of (C) and (P) + ++-------+-----------------------+ +| ( C ) | ( P ) | ++-------+-------+-------+-------+ +| | 1 | 2 | 3 | ++=======+=======+=======+=======+ +| 1 | Q | Q | QR | ++-------+-------+-------+-------+ +| 2 | QR | QR | QR | ++-------+-------+-------+-------+ +| 3 | QR | QR | NQ | ++-------+-------+-------+-------+ + +<component name> is classified as CLAS_OUT=<Q|QR|NQ> + + +Step 4: Document all results and rationale for choosing (P) and (C) and (CLAS_OUT) +---------------------------------------------------------------------------------- +This document + + +Step 5: Based on (CLAS_OUT) select the activities +------------------------------------------------- + +| As soon as the change request containing this is in status "Accepted", the module safety plan for the component development is adapted based on the following: (select according to above result) +| - Q: Follow the processes for qualification of software components in a safety context. +| - QR: Follow the process for pre-existing software architectural elements +| - NQ: Do no use this element in safety context diff --git a/score/component_example/docs/safety_analysis/dfa.rst b/score/component_example/docs/safety_analysis/dfa.rst new file mode 100644 index 0000000..ab2d83b --- /dev/null +++ b/score/component_example/docs/safety_analysis/dfa.rst @@ -0,0 +1,210 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + + +[Component Name] DFA (Dependent Failure Analysis) +================================================= + +.. document:: [Component Name] DFA + :id: doc__mod_temp_component_name_dfa + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__sw_component_dfa + :tags: template + + +.. note:: Create separate DFA documentation for lower-level components only when the component is decomposed into subcomponents and a separate analysis applies. This document covers the current component's DFA scope. + +.. note:: Use the content of the document to describe e.g. why a fault model is not applicable for the diagram. + +.. attention:: + The above directive must be updated according to your Component. + + - Modify ``Component Name`` to be your Component Name + - Modify ``id`` to be your Component Name in upper snake case preceded by ``doc__`` and succeeded by ``_dfa`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +The DFA for the component [Component Name] is performed. To show evidence that all failure initiators are considered, the applicability has to be filled out in the +following tables. For all applicable failure initiators, the DFA has to be performed. + +Dependent Failure Initiators +---------------------------- + +Shared resources +^^^^^^^^^^^^^^^^ + +The dependent failure initiators related to shared resources are not applicable for the component. The shared resources +will be considered in the platform DFA. + +Communication between the two elements +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Receiving function is affected by information that is false, lost, sent multiple times, or in the wrong order etc. from the sender. + +.. list-table:: DFA communication between elements + :header-rows: 1 + :widths: 10,20,10,20 + + * - ID + - Violation cause communication between elements + - Applicability + - Rationale + * - CO_01_01 + - Information passed via argument through a function call, or via writing/reading a variable being global to the two software functions (data flow) + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - CO_01_02 + - Data or message corruption / repetition / loss / delay / masquerading or incorrect addressing of information + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - CO_01_03 + - Insertion / sequence of information + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - CO_01_04 + - Corruption of information, inconsistent data + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - CO_01_05 + - Asymmetric information sent from a sender to multiple receivers, so that not all defined receivers have the same information + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - CO_01_06 + - Information from a sender received by only a subset of the receivers + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - CO_01_07 + - Blocking access to a communication channel + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + +Shared information inputs +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Same information input used by multiple functions. + +.. list-table:: DFA shared information inputs + :header-rows: 1 + :widths: 10,20,10,20 + + * - ID + - Violation cause shared information inputs + - Applicability + - Rationale + * - SI_01_02 + - Configuration data + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - SI_01_03 + - Constants, or variables, being global to the two software functions + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - SI_01_04 + - Basic software passes data (read from hardware register and converted into logical information) to two applications software functions + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - SI_01_05 + - Data / function parameter arguments / messages delivered by software function to more than one other function + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + +Unintended impact +^^^^^^^^^^^^^^^^^ + +Unintended impacts to function due to various failures. + +.. list-table:: DFA unintended impact + :header-rows: 1 + :widths: 10,20,10,20 + + * - ID + - Violation cause unintended impact + - Applicability + - Rationale + * - UI_01_01 + - Memory miss-allocation and leaks + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - UI_01_02 + - Read/Write access to memory allocated to another software element + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - UI_01_03 + - Stack/Buffer under-/overflow + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - UI_01_04 + - Deadlocks + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - UI_01_05 + - Livelocks + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - UI_01_06 + - Blocking of execution + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - UI_01_07 + - Incorrect allocation of execution time + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - UI_01_08 + - Incorrect execution flow + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - UI_01_09 + - Incorrect synchronization between software elements + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - UI_01_10 + - CPU time depletion + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - UI_01_11 + - Memory depletion + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + * - UI_01_12 + - Other HW unavailability + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out DFA> + +DFA +=== +For all identified applicable failure initiators, the DFA is performed in the following section. + +.. code-block:: rst + + .. comp_saf_dfa:: <Title> + :violates: <Component architecture> + :id: comp_saf_dfa__<Component>__<Element descriptor> + :failure_id: <ID from DFA failure initiators :need:`gd_guidl__dfa_failure_initiators`> + :failure_effect: "description of failure effect of the failure initiator on the element" + :safety_relevant: <yes|no> + :mitigated_by: <ID from Component Requirement | ID from AoU Component Requirement> + :mitigation_issue: <ID from Issue Tracker> + :sufficient: <yes|no> + :status: <valid|invalid> + +.. note:: Argument is inside the 'content'. Therefore content is mandatory. + +.. attention:: + The above directive must be updated according to your component DFA. + + - The above "code-block" directive must be updated + - Fill in all the needed information in the <brackets> diff --git a/score/component_example/docs/safety_analysis/fmea.rst b/score/component_example/docs/safety_analysis/fmea.rst new file mode 100644 index 0000000..75a12c1 --- /dev/null +++ b/score/component_example/docs/safety_analysis/fmea.rst @@ -0,0 +1,137 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + + +[Component Name] FMEA (Failure Modes and Effects Analysis) +========================================================== + +.. document:: [Component Name] FMEA + :id: doc__mod_temp_component_name_fmea + :status: draft + :version: 1 + :safety: ASIL_B + :security: NO + :realizes: wp__sw_component_fmea + :tags: template + + +.. note:: Create separate FMEA documentation for lower-level components only when the component is decomposed into subcomponents and a separate analysis applies. This document covers the current component's FMEA scope. + +.. note:: Use the content of the document to describe e.g. why a fault model is not applicable for the diagram. + +.. attention:: + The above directive must be updated according to your Component. + + - Modify ``Component Name`` to be your Component Name + - Modify ``id`` to be your Component Name in upper snake case preceded by ``doc__`` and succeeded by ``_fmea`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +Failure Mode List +----------------- + +.. list-table:: Fault Models for sequence diagrams + :header-rows: 1 + :widths: 10,20,10,20 + + * - ID + - Failure Mode + - Applicability + - Rationale + * - MF_01_01 + - message is not received (is a subset/more precise description of MF_01_05) + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - MF_01_02 + - message received too late (only relevant if delay is a realistic fault) + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - MF_01_03 + - message received too early (usually not a problem) + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - MF_01_04 + - message not received correctly by all recipients (different messages or messages partly lost). Only relevant if the same message goes to multiple recipients. + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - MF_01_05 + - message is corrupted + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - MF_01_06 + - message is not sent + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - MF_01_07 + - message is unintended sent + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - CO_01_01 + - minimum constraint boundary is violated + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - CO_01_02 + - maximum constraint boundary is violated + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - EX_01_01 + - Process calculates wrong result(s) (is a subset/more precise description of MF_01_05 or MF_01_04). This failure mode is related to the analysis if e.g. internal safety mechanisms are required (level 2 function, plausibility check of the output, …) because of the size / complexity of the feature. + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - EX_01_02 + - processing too slow (only relevant if timing is considered) + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - EX_01_03 + - processing too fast (only relevant if timing is considered) + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - EX_01_04 + - loss of execution + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - EX_01_05 + - processing changes to arbitrary process + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + * - EX_01_06 + - processing is not complete (infinite loop) + - <yes | no> + - <Rationale if not applicable, otherwise link to filled out FMEA> + +FMEA +---- +For all identified applicable failure initiators, the FMEA is performed in the following section. + +.. code-block:: rst + + .. comp_saf_fmea:: <Title> + :violates: <Component architecture> + :id: comp_saf_fmea__<Component>__<Element descriptor> + :fault_id: <ID from fault model :need:`gd_guidl__fault_models`> + :failure_effect: "description of failure effect of the fault model on the element" + :failure_root_cause: "description of the root cause of the failure" + :safety_relevant: <yes|no> + :mitigated_by: <ID from Component Requirement | ID from AoU Component Requirement> + :mitigation_issue: <ID from Issue Tracker> + :sufficient: <yes|no> + :status: <valid|invalid> + + .. note:: argument is inside the 'content'. Therefore content is mandatory + +.. attention:: + The above directive must be updated according to your component FMEA. + + - The above "code-block" directive must be updated + - Fill in all the needed information in the <brackets> diff --git a/score/component_example/docs/security_analysis/aou_requirements.rst b/score/component_example/docs/security_analysis/aou_requirements.rst new file mode 100644 index 0000000..0de9823 --- /dev/null +++ b/score/component_example/docs/security_analysis/aou_requirements.rst @@ -0,0 +1,61 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +[Component Name] AoU Component Requirements Template +==================================================== + +.. document:: [Component Name] Component AoU + :id: doc__component_name_feat_sec_aou + :status: draft + :version: 1 + :safety: QM + :security: YES + :realizes: wp__requirements_comp_aou + :tags: template + + +.. attention:: + The above directive must be updated according to your Component. + + - Modify ``Component Name`` to be your Component Name + - Modify ``id`` to be your Component Name in upper snake case preceded by ``doc__`` and followed by ``_comp_aou`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety``, ``security`` and ``tags`` according to your needs + +This page contains Assumption of Use requirement snippets that belong to the +template repository. + +Component AoU +------------- + +.. code-block:: rst + + .. aou_req:: Next Title + :id: aou_req__mod_temp_component_name__sec_next_title + :reqtype: Process + :security: YES + :safety: QM + :status: invalid + + The Component User shall do xyz to use the component securely + + .. aou_req:: Another Title + :id: aou_req__mod_temp_component_name__another + :reqtype: Process + :security: YES + :safety: QM + :status: invalid + :tags: environment + + The Component shall only be used in a xyz environment to ensure its secure and proper functioning. diff --git a/score/component_example/src/component_example.cpp b/score/component_example/src/component_example.cpp new file mode 100644 index 0000000..a7e542d --- /dev/null +++ b/score/component_example/src/component_example.cpp @@ -0,0 +1,28 @@ +/******************************************************************************** + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ + +#include "score/component_example/src/component_example.hpp" + +namespace score { +namespace component_example { + +std::string make_hello() { + return "Hello"; +} + +std::string make_hello_message(const std::string& name) { + return make_hello() + ", " + name + "!"; +} + +} // namespace component_example +} // namespace score diff --git a/score/component_example/src/component_example.hpp b/score/component_example/src/component_example.hpp new file mode 100644 index 0000000..20a6920 --- /dev/null +++ b/score/component_example/src/component_example.hpp @@ -0,0 +1,31 @@ +/******************************************************************************** + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ + +#ifndef SCORE_COMPONENT_EXAMPLE_COMPONENT_EXAMPLE_HPP_ +#define SCORE_COMPONENT_EXAMPLE_COMPONENT_EXAMPLE_HPP_ + +#include <string> + +namespace score { +namespace component_example { + +// Unit +std::string make_hello(); + +// Component API +std::string make_hello_message(const std::string& name); + +} // namespace component_example +} // namespace score + +#endif // SCORE_COMPONENT_EXAMPLE_COMPONENT_EXAMPLE_HPP_ diff --git a/score/component_example/src/component_example_test.cpp b/score/component_example/src/component_example_test.cpp new file mode 100644 index 0000000..2669157 --- /dev/null +++ b/score/component_example/src/component_example_test.cpp @@ -0,0 +1,28 @@ +/******************************************************************************** + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ + +#include "score/component_example/src/component_example.hpp" + +#include <gtest/gtest.h> +#include <string> + +namespace score { +namespace component_example { + +// Unit test for make_hello() function +TEST(ComponentExampleTest, MakeHelloReturnsExpectedGreeting) { + EXPECT_EQ(make_hello(), "Hello"); +} + +} // namespace component_example +} // namespace score diff --git a/score/component_example/src/lower_level_comp/.gitkeep b/score/component_example/src/lower_level_comp/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/score/component_example/tests/component_example_test.cpp b/score/component_example/tests/component_example_test.cpp new file mode 100644 index 0000000..ba6ebcf --- /dev/null +++ b/score/component_example/tests/component_example_test.cpp @@ -0,0 +1,29 @@ +/******************************************************************************** + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ + +#include "score/component_example/src/component_example.hpp" + +#include <gtest/gtest.h> +#include <string> + +namespace score { +namespace component_example { + +// Component Integration Test (CIT) for component_example component. +TEST(ComponentExampleTest, MakeHelloMessageReturnsExpectedGreeting) { + EXPECT_EQ(make_hello_message("World"), "Hello, World!"); + EXPECT_EQ(make_hello_message("SCORE"), "Hello, SCORE!"); +} + +} // namespace component_example +} // namespace score diff --git a/score/tests/BUILD b/score/tests/BUILD new file mode 100644 index 0000000..b7b9d71 --- /dev/null +++ b/score/tests/BUILD @@ -0,0 +1,30 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +load("@rules_cc//cc:defs.bzl", "cc_test") +load("@rules_rust//rust:defs.bzl", "rust_test") + +rust_test( + name = "feature_integration_tests_rust", + size = "small", + srcs = ["test_main.rs"], +) + +cc_test( + name = "feature_integration_tests_cpp", + size = "small", + srcs = ["test_main.cpp"], + deps = [ + "//score/component_example", + "@googletest//:gtest_main", # GoogleTest dependency via Bazel Modules + ], +) diff --git a/score/tests/test_main.cpp b/score/tests/test_main.cpp new file mode 100644 index 0000000..85cb6b6 --- /dev/null +++ b/score/tests/test_main.cpp @@ -0,0 +1,27 @@ +/******************************************************************************** + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ +#include "score/component_example/src/component_example.hpp" +#include <gtest/gtest.h> + +namespace score { +namespace component_example { + +// Module-level tests (e.g. feature integration tests) +// Only one component in this example. +TEST(ComponentExampleTest, MakeHelloMessageReturnsExpectedGreeting) { + EXPECT_EQ(make_hello_message("World"), "Hello, World!"); + EXPECT_EQ(make_hello_message("SCORE"), "Hello, SCORE!"); +} + +} // namespace component_example +} // namespace score diff --git a/score/tests/test_main.rs b/score/tests/test_main.rs new file mode 100644 index 0000000..09bb618 --- /dev/null +++ b/score/tests/test_main.rs @@ -0,0 +1,19 @@ +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License Version 2.0 which is available at +// <https://www.apache.org/licenses/LICENSE-2.0> +// +// SPDX-License-Identifier: Apache-2.0 +// ******************************************************************************* +#[test] + +// Module-level tests (e.g. feature integration tests) +// Only one component in this example. +fn test_hello() { + assert_eq!(2 + 2, 4); +} diff --git a/training/README.md b/training/README.md new file mode 100644 index 0000000..18c6079 --- /dev/null +++ b/training/README.md @@ -0,0 +1,65 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +# Maintaining the training + +This folder holds everything the setup puts into a training copy: the defect patches, the prepared +pull requests, the task issues and the solution key. It is open on purpose: anyone can check the +training and improve it. Participants start with `TRAINING.md`. + +| Path | What it is | +| --- | --- | +| `SOLUTIONS.md` | Every built-in defect, where it is, why it is wrong, and the expected reaction | +| `patches/build-*.patch` | Stage 2 defect branches `defect/build-1` .. `defect/build-3` | +| `patches/r*.patch` | Prepared pull requests #R1–#R5, branches `review/<name>`; `r5-safety` / `r5-security` by track | +| `reviews/r3.json` | The two review comments the setup posts on the r3 pull request | +| `issues/*.md` | The task issues and the continuous improvement issue, with `{{…}}` placeholders the setup fills in | +| `setup.py` | Creates all of the above in one copy | + +Patch commit messages are neutral on purpose: they end up in the participant's history. Every patch +applies to the first commit of a copy, the state "Use this template" creates. + +## Changing the training + +1. Make the change on a branch from the commit the patches apply to, build it clean + (`rm -rf _build && bazel run //:docs`) and run `pre-commit run --all-files`. +2. Export it with `git format-patch -1 <branch> --stdout > training/patches/<name>.patch`, and + update `SOLUTIONS.md` in the same commit: what the defect is, how it shows, the expected fix, + and what you checked. +3. Run the setup with `--dry-run` for every track. It applies every patch and renders every issue. +4. Before a release, run the whole training once in a real copy: the setup without `--dry-run`, + then every prepared pull request's CI. + +A change to anything outside `training/` changes the first commit of every new copy, and with it +the base the patches apply to. Check that every patch still applies (`--dry-run`), and that the +stage 5 conflict still happens (see `SOLUTIONS.md`, PR #R4). + +## Adding a track + +A track is an entry in `ROLES` in `setup.py` and a label in `LABELS`: + +* `ROLE_TOPIC`: the topic for task 3.2, +* `ROLE_DOC`: the document the participant fills in in task 5.4, +* `r5`: the cross-review pull request (6.1) of another track. + +Then add the track's defects to the module's documents (one per track is enough, see +`SOLUTIONS.md`, stage 5), add the track to the table in `TRAINING.md`, and run the dry run for it. +A track whose work is not a document, such as testing, also needs its own task texts in `issues/`; +the setup takes every file there for every track today. + +## Feedback, bug reports, completed trainings + +They arrive as issues in `eclipse-score/contributor_training`, through the forms in +`.github/ISSUE_TEMPLATE/`. The maintainers read them and fix the training; there is no support. +The "Training completed" issues are the record of conducted trainings, evidence for +`wp__training_path`. Close each one once read; do not delete them. diff --git a/training/SOLUTIONS.md b/training/SOLUTIONS.md new file mode 100644 index 0000000..2840caf --- /dev/null +++ b/training/SOLUTIONS.md @@ -0,0 +1,149 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +# Training solutions + +Every built-in defect, where it is, why it is wrong, and the expected reaction. This file is open +on purpose, and it is in every copy of the training: it lets anyone check and improve the training. +If you are doing the training, reading it first only shortens what you learn. + +Each patch in `patches/` becomes one branch in a training copy. Its commit message is deliberately +neutral, because it ends up in the participant's history. + +## Stage 2 — build defects + +All results below were checked on 2026-10-14 against the initial state of the training module +(module_template `b60778b`, score_docs_as_code 8.4.0). Warnings are treated as errors, so every +docs warning fails `bazel run //:docs`. + +Re-checked 2026-10-29 on the first commit of the S-CORE version (`4dc60d8`): `main` builds +green, and every defect branch shows exactly the messages and the `_build` content below. + +### `defect/build-1` (task 2.2) — two issues expected + +| Defect | What the build says | Expected fix | +| --- | --- | --- | +| The user manual refers to `doc__training_module_release_note`, an id that does not exist | `user_manual.rst:121: WARNING: linked need doc__training_module_release_note not found [needs.link_ref]` | Refer to the release note's real id, `doc__mod_temp_module_name_release_note` | +| `comp_req__component_example__heartbeat_status` is QM but derived from the ASIL_B `feat_req__example_feature__example_req` | `Parent need ... does not fulfill condition safety == QM. Explanation: QM requirements cannot be derived from ASIL requirements. [score_metamodel]` | Classify the requirement ASIL_B. Removing `derived_from` also turns the build green but leaves an orphan requirement — reject that fix | + +Checked: with both fixes the build is green with an empty `warnings.txt`. + +### `defect/build-2` (task 2.3) — four issues expected + +| Defect | Found by | Expected fix | +| --- | --- | --- | +| Safety manual retitled to "Training_Module Safety Manual" without lengthening the `===` underline | docs build: `Title underline too short. [docutils]` | Underline as long as the title | +| Security manual `:status: released` | docs build: `status (released): does not follow pattern ^(valid\|draft\|invalid)$ [score_metamodel]` | `draft` (or `valid` with an approving PR) — the allowed values come from the metamodel | +| Release note has no copyright header | **pre-commit only** (hook `copyright`); `bazel run //:copyright.check` does not scan `docs/` | Restore the header, or let `pre-commit run` add it | +| Trailing whitespace in the user manual | **pre-commit only** (hook `trailing-whitespace`) | `pre-commit run` fixes it | + +The lesson is that a green docs build is not a green CI: two of the four defects only show up in +the Pre-Commit job. Both hooks fix the file themselves — the participant should notice that and commit +the result. + +### `defect/build-3` (task 2.4) — one issue expected + +The branch renames `user_manual.rst` to `user_guide.rst` and retitles it. Built incrementally after +a build of `main`, `_build/module/manuals/` holds both `user_guide.html` ("Training_Module User +Guide") and the orphan `user_manual.html` ("[Module Name] User Manual"). The build is green and +`needs.json` is correct; only the HTML output is stale. + +Expected explanation: `bazel run //:docs` is incremental and never deletes the output of a source +file that has gone away. Fix: `rm -rf _build && bazel run //:docs`. + +## Stage 4 — prepared pull requests + +Every prepared pull request builds green and passes pre-commit (checked 2026-10-14 on top of the initial state). Nothing in them is found by a tool; the participant has to read. + +### PR #R1 (task 4.1) — form, `r1.patch`, release note + +| Defect | Where | How it shows | +| --- | --- | --- | +| Typo "Relase" in the page **and** the need title | title and `.. document::` | The typo appears in every needtable that lists the document | +| Typo "adressed" | Known Issues | — | +| Typo "seperately" | Known Issues, Issue 1 | — | +| Single backticks around `score/component_example` | Known Issues, Issue 1 | Rendered in italics (`<cite>`), not as code; RST needs double backticks | +| No blank line between "The following issues are known …:" and the list | Known Issues | The whole list renders as **one paragraph** with literal "- " — only visible in the rendered page | + +### PR #R2 (task 4.2) — content, `r2.patch`, feature safety plan + requirements + +Seven defects; the pass mark is five. + +| # | Defect | Where | Why it is wrong | +| --- | --- | --- | --- | +| 1 | Qualification "as required by ISO 26262-8 clause 12 (see its EXAMPLE)" for `component_example` as an "in-house component already in service" | new section "Qualification of software components" | An EXAMPLE is informative, it obliges nothing. And a component developed within the ISO 26262 process is not clause 12's population. Clause 12 is for software developed outside it; a project that reads it so records that reading, for example in its tailoring | +| 2 | Tool qualification tailored out "according to `std_req__iso26262__support_6421`" | Tailoring | "support" is Part 8, but clause 6 is the specification of safety requirements. Tool confidence is clause 11 (`support_1141`, `support_1142`). A manual review is also no argument by itself | +| 3 | `comp_req__component_example__hb_missing` (ASIL_B) derived from `feat_req__component_example__hb_supervision` (QM), itself from a QM stakeholder requirement | `requirements.rst` | Child classified above its parent; the build only checks the opposite direction | +| 4 | "All review findings … closed within 24 hours of being raised" | Feature Safety Package | Unrealistic; becomes a deviation in the first audit | +| 5 | `:status: valid` while the document still says "See TBD." and contains a TBD open point | document header | The approval of the pull request releases what is written, including the TBD | +| 6 | DFA tailored out by "In the project meeting on 2026-10-20 we decided …" | Tailoring | A decision only in prose; no decision record, nothing the graph can see. "Runs in a single process" is also no DFA argument | +| 7 | "Open point: TBD - clarify who performs the feature FMEA." | Feature Safety Package | No owner, no trigger | + +### PR #R3 (task 4.3) — answering a review, `r3.patch` + `reviews/r3.json` + +The change itself is clean. The setup script posts two review comments, under the participant's own account: + +| Comment | Correct reaction | +| --- | --- | +| "`.bazelversion` pins Bazel 8.7.0 …" on the Build System line | **Accept**: state Bazel 8.7.0 | +| "Training_Module does not support QNX …" on the Operating Systems line | **Reject with evidence**: `MODULE.bazel` registers the QNX toolchains `score_qnx_x86_64_ifs_toolchain` and `score_qnx_aarch64_ifs_toolchain` (module_template #199) | + +### PR #R4 (task 5.3) — conflict, `r4.patch` + +Changes "succeeded by" to "followed by" in the `id` instruction line of the release note, the module +safety plan and the module security plan — the same line template commit #198 rewrites. Checked by +simulation: a branch carrying the #198 change, rebased onto `main` with #R4 merged, conflicts in all +three files. The correct resolution keeps the template's line (lower snake case, `doc__`, +`_<suffix>`). + +The setup script opens #R4. Issue 5.1-5.3 makes the order explicit: open the template-update pull +request, do **not** merge it, merge #R4, then rebase. Template update comes before filling in the +document (task 5.4), because a participant who fills in first may delete the `.. attention::` blocks, +and #R4 would then no longer merge cleanly into `main`. + +Checked 2026-10-15 by a local simulation of a whole participant week: `main` after realistic merges of +stages 1-4 (typo fix, build-1 and build-2 with fixes, r1 with fixes, r2, r3 with the Bazel fix, +r5-security); then for each track document a branch with the #198 change; #R4 applied to `main` +cleanly; rebasing each branch onto it conflicted in its own file - release note, module safety +plan, module security plan. + +Re-checked 2026-10-29 on `4dc60d8` with `main` + r1, r2, r3, r5-security, then r4: the same +three conflicts. + +### PR #R5 (task 6.1) — cross-review + +A participant reviews the variant that is **not** their track: Quality and Security participants get +`r5-safety.patch`, Safety participants get `r5-security.patch`. + +| Variant | Defect | Why it is wrong | +| --- | --- | --- | +| safety (feature AoU) | Restart "within 1 microsecond" | Unrealistic metric | +| safety | `:status: valid` with "a heartbeat period of TBD ms" | Released with an open value | +| safety | "No further Assumptions of Use are needed; we agreed on this … in the call" | Decision only in prose | +| security (feature security AoU) | CI pipeline "as required by `std_req__isosae21434__continual_8321`" | "continual" is clause 8, continual cybersecurity activities (monitoring, event evaluation, vulnerabilities) — not continuous integration | +| security | Fix "to all vehicles in the field within 24 hours" | Unrealistic metric | +| security | "Open point: TBD - decide where the authentication keys are stored." | No owner, no trigger | + +## Stage 5 — track defects on `main` + +These are on `main` (PR #3) and therefore in every participant repository from the start. The participant meets them in task 5.4. + +| Track | Document | Defect | Why it is wrong | +| --- | --- | --- | --- | +| Quality | Module verification report, 4.1 | 100 % C0 and C1 coverage for every unit at every merge, zero open findings at any time | Unrealistic; a target nobody meets becomes a deviation in the first audit | +| Safety | Module safety plan, scope | Module declared QM while the plan and the component documents carry ASIL_B | Child classified above its parent. The metamodel check only flags the other direction, so the build stays green | +| Security | Module security plan, tailoring | Cybersecurity assessment tailored out with reference `std_req__isosae21434__assessment_15621` | The stem "assessment" belongs to clause 15 (TARA methods); the cybersecurity assessment is clause 6.4.9 (`prj_management_649x`) | + +The template defect for tasks 5.1-5.3: `docs/` and `score/component_example/docs/` are at the parent +of module_template `775aad3c` (#198); `git diff upstream/main -- docs` against the public template +shows the difference. diff --git a/training/issues/01-task-0.1.md b/training/issues/01-task-0.1.md new file mode 100644 index 0000000..ba434ff --- /dev/null +++ b/training/issues/01-task-0.1.md @@ -0,0 +1,28 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: 0.1 Set up your environment +labels: stage-0 +--- +Set up the environment S-CORE uses and prove that it works. + +**Skip any step you have already done**, for example from earlier work on S-CORE. Write "already in place" for it on your participant page, so that skipped can be told from forgotten. + +1. Ubuntu 24.04 (native, VM or WSL), VS Code, Bazel via Bazelisk, `gh`, `pre-commit`. +2. `gh auth login`, and an SSH key registered on GitHub. +3. An Eclipse Foundation account with a signed **Eclipse Contributor Agreement (ECA)**, and your GitHub username entered in your Eclipse account profile. What the ECA is: https://www.eclipse.org/legal/eca/ · sign it: https://accounts.eclipse.org/user/eca · edit your profile: https://accounts.eclipse.org/user/edit Use the same e-mail address for the Eclipse account and for your git commits (`git config user.email`). This repository does not need it, but you do once you contribute to S-CORE after the training: S-CORE only accepts commits whose author has a signed ECA. +4. Clone your copy as described in `TRAINING.md`, including the `upstream` remote. +5. `bazel run //:ide_support`, then select `.venv_docs/bin/python` as the Python interpreter in VS Code, and start `bazel run //:live_preview`. +6. In this repository, **Settings → General → Features**: check that Issues are enabled. + +**Done when** a merged pull request adds your page `docs/participants/<name>.rst` and adds the page to the toctree in `docs/participants/index.rst`. The page lists the versions of Bazel, `gh`, VS Code and Python, and states that your ECA is signed and linked to your GitHub username. CI must be green. diff --git a/training/issues/02-task-1.1.md b/training/issues/02-task-1.1.md new file mode 100644 index 0000000..68423ed --- /dev/null +++ b/training/issues/02-task-1.1.md @@ -0,0 +1,23 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: 1.1 Bring your repository up to date with its upstream +labels: stage-1 +--- +Your repository was made from the public S-CORE module template. Find out whether the template has moved on since, and practise both ways of following an upstream. + +1. `git fetch upstream` and compare `main` with `upstream/main`. Which commits are new upstream, and which files do they touch? +2. Fork the **public** `eclipse-score/module_template` into your **own** GitHub account and use "Sync fork" on it. +3. Explain the difference between the two ways, and which one you will use when you contribute to an S-CORE repository. The S-CORE contribution guideline says how contributions reach a repository. + +**Done when** a merged pull request adds the answers to your participant page. Name the commits you compared. diff --git a/training/issues/03-task-1.2.md b/training/issues/03-task-1.2.md new file mode 100644 index 0000000..dabe382 --- /dev/null +++ b/training/issues/03-task-1.2.md @@ -0,0 +1,25 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: 1.2-1.3 Fix typos with a commit that carries its reasoning +labels: stage-1 +--- +The disclaimer in `docs/module/release/release_note.rst` contains the words "but the as the project". Fix the sentence. + +- Create a branch with a meaningful name. +- Commit with an explicit pathspec: `git commit -m "<message>" -- docs/`. +- The commit message says what was wrong and how you checked the fix (build, rendered page). + +Then find a **second** typo in the documentation yourself, raise an issue for it yourself (task 1.3): on GitHub, **Issues → New issue → Training finding**. This issue template is in the repository, in `.github/ISSUE_TEMPLATE/training_finding.md`, and fix it in the same or in a second pull request. + +**Done when** your pull requests are merged with green CI and close this issue and yours. diff --git a/training/issues/04-task-2.1.md b/training/issues/04-task-2.1.md new file mode 100644 index 0000000..60467a3 --- /dev/null +++ b/training/issues/04-task-2.1.md @@ -0,0 +1,23 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: 2.1 Build the documentation clean and read the result +labels: stage-2 +--- +Run `rm -rf _build && bazel run //:docs` on `main`. + +- How many warnings does the build report? Where is the list written? +- Why do we delete `_build` first? +- Run `pre-commit run --all-files` and list the hooks it runs. For each hook: would a violation also make `bazel run //:docs` fail, or does only pre-commit find it? + +**Done when** a merged pull request records the answers on your participant page. diff --git a/training/issues/05-task-2.4.md b/training/issues/05-task-2.4.md new file mode 100644 index 0000000..f3b5df0 --- /dev/null +++ b/training/issues/05-task-2.4.md @@ -0,0 +1,29 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: 2.2-2.4 Repair the defect branches +labels: stage-2 +--- +The branches `defect/build-1`, `defect/build-2` and `defect/build-3` each contain defects. + +For each branch: + +1. Build it (`bazel run //:docs`) and run `pre-commit run --all-files`. +2. Create **one issue per defect** with the "Training finding" template. Quote the message. +3. Fix the defects in a pull request into `main` that closes those issues. + +`defect/build-3` builds green. Build `main` first, then switch to `defect/build-3` and build again, and look at `_build/module/manuals/`. Explain what you see. **Do not merge `defect/build-3`**: record your explanation on your participant page instead, in a pull request that closes your issue for it. + +A green docs build is not the same as a green CI. + +**Done when** every defect has its own issue and all of them are closed by merged pull requests. This issue is closed by the last of them. diff --git a/training/issues/06-task-3.1.md b/training/issues/06-task-3.1.md new file mode 100644 index 0000000..c54ab8d --- /dev/null +++ b/training/issues/06-task-3.1.md @@ -0,0 +1,25 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: 3.1 Find the process behind your work product +labels: stage-3 +--- +Your topic: **{{ROLE_TOPIC}}**. + +In the S-CORE process description (https://eclipse-score.github.io/process_description/), find: + +- the workflow that produces it, +- the work product (`wp__...`), +- the template or guideline the module uses for it. + +**Done when** a merged pull request records the chain workflow → work product → template on your participant page, as `:need:` references. The build checks that each reference exists. diff --git a/training/issues/07-task-3.2.md b/training/issues/07-task-3.2.md new file mode 100644 index 0000000..297eb1b --- /dev/null +++ b/training/issues/07-task-3.2.md @@ -0,0 +1,21 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: 3.2 Find what the S-CORE project decided about it +labels: stage-3 +--- +The process description defines the process. The S-CORE project decides how it applies to the platform. In `eclipse-score/score`, find what the project decided about your topic **{{ROLE_TOPIC}}**: in the platform management plan (quality, safety or security management), in a design decision, or in a feature's or module's plan. + +Then create **one issue** with the "Training finding" template for something you found unclear. It is an open point, so it needs an **owner** (the S-CORE role that can answer it, from the table in `TRAINING.md`) and a **trigger** (the event after which it can be answered). An open point without both is a defect. + +**Done when** a merged pull request records the finding with its need id or link on your participant page and closes your open-point issue, either with the answer or with the open point recorded there with its owner and trigger. diff --git a/training/issues/08-task-4.1.md b/training/issues/08-task-4.1.md new file mode 100644 index 0000000..47f213f --- /dev/null +++ b/training/issues/08-task-4.1.md @@ -0,0 +1,23 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: 4.1 Review pull request #{{PR_R1}} (form) +labels: stage-4 +--- +Review pull request #{{PR_R1}} as if a colleague had asked you to. + +- Read the diff **and** the rendered page. Build the branch locally. +- Comment on the exact line, one finding per comment. +- Finish with a review of type **Comment** that states your decision, for example "Changes requested". The setup opened this pull request under your own account, and GitHub does not let you request changes on your own pull request. + +**Done when** your review is submitted and a pull request of yours, based on that branch, fixes what you found and is merged. Close #{{PR_R1}} without merging it. diff --git a/training/issues/09-task-4.2.md b/training/issues/09-task-4.2.md new file mode 100644 index 0000000..b872fec --- /dev/null +++ b/training/issues/09-task-4.2.md @@ -0,0 +1,24 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: 4.2 Review pull request #{{PR_R2}} (content) +labels: stage-4 +--- +Pull request #{{PR_R2}} plans the safety work products of the heartbeat feature and adds its requirements. It builds green, and every tool is happy with it. + +Review it for content. Check every claim against the rule or standard clause it cites. Check every classification against its parent. Check every number for whether anyone can meet it. + +- One review comment per finding, and **one issue per finding** with the "Training finding" template. +- Finish with a review of type **Comment** that states your decision, as in task 4.1. + +**Done when** a pull request of yours fixes the findings, closes their issues and is merged. Close #{{PR_R2}} without merging it. diff --git a/training/issues/10-task-4.3.md b/training/issues/10-task-4.3.md new file mode 100644 index 0000000..532d374 --- /dev/null +++ b/training/issues/10-task-4.3.md @@ -0,0 +1,24 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: 4.3 Answer the review on pull request #{{PR_R3}} +labels: stage-4 +--- +Pull request #{{PR_R3}} has two review comments. + +- Decide for each comment whether it is right. **Check it against the repository; do not trust it because a reviewer wrote it.** +- Implement the comment that is right. Reply to the other one with your evidence and leave it unresolved. + +Before you merge #{{PR_R3}}, add `Closes #<this issue>` to its description: it is the pull request that does this task. + +**Done when** #{{PR_R3}} is merged, closes this issue, and both comments have an answer. diff --git a/training/issues/11-task-5.1-5.3.md b/training/issues/11-task-5.1-5.3.md new file mode 100644 index 0000000..b4c6411 --- /dev/null +++ b/training/issues/11-task-5.1-5.3.md @@ -0,0 +1,25 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: 5.1-5.3 Bring your document to the current template state +labels: stage-5 +--- +Your document: **{{ROLE_DOC}}**. Do this task **before** you fill the document in (task 5.4). Follow the steps in this order; the order is part of the task. + +**5.1 Find the deviation.** Compare your document with the module template it came from: `git fetch upstream`, then `git diff main upstream/main -- <your file>`. Which template commit is your document missing? Raise an issue for it with the "Training finding" template (on GitHub: **Issues → New issue → Training finding**). + +**5.2 Update on a branch.** Create a branch from `main`, bring the document to the current template state, commit, push and open a pull request that closes your issue and this one. **Do not merge it yet.** + +**5.3 A colleague was faster.** While your pull request was open, pull request #{{PR_R4}} changed the same file. Merge #{{PR_R4}} into `main` now. Then bring your branch up to date **by rebasing** onto `main`, resolve the conflict in VS Code's merge editor and push with `git push --force-with-lease`. When you resolve the conflict, decide which side is right. Do not just pick one. + +**Done when** your pull request is merged on top of #{{PR_R4}} with a linear history and a green build, and it closes your issue and this one. diff --git a/training/issues/12-task-5.4.md b/training/issues/12-task-5.4.md new file mode 100644 index 0000000..4a83850 --- /dev/null +++ b/training/issues/12-task-5.4.md @@ -0,0 +1,21 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: 5.4 Fill in your track's document +labels: stage-5 +--- +Your document: **{{ROLE_DOC}}**, now on the current template state after tasks 5.1-5.3. + +Fill it in for `Training_Module`: replace the placeholders and follow the instructions in the `.. attention::` blocks. Read what is already written in it, too. Not everything a predecessor wrote there is right. + +**Done when** a merged pull request leaves the document without placeholders, the build is green, and nothing wrong from the existing text survives. If something already in it is wrong, raise an issue for it first. diff --git a/training/issues/14-task-6.1.md b/training/issues/14-task-6.1.md new file mode 100644 index 0000000..c370b07 --- /dev/null +++ b/training/issues/14-task-6.1.md @@ -0,0 +1,19 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: 6.1 Cross-review pull request #{{PR_R5}} +labels: stage-6 +--- +Pull request #{{PR_R5}} belongs to another track. Review it for content as in task 4.2: one comment per finding, and a decision at the end. + +**Done when** your review is submitted and a pull request of yours fixes your findings and is merged. Close #{{PR_R5}} without merging it. diff --git a/training/issues/15-task-6.2-6.3.md b/training/issues/15-task-6.2-6.3.md new file mode 100644 index 0000000..56c25b0 --- /dev/null +++ b/training/issues/15-task-6.2-6.3.md @@ -0,0 +1,22 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: 6.2-6.3 Formal review of your document, and your retrospective +labels: stage-6 +--- +1. Perform the formal document review (FDR) of your document from task 5.4 with the checklist the module provides for it. Record the filled-in checklist in the repository. +2. Add a retrospective to your participant page. Summarise your comments on the continuous improvement issue. What was missing in this training? Which S-CORE issue would you take on first? The S-CORE User's Guide, "What's Next?", says where to find good first issues. + +**Done when** one merged pull request contains both. It closes this issue and any task or finding issue still open; the continuous improvement issue may stay open. + +Afterwards, issue your certificate of completion and tell the training that you finished, as `TRAINING.md` describes. Send your summary of the continuous improvement comments as **Feedback** to `eclipse-score/contributor_training`: your copy is yours alone, so nobody else reads it there. diff --git a/training/issues/16-continuous-improvement.md b/training/issues/16-continuous-improvement.md new file mode 100644 index 0000000..aca4be1 --- /dev/null +++ b/training/issues/16-continuous-improvement.md @@ -0,0 +1,25 @@ +<!-- ---------------------------------------------------------------------------- + Copyright (c) 2026 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Apache License Version 2.0 which is available at + https://www.apache.org/licenses/LICENSE-2.0 + + SPDX-License-Identifier: Apache-2.0 +----------------------------------------------------------------------------- --> + +title: Continuous improvement: what should be better in this training +labels: improvement +--- +This issue stays open for the whole week, and it may stay open afterwards. Whenever something in the training is unclear, wrong, broken or could be better, add a comment here right away: + +- **Bug**: something does not work as the task says (a command fails, a link is dead, a branch does not build as described). +- **Finding**: something in the documentation, the process or the tooling that you found questionable, even if it is not part of a task. +- **Improvement**: something that would have made the task clearer, faster or more realistic. + +One comment per point. Say where (issue, file, step) and what you expected. Your copy is yours alone: what should reach the maintainers, send as **Feedback** or **Bug report** to `eclipse-score/contributor_training`, as `TRAINING.md` describes. Do not wait for the end of the week: what you remember on day 5 is less than what you noticed on day 1. + +**Done when** your retrospective in task 6.2-6.3 summarises these comments on your participant page. Close this issue with that pull request, or leave it open for further comments; the certificate does not check it. diff --git a/training/patches/build-1.patch b/training/patches/build-1.patch new file mode 100644 index 0000000..b48263f --- /dev/null +++ b/training/patches/build-1.patch @@ -0,0 +1,50 @@ +From 72ebae0164521904f85079e151d48a8fcd9ed7e1 Mon Sep 17 00:00:00 2001 +From: S-CORE Contributor Training <contributor-training@users.noreply.github.com> +Date: Wed, 14 Oct 2026 13:00:16 +0200 +Subject: [PATCH] Add heartbeat status requirement and update the manual + reference + +--- + docs/module/manuals/user_manual.rst | 2 +- + .../docs/requirements/requirements.rst | 12 ++++++++++++ + 2 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/docs/module/manuals/user_manual.rst b/docs/module/manuals/user_manual.rst +index d8b32b1..5e2908a 100644 +--- a/docs/module/manuals/user_manual.rst ++++ b/docs/module/manuals/user_manual.rst +@@ -118,7 +118,7 @@ Integrating with Your Project + Version History, Compatibility, and Troubleshooting + =================================================== + +-For comprehensive information on the following topics, refer to :need:`doc__mod_temp_module_name_release_note`: ++For comprehensive information on the following topics, refer to :need:`doc__training_module_release_note`: + + * Version history and changes + * Compatibility notes and upgrade instructions +diff --git a/score/component_example/docs/requirements/requirements.rst b/score/component_example/docs/requirements/requirements.rst +index ed91903..c209466 100644 +--- a/score/component_example/docs/requirements/requirements.rst ++++ b/score/component_example/docs/requirements/requirements.rst +@@ -64,6 +64,18 @@ Functional Requirements + - Set the status to valid and start the review/merge process + - Add other needed requirements for your component + ++.. comp_req:: Report heartbeat status ++ :id: comp_req__component_example__heartbeat_status ++ :reqtype: Functional ++ :security: NO ++ :safety: QM ++ :derived_from: feat_req__example_feature__example_req ++ :satisfied_by: comp__mod_temp_component_example_1 ++ :status: valid ++ :version: 1 ++ ++ The Component shall report its heartbeat status to the module once per cycle. ++ + Assumption of Use Requirements + ------------------------------ + +-- +2.34.1 + diff --git a/training/patches/build-2.patch b/training/patches/build-2.patch new file mode 100644 index 0000000..d48e877 --- /dev/null +++ b/training/patches/build-2.patch @@ -0,0 +1,76 @@ +From 51d689c469da72fd56f47cab7138e2f4430b7cc3 Mon Sep 17 00:00:00 2001 +From: S-CORE Contributor Training <contributor-training@users.noreply.github.com> +Date: Wed, 14 Oct 2026 13:04:08 +0200 +Subject: [PATCH] Update module manuals and release note + +--- + docs/module/manuals/safety_manual.rst | 2 +- + docs/module/manuals/security_manual.rst | 2 +- + docs/module/manuals/user_manual.rst | 2 +- + docs/module/release/release_note.rst | 14 -------------- + 4 files changed, 3 insertions(+), 17 deletions(-) + +diff --git a/docs/module/manuals/safety_manual.rst b/docs/module/manuals/safety_manual.rst +index b054510..47d4e42 100644 +--- a/docs/module/manuals/safety_manual.rst ++++ b/docs/module/manuals/safety_manual.rst +@@ -12,7 +12,7 @@ + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +-[Module Name] Safety Manual ++Training_Module Safety Manual + =========================== + + .. note:: Document header +diff --git a/docs/module/manuals/security_manual.rst b/docs/module/manuals/security_manual.rst +index 95e05d1..d62fa8d 100644 +--- a/docs/module/manuals/security_manual.rst ++++ b/docs/module/manuals/security_manual.rst +@@ -19,7 +19,7 @@ + + .. document:: [Module Name] Security Manual + :id: doc__mod_temp_module_name_security_manual +- :status: draft ++ :status: released + :version: 1 + :safety: ASIL_B + :security: YES +diff --git a/docs/module/manuals/user_manual.rst b/docs/module/manuals/user_manual.rst +index d8b32b1..cd558b8 100644 +--- a/docs/module/manuals/user_manual.rst ++++ b/docs/module/manuals/user_manual.rst +@@ -44,7 +44,7 @@ For build and test of the module itself, please refer to the :ref:`quick-start-b + Environment Needs + ================= + +-Basic needed software environment for the module development and usage: ++Basic needed software environment for the module development and usage: + + * **C++**: C++17 or later + * **Rust**: 1.70 or later (if Rust support is included) +diff --git a/docs/module/release/release_note.rst b/docs/module/release/release_note.rst +index d506fa3..f67f77b 100644 +--- a/docs/module/release/release_note.rst ++++ b/docs/module/release/release_note.rst +@@ -1,17 +1,3 @@ +-.. +- # ******************************************************************************* +- # Copyright (c) 2026 Contributors to the Eclipse Foundation +- # +- # See the NOTICE file(s) distributed with this work for additional +- # information regarding copyright ownership. +- # +- # This program and the accompanying materials are made available under the +- # terms of the Apache License Version 2.0 which is available at +- # https://www.apache.org/licenses/LICENSE-2.0 +- # +- # SPDX-License-Identifier: Apache-2.0 +- # ******************************************************************************* +- + [Module Name] Release Note + ========================== + +-- +2.34.1 + diff --git a/training/patches/build-3.patch b/training/patches/build-3.patch new file mode 100644 index 0000000..79d9f24 --- /dev/null +++ b/training/patches/build-3.patch @@ -0,0 +1,47 @@ +From 25338ef78d013f9d131d5780a3e1c70ff3799281 Mon Sep 17 00:00:00 2001 +From: S-CORE Contributor Training <contributor-training@users.noreply.github.com> +Date: Wed, 14 Oct 2026 13:05:31 +0200 +Subject: [PATCH] Rename the user manual to user guide + +--- + docs/module/manuals/index.rst | 2 +- + docs/module/manuals/{user_manual.rst => user_guide.rst} | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + rename docs/module/manuals/{user_manual.rst => user_guide.rst} (97%) + +diff --git a/docs/module/manuals/index.rst b/docs/module/manuals/index.rst +index 3c905d7..a9222aa 100644 +--- a/docs/module/manuals/index.rst ++++ b/docs/module/manuals/index.rst +@@ -18,6 +18,6 @@ Manuals + .. toctree:: + :titlesonly: + +- user_manual ++ user_guide + safety_manual + security_manual +diff --git a/docs/module/manuals/user_manual.rst b/docs/module/manuals/user_guide.rst +similarity index 97% +rename from docs/module/manuals/user_manual.rst +rename to docs/module/manuals/user_guide.rst +index d8b32b1..fcb0500 100644 +--- a/docs/module/manuals/user_manual.rst ++++ b/docs/module/manuals/user_guide.rst +@@ -14,10 +14,10 @@ + + .. _user_manual: + +-[Module Name] User Manual +-========================= ++Training_Module User Guide ++========================== + +-.. document:: [Module Name] User Manual ++.. document:: Training_Module User Guide + :id: doc__user_manual + :status: draft + :version: 1 +-- +2.34.1 + diff --git a/training/patches/r1.patch b/training/patches/r1.patch new file mode 100644 index 0000000..2cb3ebc --- /dev/null +++ b/training/patches/r1.patch @@ -0,0 +1,61 @@ +From aebf9a7266cf1bd8d35442d42af02cf8d6698dc4 Mon Sep 17 00:00:00 2001 +From: S-CORE Contributor Training <contributor-training@users.noreply.github.com> +Date: Wed, 14 Oct 2026 13:12:32 +0200 +Subject: [PATCH] Fill in the release note header and the known issues for + v0.1.0 + +--- + docs/module/release/release_note.rst | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/docs/module/release/release_note.rst b/docs/module/release/release_note.rst +index d506fa3..12b249f 100644 +--- a/docs/module/release/release_note.rst ++++ b/docs/module/release/release_note.rst +@@ -12,12 +12,12 @@ + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +-[Module Name] Release Note +-========================== ++Training_Module Relase Note ++=========================== + + .. note:: Document header + +-.. document:: [Module Name] Release Note ++.. document:: Training_Module Relase Note + :id: doc__mod_temp_module_name_release_note + :status: draft + :version: 1 +@@ -36,10 +36,10 @@ + + + +-| **Module Name:** [Module Name] +-| **Release Tag:** vX.Y.Z +-| **Origin Release Tag:** vU.V.W +-| **Release Date:** YYYY-MM-DD ++| **Module Name:** Training_Module ++| **Release Tag:** v0.1.0 ++| **Origin Release Tag:** none (first release) ++| **Release Date:** 2026-11-02 + + + Overview +@@ -100,9 +100,9 @@ This release note is based on the verification as documented in module verificat + Known Issues + ------------ + +-- **Issue 1:** Brief description of the known issue. Justification regarding safety impact. +-- **Issue 2:** Brief description of the known issue. Justification regarding safety impact. +-- **Issue 3:** Brief description of the known issue. Justification regarding safety impact. ++The following issues are known for this release and will be adressed in v0.2.0: ++- **Issue 1:** A missed cycle is not reported seperately; the consumer detects it by its own timeout, see `score/component_example`. No safety impact. ++- **Issue 2:** The component example has no integration test on target hardware yet. No safety impact, because the module is not released for production. + + Known Vulnerabilities + --------------------- +-- +2.34.1 + diff --git a/training/patches/r2.patch b/training/patches/r2.patch new file mode 100644 index 0000000..2bab1e8 --- /dev/null +++ b/training/patches/r2.patch @@ -0,0 +1,114 @@ +From 14f920d2adc5c489013d4876c68d4d6007768f7c Mon Sep 17 00:00:00 2001 +From: S-CORE Contributor Training <contributor-training@users.noreply.github.com> +Date: Wed, 14 Oct 2026 13:23:54 +0200 +Subject: [PATCH] Plan the heartbeat feature safety work products and add its + requirements + +--- + docs/features/safety_planning/index.rst | 25 +++++++++--- + .../docs/requirements/requirements.rst | 40 +++++++++++++++++++ + 2 files changed, 59 insertions(+), 6 deletions(-) + +diff --git a/docs/features/safety_planning/index.rst b/docs/features/safety_planning/index.rst +index 963e596..2d223e1 100644 +--- a/docs/features/safety_planning/index.rst ++++ b/docs/features/safety_planning/index.rst +@@ -14,12 +14,12 @@ + + + +-[Feature Name] Safety Work Products List +-######################################## ++Heartbeat Safety Work Products List ++################################### + +-.. document:: [Feature Name] Safety WPs ++.. document:: Heartbeat Safety WPs + :id: doc__feature_example_safety_wp +- :status: draft ++ :status: valid + :version: 1 + :safety: ASIL_B + :security: NO +@@ -41,7 +41,16 @@ Additional to the tailoring in the SW platform project as defined in the project + + - Excluded for this feature are additionally the following work products (and their related requirements): + +- - <work product/requirement> - <Argumentation why it is not needed or replaced by another work product or activity.> ++ - :need:`wp__feature_dfa` - Not needed. In the project meeting on 2026-10-20 we decided that the heartbeat feature has no ++ dependent failures, because it runs in a single process. ++ - Tool qualification of the code generator - Not needed according to :need:`std_req__iso26262__support_6421`, ++ because the generated code is reviewed manually. ++ ++Qualification of software components ++==================================== ++ ++As required by ISO 26262-8 clause 12 (see its EXAMPLE), ``component_example`` is an in-house component already in ++service and is therefore qualified according to clause 12 before the heartbeat feature is released. + + + Safety Work Products List +@@ -117,7 +126,11 @@ Feature Documents Status + For all the work product documents the status can be seen by following the "Link to WP". + A summary of the status is also documented in the project's documentation management plan. + +-See <add here the section reference to the documentation management plan> ++See TBD. ++ ++All review findings on the safety work products of this feature are closed within 24 hours of being raised. ++ ++Open point: TBD - clarify who performs the feature FMEA. + + Feature Requirements Status + --------------------------- +diff --git a/score/component_example/docs/requirements/requirements.rst b/score/component_example/docs/requirements/requirements.rst +index ed91903..6c18899 100644 +--- a/score/component_example/docs/requirements/requirements.rst ++++ b/score/component_example/docs/requirements/requirements.rst +@@ -105,3 +105,43 @@ Hints + + .. needextend:: "c.this_doc()" + :+tags: component_name ++ ++Heartbeat Requirements ++---------------------- ++ ++.. stkh_req:: Heartbeat supervision ++ :id: stkh_req__mtfn__heartbeat ++ :reqtype: Functional ++ :safety: QM ++ :security: NO ++ :rationale: needed for the heartbeat feature ++ :status: valid ++ :version: 1 ++ :valid_from: v0.1.0 ++ ++ The platform shall supervise that its components are alive. ++ ++.. feat_req:: Heartbeat supervision ++ :id: feat_req__component_example__hb_supervision ++ :reqtype: Functional ++ :security: NO ++ :safety: QM ++ :derived_from: stkh_req__mtfn__heartbeat ++ :status: valid ++ :version: 1 ++ :valid_from: v0.1.0 ++ :satisfied_by: feat__mtef ++ ++ The feature shall supervise the heartbeat of each registered component. ++ ++.. comp_req:: Detect a missing heartbeat ++ :id: comp_req__component_example__hb_missing ++ :reqtype: Functional ++ :security: NO ++ :safety: ASIL_B ++ :derived_from: feat_req__component_example__hb_supervision ++ :satisfied_by: comp__mod_temp_component_example_1 ++ :status: valid ++ :version: 1 ++ ++ The Component shall detect a missing heartbeat within two cycles. +-- +2.34.1 + diff --git a/training/patches/r3.patch b/training/patches/r3.patch new file mode 100644 index 0000000..c862eb3 --- /dev/null +++ b/training/patches/r3.patch @@ -0,0 +1,35 @@ +From be3444aeb6a6a1496ff1cf4ddf8ea0f0c29c0d1e Mon Sep 17 00:00:00 2001 +From: S-CORE Contributor Training <contributor-training@users.noreply.github.com> +Date: Wed, 14 Oct 2026 13:29:34 +0200 +Subject: [PATCH] Name the module in the user manual and tidy the environment + list + +--- + docs/module/manuals/user_manual.rst | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/docs/module/manuals/user_manual.rst b/docs/module/manuals/user_manual.rst +index d8b32b1..b5a5061 100644 +--- a/docs/module/manuals/user_manual.rst ++++ b/docs/module/manuals/user_manual.rst +@@ -32,7 +32,7 @@ + Overview + ======== + +-This user manual provides comprehensive guidance for using the [Your Module Name] module from an end customer perspective. ++This user manual provides comprehensive guidance for using the Training_Module module from an end customer perspective. + It covers installation, configuration, basic usage, and best practices for integrating this module + into your project. + +@@ -47,7 +47,7 @@ Environment Needs + Basic needed software environment for the module development and usage: + + * **C++**: C++17 or later +-* **Rust**: 1.70 or later (if Rust support is included) ++* **Rust**: 1.70 or later + * **Build System**: Bazel 6.0 or later + * **Operating Systems**: Linux, QNX + +-- +2.34.1 + diff --git a/training/patches/r4.patch b/training/patches/r4.patch new file mode 100644 index 0000000..5008598 --- /dev/null +++ b/training/patches/r4.patch @@ -0,0 +1,54 @@ +From 62f2b17c7257c8e6cf0df3e880d5cb108fbe93fc Mon Sep 17 00:00:00 2001 +From: S-CORE Contributor Training <contributor-training@users.noreply.github.com> +Date: Wed, 14 Oct 2026 13:55:09 +0200 +Subject: [PATCH] Use 'followed by' in the id instructions of the module + documents + +--- + docs/module/release/release_note.rst | 2 +- + docs/module/safety_mgt/module_safety_plan.rst | 2 +- + docs/module/security_mgt/module_security_plan.rst | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/docs/module/release/release_note.rst b/docs/module/release/release_note.rst +index d506fa3..f2ceb0d 100644 +--- a/docs/module/release/release_note.rst ++++ b/docs/module/release/release_note.rst +@@ -30,7 +30,7 @@ + The above directive must be updated according to your Module. + + - Modify ``Your Module Name`` to be your Module Name +- - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc_`` and succeeded by ``release_note`` ++ - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc_`` and followed by ``release_note`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +diff --git a/docs/module/safety_mgt/module_safety_plan.rst b/docs/module/safety_mgt/module_safety_plan.rst +index e6e21e8..1c58835 100644 +--- a/docs/module/safety_mgt/module_safety_plan.rst ++++ b/docs/module/safety_mgt/module_safety_plan.rst +@@ -30,7 +30,7 @@ + The above directive must be updated according to your Module. + + - Modify ``Your Module Name`` to be your Module Name +- - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc_`` and succeeded by ``safety_plan`` ++ - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc_`` and followed by ``safety_plan`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +diff --git a/docs/module/security_mgt/module_security_plan.rst b/docs/module/security_mgt/module_security_plan.rst +index 32f0908..1d78121 100644 +--- a/docs/module/security_mgt/module_security_plan.rst ++++ b/docs/module/security_mgt/module_security_plan.rst +@@ -30,7 +30,7 @@ + The above directive must be updated according to your Module. + + - Modify ``Your Module Name`` to be your Module Name +- - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc_`` and succeeded by ``security_plan`` ++ - Modify ``id`` to be your Module Name in upper snake case preceded by ``doc_`` and followed by ``security_plan`` + - Adjust ``status`` to be ``valid`` + - Adjust ``safety`` and ``tags`` according to your needs + +-- +2.34.1 + diff --git a/training/patches/r5-safety.patch b/training/patches/r5-safety.patch new file mode 100644 index 0000000..a376404 --- /dev/null +++ b/training/patches/r5-safety.patch @@ -0,0 +1,66 @@ +From 259f859df0428f4f9c031fe8a9222d22d8f93c56 Mon Sep 17 00:00:00 2001 +From: S-CORE Contributor Training <contributor-training@users.noreply.github.com> +Date: Wed, 14 Oct 2026 13:56:05 +0200 +Subject: [PATCH] Add the heartbeat feature assumptions of use + +--- + .../safety_analysis/aou_requirements.rst | 35 ++++++++++++------- + 1 file changed, 23 insertions(+), 12 deletions(-) + +diff --git a/docs/features/safety_analysis/aou_requirements.rst b/docs/features/safety_analysis/aou_requirements.rst +index 62c0bbf..a5cc590 100644 +--- a/docs/features/safety_analysis/aou_requirements.rst ++++ b/docs/features/safety_analysis/aou_requirements.rst +@@ -12,12 +12,12 @@ + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +-[Feature Name] Assumptions of Use +-================================= ++Heartbeat Assumptions of Use ++============================ + +-.. document:: [Feature Name] Feature AoU ++.. document:: Heartbeat Feature AoU + :id: doc__feature_name_feat_aou +- :status: draft ++ :status: valid + :version: 1 + :safety: ASIL_B + :security: NO +@@ -37,13 +37,24 @@ + AoU + --- + +-.. code-block:: rst ++.. aou_req:: Restart a failed component ++ :id: aou_req__feature_name__hb_restart ++ :reqtype: Process ++ :security: NO ++ :safety: ASIL_B ++ :status: valid ++ :version: 1 ++ ++ The integrator shall restart a component whose heartbeat is missing within 1 microsecond. ++ ++.. aou_req:: Configure the heartbeat period ++ :id: aou_req__feature_name__hb_period ++ :reqtype: Process ++ :security: NO ++ :safety: ASIL_B ++ :status: valid ++ :version: 1 + +- .. aou_req:: Some Other Title +- :id: aou_req__feature_name__some_other_title +- :reqtype: Process +- :security: NO +- :safety: ASIL_B +- :status: invalid ++ The integrator shall configure a heartbeat period of TBD ms. + +- The Feature User shall do xyz to use the feature safely. ++No further Assumptions of Use are needed; we agreed on this with the integrator in the call on 2026-10-22. +-- +2.34.1 + diff --git a/training/patches/r5-security.patch b/training/patches/r5-security.patch new file mode 100644 index 0000000..90e74bb --- /dev/null +++ b/training/patches/r5-security.patch @@ -0,0 +1,65 @@ +From 6fac1da0e72a7c8c5363999286333a8a1d768f04 Mon Sep 17 00:00:00 2001 +From: S-CORE Contributor Training <contributor-training@users.noreply.github.com> +Date: Wed, 14 Oct 2026 13:56:17 +0200 +Subject: [PATCH] Add the heartbeat feature security assumptions of use + +--- + .../security_analysis/aou_requirements.rst | 35 +++++++++++++------ + 1 file changed, 24 insertions(+), 11 deletions(-) + +diff --git a/docs/features/security_analysis/aou_requirements.rst b/docs/features/security_analysis/aou_requirements.rst +index 1525dd7..d697757 100644 +--- a/docs/features/security_analysis/aou_requirements.rst ++++ b/docs/features/security_analysis/aou_requirements.rst +@@ -12,10 +12,10 @@ + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +-[Feature Name] Security Assumptions of Use +-========================================== ++Heartbeat Security Assumptions of Use ++===================================== + +-.. document:: [Feature Name] Feature Security AoU ++.. document:: Heartbeat Feature Security AoU + :id: doc__feature_name_sec_feat_aou + :status: draft + :version: 1 +@@ -37,13 +37,26 @@ + AoU + --- + +-.. code-block:: rst ++.. aou_req:: Authenticate heartbeat messages ++ :id: aou_req__feature_name__hb_auth ++ :reqtype: Process ++ :security: YES ++ :safety: QM ++ :status: valid ++ :version: 1 ++ ++ The integrator shall authenticate heartbeat messages between processes. ++ ++.. aou_req:: Patch heartbeat vulnerabilities ++ :id: aou_req__feature_name__hb_patch ++ :reqtype: Process ++ :security: YES ++ :safety: QM ++ :status: valid ++ :version: 1 ++ ++ The integrator shall deploy a fix for a heartbeat vulnerability to all vehicles in the field within 24 hours. + +- .. aou_req:: Some Other Title +- :id: aou_req__feature_name__sec_some_other_title +- :reqtype: Process +- :security: YES +- :safety: QM +- :status: invalid ++Every merge to the heartbeat feature runs the full CI pipeline, as required by :need:`std_req__isosae21434__continual_8321`. + +- The Feature User shall do xyz to use the feature securely. ++Open point: TBD - decide where the authentication keys are stored. +-- +2.34.1 + diff --git a/training/reviews/r3.json b/training/reviews/r3.json new file mode 100644 index 0000000..0c8b3d2 --- /dev/null +++ b/training/reviews/r3.json @@ -0,0 +1,15 @@ +{ + "patch": "r3.patch", + "comments": [ + { + "path": "docs/module/manuals/user_manual.rst", + "line_text": "* **Build System**: Bazel 6.0 or later", + "body": "`.bazelversion` pins Bazel 8.7.0. \"6.0 or later\" promises support for versions nobody builds with. Please state the version we actually use." + }, + { + "path": "docs/module/manuals/user_manual.rst", + "line_text": "* **Operating Systems**: Linux, QNX", + "body": "Training_Module does not support QNX. Please change this to \"Linux\" only." + } + ] +} diff --git a/training/setup.py b/training/setup.py new file mode 100755 index 0000000..f168124 --- /dev/null +++ b/training/setup.py @@ -0,0 +1,300 @@ +#!/usr/bin/env python3 +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +"""Prepare your copy of the S-CORE contributor training. + +Run it yourself, from a clone of your copy. The copy must already exist, made from +eclipse-score/contributor_training with "Use this template" (only ``main`` is copied). + +It creates, in your copy: + +* the labels ``stage-0`` .. ``stage-6`` and the three track labels, +* the branches ``defect/build-1`` .. ``defect/build-3`` from ``patches/build-*.patch``, +* the prepared pull requests from ``patches/r1``, ``r2``, ``r3``, ``r4`` and the ``r5`` variant + of another track, and the two review comments on the r3 pull request, +* the task issues from ``issues/*.md``, with the track texts and pull request numbers filled in. + +The pull requests and the review are posted under your own account. + +Usage:: + + python3 training/setup.py <you>/<copy> <quality|safety|security> + python3 training/setup.py ... --dry-run # everything local, nothing pushed or created + +It refuses a repository that was not made from the template, and is safe to run again: what an +interrupted run created (branches, pull requests, the review, issues) is taken over, not duplicated. + +Only ``git`` and ``gh`` are needed; all GitHub writes go through ``gh api``, which works with +old ``gh`` releases that have no ``gh label``. +""" + +from __future__ import annotations + +import argparse +import json +import re +import subprocess +import sys +import tempfile +import time +from pathlib import Path + +HERE = Path(__file__).resolve().parent +TEMPLATE = "eclipse-score/contributor_training" + +LABELS = [(f"stage-{n}", "0e8a16", f"Training stage {n}") for n in range(7)] + [ + ("quality", "1d76db", "Quality track"), + ("safety", "d93f0b", "Safety track"), + ("security", "5319e7", "Security track"), + ("improvement", "fbca04", "Continuous improvement of the training"), +] + +ROLES = { + "quality": { + "ROLE_TOPIC": "the module verification report", + "ROLE_DOC": "the module verification report, `docs/verification_report/module_verification_report.rst`," + " and the release note, `docs/module/release/release_note.rst`", + "r5": "r5-safety", + }, + "safety": { + "ROLE_TOPIC": "the FMEA", + "ROLE_DOC": "the module safety plan, `docs/module/safety_mgt/module_safety_plan.rst`", + "r5": "r5-security", + }, + "security": { + "ROLE_TOPIC": "the security analysis (threat analysis and risk assessment)", + "ROLE_DOC": "the module security plan, `docs/module/security_mgt/module_security_plan.rst`", + "r5": "r5-safety", + }, +} + +PR_BODY = "Please review." + +# Protect main only. A ruleset on all branches would reject every new branch the script pushes, +# because a new branch cannot have a green check yet. The API, unlike the web form, accepts check +# names that have never run in the repository, so the checks can be required from the start. +# GitHub offers rulesets for public repositories, and for private ones only on paid plans. +RULESET = { + "name": "Main", + "target": "branch", + "enforcement": "active", + "conditions": {"ref_name": {"include": ["~DEFAULT_BRANCH"], "exclude": []}}, + "bypass_actors": [], + "rules": [ + {"type": "deletion"}, + {"type": "non_fast_forward"}, + {"type": "pull_request", "parameters": { + "required_approving_review_count": 0, + "dismiss_stale_reviews_on_push": False, + "require_code_owner_review": False, + "require_last_push_approval": False, + "required_review_thread_resolution": False, + }}, + {"type": "required_status_checks", "parameters": { + "strict_required_status_checks_policy": False, + "required_status_checks": [ + {"context": "build-docs / Build Documentation"}, + {"context": "🔬 Pre-Commit"}, + ], + }}, + ], +} + + +def run(cmd: list[str], cwd: Path | None = None, stdin: str | None = None) -> str: + result = subprocess.run(cmd, cwd=cwd, input=stdin, text=True, capture_output=True) + if result.returncode != 0: + raise RuntimeError(f"{' '.join(cmd)} failed:\n{result.stdout}{result.stderr}") + return result.stdout + + +def api(method: str, path: str, payload: dict | None = None, ok_codes: tuple[int, ...] = ()) -> dict: + """Call the GitHub REST API through gh, retrying what the secondary rate limit rejects.""" + cmd = ["gh", "api", "-X", method, path, "--include"] + if payload is not None: + cmd += ["--input", "-"] + for attempt in range(4): + result = subprocess.run( + cmd, input=json.dumps(payload) if payload is not None else None, text=True, capture_output=True + ) + # gh prints the status line with \n and the headers with \r\n + head, body = (re.split(r"\r?\n\r?\n", result.stdout, maxsplit=1) + [""])[:2] + status = int(re.search(r"HTTP/\S+ (\d+)", head).group(1)) if head.startswith("HTTP") else 0 + if result.returncode == 0: + time.sleep(1) # stay well below the secondary rate limit for content creation + return json.loads(body) if body.strip() else {} + if status in ok_codes: + return {} + if status == 403 and "secondary rate limit" in body.lower() and attempt < 3: + time.sleep(60 * (attempt + 1)) + continue + raise RuntimeError(f"gh api {method} {path} -> {status}\n{body or result.stderr}") + raise AssertionError("unreachable") + + +def patch_subject(patch: Path) -> str: + """The commit subject, unfolded: format-patch wraps long headers onto indented lines.""" + match = re.search(r"^Subject: (?:\[PATCH[^\]]*\] )?(.*(?:\n[ \t].*)*)", patch.read_text(), re.MULTILINE) + if not match: + raise ValueError(f"no subject in {patch}") + return re.sub(r"\n[ \t]+", " ", match.group(1)).strip() + + +def make_branch(work: Path, branch: str, patch: Path, push: bool) -> str: + """Create the branch from the patch, or take the one an earlier run already pushed. + + The branch starts at the first commit of the copy, which is the state every patch was made + against, so that a later run still applies cleanly after pull requests were merged. + """ + remote = run(["git", "branch", "-r", "--list", f"origin/{branch}"], cwd=work).strip() + if remote: + return run(["git", "rev-parse", f"origin/{branch}"], cwd=work).strip() + root = run(["git", "rev-list", "--max-parents=0", "origin/main"], cwd=work).split()[-1] + run(["git", "switch", "-q", "-c", branch, root], cwd=work) + run(["git", "am", "-q", str(patch)], cwd=work) + if push: + run(["git", "push", "-q", "origin", branch], cwd=work) + sha = run(["git", "rev-parse", "HEAD"], cwd=work).strip() + run(["git", "switch", "-q", "--detach", "origin/main"], cwd=work) + return sha + + +def review_comments(work: Path, sha: str) -> list[dict]: + spec = json.loads((HERE / "reviews" / "r3.json").read_text()) + comments = [] + for c in spec["comments"]: + lines = run(["git", "show", f"{sha}:{c['path']}"], cwd=work).splitlines() + matches = [i + 1 for i, line in enumerate(lines) if line == c["line_text"]] + if len(matches) != 1: + raise ValueError(f"{c['path']}: expected one line {c['line_text']!r}, found {len(matches)}") + comments.append({"path": c["path"], "line": matches[0], "side": "RIGHT", "body": c["body"]}) + return comments + + +def render_issue(path: Path, values: dict[str, str]) -> tuple[str, list[str], str]: + text = re.sub(r"\A<!--.*?-->\s*", "", path.read_text(), flags=re.DOTALL) # licence header + head, _, body = text.partition("\n---\n") + fields = dict(line.split(": ", 1) for line in head.splitlines()) + for key, value in values.items(): + body = body.replace("{{" + key + "}}", value) + fields["title"] = fields["title"].replace("{{" + key + "}}", value) + left = re.findall(r"\{\{\w+\}\}", fields["title"] + body) + if left: + raise ValueError(f"{path.name}: unfilled {left}") + return fields["title"], [label.strip() for label in fields["labels"].split(",")], body.strip() + "\n" + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument("repo", help="your copy, owner/name") + parser.add_argument("role", metavar="track", choices=sorted(ROLES)) + parser.add_argument("--dry-run", action="store_true", help="apply everything locally, push and create nothing") + parser.add_argument("--clone-url", help="clone from here instead of GitHub (for testing)") + parser.add_argument("--ruleset", action="store_true", + help="also create a ruleset on main (pull request, no approvals, two required checks);" + " public copies only, unless your plan offers rulesets for private repositories") + parser.add_argument("--template", default=TEMPLATE, + help=f"the template the copy must be made from (default {TEMPLATE})") + args = parser.parse_args() + + role = ROLES[args.role] + push = not args.dry_run + url = args.clone_url or f"git@github.com:{args.repo}.git" + + if not args.clone_url: + info = json.loads(run(["gh", "api", f"repos/{args.repo}"])) + source = (info.get("template_repository") or {}).get("full_name") + if source != args.template: + print(f"{args.repo} was not made from {args.template} (template: {source}). An empty repository or a" + " plain copy cannot be used: create it with \"Use this template\".", file=sys.stderr) + return 1 + + with tempfile.TemporaryDirectory() as tmp: + work = Path(tmp) / "repo" + run(["git", "clone", "-q", url, str(work)]) + # "Include all branches" copies every branch of the template into the copy. + extra = [b for b in run(["git", "branch", "-r", "--format=%(refname:short)"], cwd=work).split() + if b not in ("origin/main", "origin/HEAD", "origin") + and not b.startswith(("origin/defect/", "origin/review/"))] + if extra: + print(f"{args.repo} has branches that do not belong in a training copy: {', '.join(extra)}." + " It was probably created with \"Include all branches\". Delete them first.", file=sys.stderr) + return 1 + + # An earlier run may have stopped half-way; take over what it created instead of duplicating it. + prs: dict[str, int] = {} + titles: set[str] = set() + if push: + for pr in api("GET", f"repos/{args.repo}/pulls?state=all&per_page=100"): + prs[pr["head"]["ref"]] = pr["number"] + for issue in api("GET", f"repos/{args.repo}/issues?state=all&per_page=100"): + if "pull_request" not in issue: + titles.add(issue["title"]) + + if args.ruleset: + if not push: + print("ruleset: would create \"Main\" on the default branch") + elif any(r["name"] == RULESET["name"] for r in api("GET", f"repos/{args.repo}/rulesets")): + print("ruleset exists: Main") + else: + api("POST", f"repos/{args.repo}/rulesets", RULESET) + print("ruleset: Main") + + if push: + for name, color, description in LABELS: + api("POST", f"repos/{args.repo}/labels", + {"name": name, "color": color, "description": description}, ok_codes=(422,)) + print(f"labels: {len(LABELS)}") + + for n in (1, 2, 3): + make_branch(work, f"defect/build-{n}", HERE / "patches" / f"build-{n}.patch", push) + print(f"branch defect/build-{n}") + + numbers: dict[str, str] = {} + for key, patch_name in (("R1", "r1"), ("R2", "r2"), ("R3", "r3"), ("R4", "r4"), ("R5", role["r5"])): + patch = HERE / "patches" / f"{patch_name}.patch" + branch = f"review/{patch_name}" + sha = make_branch(work, branch, patch, push) + title = patch_subject(patch) + if push and branch in prs: + numbers[f"PR_{key}"] = str(prs[branch]) + elif push: + pr = api("POST", f"repos/{args.repo}/pulls", + {"title": title, "head": branch, "base": "main", "body": PR_BODY}) + numbers[f"PR_{key}"] = str(pr["number"]) + else: + numbers[f"PR_{key}"] = f"<{key}>" + if key == "R3": + comments = review_comments(work, sha) + if push and not api("GET", f"repos/{args.repo}/pulls/{numbers['PR_R3']}/reviews"): + api("POST", f"repos/{args.repo}/pulls/{numbers['PR_R3']}/reviews", + {"commit_id": sha, "event": "COMMENT", "comments": comments}) + print(f" review comments on lines {[c['line'] for c in comments]}") + print(f"pull request #{numbers[f'PR_{key}']} {branch}: {title}") + + values = {**numbers, "ROLE_TOPIC": role["ROLE_TOPIC"], "ROLE_DOC": role["ROLE_DOC"]} + for path in sorted((HERE / "issues").glob("*.md")): + title, labels, body = render_issue(path, values) + labels.append(args.role) + if push and title in titles: + print(f"issue exists: {title}") + elif push: + issue = api("POST", f"repos/{args.repo}/issues", {"title": title, "body": body, "labels": labels}) + print(f"issue #{issue['number']} {title}") + else: + print(f"issue {title} {labels}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) From 1552cfa557ee6b8fcc36352c0c9902495267f250 Mon Sep 17 00:00:00 2001 From: PandaeDo <volker.haeussler@qorix.ai> Date: Thu, 29 Oct 2026 11:22:07 +0100 Subject: [PATCH 2/4] Disclose AI assistance in the header of every largely AI-generated file Follows the Eclipse Project Handbook, "Using Artificial Intelligence / Disclosure": the files written with Claude Code (training/, TRAINING.md, README.md, the issue forms and template, the certificate workflow and its script, docs/participants/index.rst) carry the disclosure that their AI-generated portions are made available under CC0-1.0, the SPDX expression "Apache-2.0 AND CC0-1.0" and an Assisted-by line. training/reviews/r3.json gets the same expression through REUSE.toml. LICENSES/CC0-1.0.txt is the SPDX licence text. The module files taken from module_template keep their header. Checked: pre-commit passes on all files (copyright, reuse lint-file; bazel mod hooks skipped); every task issue still renders without its header. Assisted-by: Claude Code (claude-opus-5-5) --- .github/ISSUE_TEMPLATE/bug_report.yml | 8 +- .github/ISSUE_TEMPLATE/config.yml | 8 +- .github/ISSUE_TEMPLATE/feedback.yml | 8 +- .github/ISSUE_TEMPLATE/training_completed.yml | 8 +- .github/ISSUE_TEMPLATE/training_finding.md | 8 +- .github/certificate/certificate.py | 8 +- .github/workflows/certificate.yml | 8 +- LICENSES/CC0-1.0.txt | 121 ++++++++++++++++++ README.md | 8 +- REUSE.toml | 2 +- TRAINING.md | 8 +- docs/participants/index.rst | 8 +- training/README.md | 8 +- training/SOLUTIONS.md | 8 +- training/issues/01-task-0.1.md | 8 +- training/issues/02-task-1.1.md | 8 +- training/issues/03-task-1.2.md | 8 +- training/issues/04-task-2.1.md | 8 +- training/issues/05-task-2.4.md | 8 +- training/issues/06-task-3.1.md | 8 +- training/issues/07-task-3.2.md | 8 +- training/issues/08-task-4.1.md | 8 +- training/issues/09-task-4.2.md | 8 +- training/issues/10-task-4.3.md | 8 +- training/issues/11-task-5.1-5.3.md | 8 +- training/issues/12-task-5.4.md | 8 +- training/issues/14-task-6.1.md | 8 +- training/issues/15-task-6.2-6.3.md | 8 +- training/issues/16-continuous-improvement.md | 8 +- training/setup.py | 8 +- 30 files changed, 318 insertions(+), 29 deletions(-) create mode 100644 LICENSES/CC0-1.0.txt diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index bf35f9f..5fa2826 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -8,7 +8,13 @@ # terms of the Apache License Version 2.0 which is available at # https://www.apache.org/licenses/LICENSE-2.0 # -# SPDX-License-Identifier: Apache-2.0 +# AI Disclosure: This file was largely AI-generated. The AI-generated +# portions are made available under CC0-1.0 and not subject to the +# project's licence. The human contributor has reviewed and verified +# that the content is correct. +# +# SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 +# Assisted-by: Claude Code (claude-opus-5-5) # ******************************************************************************* name: Bug report description: Something in the contributor training does not work as described diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 34d0adc..09428dc 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -8,7 +8,13 @@ # terms of the Apache License Version 2.0 which is available at # https://www.apache.org/licenses/LICENSE-2.0 # -# SPDX-License-Identifier: Apache-2.0 +# AI Disclosure: This file was largely AI-generated. The AI-generated +# portions are made available under CC0-1.0 and not subject to the +# project's licence. The human contributor has reviewed and verified +# that the content is correct. +# +# SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 +# Assisted-by: Claude Code (claude-opus-5-5) # ******************************************************************************* blank_issues_enabled: true contact_links: diff --git a/.github/ISSUE_TEMPLATE/feedback.yml b/.github/ISSUE_TEMPLATE/feedback.yml index 57b302f..2a5a157 100644 --- a/.github/ISSUE_TEMPLATE/feedback.yml +++ b/.github/ISSUE_TEMPLATE/feedback.yml @@ -8,7 +8,13 @@ # terms of the Apache License Version 2.0 which is available at # https://www.apache.org/licenses/LICENSE-2.0 # -# SPDX-License-Identifier: Apache-2.0 +# AI Disclosure: This file was largely AI-generated. The AI-generated +# portions are made available under CC0-1.0 and not subject to the +# project's licence. The human contributor has reviewed and verified +# that the content is correct. +# +# SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 +# Assisted-by: Claude Code (claude-opus-5-5) # ******************************************************************************* name: Feedback description: Tell the maintainers what should be better in the contributor training diff --git a/.github/ISSUE_TEMPLATE/training_completed.yml b/.github/ISSUE_TEMPLATE/training_completed.yml index 4f697c4..9b80b63 100644 --- a/.github/ISSUE_TEMPLATE/training_completed.yml +++ b/.github/ISSUE_TEMPLATE/training_completed.yml @@ -8,7 +8,13 @@ # terms of the Apache License Version 2.0 which is available at # https://www.apache.org/licenses/LICENSE-2.0 # -# SPDX-License-Identifier: Apache-2.0 +# AI Disclosure: This file was largely AI-generated. The AI-generated +# portions are made available under CC0-1.0 and not subject to the +# project's licence. The human contributor has reviewed and verified +# that the content is correct. +# +# SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 +# Assisted-by: Claude Code (claude-opus-5-5) # ******************************************************************************* name: Training completed description: Record that you completed the contributor training diff --git a/.github/ISSUE_TEMPLATE/training_finding.md b/.github/ISSUE_TEMPLATE/training_finding.md index 9bb2176..18a8909 100644 --- a/.github/ISSUE_TEMPLATE/training_finding.md +++ b/.github/ISSUE_TEMPLATE/training_finding.md @@ -17,7 +17,13 @@ This program and the accompanying materials are made available under the terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 -SPDX-License-Identifier: Apache-2.0 +AI Disclosure: This file was largely AI-generated. The AI-generated +portions are made available under CC0-1.0 and not subject to the +project's licence. The human contributor has reviewed and verified +that the content is correct. + +SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 +Assisted-by: Claude Code (claude-opus-5-5) ******************************************************************************* --> diff --git a/.github/certificate/certificate.py b/.github/certificate/certificate.py index 7069484..9682708 100644 --- a/.github/certificate/certificate.py +++ b/.github/certificate/certificate.py @@ -8,7 +8,13 @@ # terms of the Apache License Version 2.0 which is available at # https://www.apache.org/licenses/LICENSE-2.0 # -# SPDX-License-Identifier: Apache-2.0 +# AI Disclosure: This file was largely AI-generated. The AI-generated +# portions are made available under CC0-1.0 and not subject to the +# project's licence. The human contributor has reviewed and verified +# that the content is correct. +# +# SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 +# Assisted-by: Claude Code (claude-opus-5-5) # ******************************************************************************* """Issue the certificate of completion of the onboarding training. diff --git a/.github/workflows/certificate.yml b/.github/workflows/certificate.yml index 20ee660..6801cee 100644 --- a/.github/workflows/certificate.yml +++ b/.github/workflows/certificate.yml @@ -8,7 +8,13 @@ # terms of the Apache License Version 2.0 which is available at # https://www.apache.org/licenses/LICENSE-2.0 # -# SPDX-License-Identifier: Apache-2.0 +# AI Disclosure: This file was largely AI-generated. The AI-generated +# portions are made available under CC0-1.0 and not subject to the +# project's licence. The human contributor has reviewed and verified +# that the content is correct. +# +# SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 +# Assisted-by: Claude Code (claude-opus-5-5) # ******************************************************************************* # The last step of the onboarding training. Run by hand once every issue is closed: it checks that diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt new file mode 100644 index 0000000..0e259d4 --- /dev/null +++ b/LICENSES/CC0-1.0.txt @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/README.md b/README.md index cb3e742..7d8f636 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> # S-CORE contributor training diff --git a/REUSE.toml b/REUSE.toml index 30d4b46..7328dfa 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -41,4 +41,4 @@ SPDX-License-Identifier = "Apache-2.0" [[annotations]] path = ["training/reviews/*.json"] SPDX-FileCopyrightText = "Copyright (c) 2026 Contributors to the Eclipse Foundation" -SPDX-License-Identifier = "Apache-2.0" +SPDX-License-Identifier = "Apache-2.0 AND CC0-1.0" diff --git a/TRAINING.md b/TRAINING.md index 01ff677..aeedd7a 100644 --- a/TRAINING.md +++ b/TRAINING.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> # S-CORE contributor training diff --git a/docs/participants/index.rst b/docs/participants/index.rst index 062ca42..272857a 100644 --- a/docs/participants/index.rst +++ b/docs/participants/index.rst @@ -9,7 +9,13 @@ # terms of the Apache License Version 2.0 which is available at # https://www.apache.org/licenses/LICENSE-2.0 # - # SPDX-License-Identifier: Apache-2.0 + # AI Disclosure: This file was largely AI-generated. The AI-generated + # portions are made available under CC0-1.0 and not subject to the + # project's licence. The human contributor has reviewed and verified + # that the content is correct. + # + # SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + # Assisted-by: Claude Code (claude-opus-5-5) # ******************************************************************************* Participants diff --git a/training/README.md b/training/README.md index 18c6079..a4249e4 100644 --- a/training/README.md +++ b/training/README.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> # Maintaining the training diff --git a/training/SOLUTIONS.md b/training/SOLUTIONS.md index 2840caf..339dd1d 100644 --- a/training/SOLUTIONS.md +++ b/training/SOLUTIONS.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> # Training solutions diff --git a/training/issues/01-task-0.1.md b/training/issues/01-task-0.1.md index ba434ff..3be392d 100644 --- a/training/issues/01-task-0.1.md +++ b/training/issues/01-task-0.1.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: 0.1 Set up your environment diff --git a/training/issues/02-task-1.1.md b/training/issues/02-task-1.1.md index 68423ed..8b9d4f4 100644 --- a/training/issues/02-task-1.1.md +++ b/training/issues/02-task-1.1.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: 1.1 Bring your repository up to date with its upstream diff --git a/training/issues/03-task-1.2.md b/training/issues/03-task-1.2.md index dabe382..789fed6 100644 --- a/training/issues/03-task-1.2.md +++ b/training/issues/03-task-1.2.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: 1.2-1.3 Fix typos with a commit that carries its reasoning diff --git a/training/issues/04-task-2.1.md b/training/issues/04-task-2.1.md index 60467a3..7274a3e 100644 --- a/training/issues/04-task-2.1.md +++ b/training/issues/04-task-2.1.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: 2.1 Build the documentation clean and read the result diff --git a/training/issues/05-task-2.4.md b/training/issues/05-task-2.4.md index f3b5df0..3154076 100644 --- a/training/issues/05-task-2.4.md +++ b/training/issues/05-task-2.4.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: 2.2-2.4 Repair the defect branches diff --git a/training/issues/06-task-3.1.md b/training/issues/06-task-3.1.md index c54ab8d..9fb6399 100644 --- a/training/issues/06-task-3.1.md +++ b/training/issues/06-task-3.1.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: 3.1 Find the process behind your work product diff --git a/training/issues/07-task-3.2.md b/training/issues/07-task-3.2.md index 297eb1b..27616f9 100644 --- a/training/issues/07-task-3.2.md +++ b/training/issues/07-task-3.2.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: 3.2 Find what the S-CORE project decided about it diff --git a/training/issues/08-task-4.1.md b/training/issues/08-task-4.1.md index 47f213f..51c3e70 100644 --- a/training/issues/08-task-4.1.md +++ b/training/issues/08-task-4.1.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: 4.1 Review pull request #{{PR_R1}} (form) diff --git a/training/issues/09-task-4.2.md b/training/issues/09-task-4.2.md index b872fec..5f40e5b 100644 --- a/training/issues/09-task-4.2.md +++ b/training/issues/09-task-4.2.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: 4.2 Review pull request #{{PR_R2}} (content) diff --git a/training/issues/10-task-4.3.md b/training/issues/10-task-4.3.md index 532d374..efd59a7 100644 --- a/training/issues/10-task-4.3.md +++ b/training/issues/10-task-4.3.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: 4.3 Answer the review on pull request #{{PR_R3}} diff --git a/training/issues/11-task-5.1-5.3.md b/training/issues/11-task-5.1-5.3.md index b4c6411..a8e264b 100644 --- a/training/issues/11-task-5.1-5.3.md +++ b/training/issues/11-task-5.1-5.3.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: 5.1-5.3 Bring your document to the current template state diff --git a/training/issues/12-task-5.4.md b/training/issues/12-task-5.4.md index 4a83850..e885b7d 100644 --- a/training/issues/12-task-5.4.md +++ b/training/issues/12-task-5.4.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: 5.4 Fill in your track's document diff --git a/training/issues/14-task-6.1.md b/training/issues/14-task-6.1.md index c370b07..04abd4e 100644 --- a/training/issues/14-task-6.1.md +++ b/training/issues/14-task-6.1.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: 6.1 Cross-review pull request #{{PR_R5}} diff --git a/training/issues/15-task-6.2-6.3.md b/training/issues/15-task-6.2-6.3.md index 56c25b0..1585d0e 100644 --- a/training/issues/15-task-6.2-6.3.md +++ b/training/issues/15-task-6.2-6.3.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: 6.2-6.3 Formal review of your document, and your retrospective diff --git a/training/issues/16-continuous-improvement.md b/training/issues/16-continuous-improvement.md index aca4be1..9c7723d 100644 --- a/training/issues/16-continuous-improvement.md +++ b/training/issues/16-continuous-improvement.md @@ -8,7 +8,13 @@ terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 - SPDX-License-Identifier: Apache-2.0 + AI Disclosure: This file was largely AI-generated. The AI-generated + portions are made available under CC0-1.0 and not subject to the + project's licence. The human contributor has reviewed and verified + that the content is correct. + + SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 + Assisted-by: Claude Code (claude-opus-5-5) ----------------------------------------------------------------------------- --> title: Continuous improvement: what should be better in this training diff --git a/training/setup.py b/training/setup.py index f168124..da7e74b 100755 --- a/training/setup.py +++ b/training/setup.py @@ -9,7 +9,13 @@ # terms of the Apache License Version 2.0 which is available at # https://www.apache.org/licenses/LICENSE-2.0 # -# SPDX-License-Identifier: Apache-2.0 +# AI Disclosure: This file was largely AI-generated. The AI-generated +# portions are made available under CC0-1.0 and not subject to the +# project's licence. The human contributor has reviewed and verified +# that the content is correct. +# +# SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 +# Assisted-by: Claude Code (claude-opus-5-5) # ******************************************************************************* """Prepare your copy of the S-CORE contributor training. From 263bbfe441622a7cd96350716aff6d648bd1e4ed Mon Sep 17 00:00:00 2001 From: PandaeDo <volker.haeussler@qorix.ai> Date: Thu, 29 Oct 2026 14:03:56 +0100 Subject: [PATCH 3/4] Address the Copilot review: stage 5 build, quality checklist, quick-start commands Task 5.1-5.3: bringing the safety or security plan to template commit #198 breaks the build, because #198 also renames the user manual id and the plans it brings refer to the new id. Checked by a clean build of each track's documents at module_template 775aad3c: quality green, safety and security fail with "linked need doc__mod_temp_module_name_user_manual not found". With the id change in user_manual.rst taken along, both build green. The task now says a template commit can change more than the participant's document; SOLUTIONS.md records the expected reaction. Task 6.2: the module has FDR checklists only for the safety and security plans. Each track now names its checklist (ROLE_CHECKLIST); quality uses the process description's gd_chklst__review_checklist. docs/index.rst: the quick-start commands named //src and //tests, which do not exist. Taken over from module_template #218. user_manual.rst: the example dependency named a non-existent target :component; the library is component_example (reported upstream as module_template#226). Checked: every patch applies to a first commit with these changes; the task issues of all three tracks render without open placeholders; pre-commit passes; rm -rf _build && bazel run //:docs is green. Not changed here, because the files are unchanged from module_template and are fixed there: gitlint image prefix (#223), issue template front matter (#224), pull request template links (#225). Assisted-by: Claude Code (claude-opus-5-5) --- docs/index.rst | 16 +++++++++++----- docs/module/manuals/user_manual.rst | 2 +- training/README.md | 1 + training/SOLUTIONS.md | 17 +++++++++++++++-- training/issues/11-task-5.1-5.3.md | 2 +- training/issues/15-task-6.2-6.3.md | 2 +- training/setup.py | 6 +++++- 7 files changed, 35 insertions(+), 11 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index cf77ab9..5cd97e8 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -111,7 +111,7 @@ To build the entire module: .. code-block:: bash - bazel build //src/... + bazel build //score/... To run all tests: @@ -119,17 +119,23 @@ To run all tests: bazel test //... -To run only unit tests: +To run only the unit tests of a component (example): .. code-block:: bash - bazel test //src/... + bazel test //score/component_example:component_example_unit_tests -To run only component or feature integration tests: +To run only the component integration tests of a component (example): .. code-block:: bash - bazel test //tests/... + bazel test //score/component_example:component_example_component_integration_tests + +To run only feature integration tests: + +.. code-block:: bash + + bazel test //score/tests/... Module Build Configuration diff --git a/docs/module/manuals/user_manual.rst b/docs/module/manuals/user_manual.rst index d8b32b1..1b18bb6 100644 --- a/docs/module/manuals/user_manual.rst +++ b/docs/module/manuals/user_manual.rst @@ -109,7 +109,7 @@ Integrating with Your Project cc_library( name = "my_target", - deps = ["@module_template//score/component_example:component"], + deps = ["@module_template//score/component_example:component_example"], ) 3. Include headers and compile your code diff --git a/training/README.md b/training/README.md index a4249e4..1f56203 100644 --- a/training/README.md +++ b/training/README.md @@ -56,6 +56,7 @@ A track is an entry in `ROLES` in `setup.py` and a label in `LABELS`: * `ROLE_TOPIC`: the topic for task 3.2, * `ROLE_DOC`: the document the participant fills in in task 5.4, +* `ROLE_CHECKLIST`: the checklist for the formal review of that document in task 6.2, * `r5`: the cross-review pull request (6.1) of another track. Then add the track's defects to the module's documents (one per track is enough, see diff --git a/training/SOLUTIONS.md b/training/SOLUTIONS.md index 339dd1d..5faba52 100644 --- a/training/SOLUTIONS.md +++ b/training/SOLUTIONS.md @@ -151,5 +151,18 @@ These are on `main` (PR #3) and therefore in every participant repository from t | Security | Module security plan, tailoring | Cybersecurity assessment tailored out with reference `std_req__isosae21434__assessment_15621` | The stem "assessment" belongs to clause 15 (TARA methods); the cybersecurity assessment is clause 6.4.9 (`prj_management_649x`) | The template defect for tasks 5.1-5.3: `docs/` and `score/component_example/docs/` are at the parent -of module_template `775aad3c` (#198); `git diff upstream/main -- docs` against the public template -shows the difference. +of module_template `775aad3c` (#198), except the quick-start commands in `docs/index.rst`, which +are taken from #218; `git diff upstream/main -- docs` against the public template shows the +difference. + +The template commit does more than the participant's document. #198 also renames the user manual's +id from `doc__user_manual` to `doc__mod_temp_module_name_user_manual`, and the safety and security +plans it brings refer to the new id. A Safety or Security participant who updates only the plan gets +`linked need doc__mod_temp_module_name_user_manual not found`. Expected reaction: read #198, take its +id change in `user_manual.rst` into the same pull request, and check that nothing else refers to the +old id. The Quality documents at #198 build without it. Checked 2026-10-29 by a clean build of each +track's documents at `775aad3c`: quality green, safety and security with exactly this warning. + +Task 6.2: Safety and Security review their plan with the module's FDR checklist; the module has none +for the verification report or the release note, so Quality uses the process description's +`gd_chklst__review_checklist`. diff --git a/training/issues/11-task-5.1-5.3.md b/training/issues/11-task-5.1-5.3.md index a8e264b..3810a30 100644 --- a/training/issues/11-task-5.1-5.3.md +++ b/training/issues/11-task-5.1-5.3.md @@ -24,7 +24,7 @@ Your document: **{{ROLE_DOC}}**. Do this task **before** you fill the document i **5.1 Find the deviation.** Compare your document with the module template it came from: `git fetch upstream`, then `git diff main upstream/main -- <your file>`. Which template commit is your document missing? Raise an issue for it with the "Training finding" template (on GitHub: **Issues → New issue → Training finding**). -**5.2 Update on a branch.** Create a branch from `main`, bring the document to the current template state, commit, push and open a pull request that closes your issue and this one. **Do not merge it yet.** +**5.2 Update on a branch.** Create a branch from `main`, bring the document to the current template state, commit, push and open a pull request that closes your issue and this one. A template commit can change more than your document: if the build fails after your update, find out from the template commit why, and repair it in the same pull request. **Do not merge it yet.** **5.3 A colleague was faster.** While your pull request was open, pull request #{{PR_R4}} changed the same file. Merge #{{PR_R4}} into `main` now. Then bring your branch up to date **by rebasing** onto `main`, resolve the conflict in VS Code's merge editor and push with `git push --force-with-lease`. When you resolve the conflict, decide which side is right. Do not just pick one. diff --git a/training/issues/15-task-6.2-6.3.md b/training/issues/15-task-6.2-6.3.md index 1585d0e..870f4be 100644 --- a/training/issues/15-task-6.2-6.3.md +++ b/training/issues/15-task-6.2-6.3.md @@ -20,7 +20,7 @@ title: 6.2-6.3 Formal review of your document, and your retrospective labels: stage-6 --- -1. Perform the formal document review (FDR) of your document from task 5.4 with the checklist the module provides for it. Record the filled-in checklist in the repository. +1. Perform the formal document review (FDR) of your document from task 5.4 with {{ROLE_CHECKLIST}}. Record the filled-in checklist in the repository. 2. Add a retrospective to your participant page. Summarise your comments on the continuous improvement issue. What was missing in this training? Which S-CORE issue would you take on first? The S-CORE User's Guide, "What's Next?", says where to find good first issues. **Done when** one merged pull request contains both. It closes this issue and any task or finding issue still open; the continuous improvement issue may stay open. diff --git a/training/setup.py b/training/setup.py index da7e74b..8c1bc59 100755 --- a/training/setup.py +++ b/training/setup.py @@ -70,16 +70,20 @@ "ROLE_TOPIC": "the module verification report", "ROLE_DOC": "the module verification report, `docs/verification_report/module_verification_report.rst`," " and the release note, `docs/module/release/release_note.rst`", + "ROLE_CHECKLIST": "the Quality Work Product Review Checklist of the process description" + " (`gd_chklst__review_checklist`)", "r5": "r5-safety", }, "safety": { "ROLE_TOPIC": "the FMEA", "ROLE_DOC": "the module safety plan, `docs/module/safety_mgt/module_safety_plan.rst`", + "ROLE_CHECKLIST": "the module's checklist for it, `docs/module/safety_mgt/module_safety_plan_fdr.rst`", "r5": "r5-security", }, "security": { "ROLE_TOPIC": "the security analysis (threat analysis and risk assessment)", "ROLE_DOC": "the module security plan, `docs/module/security_mgt/module_security_plan.rst`", + "ROLE_CHECKLIST": "the module's checklist for it, `docs/module/security_mgt/module_security_plan_fdr.rst`", "r5": "r5-safety", }, } @@ -288,7 +292,7 @@ def main() -> int: print(f" review comments on lines {[c['line'] for c in comments]}") print(f"pull request #{numbers[f'PR_{key}']} {branch}: {title}") - values = {**numbers, "ROLE_TOPIC": role["ROLE_TOPIC"], "ROLE_DOC": role["ROLE_DOC"]} + values = {**numbers, **{k: v for k, v in role.items() if k.startswith("ROLE_")}} for path in sorted((HERE / "issues").glob("*.md")): title, labels, body = render_issue(path, values) labels.append(args.role) From 244d1ed3dbf6d0bbdc5eb9baf48cea468908a86f Mon Sep 17 00:00:00 2001 From: PandaeDo <volker.haeussler@qorix.ai> Date: Fri, 30 Oct 2026 07:44:12 +0100 Subject: [PATCH 4/4] State the training's purpose and learning goals; practise the S-CORE issue forms Review feedback on #2 (masc2023): a reviewer misses what the training is for, whom it is for and what one can do afterwards, with links into the files; and the issue templates are not the ones S-CORE uses. README.md gets a "Purpose" section: why, for whom (quality, safety and security roles; further tracks are planned), and a table per stage with the learning goal, the task issues, the material and the section of SOLUTIONS.md. Each goal was checked against the "Done when" of its tasks. The training now uses copies of the organisation forms Bug and Task from eclipse-score/.github (8001e21a) instead of its own "Training finding". Organisation forms and issue types do not reach a copy in a personal account, so the copy carries them; only "(S-CORE form)" in the name and the removed `type:` deviate, as their header says. TRAINING.md rule 2 says so, and tasks 1.3, 2.2-2.4 and 4.2 (defects: Bug) and 3.2 and 5.1 (open point, template update: Task) name the form. training/README.md asks maintainers to re-copy the forms before a release. bug_fix.md and improvement.md, inherited from module_template, are removed: GitHub does not recognise them, and their folder hides the organisation forms. Deleting them is proposed for module_template in #224. Checked: pre-commit passes; every patch applies to a first commit with these changes; the task issues of all three tracks render; every file the README links exists. The certificate is unaffected: it tells tasks from own findings by the title, not by the form. Assisted-by: Claude Code (claude-opus-5-5) --- .github/ISSUE_TEMPLATE/4_Task.yml | 44 +++++++ .github/ISSUE_TEMPLATE/5_Bug.yml | 139 +++++++++++++++++++++ .github/ISSUE_TEMPLATE/bug_fix.md | 26 ---- .github/ISSUE_TEMPLATE/improvement.md | 26 ---- .github/ISSUE_TEMPLATE/training_finding.md | 48 ------- README.md | 26 ++++ TRAINING.md | 14 ++- training/README.md | 7 ++ training/issues/03-task-1.2.md | 2 +- training/issues/05-task-2.4.md | 2 +- training/issues/07-task-3.2.md | 2 +- training/issues/09-task-4.2.md | 2 +- training/issues/11-task-5.1-5.3.md | 2 +- 13 files changed, 230 insertions(+), 110 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/4_Task.yml create mode 100644 .github/ISSUE_TEMPLATE/5_Bug.yml delete mode 100644 .github/ISSUE_TEMPLATE/bug_fix.md delete mode 100644 .github/ISSUE_TEMPLATE/improvement.md delete mode 100644 .github/ISSUE_TEMPLATE/training_finding.md diff --git a/.github/ISSUE_TEMPLATE/4_Task.yml b/.github/ISSUE_TEMPLATE/4_Task.yml new file mode 100644 index 0000000..370649f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/4_Task.yml @@ -0,0 +1,44 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +# Copied from eclipse-score/.github, .github/ISSUE_TEMPLATE/4_Task.yml at +# 8001e21a9f9dcd70000b84376f2895011e58348c. Changed: "(S-CORE form)" added to the name, and +# `type:` removed, because issue types exist only in an organisation and a training copy +# lives in a personal account. Keep the rest identical; see training/README.md. + +name: Task (S-CORE form) +description: Issue to track a Task +title: "Your Task title" +body: + - type: markdown + attributes: + value: "## <ins>Task Ticket creation</ins>" + - type: textarea + attributes: + label: What + description: | + - Goal of the Task + validations: + required: true + - type: textarea + attributes: + label: Acceptance Criteria (DoD) + description: Details on when the Task is considered "done" + validations: + required: true + - type: textarea + attributes: + label: How + description: Details on implementation approach + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/5_Bug.yml b/.github/ISSUE_TEMPLATE/5_Bug.yml new file mode 100644 index 0000000..04fd5b2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/5_Bug.yml @@ -0,0 +1,139 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +# Copied from eclipse-score/.github, .github/ISSUE_TEMPLATE/5_Bug.yml at +# 8001e21a9f9dcd70000b84376f2895011e58348c. Changed: "(S-CORE form)" added to the name, and +# `type:` removed, because issue types exist only in an organisation and a training copy +# lives in a personal account. Keep the rest identical; see training/README.md. + +name: Bug (S-CORE form) +description: Issue to track a Bug +title: "Your Bug title" +body: + - type: markdown + attributes: + value: "## <ins>Bug Ticket creation</ins>" + - type: textarea + attributes: + label: Description + description: | + Description of the Bug + Root cause / Impact / Notification required? + validations: + required: true + - type: textarea + attributes: + label: Problem notifications + description: | + Record whether notification is needed and why, including if not needed. + Identify affected parties. If notification is needed, record who was notified, + when and how, with a link to an issue comment with an explicit mention or another communication reference. + Listing a recipient alone does not record a performed notification. + For suspected vulnerabilities, follow the project's confidential reporting policy. + validations: + required: false + - type: textarea + attributes: + label: Analysis results + description: | + Documentation of the analysis results + validations: + required: false + - type: textarea + attributes: + label: Solution + description: | + Documentation of the solution + Link to Pull Request containing the solution + validations: + required: false + - type: dropdown + attributes: + label: Error Occurrence Rate + options: + - Single Event + - Sporadic + - Highly Intermittent + - Reproducible + - type: textarea + attributes: + label: How to reproduce + description: How to reproduce? + - type: textarea + attributes: + label: Supporting Information + description: | + During which operational state did the issue occur + Observations / Screenshots / Traces + validations: + required: false + - type: dropdown + attributes: + label: Classification + options: + - Minor + - Major + - Critical + - Blocker + default: 0 + validations: + required: true + - type: dropdown + attributes: + label: First Affected Release + options: + - not released (main) + - pre-0.5 + - 0.5 + - 0.6 + - 0.7 + - 0.8 + - 0.9 + - 1.0 + default: 0 + validations: + required: false + - type: dropdown + attributes: + label: Last Affected Release + options: + - not released (main) + - 0.5 + - 0.6 + - 0.7 + - 0.8 + - 0.9 + - 1.0 + default: 0 + validations: + required: false + - type: dropdown + attributes: + label: Expected Fixed Release + options: + - before release (main) + - 0.5 + - 0.6 + - 0.7 + - 0.8 + - 0.9 + - 1.0 + default: 0 + validations: + required: false + - type: checkboxes + attributes: + label: Category + options: + - label: Safety Relevant + - label: Security Relevant diff --git a/.github/ISSUE_TEMPLATE/bug_fix.md b/.github/ISSUE_TEMPLATE/bug_fix.md deleted file mode 100644 index 7d6c290..0000000 --- a/.github/ISSUE_TEMPLATE/bug_fix.md +++ /dev/null @@ -1,26 +0,0 @@ -<!-- -******************************************************************************* -Copyright (c) 2026 Contributors to the Eclipse Foundation - -See the NOTICE file(s) distributed with this work for additional -information regarding copyright ownership. - -This program and the accompanying materials are made available under the -terms of the Apache License Version 2.0 which is available at -https://www.apache.org/licenses/LICENSE-2.0 - -SPDX-License-Identifier: Apache-2.0 -******************************************************************************* ---> - ---- -name: Bugfix -about: 'Issue to track a bugfix' -title: 'Bugfix: Your bugfix title' -labels: 'codeowner_review' -assignees: '' - ---- - -> [!IMPORTANT] -> Make sure to link this issue with the PR for your bugfix. diff --git a/.github/ISSUE_TEMPLATE/improvement.md b/.github/ISSUE_TEMPLATE/improvement.md deleted file mode 100644 index 769b0e7..0000000 --- a/.github/ISSUE_TEMPLATE/improvement.md +++ /dev/null @@ -1,26 +0,0 @@ -<!-- -******************************************************************************* -Copyright (c) 2026 Contributors to the Eclipse Foundation - -See the NOTICE file(s) distributed with this work for additional -information regarding copyright ownership. - -This program and the accompanying materials are made available under the -terms of the Apache License Version 2.0 which is available at -https://www.apache.org/licenses/LICENSE-2.0 - -SPDX-License-Identifier: Apache-2.0 -******************************************************************************* ---> - ---- -name: Improvement -about: 'Issue to track a improvement' -title: 'Improvement: Your improvement title' -labels: 'codeowner_review' -assignees: '' - ---- - -> [!IMPORTANT] -> Make sure to link this issue with the PR for your improvement. diff --git a/.github/ISSUE_TEMPLATE/training_finding.md b/.github/ISSUE_TEMPLATE/training_finding.md deleted file mode 100644 index 18a8909..0000000 --- a/.github/ISSUE_TEMPLATE/training_finding.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -name: Training finding -about: A defect you found during the onboarding training -title: "" -labels: "" -assignees: "" ---- - -<!-- -******************************************************************************* -Copyright (c) 2026 Contributors to the Eclipse Foundation - -See the NOTICE file(s) distributed with this work for additional -information regarding copyright ownership. - -This program and the accompanying materials are made available under the -terms of the Apache License Version 2.0 which is available at -https://www.apache.org/licenses/LICENSE-2.0 - -AI Disclosure: This file was largely AI-generated. The AI-generated -portions are made available under CC0-1.0 and not subject to the -project's licence. The human contributor has reviewed and verified -that the content is correct. - -SPDX-License-Identifier: Apache-2.0 AND CC0-1.0 -Assisted-by: Claude Code (claude-opus-5-5) -******************************************************************************* ---> - -## What is wrong - -<!-- One defect per issue. Quote the build message or the passage. --> - -## Where - -<!-- File and line, or need id. --> - -## Why it is wrong - -<!-- The rule, process requirement or standard clause it violates, with its id. --> - -## How to recognise that it is fixed - -<!-- The check that turns green, or what the document says afterwards. --> - -## Task - -<!-- The training task this belongs to, for example 2.3. Add the labels stage-<n> and your role. --> diff --git a/README.md b/README.md index 7d8f636..1833bb8 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,32 @@ A self-paced, hands-on training for people who want to contribute to [Eclipse S-CORE](https://projects.eclipse.org/projects/automotive.score): build, review, fix and rebase in a realistic S-CORE module, without any risk to a real project. +## Purpose + +S-CORE work products are typed, linked and checked by the build, and every change reaches a +repository through a reviewed pull request. Someone who has only read the process description +meets the consequences for the first time in a real pull request. This training lets you meet +them first in a module where nothing can break. + +**For whom:** people who will review or write work products in S-CORE in a quality, safety or +security role. Further tracks are planned; `training/README.md` says how one is added. + +**After the training you can:** + +| Stage | You can | Tasks | Material | Solution | +| --- | --- | --- | --- | --- | +| 0 Environment | set up the S-CORE toolchain and sign the Eclipse Contributor Agreement | [0.1](training/issues/01-task-0.1.md) | — | — | +| 1 Git | follow an upstream, write a commit that carries its reasoning, raise an issue with the S-CORE form | [1.1](training/issues/02-task-1.1.md), [1.2-1.3](training/issues/03-task-1.2.md) | the module itself | in the task | +| 2 Build | build clean, tell what the build checks from what only pre-commit checks, find the cause of a red build, recognise a stale incremental build | [2.1](training/issues/04-task-2.1.md), [2.2-2.4](training/issues/05-task-2.4.md) | [`patches/build-*`](training/patches/) | [Stage 2](training/SOLUTIONS.md#stage-2--build-defects) | +| 3 Process | trace a work product to its workflow and template, find what the project decided about it, record an open point with owner and trigger | [3.1](training/issues/06-task-3.1.md), [3.2](training/issues/07-task-3.2.md) | process description, `eclipse-score/score` | open research, none | +| 4 Review | review a pull request for form and for content, and answer a review with evidence | [4.1](training/issues/08-task-4.1.md), [4.2](training/issues/09-task-4.2.md), [4.3](training/issues/10-task-4.3.md) | [`patches/r1`–`r3`](training/patches/), [`reviews/r3.json`](training/reviews/r3.json) | [Stage 4](training/SOLUTIONS.md#stage-4--prepared-pull-requests) | +| 5 Module | bring a document to the current template state through a rebase conflict, and fill it in | [5.1-5.3](training/issues/11-task-5.1-5.3.md), [5.4](training/issues/12-task-5.4.md) | [`patches/r4`](training/patches/r4.patch), your track's document | [PR #R4](training/SOLUTIONS.md#pr-r4-task-53--conflict-r4patch), [Stage 5](training/SOLUTIONS.md#stage-5--track-defects-on-main) | +| 6 Wrap-up | review another track's work, perform a formal document review with a checklist, reflect | [6.1](training/issues/14-task-6.1.md), [6.2-6.3](training/issues/15-task-6.2-6.3.md) | [`patches/r5-*`](training/patches/) | [PR #R5](training/SOLUTIONS.md#pr-r5-task-61--cross-review) | + +**What it does not teach:** the S-CORE architecture, writing code, or how to become a committer. + +## How it works + - **Your own copy.** You make a copy of this repository in your own GitHub account and run the setup there. It fills the copy with defect branches, prepared pull requests and about fifteen task issues. diff --git a/TRAINING.md b/TRAINING.md index aeedd7a..32f07fa 100644 --- a/TRAINING.md +++ b/TRAINING.md @@ -103,11 +103,15 @@ Plan about **five working days**. Every task is an issue in your copy, labelled counts only when a merged pull request mentions it, or when the issue names a merged pull request as its result, in its text or in a comment. The continuous improvement issue is the exception: it may stay open. -2. **Some issues you create yourself.** The task tells you when. On GitHub, choose - **Issues → New issue → Training finding** (the template is in - `.github/ISSUE_TEMPLATE/training_finding.md`) and add the labels `stage-<n>` and your track. - An issue must be workable without asking you: what is wrong, where, and how one recognises that - it is fixed. +2. **Some issues you create yourself.** The task tells you when, and which form: on GitHub, + **Issues → New issue → Bug (S-CORE form)** for something that is wrong, **Task (S-CORE form)** + for something to do. Add the labels `stage-<n>` and your track. These are the forms S-CORE + uses, copied from `eclipse-score/.github`: in S-CORE they come from the organisation, but + organisation forms and issue types do not reach a copy in a personal account, so your copy + carries them itself. An issue must be workable without asking you: what is wrong or to do, + where, the rule it breaks with its id, and how one recognises that it is done. Start the title + with a word, not with a task number: a title like "2.3 …" counts as a task, not as your + finding. 3. **The commit carries the reasoning.** Say what you checked and what it returned. In S-CORE a reviewer reads your pull request without you in the room; the reasoning has to be in it. 4. **You merge your own pull requests** once CI is green. Nobody reviews your copy: the closed diff --git a/training/README.md b/training/README.md index 1f56203..b446b7e 100644 --- a/training/README.md +++ b/training/README.md @@ -64,6 +64,13 @@ Then add the track's defects to the module's documents (one per track is enough, A track whose work is not a document, such as testing, also needs its own task texts in `issues/`; the setup takes every file there for every track today. +## The S-CORE issue forms + +`.github/ISSUE_TEMPLATE/5_Bug.yml` and `4_Task.yml` are copies of the organisation forms in +`eclipse-score/.github`, so that participants practise the forms S-CORE uses. Each names the commit +it was copied from. Before a release, compare them with the organisation's current forms and copy +them again if they changed; keep the two deviations their header states and nothing else. + ## Feedback, bug reports, completed trainings They arrive as issues in `eclipse-score/contributor_training`, through the forms in diff --git a/training/issues/03-task-1.2.md b/training/issues/03-task-1.2.md index 789fed6..9965d13 100644 --- a/training/issues/03-task-1.2.md +++ b/training/issues/03-task-1.2.md @@ -26,6 +26,6 @@ The disclaimer in `docs/module/release/release_note.rst` contains the words "but - Commit with an explicit pathspec: `git commit -m "<message>" -- docs/`. - The commit message says what was wrong and how you checked the fix (build, rendered page). -Then find a **second** typo in the documentation yourself, raise an issue for it yourself (task 1.3): on GitHub, **Issues → New issue → Training finding**. This issue template is in the repository, in `.github/ISSUE_TEMPLATE/training_finding.md`, and fix it in the same or in a second pull request. +Then find a **second** typo in the documentation yourself, raise an issue for it yourself (task 1.3): on GitHub, **Issues → New issue → Bug (S-CORE form)**, the form S-CORE uses for defects (see `TRAINING.md`, rule 2), and fix it in the same or in a second pull request. **Done when** your pull requests are merged with green CI and close this issue and yours. diff --git a/training/issues/05-task-2.4.md b/training/issues/05-task-2.4.md index 3154076..fbef5fc 100644 --- a/training/issues/05-task-2.4.md +++ b/training/issues/05-task-2.4.md @@ -25,7 +25,7 @@ The branches `defect/build-1`, `defect/build-2` and `defect/build-3` each contai For each branch: 1. Build it (`bazel run //:docs`) and run `pre-commit run --all-files`. -2. Create **one issue per defect** with the "Training finding" template. Quote the message. +2. Create **one issue per defect** with the "Bug (S-CORE form)" form. Quote the message. 3. Fix the defects in a pull request into `main` that closes those issues. `defect/build-3` builds green. Build `main` first, then switch to `defect/build-3` and build again, and look at `_build/module/manuals/`. Explain what you see. **Do not merge `defect/build-3`**: record your explanation on your participant page instead, in a pull request that closes your issue for it. diff --git a/training/issues/07-task-3.2.md b/training/issues/07-task-3.2.md index 27616f9..212ce80 100644 --- a/training/issues/07-task-3.2.md +++ b/training/issues/07-task-3.2.md @@ -22,6 +22,6 @@ labels: stage-3 --- The process description defines the process. The S-CORE project decides how it applies to the platform. In `eclipse-score/score`, find what the project decided about your topic **{{ROLE_TOPIC}}**: in the platform management plan (quality, safety or security management), in a design decision, or in a feature's or module's plan. -Then create **one issue** with the "Training finding" template for something you found unclear. It is an open point, so it needs an **owner** (the S-CORE role that can answer it, from the table in `TRAINING.md`) and a **trigger** (the event after which it can be answered). An open point without both is a defect. +Then create **one issue** with the "Task (S-CORE form)" form for something you found unclear. It is an open point, so it needs an **owner** (the S-CORE role that can answer it, from the table in `TRAINING.md`) and a **trigger** (the event after which it can be answered). An open point without both is a defect. **Done when** a merged pull request records the finding with its need id or link on your participant page and closes your open-point issue, either with the answer or with the open point recorded there with its owner and trigger. diff --git a/training/issues/09-task-4.2.md b/training/issues/09-task-4.2.md index 5f40e5b..c09e2f0 100644 --- a/training/issues/09-task-4.2.md +++ b/training/issues/09-task-4.2.md @@ -24,7 +24,7 @@ Pull request #{{PR_R2}} plans the safety work products of the heartbeat feature Review it for content. Check every claim against the rule or standard clause it cites. Check every classification against its parent. Check every number for whether anyone can meet it. -- One review comment per finding, and **one issue per finding** with the "Training finding" template. +- One review comment per finding, and **one issue per finding** with the "Bug (S-CORE form)" form. - Finish with a review of type **Comment** that states your decision, as in task 4.1. **Done when** a pull request of yours fixes the findings, closes their issues and is merged. Close #{{PR_R2}} without merging it. diff --git a/training/issues/11-task-5.1-5.3.md b/training/issues/11-task-5.1-5.3.md index 3810a30..2d70a01 100644 --- a/training/issues/11-task-5.1-5.3.md +++ b/training/issues/11-task-5.1-5.3.md @@ -22,7 +22,7 @@ labels: stage-5 --- Your document: **{{ROLE_DOC}}**. Do this task **before** you fill the document in (task 5.4). Follow the steps in this order; the order is part of the task. -**5.1 Find the deviation.** Compare your document with the module template it came from: `git fetch upstream`, then `git diff main upstream/main -- <your file>`. Which template commit is your document missing? Raise an issue for it with the "Training finding" template (on GitHub: **Issues → New issue → Training finding**). +**5.1 Find the deviation.** Compare your document with the module template it came from: `git fetch upstream`, then `git diff main upstream/main -- <your file>`. Which template commit is your document missing? Raise an issue for it with the "Task (S-CORE form)" form (on GitHub: **Issues → New issue → Task (S-CORE form)**). **5.2 Update on a branch.** Create a branch from `main`, bring the document to the current template state, commit, push and open a pull request that closes your issue and this one. A template commit can change more than your document: if the build fails after your update, find out from the template commit why, and repair it in the same pull request. **Do not merge it yet.**