Repository navigation
Add the S-CORE contributor training - #2
Conversation
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)
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)
There was a problem hiding this comment.
🟡 Changes recommended
The gitlint action’s image lacks the required docker:// prefix, causing invocation to fail before gitlint runs.
7 open issues
Docker action image is missing the docker:// prefix · New Bugfix front matter is blocked by the license comment · New Improvement front matter is blocked by the license comment · New Quality track lacks an applicable FDR checklist · New Quick-start command targets nonexistent root src package · New Unit-test command targets nonexistent root src directory · New Integration-test command targets nonexistent root tests directory · New
What changed in this PR
Adds self-paced S-CORE contributor training with quality, safety, and security tracks, using a module-template-based practice repository and recorded completion.
Changes:
- Adds staged tasks, seeded defects, prepared reviews, and training maintenance guidance.
- Introduces the example module, documentation, tests, Bazel configuration, and development tooling.
- Adds feedback and completion forms, validation workflows, certificate generation, and licensing metadata.
This pull request requires changes. Unresolved findings include 1 critical issue, 4 moderate issues, and 6 nits, detailed alongside the affected files below.
| File | Description |
|---|---|
training/reviews/r3.json |
Supplies prepared comments for the review-response exercise. |
training/README.md |
Documents training maintenance and track extension. |
training/patches/r5-security.patch |
Seeds the security cross-review exercise. |
training/patches/r5-safety.patch |
Seeds the safety cross-review exercise. |
training/patches/r4.patch |
Creates the template-update conflict exercise. |
training/patches/r3.patch |
Prepares the review-response exercise. |
training/patches/r2.patch |
Seeds content-review findings. |
training/patches/r1.patch |
Seeds formatting and proofreading findings. |
training/patches/build-3.patch |
Demonstrates stale incremental documentation output. |
training/patches/build-2.patch |
Seeds documentation and pre-commit failures. |
training/patches/build-1.patch |
Seeds reference and classification failures. |
training/issues/16-continuous-improvement.md |
Collects ongoing participant observations. |
training/issues/15-task-6.2-6.3.md |
Defines formal review and retrospective tasks. Moderate, 3 votes — L23: Quality-track documents lack the required FDR checklists; provide an appropriate checklist or explicitly identify an alternative. |
training/issues/14-task-6.1.md |
Defines cross-track review. |
training/issues/12-task-5.4.md |
Assigns completion of track-specific documents. |
training/issues/11-task-5.1-5.3.md |
Defines template synchronization and rebasing. Moderate, 1 vote — L27: The safety/security update introduces a reference to doc__mod_temp_module_name_user_manual, while the manual retains doc__user_manual, failing the required build. Include the manual ID migration and dependent references in the instructions. |
training/issues/10-task-4.3.md |
Defines responses to prepared review comments. |
training/issues/09-task-4.2.md |
Defines content-review expectations. |
training/issues/08-task-4.1.md |
Defines presentation-review expectations. |
training/issues/07-task-3.2.md |
Defines project-decision research. |
training/issues/06-task-3.1.md |
Defines process-traceability research. |
training/issues/05-task-2.4.md |
Defines defect-branch repair exercises. |
training/issues/04-task-2.1.md |
Defines clean-build and hook inspection. |
training/issues/03-task-1.2.md |
Defines typo fixes and reasoned commits. |
training/issues/02-task-1.1.md |
Defines upstream synchronization practice. |
training/issues/01-task-0.1.md |
Defines environment setup and participant evidence. |
score/tests/test_main.rs |
Adds a placeholder Rust module test. |
score/tests/test_main.cpp |
Adds C++ module-level greeting tests. |
score/tests/BUILD |
Registers module-level test targets. |
score/component_example/tests/component_example_test.cpp |
Adds component integration tests. |
score/component_example/src/lower_level_comp/.gitkeep |
Preserves the lower-level component directory. |
score/component_example/src/component_example.hpp |
Declares the example greeting API. |
score/component_example/src/component_example.cpp |
Implements the example greeting API. |
score/component_example/src/component_example_test.cpp |
Adds a greeting unit test. |
score/component_example/docs/security_analysis/aou_requirements.rst |
Provides component security-assumption templates. |
score/component_example/docs/safety_analysis/fmea.rst |
Provides the component FMEA template. |
score/component_example/docs/safety_analysis/component_classification.rst |
Provides component-classification guidance. |
score/component_example/docs/safety_analysis/aou_requirements.rst |
Provides component safety-assumption templates. |
score/component_example/docs/requirements/requirements.rst |
Provides component requirement examples. |
score/component_example/docs/requirements/index.rst |
Organizes requirements documentation and inspection. |
score/component_example/docs/manuals/.gitkeep |
Preserves the component manuals directory. |
score/component_example/docs/index.rst |
Introduces the component documentation structure. |
score/component_example/docs/detailed_design/index.rst |
Organizes design documentation and implementation inspection. |
score/component_example/docs/detailed_design/detailed_design_example.rst |
Provides detailed-design guidance. |
score/component_example/docs/detailed_design/dd_example_ex_sta.puml |
Illustrates static unit relationships. |
score/component_example/docs/detailed_design/dd_example_ex_dyn.puml |
Illustrates dynamic unit interactions. |
score/component_example/docs/detailed_design/chklst_impl_inspection.rst |
Provides an implementation inspection checklist. |
score/component_example/docs/architecture/index.rst |
Organizes component architecture documentation. |
score/component_example/docs/architecture/component_architecture.rst |
Provides component architecture templates. |
score/component_example/BUILD |
Registers the component library, tests, and documentation. |
score/BUILD |
Establishes the module package boundary. |
score.bazelrc/score_toolchain.bazelrc |
Defines platform-specific toolchain configurations. |
REUSE.toml |
Supplies licensing annotations for metadata files. |
README.md |
Introduces the training and entry points. |
pyproject.toml |
Configures Python editor analysis. |
project_config.bzl |
Defines module build metadata. |
NOTICE |
Adds project notices and attribution. |
LICENSES/CC0-1.0.txt |
Adds the CC0 license text. |
LICENSES/Apache-2.0.txt |
Adds the Apache license text. |
examples/docs/index.rst |
Links architecture-modeling examples. |
examples/Cargo.lock |
Supplies dependency metadata for license checking. |
examples/BUILD |
Registers example documentation and licensing inputs. |
docs/verification_report/module_verification_report.rst |
Provides quality-track verification-report exercise material. |
docs/template/index.rst |
Explains the inherited module structure. |
docs/release_notes/index.rst |
Organizes template release notes. |
docs/participants/index.rst |
Provides the participant evidence index. |
docs/module/security_mgt/module_security_plan_fdr.rst |
Provides the security-plan review checklist. |
docs/module/security_mgt/module_security_package_fdr.rst |
Provides the security-package review checklist. |
docs/module/security_mgt/index.rst |
Organizes security-management documents. |
docs/module/safety_mgt/module_safety_plan_fdr.rst |
Provides the safety-plan review checklist. |
docs/module/safety_mgt/module_safety_package_fdr.rst |
Provides the safety-package review checklist. |
docs/module/safety_mgt/module_safety_analysis_fdr.rst |
Provides safety-analysis review checklists. |
docs/module/safety_mgt/index.rst |
Organizes safety-management documents. |
docs/module/release/release_note.rst |
Provides release-note exercise material. |
docs/module/manuals/user_manual.rst |
Provides user and integration documentation. Nit, 1 vote — L112: The dependency example names nonexistent target :component; reference the exported component_example library instead. |
docs/module/manuals/security_manual.rst |
Provides the security-manual template. |
docs/module/manuals/safety_manual.rst |
Provides the safety-manual template. |
docs/module/manuals/performance/.gitkeep |
Preserves the performance documentation directory. |
docs/module/manuals/index.rst |
Organizes module manuals. |
docs/module/manuals/examples/.gitkeep |
Preserves the manual examples directory. |
docs/module/manuals/config/.gitkeep |
Preserves the configuration manual directory. |
docs/module/manuals/api_description/.gitkeep |
Preserves the API documentation directory. |
docs/module/index.rst |
Organizes module-level documentation. |
docs/index.rst |
Introduces the module and quick-start commands. Nit, 3 votes — L114: Build instructions reference nonexistent root src/; use the actual score/ package tree.Nit, 3 votes — L126: Use unit-test target //score/component_example:component_example_unit_tests, not a root src/ path.Nit, 3 votes — L132: Root tests/ does not exist; name the actual component and feature integration-test targets under //score/component_example and //score/tests. |
docs/features/security_planning/index.rst |
Provides feature security-planning templates. |
docs/features/security_analysis/aou_requirements.rst |
Provides feature security-assumption templates. |
docs/features/safety_planning/index.rst |
Provides feature safety-planning templates. |
docs/features/safety_analysis/fmea.rst |
Provides the feature FMEA template. |
docs/features/safety_analysis/aou_requirements.rst |
Provides feature safety-assumption templates. |
docs/features/index.rst |
Organizes feature documentation. |
docs/features/architecture/index.rst |
Provides feature architecture guidance. |
docs/components/index.rst |
Provides the component documentation mount point. |
CONTRIBUTION.md |
Adds inherited S-CORE contribution guidance. |
BUILD |
Registers root tooling and documentation targets. |
.yamlfmt |
Configures YAML formatting. |
.vscode/settings.json |
Configures documentation and Python editing. |
.vscode/extensions.json |
Recommends development extensions. |
.pre-commit-config.yaml |
Configures formatting, licensing, and dependency checks. |
.gitignore |
Excludes generated and local artifacts. |
.github/workflows/on-pr.yml |
Runs pre-commit checks on pull requests. |
.github/workflows/docs.yml |
Runs shared documentation CI. |
.github/workflows/certificate.yml |
Checks completion and uploads certificates. |
.github/templatesyncignore.txt |
Defines template synchronization exclusions. |
.github/PULL_REQUEST_TEMPLATE/improvement.md |
Adds an improvement pull-request template. Nit, 1 vote — L32: ../ISSUE_TEMPLATE/new is a repository-relative file path, not an issue-creation endpoint; use the issue chooser or a correct /issues/new?template=improvement.md URL. |
.github/PULL_REQUEST_TEMPLATE/bug_fix.md |
Adds a bugfix pull-request template. Nit, 1 vote — L32: The relative ISSUE_TEMPLATE/new URL cannot open the Bugfix form; use the issue chooser or a proper repository issue-creation URL. |
.github/ISSUE_TEMPLATE/training_finding.md |
Structures participant findings. |
.github/ISSUE_TEMPLATE/training_completed.yml |
Records completed trainings. |
.github/ISSUE_TEMPLATE/improvement.md |
Adds an improvement issue template. Moderate, 3 votes — L16: The preceding license comment prevents recognition of YAML front matter, hiding the template from the issue chooser; put metadata first and retain the license comment in the body. |
.github/ISSUE_TEMPLATE/feedback.yml |
Collects training feedback. |
.github/ISSUE_TEMPLATE/config.yml |
Configures issue-chooser guidance. |
.github/ISSUE_TEMPLATE/bug_report.yml |
Collects training defect reports. |
.github/ISSUE_TEMPLATE/bug_fix.md |
Adds a bugfix issue template. Moderate, 3 votes — L16: The preceding license comment prevents recognition of YAML front matter, hiding the template from the issue chooser; move metadata ahead of the comment. |
.github/CODEOWNERS |
Defines default review ownership. |
.github/actions/gitlint/action.yml |
Adds a containerized commit-message checker. Critical, 3 votes — L26: The published image lacks the required docker:// prefix, so the runner treats it as a Dockerfile path and fails before gitlint runs; use the Docker image URI. |
.devcontainer/run-tool |
Selects local, container, or Bazel tooling. |
.devcontainer/Dockerfile |
Pins the development container image. |
.devcontainer/devcontainer.json |
Configures the development container. |
.bazelversion |
Pins the training’s Bazel version. |
.bazelrc |
Configures registries, Java, and toolchain imports. |
Review effort: Balanced
masc2023
left a comment
There was a problem hiding this comment.
See comments from Co-Pilot, I am not able to review 166 lines w/o help
…tart 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)
|
@masc2023 thanks. The Copilot findings are addressed in 263bbfe:
The three inherited ones are fixed in module_template and reach this repository with the next template update, so the training does not diverge from its template. What to review. Of the 136 files, 87 are byte-identical to module_template at
To see only the difference from the template: git remote add module_template https://github.com/eclipse-score/module_template.git
git fetch module_template
git diff --stat f9532a9d8a6fd079cce60f525616a0303df9f252 HEADThe IP review is filed as IPLab #32847 (more than 1,000 lines). |
There was a problem hiding this comment.
So all Issues here are not the ones in S-CORE, defined here https://github.com/eclipse-score/.github/tree/main/.github/ISSUE_TEMPLATE, so the training does not teach them, only in general to work with that issues, correct? If yes, may explain, or state that somewhere
There was a problem hiding this comment.
Correct: the training taught working with issues in general, not the S-CORE forms. Changed in 244d1ed: the training now carries copies of the organisation's Bug and Task forms from eclipse-score/.github (5_Bug.yml, 4_Task.yml at 8001e21a), and the tasks name which one to use. Organisation forms and issue types do not reach a copy in a participant's personal account, so the copy carries them itself; the only deviations are "(S-CORE form)" in the name and the removed type:, stated in their header. TRAINING.md, rule 2, explains this. The inherited bug_fix.md/improvement.md are removed here; for module_template I proposed the same in eclipse-score/module_template#224, so that the organisation's forms apply there too.
…issue forms Review feedback on eclipse-score#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)
|
Add chapters to readme and training.md |



Why
Approved in the S-CORE process meeting on 2026-10-27: a self-paced, hands-on training for contributors, done in a private copy in the participant's own account. Completed trainings are recorded here, as evidence for
wp__training_path. Repository requested in eclipse-score/.eclipsefdn#244.What
TRAINING.md— start here. Self-organised: no tutor, no support; "When something breaks" says how to repair a copy. Three tracks: quality, safety, security. About five working days, stages 0–6.training/—setup.py(run by the participant in their own copy), defect patches, prepared pull requests, task issues, andSOLUTIONS.md, open on purpose.training/README.mdexplains how to change the training and add a track.Training_Module, is made fromeclipse-score/module_template(b60778b;docs/at the parent of775aad3c, which task 5 updates), with one seeded defect per track.Checked
In
qorix-group/contributor_training_stagingand a private copy made from it:Locally, one build after the other: every defect branch shows exactly the messages
SOLUTIONS.mdrecords, and the stage 5 rebase conflicts in the release note, the module safety plan and the module security plan.Size and IP review
About 15,000 added lines. About 12,800 are derived from
module_template(already EPL/Apache in S-CORE; 5,000 of themMODULE.bazel.lock). About 2,200 are new (training/, of which 570 are patch files,TRAINING.md,README.md, the forms and the certificate). Above 1,000 lines, the Eclipse Project Handbook (IP due diligence) asks a committer to request an IP Team review before the merge. Content Review Request: IPLab #32847. Please do not merge before the IP Team has approved it.AI assistance
The new material was written with Claude Code under my direction; I reviewed it and am responsible for it. Following the Eclipse Project Handbook ("Using Artificial Intelligence / Disclosure"), every largely AI-generated file carries the AI disclosure in its header, with
SPDX-License-Identifier: Apache-2.0 AND CC0-1.0and anAssisted-byline (training/reviews/r3.jsonthroughREUSE.toml);LICENSES/CC0-1.0.txtis added. Files taken frommodule_templatekeep their header. The commits carry anAssisted-bytrailer.After merging
is_templatecomes with Mark contributor_training as a template repository .eclipsefdn#250.feedback,bug-report,training-completedare needed for the forms (not managed by Otterdog).🤖 Generated with Claude Code