Skip to content

Add compliance CI checks and scripts#1453

Merged
Chralt98 merged 7 commits into
mainfrom
chralt98-add-compliance-checks
Nov 27, 2025
Merged

Add compliance CI checks and scripts#1453
Chralt98 merged 7 commits into
mainfrom
chralt98-add-compliance-checks

Conversation

@Chralt98

@Chralt98 Chralt98 commented Nov 25, 2025

Copy link
Copy Markdown

What does it do?

  • Added SPDX license identifier (GPL-3.0-or-later) to various shell scripts and TypeScript files.
  • Updated license field in Cargo.toml files for multiple packages to GPL-3.0-or-later.
  • Set publish flag to false in Cargo.toml files for several packages to prevent accidental publishing.
  • Introduced new compliance scripts for cargo audit, cargo deny, gitleaks, and others to enhance project security and compliance checks.

What important points should reviewers know?

Is there something left for follow-up PRs?

What alternative implementations were considered?

Are there relevant PRs or issues?

References

Summary by CodeRabbit

Release Notes

  • Chores
    • Added comprehensive compliance infrastructure with automated security vulnerability scanning, code quality analysis, and license compliance checks.
    • Updated license metadata across codebase to GPL-3.0-or-later.
    • Updated ws dependency to latest version.

✏️ Tip: You can customize this high-level summary in your review settings.

…tiple files

- Added SPDX license identifier (GPL-3.0-or-later) to various shell scripts and TypeScript files.
- Updated license field in Cargo.toml files for multiple packages to GPL-3.0-or-later.
- Set publish flag to false in Cargo.toml files for several packages to prevent accidental publishing.
- Introduced new compliance scripts for cargo audit, cargo deny, gitleaks, and others to enhance project security and compliance checks.
@Chralt98 Chralt98 self-assigned this Nov 25, 2025
@Chralt98 Chralt98 added the s:review-needed The pull request requires reviews label Nov 25, 2025
@coderabbitai

coderabbitai Bot commented Nov 25, 2025

Copy link
Copy Markdown

Walkthrough

This PR introduces comprehensive compliance and security scanning tooling including a new GitHub Actions compliance workflow, Semgrep rules for detecting debug macros in runtime code, configuration for cargo-deny, gitleaks, Grype, and ScanCode tools, plus SPDX license headers to shell scripts and updated license metadata across Cargo.toml files.

Changes

Cohort / File(s) Summary
GitHub Actions Workflows
.github/workflows/compliance.yml, .github/workflows/scancode.yml
New compliance workflow with five jobs (cargo-deny, semgrep, node-licenses, gitleaks, sbom-vuln) triggering on PR labels or pushes to main; new scancode workflow triggering on manual dispatch or semantic version tags, outputting JSON compliance report as artifact
GitHub Actions Updates
.github/workflows/integration-tests.yml
Updated actions/download-artifact from v4 to v4.1.8 across multiple jobs
Semgrep Configuration
.github/semgrep-rules.yml
Added two new Semgrep rules: rust-no-dbg-in-runtime and rust-no-println-in-runtime to warn on debug macro usage in runtime and pallet code
Compliance Bash Scripts
scripts/compliance/{cargo_audit,cargo_deny,gitleaks,node_checks,sbom,scancode,semgrep}.sh, scripts/compliance/run_all.sh
New compliance check scripts with strict error handling and requirement validation; run_all.sh orchestrates sequential execution of all compliance checks
License Header Additions
integration-tests/scripts/*.sh, scripts/{benchmarks,parachain,compliance,runtime-upgrade,tests,update-copyright,docker-hub-publish,init,build-parachain-spec}.sh
Added SPDX-License-Identifier headers to 23 shell scripts across the project
License and Publish Metadata
Cargo.toml (root), macros/Cargo.toml, node/Cargo.toml, primitives/Cargo.toml, runtime/{battery-station,common,zeitgeist}/Cargo.toml, zrml/{*/Cargo.toml,*/fuzz/Cargo.toml,*/runtime-api/Cargo.toml} (30+ files)
Updated workspace license from "GPL-3.0" to "GPL-3.0-or-later"; added license = "GPL-3.0-or-later" and/or publish = false to package sections across all runtime and zrml crates
Security Tool Configurations
deny.toml, .gitleaks.toml, .grype.yaml
Added cargo-deny config with advisory ignores, license allowlist, and Git source restrictions; gitleaks allowlist for known safe test addresses; Grype vulnerability ignore list for known issues scoped to specific packages
Dependency and Configuration Updates
integration-tests/package.json
Updated ws from 8.16.0 to 8.17.1; added pnpm.overrides block for explicit version pinning
Gitignore Update
.gitignore
Added sbom.json under new "Compliance artifacts" section

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–25 minutes

  • Repetitive homogeneous changes: 30+ Cargo.toml license/publish additions and 23+ shell script license headers are low-complexity and follow consistent patterns, reducing per-file review burden
  • Configuration complexity: deny.toml, gitleaks allowlist, and Grype ignore list require careful validation of allow/deny logic and reasoning about whitelisted exceptions
  • New compliance tooling: Seven new compliance scripts and the central workflow require review of error handling, tool invocations, and integration logic
  • Specific areas needing attention:
    • deny.toml allow/deny rules and license exception handling
    • .gitleaks.toml and .grype.yaml allowlist entries and their justifications
    • .github/semgrep-rules.yml rule patterns and path scoping
    • Compliance workflow job concurrency and gating logic based on PR labels
    • scripts/compliance/ script implementations for proper error handling and tool integration

Suggested labels

s:accepted

Suggested reviewers

  • robhyrk
  • saboonikhil

Poem

🐰 Compliance hops with SPDX flair,
Scanning webs for issues rare,
License headers, deny rules tight,
Security checks made just right!
Grype and gitleaks stand on guard,
Keeping code review not too hard! 🔍✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 11.11% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add compliance CI checks and scripts' directly and accurately reflects the primary changes in the pull request, which include adding new compliance CI workflows, shell scripts, and configuration files for security and compliance checks.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chralt98-add-compliance-checks

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 14590d7 and ce61a23.

⛔ Files ignored due to path filters (2)
  • Cargo.lock is excluded by !**/*.lock
  • integration-tests/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (10)
  • .github/workflows/integration-tests.yml (4 hunks)
  • Cargo.toml (1 hunks)
  • integration-tests/package.json (2 hunks)
  • integration-tests/scripts/deploy-zombienet.sh (1 hunks)
  • node/Cargo.toml (1 hunks)
  • runtime/battery-station/Cargo.toml (1 hunks)
  • runtime/common/Cargo.toml (1 hunks)
  • runtime/zeitgeist/Cargo.toml (1 hunks)
  • scripts/benchmarks/configuration.sh (1 hunks)
  • scripts/benchmarks/run_benchmarks.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (6)
  • scripts/benchmarks/run_benchmarks.sh
  • node/Cargo.toml
  • integration-tests/scripts/deploy-zombienet.sh
  • runtime/zeitgeist/Cargo.toml
  • .github/workflows/integration-tests.yml
  • scripts/benchmarks/configuration.sh
🧰 Additional context used
🪛 Biome (2.1.2)
integration-tests/package.json

[error] 20-20: The key pnpm was already declared.

This where a duplicated key was declared again.

If a key is defined multiple times, only the last definition takes effect. Previous definitions are ignored.

(lint/suspicious/noDuplicateObjectKeys)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: Checks (parachain)
  • GitHub Check: Checks (clippy)
  • GitHub Check: Quick check benchmarks
  • GitHub Check: Checks (standalone)
  • GitHub Check: Format
  • GitHub Check: Summary
🔇 Additional comments (3)
Cargo.toml (1)

5-5: License field standardization looks good.

The update from GPL-3.0 to GPL-3.0-or-later aligns with the PR's compliance objectives and provides appropriate flexibility for licensing. This propagates to all workspace crates as the base definition.

runtime/common/Cargo.toml (1)

121-123: Package metadata additions are appropriate.

The license = "GPL-3.0-or-later" and publish = false fields correctly prevent accidental publication of this internal runtime crate while aligning with the project's compliance and licensing standards.

runtime/battery-station/Cargo.toml (1)

456-458: Package metadata additions are consistent and appropriate.

Like runtime/common, the license and publish fields correctly standardize licensing and prevent unintended publication of this internal battery-station runtime crate.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (9)
integration-tests/scripts/build-zeitgeist-spec.sh (1)

1-2: Standardize shebang for consistency.

This script uses #!/bin/bash while all other shell scripts in the repository use #!/usr/bin/env bash. The latter is more portable and aligns with the project's convention.

Consider updating to:

-#!/bin/bash
+#!/usr/bin/env bash

This ensures consistency across all shell scripts and improves portability.

scripts/compliance/cargo_audit.sh (1)

8-13: Extract require_cmd to a shared utility to reduce duplication.

The require_cmd helper is duplicated across 7+ compliance scripts (cargo_audit.sh, cargo_deny.sh, gitleaks.sh, node_checks.sh, sbom.sh, scancode.sh, semgrep.sh). Consider sourcing it from a shared utility file or library to follow DRY principles.

Example approach—create scripts/compliance/lib.sh:

#!/usr/bin/env bash
# SPDX-License-Identifier: GPL-3.0-or-later

require_cmd() {
  if ! command -v "$1" >/dev/null 2>&1; then
    echo "Missing required command '$1'. Install it and retry." >&2
    exit 127
  fi
}

Then source it in each script:

source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/lib.sh"

This maintains consistency and makes future updates simpler.

scripts/compliance/scancode.sh (1)

8-13: Extract require_cmd to shared utility (duplicate across scripts).

As noted in cargo_audit.sh review, this function is duplicated across multiple compliance scripts. Consider refactoring to a shared utility.

scripts/compliance/sbom.sh (1)

8-13: Extract require_cmd to shared utility (duplicate across scripts).

As noted in previous reviews, this function is duplicated across 7+ compliance scripts. Recommend refactoring to a shared sourced utility.

scripts/compliance/node_checks.sh (1)

8-19: Good Node.js compliance checks, but extract the duplicated require_cmd function.

The require_cmd function (lines 8–13) is identical across all compliance scripts. Extract it to a shared utility file (e.g., scripts/compliance/common.sh) and source it from each script to reduce duplication and maintenance burden.

scripts/compliance/semgrep.sh (1)

8-24: Config validation is good, but resolve code duplication and verify config file.

The config existence check (lines 17–20) is excellent defensive programming. However:

  1. Extract the duplicated require_cmd function (lines 8–13) to a shared utility.
  2. Verify that .github/semgrep-rules.yml is committed in this PR.
scripts/compliance/gitleaks.sh (1)

8-17: LGTM, but extract the duplicated require_cmd function.

The --redact flag is good practice for security tool output in CI. However, consolidate the require_cmd function to a shared utility across all compliance scripts.

deny.toml (1)

3-22: Extensive advisory ignore list warrants tracking.

The 18 ignored RUSTSEC advisories suggest dependencies with known vulnerabilities. Consider documenting justifications for each ignore or creating issues to track remediation timelines for critical ones.

.github/workflows/compliance.yml (1)

16-20: Consider refactoring repeated conditional logic.

The same if-condition is repeated across all five jobs. For maintainability, consider extracting this to a reusable workflow input or defining it as an environment-level setting.

Also applies to: 35-39, 51-55, 72-76, 88-92

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5960a02 and f937e38.

⛔ Files ignored due to path filters (2)
  • Cargo.lock is excluded by !**/*.lock
  • integration-tests/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (73)
  • .github/semgrep-rules.yml (1 hunks)
  • .github/workflows/compliance.yml (1 hunks)
  • .github/workflows/integration-tests.yml (4 hunks)
  • .github/workflows/scancode.yml (1 hunks)
  • .gitignore (1 hunks)
  • .gitleaks.toml (1 hunks)
  • .grype.yaml (1 hunks)
  • Cargo.toml (1 hunks)
  • deny.toml (1 hunks)
  • integration-tests/package.json (2 hunks)
  • integration-tests/scripts/build-battery-station-spec.sh (1 hunks)
  • integration-tests/scripts/build-node-configuration.sh (1 hunks)
  • integration-tests/scripts/build-node.sh (1 hunks)
  • integration-tests/scripts/build-zeitgeist-spec.sh (1 hunks)
  • integration-tests/scripts/deploy-zombienet.sh (1 hunks)
  • integration-tests/tests/common-tests.ts (1 hunks)
  • macros/Cargo.toml (1 hunks)
  • node/Cargo.toml (1 hunks)
  • primitives/Cargo.toml (1 hunks)
  • runtime/battery-station/Cargo.toml (1 hunks)
  • runtime/common/Cargo.toml (1 hunks)
  • runtime/zeitgeist/Cargo.toml (1 hunks)
  • scripts/benchmarks/configuration.sh (1 hunks)
  • scripts/benchmarks/quick_check.sh (1 hunks)
  • scripts/benchmarks/run_benchmarks.sh (1 hunks)
  • scripts/build-parachain-spec.sh (1 hunks)
  • scripts/compliance/cargo_audit.sh (1 hunks)
  • scripts/compliance/cargo_deny.sh (1 hunks)
  • scripts/compliance/gitleaks.sh (1 hunks)
  • scripts/compliance/node_checks.sh (1 hunks)
  • scripts/compliance/run_all.sh (1 hunks)
  • scripts/compliance/sbom.sh (1 hunks)
  • scripts/compliance/scancode.sh (1 hunks)
  • scripts/compliance/semgrep.sh (1 hunks)
  • scripts/docker-hub-publish.sh (1 hunks)
  • scripts/init.sh (1 hunks)
  • scripts/parachain/bootstrap.sh (1 hunks)
  • scripts/parachain/local.sh (1 hunks)
  • scripts/parachain/testing-network-commons.sh (1 hunks)
  • scripts/runtime-upgrade/test_runtime_upgrade.sh (1 hunks)
  • scripts/tests/all-sequencial.sh (1 hunks)
  • scripts/tests/aux-functions.sh (1 hunks)
  • scripts/tests/clippy.sh (1 hunks)
  • scripts/tests/coverage.sh (1 hunks)
  • scripts/tests/format.sh (1 hunks)
  • scripts/tests/fuzz.sh (1 hunks)
  • scripts/tests/parachain.sh (1 hunks)
  • scripts/tests/standalone.sh (1 hunks)
  • scripts/tests/test_parachain.sh (1 hunks)
  • scripts/tests/test_standalone.sh (1 hunks)
  • scripts/update-copyright.sh (1 hunks)
  • zrml/authorized/Cargo.toml (1 hunks)
  • zrml/combinatorial-tokens/Cargo.toml (1 hunks)
  • zrml/combinatorial-tokens/fuzz/Cargo.toml (1 hunks)
  • zrml/court/Cargo.toml (1 hunks)
  • zrml/futarchy/Cargo.toml (1 hunks)
  • zrml/futarchy/fuzz/Cargo.toml (1 hunks)
  • zrml/global-disputes/Cargo.toml (1 hunks)
  • zrml/hybrid-router/Cargo.toml (1 hunks)
  • zrml/market-commons/Cargo.toml (1 hunks)
  • zrml/neo-swaps/Cargo.toml (1 hunks)
  • zrml/neo-swaps/fuzz/Cargo.toml (1 hunks)
  • zrml/orderbook/Cargo.toml (1 hunks)
  • zrml/orderbook/fuzz/Cargo.toml (1 hunks)
  • zrml/parimutuel/Cargo.toml (1 hunks)
  • zrml/prediction-markets/Cargo.toml (1 hunks)
  • zrml/prediction-markets/fuzz/Cargo.toml (1 hunks)
  • zrml/prediction-markets/runtime-api/Cargo.toml (1 hunks)
  • zrml/styx/Cargo.toml (1 hunks)
  • zrml/swaps/Cargo.toml (1 hunks)
  • zrml/swaps/fuzz/Cargo.toml (1 hunks)
  • zrml/swaps/rpc/Cargo.toml (1 hunks)
  • zrml/swaps/runtime-api/Cargo.toml (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (5)
scripts/compliance/scancode.sh (6)
scripts/compliance/cargo_audit.sh (1)
  • require_cmd (8-13)
scripts/compliance/cargo_deny.sh (1)
  • require_cmd (8-13)
scripts/compliance/gitleaks.sh (1)
  • require_cmd (8-13)
scripts/compliance/node_checks.sh (1)
  • require_cmd (8-13)
scripts/compliance/sbom.sh (1)
  • require_cmd (8-13)
scripts/compliance/semgrep.sh (1)
  • require_cmd (8-13)
scripts/compliance/cargo_audit.sh (6)
scripts/compliance/cargo_deny.sh (1)
  • require_cmd (8-13)
scripts/compliance/gitleaks.sh (1)
  • require_cmd (8-13)
scripts/compliance/node_checks.sh (1)
  • require_cmd (8-13)
scripts/compliance/sbom.sh (1)
  • require_cmd (8-13)
scripts/compliance/scancode.sh (1)
  • require_cmd (8-13)
scripts/compliance/semgrep.sh (1)
  • require_cmd (8-13)
scripts/compliance/cargo_deny.sh (1)
scripts/compliance/cargo_audit.sh (1)
  • require_cmd (8-13)
scripts/compliance/node_checks.sh (6)
scripts/compliance/cargo_audit.sh (1)
  • require_cmd (8-13)
scripts/compliance/cargo_deny.sh (1)
  • require_cmd (8-13)
scripts/compliance/gitleaks.sh (1)
  • require_cmd (8-13)
scripts/compliance/sbom.sh (1)
  • require_cmd (8-13)
scripts/compliance/scancode.sh (1)
  • require_cmd (8-13)
scripts/compliance/semgrep.sh (1)
  • require_cmd (8-13)
scripts/compliance/sbom.sh (6)
scripts/compliance/cargo_audit.sh (1)
  • require_cmd (8-13)
scripts/compliance/cargo_deny.sh (1)
  • require_cmd (8-13)
scripts/compliance/gitleaks.sh (1)
  • require_cmd (8-13)
scripts/compliance/node_checks.sh (1)
  • require_cmd (8-13)
scripts/compliance/scancode.sh (1)
  • require_cmd (8-13)
scripts/compliance/semgrep.sh (1)
  • require_cmd (8-13)
🪛 actionlint (1.7.8)
.github/workflows/scancode.yml

7-7: character '^' is invalid for branch and tag names. ref name cannot contain spaces, ~, ^, :, [, ?, *. see man git-check-ref-format for more details. note that regular expression is unavailable. note: filter pattern syntax is explained at https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet

(glob)

🪛 Shellcheck (0.11.0)
scripts/update-copyright.sh

[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.

(SC2148)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (11)
  • GitHub Check: Test parachain build
  • GitHub Check: Test standalone build
  • GitHub Check: Quick check benchmarks
  • GitHub Check: Fuzz
  • GitHub Check: Checks (parachain)
  • GitHub Check: Cargo Deny
  • GitHub Check: Checks (clippy)
  • GitHub Check: Checks (standalone)
  • GitHub Check: Format
  • GitHub Check: Coverage
  • GitHub Check: Summary
🔇 Additional comments (68)
scripts/tests/all-sequencial.sh (1)

2-2: LGTM!

The SPDX license identifier is correctly placed after the shebang and uses the proper format. This change has no impact on script functionality and aligns with the compliance objectives of the PR.

scripts/parachain/testing-network-commons.sh (1)

2-2: License header added correctly.

The SPDX license identifier is properly formatted as a bash comment and positioned correctly after the shebang, conforming to standard conventions and the PR's compliance objectives.

zrml/swaps/rpc/Cargo.toml (1)

13-15: Metadata updates are consistent and appropriate.

The license declaration and publish flag align with the compliance standardization across the workspace and similar updates in related zrml packages.

scripts/tests/format.sh (1)

2-2: License header added correctly.

SPDX identifier placement after the shebang follows standard convention and does not impact script functionality.

scripts/docker-hub-publish.sh (1)

2-2: License header added without impact to deployment logic.

The SPDX identifier does not affect the docker build and push operations.

scripts/tests/fuzz.sh (1)

2-2: License header added; fuzzing test logic unchanged.

The SPDX identifier is purely metadata and does not affect the fuzz test configurations or execution.

scripts/tests/clippy.sh (1)

2-2: License header added; clippy invocation unchanged.

The SPDX identifier does not impact the clippy lint configuration or execution.

zrml/orderbook/fuzz/Cargo.toml (1)

17-19: License metadata added consistently with workspace standards.

The license declaration aligns with compliance standardization across zrml packages. The publish flag was already set appropriately for a fuzz crate.

scripts/benchmarks/run_benchmarks.sh (1)

2-2: License header added; benchmark orchestration logic unchanged.

The SPDX identifier does not impact the benchmark configurations or command execution.

scripts/runtime-upgrade/test_runtime_upgrade.sh (1)

2-2: License header added; runtime upgrade test logic unchanged.

The SPDX identifier does not impact the runtime upgrade state export, transformation, or execution.

scripts/tests/aux-functions.sh (1)

2-2: License header properly positioned.

The SPDX license identifier is correctly placed after the shebang and follows standard conventions.

zrml/combinatorial-tokens/Cargo.toml (1)

69-71: Verify publish = false doesn't break release workflows.

The addition of publish = false is appropriate for internal workspace crates. However, confirm that no existing CI/CD pipelines or release workflows depend on publishing these crates to crates.io.

scripts/tests/test_parachain.sh (1)

2-2: License header correctly added.

Placement and format follow SPDX standards and are consistent with other shell scripts in the repository.

runtime/zeitgeist/Cargo.toml (1)

434-436: Verify publish = false for runtime crate aligns with release strategy.

This is a core runtime crate. Ensure that publish = false doesn't conflict with any release workflows that may need to publish or tag this crate.

scripts/benchmarks/quick_check.sh (1)

2-2: License header properly added.

Placement is correct and format is consistent across the repository's shell scripts.

zrml/market-commons/Cargo.toml (1)

36-38: Metadata update aligns with project-wide licensing effort.

The license and publish fields are appropriate for this internal workspace crate. Ensure the publish = false setting is consistent with the project's release strategy across all internal crates.

integration-tests/scripts/deploy-zombienet.sh (1)

2-2: License header added in standard location.

The SPDX identifier is correctly positioned after the shebang and matches formatting across other repository scripts.

scripts/init.sh (1)

2-2: SPDX license header correctly placed.

The GPL-3.0-or-later license identifier is properly positioned after the shebang, following standard SPDX conventions.

scripts/tests/test_standalone.sh (1)

2-2: SPDX license header correctly applied.

License identifier properly placed after the shebang.

scripts/build-parachain-spec.sh (1)

2-2: SPDX license header correctly positioned.

The license identifier is properly placed immediately after the shebang.

scripts/tests/coverage.sh (1)

2-2: SPDX license header correctly added.

The license identifier is properly positioned after the shebang.

scripts/tests/standalone.sh (1)

2-2: SPDX license header correctly placed.

The license identifier is properly positioned immediately after the shebang.

scripts/parachain/local.sh (1)

2-2: SPDX license header correctly positioned.

The license identifier is properly placed immediately after the shebang.

zrml/neo-swaps/Cargo.toml (1)

111-113: Metadata fields correctly added to package manifest.

The license and publish fields are appropriate additions to standardize package metadata across the workspace. The GPL-3.0-or-later identifier is consistent with the repository's licensing approach.

scripts/tests/parachain.sh (1)

2-2: SPDX license header correctly added.

The license identifier is properly formatted and positioned. This aligns with compliance best practices and the PR's licensing standardization goals.

scripts/benchmarks/configuration.sh (1)

2-2: SPDX license header correctly added.

Consistent with other script updates in the PR. No impact on script functionality.

integration-tests/scripts/build-battery-station-spec.sh (1)

2-2: SPDX license header correctly added.

Consistent pattern across integration test scripts. No functional impact.

runtime/common/Cargo.toml (1)

87-87: Metadata additions are appropriate for an internal runtime crate.

Adding license and publish = false standardizes compliance declarations and prevents accidental publication to crates.io. This is the correct strategy for shared runtime libraries in a monorepo.

Also applies to: 89-89

node/Cargo.toml (1)

192-192: Verify that publish = false is intentional for the end-user node binary.

The zeitgeist-node is an end-user-facing binary. Confirm that preventing publication to crates.io aligns with distribution strategy (e.g., it's only distributed via GitHub releases or Docker containers, not as a crate). If the binary should be publishable independently, remove publish = false.

Also applies to: 194-194

scripts/parachain/bootstrap.sh (1)

2-2: SPDX license header correctly added.

Consistent with other bootstrap and setup scripts. No impact on functionality.

macros/Cargo.toml (1)

8-8: License metadata appropriately added.

Macros crate includes license but not publish = false, which is appropriate if this utility crate is intended for independent publication. Consistent with compliance standardization.

zrml/combinatorial-tokens/fuzz/Cargo.toml (1)

33-33: License metadata appropriately added to fuzz target.

Fuzz harness correctly includes license. The existing publish = false is appropriate and remains in place. Consistent with licensing standardization across the workspace.

zrml/orderbook/Cargo.toml (1)

59-61: LGTM! License and publishing metadata correctly added.

The GPL-3.0-or-later license identifier is valid, and setting publish = false appropriately prevents accidental publishing of this internal package.

integration-tests/tests/common-tests.ts (1)

1-1: LGTM! SPDX license header correctly added.

The license header follows the standard SPDX format and is appropriately placed at the top of the file.

integration-tests/scripts/build-node.sh (1)

2-2: LGTM! SPDX license header correctly added.

The license header follows the standard format and is correctly positioned after the shebang.

zrml/neo-swaps/fuzz/Cargo.toml (1)

33-33: LGTM! License metadata correctly added.

The GPL-3.0-or-later license identifier is valid and aligns with the repository-wide licensing standardization.

zrml/global-disputes/Cargo.toml (1)

49-51: LGTM! License and publishing metadata correctly added.

The license identifier is valid, and the publish = false setting appropriately prevents accidental publication of this internal crate.

zrml/parimutuel/Cargo.toml (1)

48-50: LGTM! License and publishing metadata correctly added.

The metadata additions are correct and consistent with the repository-wide compliance updates.

integration-tests/scripts/build-node-configuration.sh (1)

2-2: LGTM! SPDX license header correctly added.

The license header is correctly formatted and positioned after the shebang.

zrml/swaps/runtime-api/Cargo.toml (1)

20-22: LGTM! License and publishing metadata correctly added.

The metadata additions are properly formatted and consistent with the repository-wide compliance updates.

zrml/court/Cargo.toml (1)

51-51: License and publishing metadata align with PR objectives.

Adding GPL-3.0-or-later and disabling publication is consistent with the standardized licensing and compliance strategy across the workspace.

Also applies to: 53-53

zrml/swaps/fuzz/Cargo.toml (1)

68-68: License metadata addition is consistent with workspace standardization.

The GPL-3.0-or-later license aligns with PR objectives. The publish = false setting was already present.

runtime/battery-station/Cargo.toml (1)

442-442: Runtime package metadata updated consistently with licensing standardization.

Disabling publication for battery-station-runtime is appropriate, and the GPL-3.0-or-later license aligns with the workspace policy.

Also applies to: 444-444

.gitignore (1)

162-165: Compliance artifacts properly excluded from version control.

Adding sbom.json to .gitignore is appropriate, as SBOM files are generated outputs from compliance tooling rather than source artifacts.

primitives/Cargo.toml (1)

42-42: Primitives package metadata aligned with workspace licensing standards.

Adding GPL-3.0-or-later and disabling publication is consistent with other workspace packages and PR objectives.

Also applies to: 44-44

zrml/futarchy/fuzz/Cargo.toml (1)

21-21: Fuzz crate license metadata is consistent with workspace standards.

GPL-3.0-or-later license and existing publish = false setting align with the standardized licensing approach.

zrml/futarchy/Cargo.toml (1)

64-64: Futarchy pallet metadata follows workspace licensing standardization.

GPL-3.0-or-later license and publish = false setting are consistent with the standardized compliance approach applied across zrml crates.

Also applies to: 66-66

integration-tests/package.json (1)

6-6: ws security fix verified; pnpm overrides are part of coordinated stable2409 dependency update.

ws 8.17.1 fixes CVE-2024-37890, a Denial‑of‑Service vulnerability triggered by requests with a large number of HTTP headers. The upgrade is justified.

The pnpm.overrides section pins 13 transitive dependencies as part of the "Update dependencies to stable2409" effort (commit 28e6eaf). These pinned versions were coordinated and tested together, as evidenced by the significant pnpm-lock.yaml update (1003 lines). While adding an inline comment above the overrides block explaining this rationale would improve code clarity, the pinned versions are locked in the lock file and should maintain stability.

zrml/styx/Cargo.toml (1)

39-41: Metadata additions align with licensing and publishing controls.

The new license and publish fields are consistent with the PR's compliance objectives and match the pattern applied across other zrml crates.

zrml/authorized/Cargo.toml (1)

41-43: Metadata additions consistent across crates.

License and publish metadata align with the pattern across the zrml workspace.

zrml/swaps/Cargo.toml (1)

67-69: Consistent licensing and publish control metadata.

scripts/compliance/cargo_audit.sh (1)

15-18: Script implementation is solid.

The validation and execution logic is clean. The --json flag ensures structured output for potential CI integration.

zrml/hybrid-router/Cargo.toml (1)

99-101: Metadata changes follow established pattern.

scripts/compliance/scancode.sh (1)

17-32: Well-designed configuration with sensible defaults.

The script handles process count intelligently (nproc fallback), provides customizable OUTPUT, and applies comprehensive ignore patterns for typical build and test directories. Pretty-printed JSON output is appropriate for artifact generation.

scripts/compliance/sbom.sh (2)

15-21: SBOM generation and scanning integration is well-structured.

The dual invocation (syft → generate SBOM, then grype → scan) is the standard pattern. Configuration integration with .grype.yaml is correct. The --fail-on medium threshold ensures CI catches moderate-severity vulnerabilities.


20-21: Exclude path is valid and intentional—no action required.

The ./scripts/check-license/.venv path refers to a legitimate Python project within the repository (scripts/check-license/ contains setup.py and requirements.txt). The exclude is a precautionary best practice to prevent syft from scanning virtual environment dependencies when the .venv directory is created during local setup or CI execution. This path is not a leftover from another project but rather proper configuration for accurate SBOM generation.

Cargo.toml (1)

5-5: LGTM!

The license update to "GPL-3.0-or-later" is appropriate and follows SPDX best practices, providing flexibility for future GPL version compliance.

zrml/prediction-markets/fuzz/Cargo.toml (1)

18-20: LGTM!

The license addition and publish = false setting are appropriate for a fuzzing test crate.

scripts/compliance/run_all.sh (1)

1-13: Robust orchestration script with good error handling.

The set -euo pipefail and safe directory resolution ensure the compliance suite fails fast on any check failure. However, verify that all seven called scripts (especially sbom.sh and scancode.sh) exist and are executable in the repository.

.gitleaks.toml (1)

1-15: Verify allowlist entries contain only test data.

The gitleaks allowlist entries reference test and configuration files. Please verify that the allowlisted files (especially the JSON chain specs in node/res/) and YAML configs contain only non-sensitive, public test data and not actual credentials.

.github/workflows/integration-tests.yml (1)

83-83: Verify GitHub Actions version pinning is intentional.

All actions/download-artifact uses have been updated from v4 to v4.1.8. Please confirm:

  1. This version exists and is stable.
  2. Whether this pin is due to a specific bug fix or security patch that should be documented.

Also applies to: 89-89, 140-140, 146-146, 196-196, 251-251

zrml/prediction-markets/runtime-api/Cargo.toml (1)

17-19: Metadata additions are appropriate.

The license and publish fields align with the broader repository licensing strategy and help prevent accidental crate publishing.

.github/semgrep-rules.yml (1)

1-20: Semgrep rules are well-configured.

The rules appropriately target debug and print statements in runtime and pallet code with reasonable severity levels. The patterns and path filters are correct.

.github/workflows/scancode.yml (1)

1-24: Workflow structure and steps are correct.

The scancode installation, execution, and artifact upload follow GitHub Actions best practices with appropriate error handling via pip.

zrml/prediction-markets/Cargo.toml (1)

96-98: Metadata additions follow repository policy.

The license and publish fields consistently apply the licensing and publishing restrictions across the codebase.

deny.toml (1)

34-88: Configuration structure is sound.

The license allowlist, crate-specific clarifications, and source whitelisting are well-organized and handle edge cases appropriately. The confidence threshold and multiple-versions warnings align with cargo-deny best practices.

scripts/compliance/cargo_deny.sh (1)

1-58: Well-structured and robust compliance script.

The script properly handles environment setup, dependency validation, optional flags, and logging. The separation of full and error logs provides good visibility, and user guidance messages are helpful.

.github/workflows/compliance.yml (1)

1-110: Comprehensive compliance workflow is well-structured.

The workflow appropriately triggers on PR labels and push to main, covers multiple compliance domains (cargo, semgrep, node, secrets, SBOM), and uses modern actions with appropriate runtime settings.

Comment thread .github/workflows/scancode.yml
Comment thread .grype.yaml
Comment thread scripts/update-copyright.sh
@mergify mergify Bot added s:in-progress The pull requests is currently being worked on and removed s:review-needed The pull request requires reviews labels Nov 25, 2025
@Chralt98 Chralt98 added s:review-needed The pull request requires reviews and removed s:in-progress The pull requests is currently being worked on labels Nov 25, 2025

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
.github/workflows/compliance.yml (2)

16-20: Reduce duplication of conditional logic across jobs.

The if condition is repeated verbatim across all five jobs, violating DRY and making maintenance difficult if the logic needs to change. Consider extracting into workflow inputs or a reusable workflow.

Additionally, the multiline conditional formatting is hard to parse. Clarify operator precedence with explicit grouping:

if: |
  (github.event_name == 'pull_request' && 
    (contains(github.event.pull_request.labels.*.name, 's:review-needed') ||
     contains(github.event.pull_request.labels.*.name, 's:accepted'))) ||
  github.event_name == 'push'

If you refactor using a reusable workflow, you could centralize this logic:

# .github/workflows/compliance.yml
jobs:
  compliance-matrix:
    uses: ./.github/workflows/compliance-jobs.yml

Then move individual jobs into .github/workflows/compliance-jobs.yml as separate called jobs.

Also applies to: 35-39, 51-55, 84-89, 117-121


127-140: .grype.yaml exists; consider pinning tool versions for reproducibility.

The .grype.yaml configuration file is present at the repository root with a properly structured allowlist for known vulnerabilities. However, using syft-version: latest and grype-version: latest (lines 132, 139) remains a reproducibility concern—different CI runs may use different tool versions, potentially yielding inconsistent results.

Recommendation: Pin versions explicitly (e.g., syft-version: "0.95.0", grype-version: "0.67.0") to ensure consistent scanning behavior across runs.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f937e38 and 89f5522.

📒 Files selected for processing (2)
  • .github/workflows/compliance.yml (1 hunks)
  • scripts/update-copyright.sh (1 hunks)
🧰 Additional context used
🪛 Shellcheck (0.11.0)
scripts/update-copyright.sh

[error] 2-2: The shebang must be on the first line. Delete blanks and move comments.

(SC1128)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (13)
  • GitHub Check: Test parachain build
  • GitHub Check: Checks (clippy)
  • GitHub Check: Checks (standalone)
  • GitHub Check: Coverage
  • GitHub Check: Coverage
  • GitHub Check: Test parachain build
  • GitHub Check: Checks (clippy)
  • GitHub Check: Fuzz
  • GitHub Check: Checks (standalone)
  • GitHub Check: Checks (parachain)
  • GitHub Check: Quick check benchmarks
  • GitHub Check: Test standalone build
  • GitHub Check: Summary
🔇 Additional comments (3)
.github/workflows/compliance.yml (3)

140-140: Verify that fail-build: false aligns with project security policy.

The SBOM vulnerability scan will not fail the build if vulnerabilities are found (line 140: fail-build: false). Depending on your security posture, this may allow vulnerable dependencies to be merged.

Ensure this is intentional and aligns with project compliance requirements. If blocking PRs on vulnerabilities is desired, consider fail-build: true.


47-47: All referenced configuration files exist and are present in the repository. No action needed.


63-79: Cache path verified—no action needed.

The integration-tests/pnpm-lock.yaml file exists at the specified path, so the cache step in the Node Licenses job will function correctly.

Comment thread scripts/update-copyright.sh Outdated
@codecov-commenter

codecov-commenter commented Nov 25, 2025

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.32%. Comparing base (f56828c) to head (ce61a23).
⚠️ Report is 1 commits behind head on main.
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1453   +/-   ##
=======================================
  Coverage   93.32%   93.32%           
=======================================
  Files         181      181           
  Lines       34769    34769           
=======================================
  Hits        32448    32448           
  Misses       2321     2321           
Flag Coverage Δ
tests 93.32% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@Chralt98 Chralt98 added s:review-needed The pull request requires reviews and removed s:review-needed The pull request requires reviews labels Nov 25, 2025
@mergify mergify Bot added s:in-progress The pull requests is currently being worked on and removed s:review-needed The pull request requires reviews labels Nov 25, 2025

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
.github/workflows/compliance.yml (2)

3-20: Condition duplication across jobs reduces maintainability.

The conditional logic (lines 16-20, 35-39, 51-55, 104-108) is repeated identically across four jobs. This violates DRY and makes future updates to the triggering logic error-prone.

Consider refactoring to use GitHub Actions' env or outputs to centralize this condition. Alternatively, extract into a reusable workflow or use a custom action that evaluates the condition once:

env:
  SHOULD_RUN: |
    github.event_name == 'pull_request' && 
      (contains(github.event.pull_request.labels.*.name, 's:review-needed') ||
      contains(github.event.pull_request.labels.*.name, 's:accepted')) ||
    github.event_name == 'push'

jobs:
  cargo-deny:
    if: env.SHOULD_RUN == 'true'
    # ... rest of job

However, note that env context is not directly accessible in if conditions, so you would need a setup job that outputs this value or use GitHub's reusable workflow pattern.


81-100: Gitleaks binary download relies on OS/arch detection without verification.

The gitleaks binary is downloaded dynamically using uname -s and uname -m (line 96-97), but there is no checksum verification or retry logic. If the asset naming convention changes or the OS/architecture mapping is unexpected, the download could silently fail or extract incorrectly.

Consider:

  1. Adding checksum verification post-download
  2. Using a dedicated GitHub Action (e.g., gitleaks-action) if available, which likely handles versioning and verification
  3. Adding explicit error handling or validation that the binary is executable

Alternative safer approach:

- name: Install gitleaks
  uses: gitleaks/gitleaks-action@v2

This delegates binary management to the action maintainers. If this action doesn't exist or doesn't meet your needs, add checksums to the manual approach.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 89f5522 and 20b31c1.

📒 Files selected for processing (1)
  • .github/workflows/compliance.yml (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (10)
  • GitHub Check: Test parachain build
  • GitHub Check: Fuzz
  • GitHub Check: Checks (standalone)
  • GitHub Check: Checks (clippy)
  • GitHub Check: Checks (parachain)
  • GitHub Check: Quick check benchmarks
  • GitHub Check: Format
  • GitHub Check: Test standalone build
  • GitHub Check: Coverage
  • GitHub Check: Summary
🔇 Additional comments (5)
.github/workflows/compliance.yml (5)

102-127: Verify intent of fail-build: false in vulnerability scan.

The sbom-vuln job scans for vulnerabilities but sets fail-build: false (line 127), meaning security issues won't block the build. This appears to be an informational scan only.

Confirm whether this is intentional:

  • Is this a temporary measure pending full remediation?
  • Should critical/high vulnerabilities fail the build instead?
  • Is there a separate process that consumes these scan results downstream?

If vulnerabilities should block the build, change to fail-build: true and handle failures in a dedicated task or exception process.


16-20: PR compliance checks require explicit labels; runs for all main branch pushes.

The workflow only triggers compliance checks on PRs with s:review-needed or s:accepted labels, but runs unconditionally on push to main. This creates an asymmetry where:

  • PRs without these labels skip compliance checks (by design or oversight?)
  • Main branch pushes always run checks

Confirm this is intentional. If all PRs should be checked regardless of label, consider:

on:
  pull_request:
    types: [opened, synchronize, reopened, labeled]
  push:
    branches: [main]

And simplify the job conditions to remove label-filtering for PRs (keep only push check).

Also applies to: 35-39, 51-55, 104-108


49-79: Node-licenses job structure is sound; verify integration-tests directory stability.

The job is well-configured with pinned Node (20) and pnpm (9) versions, frozen lockfile, and prod-only audits. The working-directory: integration-tests setting is appropriate.

Ensure the integration-tests/pnpm-lock.yaml path is stable and the directory structure won't change unexpectedly. If integration-tests is optional or conditionally built, consider guarding this job with an existence check.


33-47: Semgrep job references external rules file; verify rules exist and are maintained.

The job uses .github/semgrep-rules.yml (line 47). Ensure this file:

  • Exists and is tracked in the repository
  • Is regularly reviewed and updated for new patterns
  • Aligns with your team's security/code quality standards

This approach is sound; just verify the referenced config file is present and kept up-to-date as part of PR reviews.


9-11: Concurrency strategy is appropriate for this workflow.

The concurrency group correctly uses github.ref to serialize runs per branch and cancels in-progress runs, preventing redundant compliance checks. This is good practice.

@Chralt98 Chralt98 added s:review-needed The pull request requires reviews and removed s:in-progress The pull requests is currently being worked on labels Nov 25, 2025
@mergify mergify Bot added s:in-progress The pull requests is currently being worked on and removed s:review-needed The pull request requires reviews labels Nov 25, 2025
@Chralt98 Chralt98 added s:review-needed The pull request requires reviews and removed s:in-progress The pull requests is currently being worked on labels Nov 25, 2025
@mergify mergify Bot added s:in-progress The pull requests is currently being worked on and removed s:review-needed The pull request requires reviews labels Nov 25, 2025
@Chralt98 Chralt98 added s:review-needed The pull request requires reviews and removed s:in-progress The pull requests is currently being worked on labels Nov 25, 2025

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
.github/workflows/compliance.yml (1)

16-20: Standardize conditional logic formatting across jobs.

The conditional logic varies in formatting: some jobs (e.g., gitleaks at line 84) use explicit outer parentheses, while others (e.g., cargo-deny at line 16) omit them. This affects readability. For consistency and clarity, apply the explicit parentheses pattern to all jobs.

Example: Update cargo-deny, semgrep, and node-licenses to match gitleaks formatting:

-    if: |
-      github.event_name == 'pull_request' && 
-        (contains(github.event.pull_request.labels.*.name, 's:review-needed') ||
-        contains(github.event.pull_request.labels.*.name, 's:accepted')) ||
-      github.event_name == 'push'
+    if: |
+      (
+        github.event_name == 'pull_request' && 
+          (contains(github.event.pull_request.labels.*.name, 's:review-needed') ||
+          contains(github.event.pull_request.labels.*.name, 's:accepted'))
+      ) ||
+      github.event_name == 'push'

Also applies to: 35-39, 51-55, 84-89, 108-112

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 20b31c1 and fd3b942.

📒 Files selected for processing (1)
  • .github/workflows/compliance.yml (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Coverage
  • GitHub Check: Summary
🔇 Additional comments (3)
.github/workflows/compliance.yml (3)

131-131: Clarify intent of fail-build: false setting.

The sbom-vuln job sets fail-build: false, which allows the build to pass even if vulnerabilities are detected. Confirm whether this is intentional or if vulnerabilities should fail the build.

If vulnerabilities should block merges, update to:

-          fail-build: false
+          fail-build: true

126-127: No action required. The .grype.yaml file exists and is properly configured.

Verification confirms that .grype.yaml exists at the repository root with valid YAML configuration. The environment variable reference in the workflow will correctly resolve to this file.

Likely an incorrect or invalid review comment.


57-73: Directory structure and lockfile verified—no action needed.

The integration-tests directory and pnpm-lock.yaml file exist at the expected locations. The workflow configuration correctly references these with defaults.run.working-directory: integration-tests and cache-dependency-path: integration-tests/pnpm-lock.yaml. The setup is valid.

Comment thread .github/workflows/compliance.yml
@mergify mergify Bot added s:in-progress The pull requests is currently being worked on and removed s:review-needed The pull request requires reviews labels Nov 26, 2025
@Chralt98 Chralt98 added s:review-needed The pull request requires reviews and removed s:in-progress The pull requests is currently being worked on labels Nov 26, 2025
@Chralt98
Chralt98 requested a review from robhyrk November 26, 2025 10:51
robhyrk
robhyrk previously approved these changes Nov 26, 2025
@Chralt98 Chralt98 added s:review-needed The pull request requires reviews and removed s:review-needed The pull request requires reviews labels Nov 26, 2025
@Chralt98
Chralt98 requested a review from robhyrk November 26, 2025 15:01
@mergify mergify Bot added s:in-progress The pull requests is currently being worked on and removed s:review-needed The pull request requires reviews labels Nov 26, 2025
@Chralt98 Chralt98 added s:review-needed The pull request requires reviews and removed s:in-progress The pull requests is currently being worked on labels Nov 26, 2025
@Chralt98 Chralt98 added s:accepted This pull request is ready for merge and removed s:review-needed The pull request requires reviews labels Nov 27, 2025
@Chralt98
Chralt98 merged commit 21c4b89 into main Nov 27, 2025
54 of 66 checks passed
@Chralt98
Chralt98 deleted the chralt98-add-compliance-checks branch November 27, 2025 10:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

s:accepted This pull request is ready for merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants