# Sustainability action plan: ACTS

From the EIC Software Sustainability Review, pass `2026-10-12-2`, assessed at commit `300b664a3d9c`. Full assessment: https://eic.github.io/SoftwareSustainabilityReview/projects/acts.html

Levels: 0 Absent · 1 Initial · 2 Established · 3 Sustained. Each item names the step to the next level.

## Medium priority

- [ ] Generate the Prerequisites list in `docs/pages/contributing/building_acts.md` from the `_acts_*_version` variables in `CMakeLists.txt` (as the `cmake_options` pre-commit hook already does for options), covering every optional dependency. *(`doc.user`, now level 1, effort S)*
- [ ] Create a `good first issue` label, apply it to at least five open issues, and link it from CONTRIBUTING.md. *(`doc.contributing`, now level 2, effort S)*
- [ ] Add CODEOWNERS entries naming at least two owners each for Core/, Fatras/, Alignment/, Examples/ and every Plugins/ subdirectory. *(`com.bus-factor`, now level 2, effort S)*
- [ ] Add `GOVERNANCE.md` naming the core-maintainers and reviewers teams, how decisions are made and recorded, and how to join the reviewers team; link the Indico category. *(`com.governance`, now level 1, effort S)*
- [ ] Add to CODE_OF_CONDUCT.md an ACTS reporting contact and the enforcement steps that apply to contributors outside CERN. *(`com.conduct`, now level 2, effort S)*
- [ ] Add versions 47.0.0 through 48.1.0 to the `acts` recipe in spack/spack-packages with each release. *(`dist.packaging`, now level 2, effort S)*
- [ ] Add a deprecation policy (deprecated in N, removed in N+1) and a migration-notes section per major release to `docs/pages/versioning.md`. *(`dist.releases`, now level 2, effort S)*
- [ ] Add `SECURITY.md` with a private vulnerability reporting route and enable GitHub private vulnerability reporting. *(`dist.dependencies`, now level 2, effort S)*
- [ ] Add a matrix entry to `external_eic-shell` in `.github/workflows/builds.yml` for a pinned `eic_ci_without_acts` stable tag next to `nightly`, and run `ctest` after the ACTS build. *(`eic.environment`, now level 2, effort S)*
- [ ] Have `CI/release.sh` update `version` and `date-released` in CITATION.cff and run `CI/sync_citation_metadata.py` on every release. *(`via.citation`, now level 2, effort S)*
- [ ] Add a section to the README naming the institutions that commit maintainer effort and what happens when a maintainer leaves. *(`via.support`, now level 2, effort S)*
- [ ] Review the 84 open issues older than one year and close, milestone or label each, bringing the share below 50%. *(`com.responsiveness`, now level 1, effort M)*
- [ ] Label newcomer issues and announce them on the acts-developers e-group and Mattermost to raise the external PR share. *(`com.contributors`, now level 2, effort M)*
- [ ] (EIC side) Update eic/containers to an ACTS 48.x release once EICrecon builds against it. *(`dist.packaging`, now level 2, effort M)*
- [ ] Write the ACTS version, commit hash and sequencer configuration into the metadata of ROOT and EDM4hep outputs in Examples/Io. *(`dist.reproducibility`, now level 2, effort M)*

## Low priority

- [ ] Add a "Development environment and tests" section to CONTRIBUTING.md covering `.devcontainer/`, `cmake --preset dev` and `ctest --test-dir build`. *(`doc.contributing`, now level 2, effort S)*
- [ ] Add `SPDX-License-Identifier MPL-2.0` to the header template enforced by `CI/check_license.py` and state inbound=outbound terms in CONTRIBUTING.md. *(`via.license`, now level 2, effort S)*
- [ ] Add a CI job that builds and tests against the minimum versions set in `CMakeLists.txt`. *(`dist.dependencies`, now level 2, effort M)*
