You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tooling.apache.org by sb...@apache.org on 2026/07/30 14:59:53 UTC
(tooling-trusted-releases) branch tertia updated (60ad2123 -> 1c71523e)
This is an automated email from the ASF dual-hosted git repository.
sbp pushed a change to branch tertia
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-releases.git
from 60ad2123 #1370 - initial admin page for renaming, moving and deleting projects
add dbb5c710 Update components (#1377)
add 085bc83f #1373 - sort order for committee projects
add 7090e86b #1358 - enforce JTI claim for workflow SSH keys
add b542ea5c #1373 - fix sort order for committee projects on other pages
add c24f02f4 Fix a database query bug in the API endpoint to start a vote
add 8a62b362 Default the revision when the user starts a vote on their own revision
add 4c585cb8 Make the revision number optional when announcing a release
add 58079ab1 Skip empty files in lightweight license checks
add 53675524 Add a major version variable for use in download paths
add ca985b8d Convert catalogue links to buttons
add 2755ee90 Render the banner from a database table edited by admins
add 5c3859ed Fix a bug with download paths
add a420564c Make the public SVN URL configurable
add 5289b06d Ensure that only PMC members and committer RMs can publish to SVN
add 082b2391 Update dependencies
add 38001e0c #1363 - fix email when release is only reported by the SVN watcher
add e85ddb26 Use templates by default in the API when constructing vote messages
add f62697a7 Use templates by default in the API for announcement messages
add d37c5694 Adjust downloads menu target (#1394)
add 4c1f99d1 Use the policy vote duration in the API by default
add e00c80a5 #1363 - change email content for watched vs announced
add 8fc2a43f #1400 - classify SBOMs as SBOMs
add ef5a1496 #1370 - support import and export of PMC CSVs
add 2f2d1e78 Allow SHA-512 files to be generated without signatures
add 2626a239 Move the wording about breaking the embargo during expedited releases
add 7eca2f37 Document the finish process on the corresponding page
add 6777c5e3 Remove the ability for admins to regenerate all KEYS files
add 911c5142 Relax migration immutability check - branches should be able to reorder their own migrations or rebase on a changed main
add 8d64257d #1371 - release archival
add 99b3fac1 Replace dist/atr on non-live environments properly
add 9a7d41c1 Bump astral-sh/setup-uv from 8.2.0 to 8.3.1
add 56b1e14a Bump docker/setup-buildx-action from 4.1.0 to 4.2.0
add a5011177 Bump docker/build-push-action from 7.2.0 to 7.3.0
add d98e4188 Update CodeQL actions, and ensure smoother Dependabot updates
add d548108f Bump astral-sh/setup-uv from 8.3.1 to 8.3.2
add a11f55c0 Bump the codeql-action group with 2 updates
add 99e8934f Bump advanced-security/dismiss-alerts from 2.0.2 to 2.0.3
add 3e2dba96 Fix bug with null download suffix
add b65a7ab6 Add suggestion to avoid double-prefixing files in dist
add 4aa8c4e8 Use existing KEYS URLs instead of linking to the removed downloads directory
add 34ccffe4 #1400 - SBOM check as a suggestion
add 91de479d Document resource management
add b0311e37 #1403 - validate spec parity in SBOM tooling
add 5f42d9a6 #1403 - enhance spec handling for CLI
add 0c6c7630 #1417 - Fail signature check when key has expired
add b4293764 Add a committee property for automatically managing KEYS files
add c809c1de Add more detailed KEYS publication result types
add 1fd58a4f Only publish KEYS files to SVN when the committee configures that
add d9c1873f #1399 - new SBOM report showing content, linked from the artifact itself
add ec16d9aa Report to users when KEYS publication to SVN is not enabled
add 1a470914 Fix a problem with displaying committees
add ae799ff7 Add a unit test that committee pages successfully render
add e02af201 Report KEYS publication status in relevant API responses
add 79013389 Let PMC members toggle automated KEYS publication
add e797ceee #1417 - Support for subkeys
add ba9e46e7 Report KEYS publication failures more widely
add 0e72dad8 Fail early when the state directory is not writeable
add c9cd800e Check in CI that the server can run without root
add 32f6de19 Create an ATR user and group inside the container
add 14e7fb89 Make the compose container user configurable
add 95a11605 Run the compose server containers under an init
add f29c190f Prevent privilege escalation in the compose containers
add 5cbc21c3 Create an empty state directory in the Alpine container
add ae4cb279 Run the Alpine container as the ATR user instead of root
add 3faf688e Add an API endpoint to generate augmented SBOMs
add 7b9bf6b6 Update dependencies
add 98ac0978 Update rpgp-py
add 9511471a Do not load releases in projects
add 33b62a39 Load only user projects instead of all active projects
add 7019111f Consolidate release queries for the navigation menu
add f2df23be Consolidate release queries on the user home dashboard
add 00285513 Count releases instead of loading them on the projects page
add ad89580c Add the option to specify an expected latest revision during API uploads
add 53bb2564 Properly handle revoked and expired OpenPGP self signatures
add b42df9fd Update dependencies
add c5bb29f8 Allow SBOM signatures
add 956a15a4 Parse attestable files in JSON mode
add 5545dc1a Parse attestable checks files in JSON mode
add a95c7ab8 Remove links to ATR's own downloads area
add 5def9227 #1417 - Reject on revoked
add 8c36af5a #1427 - revert token change
add b424c793 #1420 - auto-archive on CAP approval and handle failure to do so
add 75c7612d Remove all writes to the downloads directory
add cbebbbc4 #1419 - Datamodel update to handle subkeys. Prevent overwriting older keys.
add f67fc10f #1404 - move completed scheduled tasks to file logging and remove from database
add 5a77e115 Remove the option to preserve download files
add 3f04183a Remove all remaining stale references to the downloads directory
add c63be6d8 Remove the temporary performance monitoring code
add 029d7c47 Make some check results more prominent and include a description
add 61cd541a Make the RAT overview check result a note in most cases
add 03c4fc67 Remove confusing outdated terminology about issues
add 59fe2410 Make check result pages public
add 20f6a6e2 Add an explanatory paragraph about check result counting for archives
add c2884337 Update dependencies
add ff12466e Pin to an ASFQuart branch that will not be automatically deleted
add 1d8f09a8 Switch the ASFQuart branch to main
add 425e0209 Update Bootstrap with a 7 day cooldown
add cef94e61 #1445 - fix model ordering in dist watcher
add 405d2021 #1445 - handle errors in logging releases
add 742be1a3 #1444 - add confirm textbox to CAP archive request, refactor handlers
add 6e6aed09 #1444 - remove download button from releases and reword files button
add 592fc819 Move download path suffix to the top of the policy form
add eae70edd Rename the disclaimer template variable for podlings
add 2fcad662 Validate submitted template variable names
add 99267277 Improve SBOM output usefulness - update artifact name/version
add 590d6e8d Preserve and act upon LDAP connection errors
add a95b8c1a Improve SVN error handling for import and publication
add 81fc20b1 Require download publication to announce a release
add c4932f6b Don't show temp path in SBOM filenames
add 88d91da9 Fix named license showing as category X
add 6e3c6ba9 Fix primary component in generated SBOMs where we can do so
add 819befb5 #1443 - validate template variables in a common way across form and .asf.yaml entry
add 2516ee88 Add descriptions to vote mode option values
add f5a200ef Disallow zero hour vote durations in production mode
add 58d772ed Raise message task exceptions if no recipients could be sent to
add 2bc686df Show message delivery problems to users
add f156b994 Check that the mail relay is reachable before announcing a release
add 68169dbf Make the source tree comparison task fail if there is a problem
add ec7c3b4b #1448 - static release catalog site generation
add 1fc148ff Allow vote durations of up to 168 hours
add 0bccac39 #1448 - move enums and add increased timeout capability for task types
add 26191c59 Clarify that tests are not susceptible to URL sanitsation concerns
add da069f20 Do not log task arguments potentially associated with embargoed releases
add ec9e7cae #1448 - overloaded version param by accident
add 6caca60c Link SBOM reports together and add some license info
add 6c88e06d Report a concern if an artifact was not signed by the uploader
add 38a46f37 Update dependencies
add 59f913be #1454 - fix incubator retirement message
add 52f8c256 #1448 - add catalog site dir to managed paths
add b430a94f #1452 - fix icon size
add f06806ff #1453 - move artifacts JSON link to a pill link
add 30a485d8 #1457 - match card formatting for committee catalog page and include logos. Live PMCs only
add edc271ee #1455 - incubator page for podlings
add 738373e4 #1456 - attic page
add 3e995a72 #1460 - KEYS download link
add 49df4d73 Add trademarks to the footer (#1459)
add 4255139d Reuse app footer
add f50486b8 Fix on dist watcher for whole-directory adds
add ace7218a #1461 - rearrange catalog
add 70f821b1 Add a broken status to indicate tasks which may be retried
add 5e6bc5b2 Record failed and broken checks as exception results
add 2d9ebc44 Reclassify some check exceptions to allow retrying
add 71d0eee2 #1461 - add missing header
add 3e74da22 #1469 - make sure CLE is populated in release artifacts
add ec764fe4 #1463 - add public domain to license handling
add ae9896c2 Bump actions/checkout from 7.0.0 to 7.0.1
add 108f3589 Bump actions/setup-python from 6.3.0 to 7.0.0
add 177490d8 Bump astral-sh/setup-uv from 8.3.2 to 9.0.0
add fd161e23 Bump the codeql-action group with 2 updates
add 96460923 Retry OSV requests
add 50466bff Fix function orders
add 3055495e Report temporary OSV failures clearly
add 41e21694 #1470 - Add cycles to catalog
add 0e422418 #1462 - support for archiving committee in the database, and a reviewed flag for catalog notifications
add eb105771 Add unit tests for the PubSub listener
add 57b49b7f Make the PubSub listener more resilient and report if it exits
add 1c71523e Move where PubSub handler errors are raised from
No new revisions were added by this update.
Summary of changes:
.github/dependabot.yml | 4 +
.github/workflows/allowlistchecker.yml | 2 +-
.github/workflows/analyze.yml | 6 +-
.github/workflows/build.yml | 59 +-
.github/workflows/client-compat.yml | 4 +-
.github/workflows/codeql.yaml | 8 +-
.github/workflows/generatesbom.yml | 11 +-
.pre-commit-config.yaml | 6 +-
DEVELOPMENT.md | 16 +
Dockerfile.alpine | 28 +-
atr/admin/__init__.py | 484 ++++++++++++--
atr/admin/templates/catalog-committee.html | 4 +
atr/admin/templates/catalog-import-preview.html | 12 +
atr/admin/templates/catalog-import.html | 59 ++
.../{update-keys.html => update-catalog-site.html} | 22 +-
atr/analysis.py | 41 +-
atr/api/__init__.py | 260 +++++--
atr/archives.py | 15 +-
atr/attestable.py | 31 +-
atr/blueprints/common.py | 4 +-
atr/cache.py | 36 +
atr/catalog_site.py | 475 +++++++++++++
atr/classify.py | 58 +-
atr/cle.py | 30 +
atr/config.py | 19 +-
atr/constants.py | 1 -
atr/construct.py | 78 ++-
atr/cycles.py | 169 +++--
atr/db/__init__.py | 76 ++-
atr/db/interaction.py | 140 ++--
atr/docs/asfquart-usage.md | 2 +-
atr/docs/authentication-security.md | 2 +
atr/docs/checks.md | 6 +-
atr/docs/components.md | 50 --
atr/docs/database.md | 6 +-
atr/docs/developer-guide.md | 1 +
atr/docs/index.md | 3 +-
atr/docs/resource-management.md | 62 ++
atr/docs/signing-artifacts.md | 2 +-
atr/docs/storage-interface.md | 13 +-
atr/docs/terminology.md | 66 ++
atr/docs/user-guide.md | 54 +-
atr/form.py | 16 +-
atr/get/__init__.py | 2 -
atr/get/announce.py | 71 +-
atr/get/catalog.py | 6 +-
atr/get/checks.py | 65 +-
atr/get/committees.py | 47 +-
atr/get/compose.py | 32 -
atr/get/distribution.py | 18 +-
atr/get/download.py | 17 +-
atr/get/file.py | 144 +++-
atr/get/finish.py | 154 ++++-
atr/get/keys.py | 127 ++--
atr/get/projects.py | 120 +++-
atr/get/published.py | 126 ----
atr/get/ref.py | 3 +-
atr/get/release.py | 6 +-
atr/get/report.py | 59 +-
atr/get/resolve.py | 9 +
atr/get/result.py | 11 +-
atr/get/root.py | 86 ++-
atr/get/sbom.py | 411 +++++++++---
atr/get/vote.py | 42 +-
atr/get/voting.py | 26 +-
atr/jwtoken.py | 53 +-
atr/ldap.py | 56 +-
atr/log.py | 13 -
atr/loggers.py | 2 +-
atr/mail.py | 17 +
atr/manager.py | 64 +-
atr/models/api.py | 54 +-
atr/models/args.py | 17 +-
atr/models/attestable.py | 2 +
atr/models/checkdata.py | 1 +
atr/models/results.py | 15 +
atr/models/safe.py | 3 +
atr/models/sql.py | 175 +++--
atr/models/validation.py | 6 +-
atr/paths.py | 44 +-
atr/pgp.py | 338 ++++++++++
atr/post/__init__.py | 2 +
atr/post/announce.py | 20 +-
atr/post/draft.py | 16 +-
atr/post/file.py | 214 ++++++
atr/post/finish.py | 4 +-
atr/post/keys.py | 104 ++-
atr/post/projects.py | 43 +-
atr/post/sbom.py | 56 +-
atr/principal.py | 6 +
atr/pubsub.py | 61 +-
atr/render.py | 57 +-
atr/sbom/__init__.py | 17 +-
atr/sbom/components.py | 64 ++
atr/sbom/constants/licenses.py | 96 +++
atr/sbom/cyclonedx.py | 11 +-
atr/sbom/licenses.py | 170 +++--
atr/sbom/models/__init__.py | 4 +-
atr/sbom/models/{patch.py => components.py} | 50 +-
atr/sbom/osv.py | 66 +-
atr/server.py | 83 +--
atr/sessions.py | 30 +
atr/shared/announce.py | 6 +
atr/shared/catalog.py | 99 ++-
atr/shared/catalogue_diff.py | 491 ++++++++++++++
atr/shared/catalogue_import.py | 318 +++++++++
atr/shared/catalogue_rows.py | 138 ++++
atr/shared/keys.py | 48 +-
atr/shared/projects.py | 77 ++-
atr/shared/repoint.py | 6 +-
atr/shared/sbom.py | 36 +-
atr/shared/voting.py | 5 +-
atr/static/css/atr.css | 21 +
atr/storage/__init__.py | 7 +
atr/storage/datatypes.py | 33 +-
atr/storage/readers/releases.py | 13 +
atr/storage/writers/__init__.py | 2 +
atr/storage/writers/announce.py | 175 +++--
atr/storage/writers/banner.py | 54 ++
atr/storage/writers/catalogue.py | 299 +++++++--
atr/storage/writers/committee.py | 44 ++
atr/storage/writers/keys.py | 568 +++++++++-------
atr/storage/writers/mail.py | 1 +
atr/storage/writers/notifications.py | 4 +
atr/storage/writers/policy.py | 25 +-
atr/storage/writers/project.py | 34 +
atr/storage/writers/release.py | 744 +++++++++++----------
atr/storage/writers/revision.py | 11 +-
atr/storage/writers/sbom.py | 53 ++
atr/storage/writers/ssh.py | 14 +
atr/storage/writers/vote.py | 8 +-
atr/svn/__init__.py | 157 ++++-
atr/svn/catalog.py | 116 +++-
atr/tasks/__init__.py | 172 +++--
atr/tasks/cap.py | 88 ++-
atr/tasks/catalog_site.py | 61 ++
atr/tasks/checks/__init__.py | 49 +-
atr/tasks/checks/compare.py | 170 +++--
atr/tasks/checks/hashing.py | 20 +-
atr/tasks/checks/license.py | 45 +-
atr/tasks/checks/parity.py | 5 +-
atr/tasks/checks/paths.py | 79 ++-
atr/tasks/checks/rat.py | 45 +-
atr/tasks/checks/sbom.py | 84 +++
atr/tasks/checks/signature.py | 329 +++++++--
atr/tasks/checks/targz.py | 21 +-
atr/tasks/checks/zipformat.py | 20 +-
atr/tasks/keys.py | 2 +-
atr/tasks/maintenance.py | 53 +-
atr/tasks/message.py | 3 +
atr/tasks/quarantine.py | 7 +-
atr/tasks/sbom.py | 163 ++++-
atr/tasks/svn.py | 45 +-
atr/tasks/svnpub.py | 4 +-
atr/tasks/task.py | 169 ++++-
atr/tasks/vote.py | 5 +-
atr/templates/_catalog_version.html | 10 +-
atr/templates/catalog.html | 23 +-
atr/templates/catalog_site/_project_back_link.html | 13 +
atr/templates/catalog_site/_release_list.html | 18 +
atr/templates/catalog_site/_unreviewed.html | 5 +
atr/templates/catalog_site/_version.html | 20 +
atr/templates/catalog_site/attic.html | 19 +
atr/templates/catalog_site/catalog_site_base.html | 36 +
atr/templates/catalog_site/incubator.html | 41 ++
atr/templates/catalog_site/index.html | 49 ++
atr/templates/catalog_site/project.html | 66 ++
atr/templates/catalog_site/project_archive.html | 23 +
atr/templates/catalog_site/release.html | 51 ++
atr/templates/check-selected-path-table.html | 13 +-
atr/templates/committee-directory.html | 2 +-
atr/templates/committee-view.html | 22 +-
atr/templates/draft-tools.html | 8 +-
atr/templates/includes/footer.html | 5 +
atr/templates/includes/topnav.html | 29 +-
atr/templates/layouts/base.html | 6 +-
atr/templates/macros/flash.html | 3 +
atr/templates/releases-finished.html | 12 +-
atr/templates/report-selected-path.html | 6 +-
atr/templates/resolve-tabulated.html | 13 +
atr/user.py | 36 +-
atr/util.py | 184 +++--
atr/worker.py | 259 +++----
bootstrap/source/package-lock.json | 44 +-
docker-compose.yml | 4 +
....29_ca1ec0de.py => 0105_2026.07.09_3414415d.py} | 31 +-
....29_ca1ec0de.py => 0106_2026.07.10_805ec889.py} | 29 +-
migrations/versions/0107_2026.07.14_cb5f8249.py | 82 +++
....29_ca1ec0de.py => 0108_2026.07.14_ba53474d.py} | 24 +-
....29_ca1ec0de.py => 0109_2026.07.15_91de479d.py} | 22 +-
migrations/versions/0110_2026.07.20_7c41ab93.py | 211 ++++++
....29_ca1ec0de.py => 0111_2026.07.22_f67fc10f.py} | 24 +-
....29_ca1ec0de.py => 0112_2026.07.22_d374db02.py} | 27 +-
migrations/versions/0113_2026.07.28_dd069840.py | 124 ++++
....29_ca1ec0de.py => 0114_2026.07.29_4a3ce951.py} | 26 +-
pip-audit.requirements | 44 +-
playwright/test.py | 27 +-
pyproject.toml | 4 +-
scripts/backfill_signing_keys.py | 81 +++
scripts/check_migrations_immutable.py | 48 +-
scripts/check_templates.py | 2 +-
scripts/ci/check_sbom_spec_parity.py | 116 ++++
scripts/ci/check_syft_cli_spec.sh | 21 +
scripts/hints_import.py | 6 +-
scripts/keys_import.py | 6 +-
scripts/purge_recurring_task_history.py | 167 +++++
start-atr.sh | 9 +-
start-dev.sh | 9 +-
tests/docker-compose.yml | 6 +
tests/e2e/announce/test_get.py | 7 +-
tests/e2e/sbom/test_post.py | 16 +
tests/unit/pgp_fixtures.py | 215 ++++++
atr/filters.py => tests/unit/sboms.py | 23 +-
tests/unit/test_admin_catalog.py | 63 +-
tests/unit/test_announce_deletion_order.py | 22 +-
.../test_get.py => unit/test_api_key_results.py} | 25 +-
tests/unit/test_api_release_announce.py | 127 ++++
tests/unit/test_api_sbom_generate.py | 220 ++++++
tests/unit/test_api_vote_start.py | 104 +++
tests/unit/test_archive_root_variants.py | 19 +-
tests/unit/test_archived_project_writer_guards.py | 20 +
tests/unit/test_asf_yaml_export.py | 29 +-
tests/unit/test_attestable.py | 23 +-
tests/unit/test_blueprints.py | 9 +
tests/unit/test_catalog.py | 65 +-
tests/unit/test_catalogue_diff.py | 458 +++++++++++++
tests/unit/test_catalogue_import_apply.py | 514 ++++++++++++++
tests/unit/test_checks_compare.py | 58 +-
tests/unit/test_checks_license.py | 54 +-
tests/unit/test_checks_rat.py | 38 +-
tests/unit/test_checks_signature.py | 120 ++++
tests/unit/test_checks_table.py | 43 +-
tests/unit/test_classify.py | 45 +-
tests/unit/test_committees_view.py | 88 +++
tests/unit/test_construct_announce.py | 71 +-
tests/unit/test_create_revision.py | 132 ++++
tests/unit/test_cycles.py | 72 ++
tests/unit/test_distribution_maven_guidance.py | 4 +-
tests/unit/test_download_path_suffix.py | 45 +-
tests/unit/test_get_projects.py | 125 ++++
tests/unit/test_get_root.py | 130 ++++
tests/unit/test_get_sbom_tally.py | 51 ++
tests/unit/test_keys_delete.py | 89 ++-
tests/unit/test_keys_post.py | 34 +-
tests/unit/test_keys_shared.py | 42 ++
tests/unit/test_keys_writer.py | 252 ++++---
tests/unit/test_ldap.py | 87 +++
tests/unit/test_mail.py | 59 ++
tests/unit/test_manager_terminate.py | 78 +++
tests/unit/test_message.py | 60 ++
tests/unit/test_paths.py | 39 +-
tests/unit/test_pgp.py | 248 +++++++
.../unit/test_policy_announce_default.py | 24 +-
tests/unit/test_policy_update_args.py | 4 +-
tests/unit/test_policy_writer.py | 49 ++
tests/unit/test_pubsub.py | 136 ++++
tests/unit/test_quarantine_task.py | 18 +-
tests/unit/test_release_archive_approval.py | 159 +++++
tests/unit/test_release_notification.py | 22 +-
tests/unit/test_release_writer_archive.py | 149 ++---
tests/unit/test_release_writer_hashgen.py | 95 +--
tests/unit/test_report_reconciliation.py | 56 ++
tests/unit/test_safe_types.py | 6 +
tests/unit/test_sbom_candidates.py | 49 ++
tests/unit/test_sbom_components.py | 52 ++
tests/unit/test_sbom_licenses.py | 158 +++++
tests/unit/test_sbom_osv.py | 141 ++++
tests/unit/test_sessions.py | 56 ++
tests/unit/test_signature_provenance.py | 61 +-
tests/unit/test_source_artifact_check.py | 82 ++-
tests/unit/test_svn_errors.py | 155 +++++
tests/unit/test_svn_publish_announce.py | 127 +++-
tests/unit/test_svn_publish_helpers.py | 131 +++-
tests/unit/test_svn_publish_start_vote.py | 50 ++
tests/unit/test_svn_publish_writer.py | 80 ++-
tests/unit/test_task_finalise.py | 129 ++++
tests/unit/test_template_variables.py | 75 +++
tests/unit/test_topnav.py | 171 +++++
tests/unit/test_user.py | 63 ++
tests/unit/test_vote_duration_zero.py | 67 ++
tests/unit/test_vote_rendering.py | 32 +
tests/unit/test_vote_resolution.py | 2 +
tests/unit/test_worker_complete.py | 107 +++
tests/unit/test_worker_defer.py | 113 ++++
tests/unit/test_workflow_jti_replay.py | 139 ++++
uv.lock | 614 +++++++++--------
286 files changed, 16998 insertions(+), 3866 deletions(-)
create mode 100644 atr/admin/templates/catalog-import-preview.html
create mode 100644 atr/admin/templates/catalog-import.html
copy atr/admin/templates/{update-keys.html => update-catalog-site.html} (72%)
create mode 100644 atr/catalog_site.py
delete mode 100644 atr/docs/components.md
create mode 100644 atr/docs/resource-management.md
create mode 100644 atr/docs/terminology.md
delete mode 100644 atr/get/published.py
create mode 100644 atr/pgp.py
create mode 100644 atr/post/file.py
create mode 100644 atr/sbom/components.py
copy atr/sbom/models/{patch.py => components.py} (57%)
create mode 100644 atr/shared/catalogue_diff.py
create mode 100644 atr/shared/catalogue_import.py
create mode 100644 atr/shared/catalogue_rows.py
create mode 100644 atr/storage/writers/banner.py
create mode 100644 atr/tasks/catalog_site.py
create mode 100644 atr/tasks/checks/sbom.py
create mode 100644 atr/templates/catalog_site/_project_back_link.html
create mode 100644 atr/templates/catalog_site/_release_list.html
create mode 100644 atr/templates/catalog_site/_unreviewed.html
create mode 100644 atr/templates/catalog_site/_version.html
create mode 100644 atr/templates/catalog_site/attic.html
create mode 100644 atr/templates/catalog_site/catalog_site_base.html
create mode 100644 atr/templates/catalog_site/incubator.html
create mode 100644 atr/templates/catalog_site/index.html
create mode 100644 atr/templates/catalog_site/project.html
create mode 100644 atr/templates/catalog_site/project_archive.html
create mode 100644 atr/templates/catalog_site/release.html
copy migrations/versions/{0099_2026.06.29_ca1ec0de.py => 0105_2026.07.09_3414415d.py} (52%)
copy migrations/versions/{0099_2026.06.29_ca1ec0de.py => 0106_2026.07.10_805ec889.py} (59%)
create mode 100644 migrations/versions/0107_2026.07.14_cb5f8249.py
copy migrations/versions/{0099_2026.06.29_ca1ec0de.py => 0108_2026.07.14_ba53474d.py} (60%)
copy migrations/versions/{0099_2026.06.29_ca1ec0de.py => 0109_2026.07.15_91de479d.py} (62%)
create mode 100644 migrations/versions/0110_2026.07.20_7c41ab93.py
copy migrations/versions/{0099_2026.06.29_ca1ec0de.py => 0111_2026.07.22_f67fc10f.py} (60%)
copy migrations/versions/{0099_2026.06.29_ca1ec0de.py => 0112_2026.07.22_d374db02.py} (60%)
create mode 100644 migrations/versions/0113_2026.07.28_dd069840.py
copy migrations/versions/{0099_2026.06.29_ca1ec0de.py => 0114_2026.07.29_4a3ce951.py} (53%)
create mode 100644 scripts/backfill_signing_keys.py
create mode 100755 scripts/ci/check_sbom_spec_parity.py
create mode 100755 scripts/ci/check_syft_cli_spec.sh
create mode 100644 scripts/purge_recurring_task_history.py
create mode 100644 tests/unit/pgp_fixtures.py
copy atr/filters.py => tests/unit/sboms.py (57%)
copy tests/{e2e/merge/test_get.py => unit/test_api_key_results.py} (58%)
create mode 100644 tests/unit/test_api_release_announce.py
create mode 100644 tests/unit/test_api_sbom_generate.py
create mode 100644 tests/unit/test_api_vote_start.py
create mode 100644 tests/unit/test_catalogue_diff.py
create mode 100644 tests/unit/test_catalogue_import_apply.py
create mode 100644 tests/unit/test_committees_view.py
create mode 100644 tests/unit/test_get_projects.py
create mode 100644 tests/unit/test_get_root.py
create mode 100644 tests/unit/test_get_sbom_tally.py
create mode 100644 tests/unit/test_keys_shared.py
create mode 100644 tests/unit/test_manager_terminate.py
create mode 100644 tests/unit/test_pgp.py
copy atr/tasks/task.py => tests/unit/test_policy_announce_default.py (54%)
create mode 100644 tests/unit/test_pubsub.py
create mode 100644 tests/unit/test_release_archive_approval.py
create mode 100644 tests/unit/test_report_reconciliation.py
create mode 100644 tests/unit/test_sbom_candidates.py
create mode 100644 tests/unit/test_sbom_components.py
create mode 100644 tests/unit/test_sbom_licenses.py
create mode 100644 tests/unit/test_sbom_osv.py
create mode 100644 tests/unit/test_svn_errors.py
create mode 100644 tests/unit/test_task_finalise.py
create mode 100644 tests/unit/test_template_variables.py
create mode 100644 tests/unit/test_topnav.py
create mode 100644 tests/unit/test_vote_duration_zero.py
create mode 100644 tests/unit/test_worker_complete.py
create mode 100644 tests/unit/test_worker_defer.py
create mode 100644 tests/unit/test_workflow_jti_replay.py
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tooling.apache.org
For additional commands, e-mail: commits-help@tooling.apache.org