diff --git a/.github/workflows/reusable-10-ci-python.yml b/.github/workflows/reusable-10-ci-python.yml index 6c9cef091..f0bcb033e 100644 --- a/.github/workflows/reusable-10-ci-python.yml +++ b/.github/workflows/reusable-10-ci-python.yml @@ -840,8 +840,9 @@ jobs: continue-on-error: true run: | set -euo pipefail + # Use extend-exclude to add to ruff's defaults (which include .venv) # Exclude .workflows-lib since it's synced from source repo with different ruff config - ruff check --output-format github --exclude .workflows-lib . + ruff check --output-format github --extend-exclude .workflows-lib . - name: Finalize lint id: finalize diff --git a/CLAUDE.md b/CLAUDE.md index af1cb15a1..c0a20f372 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -84,6 +84,23 @@ These get **synced** to consumer repos via `maint-68-sync-consumer-repos.yml`: **Before syncing**, ensure files pass consumer-repo lint rules (ruff with UP, SIM). +### ⚠️ IMPORTANT: After Syncing, Use the Merge Workflow + +**ALWAYS** use `Merge Sync PRs` workflow (maint-71-merge-sync-prs.yml) to: +- Auto-merge sync PRs that pass CI checks +- Close stale/duplicate sync PRs +- Report which repos have failing checks + +```bash +# After triggering a sync, run this to merge the resulting PRs: +gh workflow run "Merge Sync PRs" --repo stranske/Workflows --ref main + +# Check status: +gh run list --workflow="maint-71-merge-sync-prs.yml" --limit 1 +``` + +**DO NOT** manually merge sync PRs with `gh pr merge --admin` - use the workflow. + ## Keepalive System The keepalive loop keeps Codex working on a PR until all tasks are complete: diff --git a/templates/consumer-repo/.github/workflows/agents-verify-to-issue.yml b/templates/consumer-repo/.github/workflows/agents-verify-to-issue.yml index 76861a7af..a916ba8d1 100644 --- a/templates/consumer-repo/.github/workflows/agents-verify-to-issue.yml +++ b/templates/consumer-repo/.github/workflows/agents-verify-to-issue.yml @@ -373,14 +373,14 @@ jobs: let structuralAnalysis = ''; if (structuralProblems.length > 0) { structuralAnalysis = - '### \u26a0\ufe0f Issues Detected in Original Issue Structure\\n\\n'; + '### ⚠️ Issues Detected in Original Issue Structure\n\n'; for (const prob of structuralProblems) { - structuralAnalysis += '**Problem:** ' + prob.problem + '\\n'; - structuralAnalysis += '- **Cause:** ' + prob.cause + '\\n'; - structuralAnalysis += '- **Fix:** ' + prob.fix + '\\n'; + structuralAnalysis += '**Problem:** ' + prob.problem + '\n'; + structuralAnalysis += '- **Cause:** ' + prob.cause + '\n'; + structuralAnalysis += '- **Fix:** ' + prob.fix + '\n'; if (prob.examples && prob.examples.length > 0) { structuralAnalysis += - '- **Examples:** `' + prob.examples.join('`, `') + '`\\n'; + '- **Examples:** `' + prob.examples.join('`, `') + '`\n'; } structuralAnalysis += '\n'; } @@ -525,9 +525,9 @@ jobs: labels: ['follow-up', 'agents:formatted'] }); - core.info('Created issue #' + issue.data.number); - core.setOutput('issue_number', issue.data.number); - core.setOutput('issue_url', issue.data.html_url); + core.info('Created issue #' + issue.number); + core.setOutput('issue_number', issue.number); + core.setOutput('issue_url', issue.html_url); - name: Comment on original PR if: steps.check-merged.outputs.merged == 'true'