From 82a4e4ddd710709b71e2ae5c00b329776f8cf747 Mon Sep 17 00:00:00 2001 From: Yoann Rey-Ricord <88380122+yreyricord@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:30:20 +0200 Subject: [PATCH 1/2] Add GitHub templates for issues, PRs, and good-first-issue onboarding (#19) - Issue forms: bug report, feature request, algorithm proposal, documentation, and security report - Disable blank issues and link to docs and Discussions - Add pull request template aligned with triaged backlog workflow - Add good-first-issue welcome comment template Signed-off-by: yreyricord Co-authored-by: yreyricord --- .github/ISSUE_TEMPLATE/01_bug_report.yml | 137 ++++++++++++++ .github/ISSUE_TEMPLATE/02_feature_request.yml | 112 ++++++++++++ .../ISSUE_TEMPLATE/03_algorithm_proposal.yml | 172 ++++++++++++++++++ .github/ISSUE_TEMPLATE/04_documentation.yml | 92 ++++++++++ .github/ISSUE_TEMPLATE/05_security_report.yml | 107 +++++++++++ .github/ISSUE_TEMPLATE/config.yml | 17 ++ .github/PULL_REQUEST_TEMPLATE.md | 88 +++++++++ .github/good_first_issue_comment.md | 37 ++++ 8 files changed, 762 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/01_bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/02_feature_request.yml create mode 100644 .github/ISSUE_TEMPLATE/03_algorithm_proposal.yml create mode 100644 .github/ISSUE_TEMPLATE/04_documentation.yml create mode 100644 .github/ISSUE_TEMPLATE/05_security_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/good_first_issue_comment.md diff --git a/.github/ISSUE_TEMPLATE/01_bug_report.yml b/.github/ISSUE_TEMPLATE/01_bug_report.yml new file mode 100644 index 0000000..0df5fe5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/01_bug_report.yml @@ -0,0 +1,137 @@ +# SPDX-FileCopyrightText: 2026 European Space Agency (ESA) - ACRI-ST +# SPDX-License-Identifier: Apache-2.0 + +name: 01 · Bug report +description: Report a defect in a processor, the CI/CD pipeline, or the documentation. +title: "[bug] " +labels: ["type:bug", "needs-triage"] +body: + - type: markdown + attributes: + value: | + Please complete this form to report a defect in the BIOMASS BPS software, + the CI/CD pipeline, or the documentation. The more reproducible the report, + the faster the issue can be diagnosed and resolved. + + - type: dropdown + id: component + attributes: + label: Affected component + description: Select the part of BIOMASS BPS impacted by this defect. + options: + - bps-common + - bps-dockerfiles + - bps-l1_binaries + - bps-l1_core_processor + - bps-l1_framing_processor + - bps-l1_pre_processor + - bps-l1_processor + - bps-l2a_processor + - bps-l2b_agb_processor + - bps-l2b_fd_processor + - bps-l2b_fh_processor + - bps-stack_binaries + - bps-stack_cal_processor + - bps-stack_coreg_processor + - bps-stack_pre_processor + - bps-stack_processor + - bps-task-tables + - bps-transcoder + - CI / GitHub Actions + - Documentation + - Other (please specify in the description) + validations: + required: true + + - type: dropdown + id: severity + attributes: + label: Severity + description: Operational impact of the defect. + options: + - Critical - blocks the processing chain + - Major - incorrect scientific output + - Minor - degraded behaviour with workaround + - Cosmetic - documentation or display only + validations: + required: true + + - type: input + id: version + attributes: + label: Version or commit reference + description: Output of `git describe --tags --always`, or the release tag, or the commit SHA. + placeholder: "v4.4.4 or a1b2c3d" + validations: + required: true + + - type: dropdown + id: environment + attributes: + label: Environment + options: + - Local developer environment + - GitHub Actions (CI) + - MAAP + - Operational deployment + - Jupyter Notebook + - Other + validations: + required: true + + - type: textarea + id: what-happened + attributes: + label: Observed behaviour + description: A clear and concise description of the defect. + validations: + required: true + + - type: textarea + id: expected + attributes: + label: Expected behaviour + description: What was expected to happen instead. + validations: + required: true + + - type: textarea + id: reproduction + attributes: + label: Steps to reproduce + description: Minimal, deterministic sequence of commands or actions. + value: | + 1. + 2. + 3. + render: markdown + validations: + required: true + + - type: textarea + id: logs + attributes: + label: Logs and traceback + description: Relevant log output or Python traceback. Will be rendered as a code block. + render: shell + + - type: textarea + id: additional_context + attributes: + label: Additional context + description: | + Optional. Suspected root cause, relevant file paths, links to related issues + or pull requests, screenshots, references, or any other context that may + help triage. + + - type: checkboxes + id: checks + attributes: + label: Pre-submission checklist + options: + - label: I have searched existing issues and confirmed this is not a duplicate. + required: true + - label: I am running a supported version (a tagged release or the current `develop` branch). + required: true + - label: I have included enough information for the defect to be reproduced. + required: true diff --git a/.github/ISSUE_TEMPLATE/02_feature_request.yml b/.github/ISSUE_TEMPLATE/02_feature_request.yml new file mode 100644 index 0000000..378e4b7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/02_feature_request.yml @@ -0,0 +1,112 @@ +# SPDX-FileCopyrightText: 2026 European Space Agency (ESA) - ACRI-ST +# SPDX-License-Identifier: Apache-2.0 + +name: 02 · Feature or enhancement request +description: Propose a non-scientific feature, an enhancement, or a tooling improvement. +title: "[feature] " +labels: ["type:feature", "needs-triage"] +body: + - type: markdown + attributes: + value: | + Use this template to propose a software feature, an enhancement to an existing + component, or a tooling improvement. + + For the proposal of a new scientific algorithm or a methodological change, + please use the **Algorithm proposal** template instead. + + - type: dropdown + id: scope + attributes: + label: Scope of the proposal + options: + - New software feature + - Enhancement to an existing component + - Performance or scalability improvement + - CI/CD or tooling improvement + - Governance or process improvement + - Other + validations: + required: true + + - type: dropdown + id: component + attributes: + label: Most impacted component + options: + - bps-common + - bps-dockerfiles + - bps-l1_binaries + - bps-l1_core_processor + - bps-l1_framing_processor + - bps-l1_pre_processor + - bps-l1_processor + - bps-l2a_processor + - bps-l2b_agb_processor + - bps-l2b_fd_processor + - bps-l2b_fh_processor + - bps-stack_binaries + - bps-stack_cal_processor + - bps-stack_coreg_processor + - bps-stack_pre_processor + - bps-stack_processor + - bps-task-tables + - bps-transcoder + - CI / GitHub Actions + - Documentation + - Not specific to one component + validations: + required: true + + - type: textarea + id: problem + attributes: + label: Problem statement and motivation + description: What problem does this address? Who is affected and why does it matter? + validations: + required: true + + - type: textarea + id: proposal + attributes: + label: Proposed solution + description: Describe the proposed change in concrete terms. + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: Other approaches that were considered and reasons for rejection. + + - type: textarea + id: impact + attributes: + label: Expected impact + description: | + Discuss backward compatibility, interfaces, performance, dependencies, + documentation and validation impact. + validations: + required: true + + - type: textarea + id: additional_context + attributes: + label: Additional context + description: | + Optional. Relevant file paths, links to related issues or pull requests, + screenshots, prior art in other projects, references, or any other context + that may help triage. + + - type: checkboxes + id: checks + attributes: + label: Pre-submission checklist + options: + - label: I have searched existing issues and discussions for a similar proposal. + required: true + - label: I have read the contributing guidelines and the project governance. + required: true + - label: I am available to discuss the design before any implementation starts. + required: true diff --git a/.github/ISSUE_TEMPLATE/03_algorithm_proposal.yml b/.github/ISSUE_TEMPLATE/03_algorithm_proposal.yml new file mode 100644 index 0000000..3ff0e5b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/03_algorithm_proposal.yml @@ -0,0 +1,172 @@ +# SPDX-FileCopyrightText: 2026 European Space Agency (ESA) - ACRI-ST +# SPDX-License-Identifier: Apache-2.0 + +name: 03 · Algorithm proposal +description: Propose a new scientific algorithm, methodological change, or processing chain modification. Scientific justification is required. +title: "[algorithm] " +labels: ["type:algorithm", "needs-sme"] +body: + - type: markdown + attributes: + value: | + Use this template to propose a new scientific algorithm, a change to an + existing retrieval method, or any modification with a scientific impact + on the BIOMASS processing chain. + + Proposals submitted through this template are routed to the relevant + Scientific Expert and to ESA. A peer-reviewed + reference or a written scientific justification is required. + + - type: dropdown + id: processor + attributes: + label: Target processor or processing stage + options: + - bps-l1_pre_processor + - bps-l1_framing_processor + - bps-l1_core_processor + - bps-l1_processor + - bps-l2a_processor + - bps-l2b_agb_processor (Above-Ground Biomass) + - bps-l2b_fh_processor (Forest Height) + - bps-l2b_fd_processor (Forest Disturbance) + - bps-stack_pre_processor + - bps-stack_cal_processor + - bps-stack_coreg_processor + - bps-stack_processor + - bps-transcoder + - Cross-cutting (multiple processors) + - General methodology + validations: + required: true + + - type: dropdown + id: proposal_type + attributes: + label: Type of proposal + options: + - New algorithm + - Modification of an existing algorithm + - Change in calibration or auxiliary data/LUTs (lookup tables) + - New LUT or Auxiliary / Files (lookup tables) + - Change in validation methodology or acceptance criteria + validations: + required: true + + - type: textarea + id: scientific_context + attributes: + label: Scientific context and motivation + description: Describe the scientific gap, limitation or improvement opportunity that motivates this proposal. + placeholder: | + Example: + - Scientific gap, limitation or improvement opportunity, attached below. + - Scientific justification, attached below. + - Validation plan, attached below. + - Test datasets, attached below. + - Reference products, attached below. + - Expected accuracy metrics, attached below. + - Acceptance criteria, attached below. + validations: + required: true + + - type: textarea + id: proposed_algorithm + attributes: + label: Proposed algorithm or method + description: | + Provide a concise but complete description of the proposed algorithm, + including inputs, outputs, key equations, assumptions and limitations. + placeholder: | + Example: + - Algorithm description, attached below. + - Key equations, attached below. + - Assumptions, attached below. + - Limitations, attached below. + validations: + required: true + + - type: textarea + id: justification + attributes: + label: Scientific justification + description: | + Provide a peer-reviewed reference (DOI, arXiv ID or full citation) or + a written justification supported by experimental evidence. + placeholder: | + Example: + - K. Scipal et al., "BIOMASS: ESA’s P-Band SAR Mission," in Proceedings of the IEEE, doi: 10.1109/JPROC.2026.3687416 + - Internal technical note, attached below. + - External technical note, attached below. + - Experimental evidence, attached below. + validations: + required: true + + - type: textarea + id: validation_plan + attributes: + label: Validation plan + description: | + Describe how the proposed algorithm will be validated: test datasets, + reference products, expected accuracy metrics and acceptance criteria. + placeholder: | + Example: + - Validation plan, attached below. + - Test datasets, attached below. + - Reference products, attached below. + - Expected accuracy metrics, attached below. + - Acceptance criteria, attached below. + validations: + required: true + + - type: textarea + id: impact + attributes: + label: Expected impact on the processing chain + description: | + Backward compatibility, interface or product format changes, dependency + on upstream products, expected change in performance or accuracy. + placeholder: | + Example: + - Backward compatibility, interface or product format changes, dependency + on upstream products, expected change in performance or accuracy. + - Expected change in performance or accuracy. + - Expected change in accuracy metrics. + - Expected change in acceptance criteria. + - Expected change in validation methodology. + - Expected change in validation plan. + - Expected change in test datasets. + - Expected change in reference products. + - Expected change in expected accuracy metrics. + validations: + required: true + + - type: textarea + id: references + attributes: + label: Additional references and attachments + description: | + Drag and drop any technical note, ATBD draft, validation report or plot + that supports the proposal. Do not attach data covered by NDA or export + restrictions. + placeholder: | + Example: + - Validation plan, attached below. + - Test datasets, attached below. + - Reference products, attached below. + - Expected accuracy metrics, attached below. + - Acceptance criteria, attached below. + + - type: checkboxes + id: checks + attributes: + label: Pre-submission checklist + options: + - label: A peer-reviewed reference or a written scientific justification has been provided. + required: true + - label: I have consulted the relevant Science Guide and ATBD sections. + required: true + - label: I understand that this proposal will be reviewed by the SME and the ESA scientific board before any implementation. + required: true + - label: I am not attaching any data covered by an NDA or export restrictions. + required: true diff --git a/.github/ISSUE_TEMPLATE/04_documentation.yml b/.github/ISSUE_TEMPLATE/04_documentation.yml new file mode 100644 index 0000000..e25e997 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/04_documentation.yml @@ -0,0 +1,92 @@ +# SPDX-FileCopyrightText: 2026 European Space Agency (ESA) +# SPDX-License-Identifier: Apache-2.0 + +name: 04 · Documentation issue +description: Report an error, gap or improvement opportunity in the BIOMASS BPS documentation. +title: "[docs] " +labels: ["type:docs", "needs-triage"] +body: + - type: markdown + attributes: + value: | + Use this template to report an issue in the documentation: an error, + an omission, an outdated section, a broken link, or a request for clarification. + + - type: dropdown + id: section + attributes: + label: Documentation section + description: Select the section of the BIOMASS BPS documentation site impacted. + options: + - About + - Getting started + - User guide + - Tutorials + - Science guide + - Developer guide + - Contributing + - Governance + - Index / landing page + - README or top-level repository files + - Templates + - Other (please specify in the description) + validations: + required: true + + - type: dropdown + id: issue_type + attributes: + label: Type of documentation issue + options: + - Technical error or incorrect information + - Outdated content + - Missing content or coverage gap + - Unclear or ambiguous wording + - Broken link or rendering issue + - Typographical or formatting issue + - Translation or terminology issue + - New content proposal + - Other (please specify in the description) + validations: + required: true + + - type: input + id: page + attributes: + label: Page URL or file path + description: Link to the affected page on the documentation site, or path in the repository. + placeholder: "https://biopal.github.io/BPS/... or docs/source/user_guide/...md" + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description of the issue + description: Describe what is wrong, unclear or missing. + placeholder: | + Example: + - What is wrong, unclear or missing, attached below. + - New content proposal, attached below. + validations: + required: true + + - type: textarea + id: suggestion + attributes: + label: Suggested change + description: If possible, propose the corrected wording or the missing content. + placeholder: | + Example: + - Corrected wording, attached below. + - Missing content, attached below. + - New content proposal, attached below. + - type: checkboxes + id: checks + attributes: + label: Pre-submission checklist + options: + - label: I have verified that the issue is present in the latest published version of the documentation. + required: true + - label: I have searched existing issues to confirm this is not a duplicate. + required: true diff --git a/.github/ISSUE_TEMPLATE/05_security_report.yml b/.github/ISSUE_TEMPLATE/05_security_report.yml new file mode 100644 index 0000000..1d36a28 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/05_security_report.yml @@ -0,0 +1,107 @@ +# SPDX-FileCopyrightText: 2026 European Space Agency (ESA) +# SPDX-License-Identifier: Apache-2.0 + +name: 05 · Security report +description: Report a non-sensitive security concern, hardening recommendation, or supply-chain issue. +title: "[security] " +labels: ["type:security", "needs-triage", "priority:high"] +body: + - type: markdown + attributes: + value: | + Use this template to report a security concern that is **safe to disclose publicly**: + a hardening recommendation, a known CVE in a dependency, a supply-chain concern, + or a configuration weakness. + + **Sensitive vulnerabilities that could be exploited must NOT be disclosed in + a public issue.** They must be reported through a private GitHub Security Advisory: + https://github.com/BioPAL/BPS/security/advisories/new + + - type: dropdown + id: category + attributes: + label: Category + options: + - Vulnerable dependency (known CVE) + - Supply-chain concern (provenance, signing, REUSE) + - CI/CD configuration weakness + - Repository or branch protection hardening + - Credential or secret exposure risk + - License or third-party code concern + - Other + validations: + required: true + + - type: dropdown + id: severity + attributes: + label: Estimated severity + description: Use the CVSS qualitative scale when applicable. + options: + - Critical + - High + - Medium + - Low + - Informational + validations: + required: true + + - type: input + id: identifiers + attributes: + label: CVE or advisory identifier (if applicable) + placeholder: "CVE-2025-12345 / GHSA-xxxx-xxxx-xxxx" + + - type: textarea + id: description + attributes: + label: Description + description: | + Describe the concern. Do not include exploit code, working proof of concept, + or any information that could enable an attack before a fix is available. + placeholder: | + Example: + - Concern, attached below. + - Exploit code, attached below. + - Working proof of concept, attached below. + - Information that could enable an attack before a fix is available, attached below. + validations: + required: true + + - type: textarea + id: affected + attributes: + label: Affected component or configuration + description: Component, file, workflow, dependency or configuration impacted. + placeholder: | + Example: + - Component, attached below. + - File, attached below. + - Workflow, attached below. + - Dependency, attached below. + - Configuration, attached below. + validations: + required: true + + - type: textarea + id: mitigation + attributes: + label: Proposed mitigation or remediation + description: Suggested patch, configuration change, dependency upgrade, or other mitigation. + placeholder: | + Example: + - Patch, attached below. + - Configuration change, attached below. + - Dependency upgrade, attached below. + - Other mitigation, attached below. + - type: checkboxes + id: disclosure + attributes: + label: Disclosure acknowledgement + options: + - label: I confirm that the information disclosed in this issue is safe for public disclosure. + required: true + - label: I understand that sensitive or exploitable vulnerabilities must be reported through a private GitHub Security Advisory rather than a public issue. + required: true + - label: I have not included exploit code or any information that could enable an attack before a fix is available. + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..0c9a9a7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: 2026 European Space Agency (ESA) +# SPDX-License-Identifier: Apache-2.0 +# +# Issue template chooser configuration for the BIOMASS BPS repository. +# Blank issues are disabled to ensure every report follows a structured template, +# which is required for automated triage and tier classification by the CI. + +blank_issues_enabled: false + +contact_links: + - name: Documentation site + url: https://biomass-disc.info/docs + about: User Guide, Tutorials, Science Guide and Governance. Please consult the documentation before opening an issue. + + - name: GitHub Discussions + url: https://github.com/BioPAL/BPS/discussions + about: For open-ended questions, design discussions or community conversation that are not a concrete defect, request, or proposal. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..7a83307 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,88 @@ + + +## Linked issue + + + +Closes # + +- [ ] The linked issue is labelled `status:approved`, `good-first-issue` or `help-wanted`. +Being open in the backlog is not enough on its own: only these three labels mean the scope has been triaged and approved for implementation. + +## What this PR changes + + + +* +* +* + +## Notes for reviewers + + + +## User-facing change + +- [ ] This PR introduces a user-facing change (API, CLI, output format, performance, documentation). + +If yes, write one short release-note sentence here (it will be picked up in `CHANGELOG.md`): + + +## Documentation + +- [ ] This PR modifies the documentation (Sphinx site, README, wiki, ATBD, Science Guide). +- [ ] This PR does not modify the documentation, and no documentation update is needed. +- [ ] This PR does not modify the documentation, but a documentation update is needed and tracked in issue #_____. + +## Tier rationale + +The CI computes the tier automatically from the diff against the base branch. You do not assign it, but stating your expectation helps reviewers spot a mismatch quickly. + +| Tier | Triggers | Checks that run | +|---|---|---| +| **0** | Routine changes, no sensitive path touched | Baseline only | +| **1** | Locked paths, SME-owned paths, marker fail, Dependabot major | Baseline + Extended | +| **2** | `VERSION` promoted to `main`, designated heavy paths, manual `run_heavy` | Baseline + Extended + Heavy | + +Full rules: [`.github/tier-policy.yml`](.github/tier-policy.yml). Background: [Contribution tiers in the contributor guide](../../wiki/CONTRIBUTING_PART1#contribution-tiers). + +* Expected tier: +* Why: + +## AI assistance disclosure + + + +- [ ] No AI tools were used to prepare this PR. +- [ ] AI tools were used. Tool(s):   +
What was generated (code, tests, documentation, commit messages): +
I have reviewed the generated content and take responsibility for it. + +## Checklist + +- [ ] This PR closes exactly one tracking issue, linked above. +- [ ] The scope of the diff matches the approved scope in the linked issue. No drift, no extras. +- [ ] A breaking change is explicitly flagged in the release note sentence above (if applicable). +- [ ] The reviewer assigned has the relevant domain knowledge for this change. diff --git a/.github/good_first_issue_comment.md b/.github/good_first_issue_comment.md new file mode 100644 index 0000000..49d1ee7 --- /dev/null +++ b/.github/good_first_issue_comment.md @@ -0,0 +1,37 @@ + + +Hello, and thank you for your interest in contributing to **BIOMASS BPS**. + +This issue has been labelled `good-first-issue` because it is well-scoped and a +suitable entry point into the codebase. The maintainers will be happy to review +and answer questions on the pull request. + +### Expected effort +TODO: estimate, for example `1–2 hours, including the unit test`. + +### Suggested approach +TODO: list the concrete steps, for example: +1. Reproduce the issue locally using the steps above. +2. Add a unit test in `/tests/_test.py` that fails before the fix. +3. Implement the fix in `/.py`. +4. Open a pull request that links back to this issue. + +### Relevant files +TODO: list the files a newcomer should read first, for example: +- `bps-common/bps_common/.py` +- `bps-/bps_/.py` + +### Before you start +- Read the [Contributing guide](https://biomass-disc.info/docs/contributing/). +- Make sure you can build and run the test suite locally — see the [Getting started](https://biomass-disc.info/docs/getting-started/) page. +- Every commit must be signed off (`git commit -s`) to satisfy the Developer Certificate of Origin. + +### If you have questions +Comment on this issue or open a draft pull request early. The maintainers prefer +early feedback over a polished pull request that has gone in the wrong direction. From 5bbb41c3f61270ad8a758980b56f35509145d8f1 Mon Sep 17 00:00:00 2001 From: yreyricord Date: Tue, 1 Sep 2026 15:28:57 +0200 Subject: [PATCH 2/2] BPS-980 Test GitHub Jira integration --- jira-integration-test.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 jira-integration-test.txt diff --git a/jira-integration-test.txt b/jira-integration-test.txt new file mode 100644 index 0000000..e5c982a --- /dev/null +++ b/jira-integration-test.txt @@ -0,0 +1 @@ +GitHub Jira integration test for DA-43