From 41cad4f8718872be913a2dadd7a081a371c6a50d Mon Sep 17 00:00:00 2001 From: "Ralf W. Grosse-Kunstleve" Date: Tue, 24 Mar 2026 20:55:34 -0700 Subject: [PATCH 1/2] fix(ci): prevent printf from treating error message as option printf "$ERRORS" fails when $ERRORS starts with a dash. Use printf '%b' "$ERRORS" so the variable is an argument, not the format string. Made-with: Cursor --- .github/workflows/pr-metadata-check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-metadata-check.yml b/.github/workflows/pr-metadata-check.yml index dd6971a544..fa0f7c74aa 100644 --- a/.github/workflows/pr-metadata-check.yml +++ b/.github/workflows/pr-metadata-check.yml @@ -89,7 +89,7 @@ jobs: { echo "## PR Metadata Check Failed" echo "" - printf "$ERRORS" + printf '%b' "$ERRORS" echo "" echo "Please update the PR at: $PR_URL" } >> "$GITHUB_STEP_SUMMARY" From 11a7a29011adf2f30f2423d79b194d2ec2f4c54d Mon Sep 17 00:00:00 2001 From: "Ralf W. Grosse-Kunstleve" Date: Tue, 24 Mar 2026 21:32:14 -0700 Subject: [PATCH 2/2] fix(ci): allow CI/CD label to bypass module label requirement Cross-cutting PRs that only touch CI/infrastructure don't belong to a specific module. Accept CI/CD as an alternative to the cuda.bindings/cuda.core/cuda.pathfinder module labels. Made-with: Cursor --- .github/workflows/pr-metadata-check.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-metadata-check.yml b/.github/workflows/pr-metadata-check.yml index fa0f7c74aa..db2114f0c1 100644 --- a/.github/workflows/pr-metadata-check.yml +++ b/.github/workflows/pr-metadata-check.yml @@ -38,10 +38,12 @@ jobs: ERRORS="" # Module labels identify which package the PR touches. + # Cross-cutting labels exempt PRs from needing a module label. MODULE_LABELS="cuda.bindings cuda.core cuda.pathfinder" + MODULE_EXEMPT_LABELS="CI/CD" HAS_MODULE=false for label in $LABEL_NAMES; do - for mod in $MODULE_LABELS; do + for mod in $MODULE_LABELS $MODULE_EXEMPT_LABELS; do if [ "$label" = "$mod" ]; then HAS_MODULE=true break 2 @@ -50,7 +52,7 @@ jobs: done if [ "$HAS_MODULE" = "false" ]; then - ERRORS="${ERRORS}- **Missing module label**: add at least one of: \`cuda.bindings\`, \`cuda.core\`, \`cuda.pathfinder\`.\n" + ERRORS="${ERRORS}- **Missing module label**: add at least one of: \`cuda.bindings\`, \`cuda.core\`, \`cuda.pathfinder\` (or a cross-cutting label such as \`CI/CD\`).\n" fi # Type labels categorize the kind of change.