Skip to content

chore: sync 4 org-standard workflow stub(s) from petry-projects/.github - #479

Merged
don-petry merged 4 commits into
mainfrom
standards-sync/workflows-20260722
Jul 23, 2026
Merged

chore: sync 4 org-standard workflow stub(s) from petry-projects/.github#479
don-petry merged 4 commits into
mainfrom
standards-sync/workflows-20260722

Conversation

@don-petry

@don-petry don-petry commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

User description

Syncs the following org-standard workflow stub(s) from petry-projects/.github (standards/workflows/), deployed verbatim:

  • add-to-project.yml
  • initiative-driver.yml
  • pr-auto-review.yml
  • feature-ideation.yml

Opened by scripts/deploy-standard-workflows.sh. Stubs are thin callers; all behaviour lives in the reusables. See standards/ci-standards.md. Labeled standards-sync and left for the normal review/auto-merge pipeline — the deploy script never merges directly.


CodeAnt-AI Description

Sync org workflow stubs to the new stable release channels

What Changed

  • Updated the project, initiative, PR review, and feature ideation workflow stubs to use the new v1-stable release channels
  • PR auto-review now uses the repo’s main CI workflow name and is set up to keep working when the canonical token is available first
  • Initiative dispatch now shows a clearer error when the required workflow token is missing

Impact

✅ More reliable org workflow updates
✅ Fewer PR review setup failures
✅ Clearer workflow token errors

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

@don-petry
don-petry requested a review from a team as a code owner July 22, 2026 11:43
@don-petry don-petry added the standards-sync Org-standard workflow stub synced from petry-projects/.github label Jul 22, 2026
@codeant-ai

codeant-ai Bot commented Jul 22, 2026

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Reviewed your PR d51fcd4 Jul 22, 2026 · 11:44 11:44

Updated in place by CodeAnt AI · last 5 reviews

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@gemini-code-assist

Copy link
Copy Markdown

Note

Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported.

@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@don-petry, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 52 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 37e96924-8025-4373-bfe9-e256c61d89b0

📥 Commits

Reviewing files that changed from the base of the PR and between 9973619 and d51fcd4.

📒 Files selected for processing (4)
  • .github/workflows/add-to-project.yml
  • .github/workflows/feature-ideation.yml
  • .github/workflows/initiative-driver.yml
  • .github/workflows/pr-auto-review.yml
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch standards-sync/workflows-20260722

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.

@codeant-ai codeant-ai Bot added the size:S This PR changes 10-29 lines, ignoring generated files label Jul 22, 2026
@don-petry

Copy link
Copy Markdown
Collaborator Author

Dev-Lead — review-changes (no-changes)

No changes were needed for this PR.

@don-petry
don-petry enabled auto-merge (squash) July 22, 2026 11:44
@sonarqubecloud

Copy link
Copy Markdown

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Sync org-standard GitHub Actions workflow stubs to v1-stable channels

⚙️ Configuration changes 🕐 10-20 Minutes

Grey Divider

AI Description

• Update org-standard workflow stubs to use the new */v1-stable moving-channel tags.
• Align PR Auto-Review stub guidance, triggers, and PAT secret fallback behavior.
• Tighten Initiative Driver PAT guard messaging to match current secret expectations.
Diagram

graph TD
  gh["GitHub events"] --> add["add-to-project.yml"] --> reus{{"petry-projects/.github reusables"}}
  gh --> idea["feature-ideation.yml"] --> reus
  gh --> review["pr-auto-review.yml"] --> reus
  gh --> init["initiative-driver.yml"] --> central{{"petry-projects/.github-private driver"}}
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Pin reusables to immutable tags (e.g., @v1) or SHAs
  • ➕ Fully reproducible behavior per repo; avoids surprise changes when the central tag moves
  • ➕ Easier incident forensics because exact revision is embedded in the caller
  • ➖ Conflicts with the stated org compliance model (moving-channel rollout/rollback)
  • ➖ Requires fan-out PRs to upgrade every repo for fixes/rollbacks
2. Vendor/copy reusable logic into each repo (no cross-repo `uses:`)
  • ➕ No dependency on external repos/tags at runtime
  • ➕ Repo-local changes can be reviewed/rolled back independently
  • ➖ Destroys the ‘single source of truth’ benefit; high maintenance and drift risk
  • ➖ Harder to apply security fixes consistently across all repos

Recommendation: Keep the moving-channel */v1-stable approach as in this PR; it matches the org’s rollout/rollback and compliance constraints and preserves centralized maintenance. Do, however, verify the pr-auto-review.yml workflow_run.workflows list matches this repo’s actual CI workflow names (currently the repo has e.g. "CI Pipeline" / "Node.js Tests"), otherwise readiness checks may stop re-triggering on CI completion.

Files changed (4) +21 / -24

Other (4) +21 / -24
add-to-project.ymlMove add-to-project reusable reference to 'add-to-project/v1-stable' +2/-2

Move add-to-project reusable reference to 'add-to-project/v1-stable'

• Updates the stub’s documentation and 'uses:' ref to the new 'add-to-project/v1-stable' moving-channel tag. Keeps the caller as a thin wrapper around the org reusable while aligning 'agent_ref' with the channel.

.github/workflows/add-to-project.yml

feature-ideation.ymlMove feature-ideation reusable reference to 'feature-ideation/v1-stable' +1/-1

Move feature-ideation reusable reference to 'feature-ideation/v1-stable'

• Updates the 'uses:' ref for the feature ideation reusable to the new 'feature-ideation/v1-stable' channel. No functional changes beyond the tag/channel alignment.

.github/workflows/feature-ideation.yml

initiative-driver.ymlTighten PAT guard error messaging for initiative-driver dispatcher +1/-1

Tighten PAT guard error messaging for initiative-driver dispatcher

• Simplifies the guard step error message to state 'GH_PAT_WORKFLOWS' is required when the PAT is missing. Dispatcher logic and secret fallback usage remain unchanged.

.github/workflows/initiative-driver.yml

pr-auto-review.ymlAlign PR Auto-Review stub with v1-stable channel, triggers, and PAT fallback +17/-20

Align PR Auto-Review stub with v1-stable channel, triggers, and PAT fallback

• Rewrites guidance comments to enforce the moving-channel model and updates 'uses:' to 'pr-auto-review/v1-stable'. Changes 'workflow_run.workflows' to a placeholder '["CI"]' with a TODO, and adjusts secrets to prefer 'GH_PAT_DON_PETRY' with fallback to 'GH_PAT_WORKFLOWS' while keeping the passed secret key name stable.

.github/workflows/pr-auto-review.yml

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (3) 📘 Rule violations (0) 📜 Skill insights (0)

Context used
✅ Compliance rules (platform): 20 rules

Grey Divider


Action required

1. Wrong CI workflow name 🐞 Bug ≡ Correctness
Description
pr-auto-review listens for workflow_run on a workflow named "CI", but this repo’s CI workflow is
named "CI Pipeline", so the ready-check won’t run when CI completes. This breaks the intended
readiness re-evaluation path after GitHub Actions CI turns green.
Code

.github/workflows/pr-auto-review.yml[R31-34]

+  # TODO: replace "CI" with your repository's CI workflow name(s).
  workflow_run:
-    workflows: ['Node.js Tests', 'CI Pipeline']
+    workflows: ["CI"]
    types: [completed]
Relevance

⭐⭐⭐ High

Team previously accepted replacing workflow_run.workflows placeholder with actual CI workflow names
(PR #355).

PR-#355

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The pr-auto-review workflow is configured to trigger on completion of a workflow named "CI", but the
repository’s CI workflow declares its name as "CI Pipeline", so the workflow_run trigger will not
match.

.github/workflows/pr-auto-review.yml[27-34]
.github/workflows/ci.yml[1-5]
PR-#355

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`workflow_run.workflows` must match the *workflow `name:`* exactly. The current stub is configured for `"CI"`, but this repository’s CI workflow is named `"CI Pipeline"`, so the pr-auto-review workflow will not fire on CI completion.

### Issue Context
- Current pr-auto-review config uses `workflows: ["CI"]`.
- The repo’s CI workflow declares `name: CI Pipeline`.

### Fix Focus Areas
- .github/workflows/pr-auto-review.yml[27-35]
- .github/workflows/ci.yml[1-5]

### Expected fix
Update `.github/workflows/pr-auto-review.yml` so `on.workflow_run.workflows` includes the actual workflow name(s) used in this repo (at minimum `CI Pipeline`; optionally also include other CI workflows such as `Node.js Tests` if desired).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Missing fork PR guard 🐞 Bug ☼ Reliability
Description
The pr-auto-review job no longer skips fork PRs for pull_request/pull_request_review events,
yet it still requires a PAT secret passed into the reusable workflow. This will cause failures/noise
on fork PR events when org/repo secrets aren’t available in that context.
Code

.github/workflows/pr-auto-review.yml[R47-58]

jobs:
  pr-auto-review:
-    # Skip fork PRs on pull_request and pull_request_review events — forks don't
-    # receive org secrets, so GH_PAT_WORKFLOWS would be empty and the reusable's
-    # gh api calls would fail. Other triggers (workflow_run, check_suite) always
-    # run in the base-repo context and have full secret access.
-    if: >
-      (github.event_name != 'pull_request' && github.event_name != 'pull_request_review') ||
-      github.event.pull_request.head.repo.fork == false
    permissions:
      pull-requests: read
      checks: read
      actions: read
-    uses: petry-projects/.github/.github/workflows/pr-auto-review-reusable.yml@pr-auto-review/stable # NOSONAR(githubactions:S7637) first-party channel ref
+    uses: petry-projects/.github/.github/workflows/pr-auto-review-reusable.yml@pr-auto-review/v1-stable  # NOSONAR(githubactions:S7637) first-party channel ref
    secrets:
-      GH_PAT_WORKFLOWS: ${{ secrets.GH_PAT_WORKFLOWS }}
+      # Canonical-first fallback (.github-private#1326). The reusable resolves this
+      # secret BY NAME, so only the VALUE changes — the passed key stays named
+      # GH_PAT_WORKFLOWS.
+      GH_PAT_WORKFLOWS: ${{ secrets.GH_PAT_DON_PETRY || secrets.GH_PAT_WORKFLOWS }}
Relevance

⭐⭐⭐ High

Fork PR skip guard for secret-dependent pr-auto-review was accepted previously (PR #355).

PR-#355

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The workflow is configured to run on pull_request and pull_request_review and passes a PAT
secret into the reusable; the prior accepted fix pattern was to guard against fork PR events to
avoid missing-secret failures, but the guard is now absent.

.github/workflows/pr-auto-review.yml[38-44]
.github/workflows/pr-auto-review.yml[47-58]
PR-#355

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The PR removed the job-level `if:` guard that prevented running the PAT-dependent reusable on fork PR events. The workflow still triggers on `pull_request` and `pull_request_review` and still passes `GH_PAT_WORKFLOWS` into the reusable, so fork PRs will invoke the job without the required secret and typically fail.

### Issue Context
- The workflow triggers on `pull_request` and `pull_request_review`.
- The job calls the reusable and passes `GH_PAT_WORKFLOWS`.

### Fix Focus Areas
- .github/workflows/pr-auto-review.yml[38-58]

### Expected fix
Re-introduce a job-level `if:` that skips forked PRs specifically for `pull_request` and `pull_request_review` events, while still allowing `workflow_run` / `check_suite` events to run in the base repo context (per the previously accepted pattern).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

3. Misleading PAT guard message 🐞 Bug ◔ Observability
Description
initiative-driver sets GH_TOKEN from secrets.GH_PAT_DON_PETRY || secrets.GH_PAT_WORKFLOWS, but
the guard error message claims only GH_PAT_WORKFLOWS is required. This makes diagnosing
missing-token failures misleading and regresses previously accepted guidance.
Code

.github/workflows/initiative-driver.yml[R76-81]

          GH_TOKEN: ${{ secrets.GH_PAT_DON_PETRY || secrets.GH_PAT_WORKFLOWS }}
        run: |
          if [ -z "${GH_TOKEN}" ]; then
-            echo "::error::Either GH_PAT_DON_PETRY or GH_PAT_WORKFLOWS is required — a workflow_dispatch fired with GITHUB_TOKEN never starts a run."
+            echo "::error::GH_PAT_WORKFLOWS is required — a workflow_dispatch fired with GITHUB_TOKEN never starts a run."
            exit 1
          fi
Relevance

⭐⭐⭐ High

Same guard-message mismatch fix was accepted in PRs #468 and #474 for initiative-driver.yml.

PR-#468
PR-#474

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The workflow’s guard checks an env var populated via a two-secret fallback, but the emitted
::error:: message only names one of the two accepted secrets, which is inconsistent with the code
and matches a previously accepted bug pattern.

.github/workflows/initiative-driver.yml[73-81]
PR-#474
PR-#468

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The PAT guard error message does not match how `GH_TOKEN` is actually sourced. `GH_TOKEN` uses a two-secret fallback, but the message claims only one secret is required.

### Issue Context
- `GH_TOKEN` is set to `secrets.GH_PAT_DON_PETRY || secrets.GH_PAT_WORKFLOWS`.
- The guard error message says `GH_PAT_WORKFLOWS is required`.

### Fix Focus Areas
- .github/workflows/initiative-driver.yml[73-81]

### Expected fix
Update the error string to state that either `GH_PAT_DON_PETRY` or `GH_PAT_WORKFLOWS` is required (or adjust the token logic to match the message, but keep it consistent).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment thread .github/workflows/pr-auto-review.yml
Comment thread .github/workflows/pr-auto-review.yml
Comment thread .github/workflows/initiative-driver.yml
@don-petry
don-petry merged commit 3b60731 into main Jul 23, 2026
35 of 42 checks passed
@don-petry
don-petry deleted the standards-sync/workflows-20260722 branch July 23, 2026 00:51
don-petry added a commit that referenced this pull request Aug 2, 2026
…ub (#479)

* chore: sync 4 org-standard workflow stub(s) from petry-projects/.github

* chore: sync 4 org-standard workflow stub(s) from petry-projects/.github

* chore: sync 4 org-standard workflow stub(s) from petry-projects/.github

* chore: sync 4 org-standard workflow stub(s) from petry-projects/.github
don-petry added a commit that referenced this pull request Aug 2, 2026
… code (#465)

* Create README.md

* Create code.gs

* Create config.gs

* Update README.md

* Update README.md

* enhanced Readme

* ci: add CodeQL analysis workflow for PRs

* feat(tests): add Jest tests, mocks, setup, and CI workflow

* docs: add agents.md (canonical AGENTS.md guidance adapted)

* docs: normalize to AGENTS.md and add canonical guidance

* feat(calendar-to-sheets): add package implementation, tests, and README

* chore(calendar-to-sheets): add GAS wrapper (code.gs) and config (config.gs); document files in README

* Move scripts into src/, update tests/README/jest config, regenerate coverage

* calendar-to-sheets: export GAS wrapper for testing; add test for syncAllCalendarsToSheetsGAS to handle multiple configs

* Initial plan

* Initial plan

* Initial plan

* Initial plan

* Initial plan

* Initial plan

* Initial plan

* Handle missing or malformed config gracefully

- Modified getConfigs() to return legacy/default config when SYNC_CONFIGS is empty array
- Added null checks in getCheckpointKey() to handle null cfg
- Added null checks in syncAllCalendarsToSheetsGAS() error logging
- Added comprehensive tests for empty and malformed SYNC_CONFIGS scenarios
- All tests passing

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Initial plan

* feat(codeql): upgrade CodeQL action versions to v3 for improved analysis

* feat(tests): add tests for full resync functionality and error handling in calendar sync

* Initial plan

* fix: remove empty lines after unused variable cleanup

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Initial plan

* Initial plan

* Initial plan

* Initial plan

* fix(calendar-to-sheets): improve regex to catch leading whitespace/control chars before formula injection

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* test(calendar-to-sheets): cover ensureHeader path

* Initial plan

* Issue #24 - Add document rebuild capability to gmail-to-drive-by-labels (#25)

* Initial plan

* Add rebuild doc functionality to gmail-to-drive-by-labels

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Address code review feedback and improve documentation clarity

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Use setText('') for more efficient document clearing

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Update test-utils/mocks.js

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/gmail-to-drive-by-labels/tests/rebuild.test.js

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Address code review feedback: fix imports, comments, and add error handling tests

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Implement batching and resumable state for rebuild to handle large labels

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Fix logging message for remaining threads calculation

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Fix syntax error in mocks.js - add missing comma after setText

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Add comprehensive tests for gmail-to-drive-by-labels/code.gs functions

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Improve test coverage with additional edge case tests - 99.48% lines

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Add istanbul ignore comments for uncoverable defensive error handling

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Make rebuild batch size configurable with default of 250

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Remove istanbul ignore comments and adjust coverage threshold to 99%

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Add rule to AGENTS.md prohibiting coverage ignore comments

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore: add pre-commit config, commitlint, and husky hooks for code quality (#35)

* Initial plan

* Add TypeScript, ESLint, Prettier with CI Pipeline

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Fix CI: upgrade Node.js from 18 to 20 (ESLint 10 requires Node 20+)

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Fix prettier formatting in AGENTS.md

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Fix createThread addLabel using arrow function with this

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Update package.json

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update test-utils/mocks.js

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update .github/workflows/ci.yml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/calendar-to-sheets/code.gs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Upgrade jest to v30 to align with @types/jest v30

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Fix prettier CI failure, add husky pre-commit hook with shared check script

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* chore: add .pre-commit-config.yaml with check-merge-conflict and check-yaml hooks

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* Also enable typecheck in pre-commit hook

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

* chore: add commitlint with conventional commits config and commit-msg hook

Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: don-petry <36422719+don-petry@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore(deps): bump github/codeql-action from 3 to 4 (#41)

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@v3...v4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump actions/checkout from 4 to 6 (#43)

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* docs(agents): add guidance to resolve PR review threads after addressing comments

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add Claude Code GitHub Action (#81)

* Add Claude Code GitHub Action for PR reviews

* fix: address review feedback on Claude Code workflow

- Restrict issue_comment trigger to PR comments only
- Add author-association check (OWNER/MEMBER/COLLABORATOR)
- Add pull_request_review_comment trigger
- Add timeout-minutes to prevent runaway jobs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use CLAUDE_CODE_OAUTH_TOKEN org secret

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: add id-token: write permission for OAuth auth

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: address remaining review comments

- Pin claude-code-action to commit SHA for supply-chain safety
- Add fork PR guard (secrets unavailable for fork PRs)
- Scope pull_request trigger to main branch
- Use >- folded scalar for if expression

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: DJ <dj@Rachels-MacBook-Air.local>
Co-authored-by: DJ <dj@Rachels-Air.localdomain>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: address OpenSSF Scorecard findings (#91)

* fix: address OpenSSF Scorecard findings

- Add SECURITY.md (#85)
- Scope workflow token permissions to least privilege (#86)
- Pin all GitHub Action dependencies to commit SHAs (#87)
- Update vulnerable dependencies via npm audit fix (#88)
- Add schedule trigger to CodeQL for full SAST coverage (#89)
- Ensure CI and SAST run on all pushes and PRs (#90)

Closes #85, #86, #87, #88, #89, #90

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: address PR review comments

- Replace permissions: read-all with permissions: {} (deny-by-default)
- Use concrete version target (main branch) in SECURITY.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: add actions: write permission for cache and artifact jobs

Jobs using actions/cache and actions/upload-artifact need actions: write
permission at the job level to function correctly with deny-by-default
workflow permissions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore(ci): apply prettier/eslint auto-fixes

* chore: re-trigger CI checks

* fix: use claude_code_oauth_token instead of anthropic_api_key

The action has separate inputs for API keys vs OAuth tokens.
CLAUDE_CODE_OAUTH_TOKEN is an OAuth token, not an API key.

---------

Co-authored-by: DJ <dj@Rachels-Air.localdomain>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore(deps): bump anthropics/claude-code-action from 1.0.80 to 1.0.82 (#96)

Bumps [anthropics/claude-code-action](https://github.com/anthropics/claude-code-action) from 1.0.80 to 1.0.82.
- [Release notes](https://github.com/anthropics/claude-code-action/releases)
- [Commits](anthropics/claude-code-action@094bd24...88c168b)

---
updated-dependencies:
- dependency-name: anthropics/claude-code-action
  dependency-version: 1.0.82
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* ci: skip Claude Code reviewer on Dependabot PRs (#100)

* ci: skip Claude Code reviewer on Dependabot PRs

The claude workflow fails on Dependabot PRs because secrets
(CLAUDE_CODE_OAUTH_TOKEN) are not available to the dependabot actor.
This blocks the dependabot auto-merge automation when claude is a
required status check.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: use PR author login instead of github.actor for Dependabot check

github.actor reflects who triggered the workflow run (e.g. a maintainer
reopening), not the PR author. Use github.event.pull_request.user.login
for reliable Dependabot detection, consistent with dependabot-automerge.yml.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: DJ <dj@Rachels-Air.localdomain>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: move Dependabot exclusion to step-level in Claude workflow (#101)

* ci: move Dependabot exclusion to step-level in Claude workflow

Move the dependabot[bot] check from job-level `if` to step-level `if`
so the claude job runs and reports SUCCESS (with a skipped step) instead
of being skipped entirely. A skipped job doesn't satisfy required status
checks in branch protection, but a successful job with a skipped step does.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: guard step-level Dependabot check for pull_request events only

The step-level if needs to handle issue_comment and
pull_request_review_comment events where github.event.pull_request
is not present. Use event_name guard to avoid null dereference.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: DJ <dj@Rachels-Air.localdomain>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: enable Claude issue trigger per org CI standard (#119)

Add issues:[labeled] event trigger and claude label support so Claude
can work issues autonomously — reading the issue, creating a branch,
implementing the fix, and opening a PR.

Changes:
- Add issues:[labeled] trigger to on: block
- Add issue label condition to job if: guard
- Upgrade contents permission to write (needed for branch creation)
- Pin claude-code-action to v1.0.89 (6e2bd528)
- Add label_trigger: "claude" input
- Add dependabot skip condition on step
- Add permission comment for contents: write

Matches the standard defined in petry-projects/.github#24.

Co-authored-by: DJ <dj@Rachels-MacBook-Air.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: add checkout step to Claude workflow for issue-triggered mode (#120)

* fix: add checkout step to Claude workflow for issue-triggered mode

The claude-code-action runs git fetch/checkout internally during branch
setup but requires the repository to already be cloned on the runner.
Without actions/checkout, issue-triggered runs fail with:
  fatal: not a git repository

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: apply prettier formatting to claude.yml

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: DJ <dj@Rachels-MacBook-Air.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: add concurrency group to dependabot update workflow (#130)

Prevents overlapping runs when multiple pushes to main happen in
quick succession.

Co-authored-by: DJ <dj@Rachels-MacBook-Air.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: split Claude workflow into interactive + issue automation jobs (#132)

* feat: split Claude workflow into interactive + issue automation jobs

Align with org CI standard. The single `claude` job is now split into:
- `claude`: interactive mode for PR reviews and @claude mentions
- `claude-issue`: automation mode triggered by the `claude` label on issues,
  with explicit allowed tools, progress tracking, and a structured prompt
  that implements, opens a PR, self-reviews, checks CI, and notifies owners.

Adds `actions: read` and `checks: read` permissions to both jobs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: add concurrency guard and comment tools to claude-issue job

- Add concurrency group keyed on issue number to prevent duplicate runs
- Add gh pr comment and gh issue comment to allowedTools for review
  replies, thread resolution, and code owner tagging
- Remove Bash(cat:*) since the Read tool already covers file reads

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: use single quotes for prettier consistency

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: DJ <dj@Rachels-MacBook-Air.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: switch to org-level reusable Claude Code workflow (#134)

* chore: add CODEOWNERS file for code owner review enforcement

Resolves missing-codeowners compliance finding by adding .github/CODEOWNERS
with @don-petry as the default owner for all files in the repository.

Closes #113

Co-authored-by: don-petry <don-petry@users.noreply.github.com>

* chore(workflows): adopt centralized stubs from petry-projects/.github (#149)

Replace inline copies of standardized workflows with the canonical
thin caller stubs from petry-projects/.github/standards/workflows/.
Each stub delegates to a versioned reusable workflow at
petry-projects/.github/.github/workflows/<name>-reusable.yml@v1, so
future updates to the standard propagate automatically and drift is
caught by the org-wide compliance audit.

See petry-projects/.github#87, #88, #89 for context.

Co-authored-by: DJ <dj@Rachels-MacBook-Air.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: add codeql.yml with javascript-typescript and actions scanning (#153)

Renames codeql-analysis.yml → codeql.yml to satisfy the compliance
requirement (issue #103). Updates the configuration to match org
standards:

- Use javascript-typescript language (required for repos with package.json)
- Add actions language (required for repos with .github/workflows/*.yml)
- Multi-language matrix strategy with per-language category tags
- Weekly schedule aligned to org standard (Friday 17:00 UTC)

Closes #103

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: don-petry <don-petry@users.noreply.github.com>

* ci: add auto-rebase workflow and check_run trigger to claude.yml

* add check_run trigger to claude.yml

* add auto-rebase.yml workflow

* chore: add bot accounts to CODEOWNERS for auto-merge support

Add @petry-projects-pr-review-agent and @dependabot-automerge-petry as
co-owners so their approvals satisfy require_code_owner_review in the
pr-quality ruleset.

* chore(deps): bump github/codeql-action from 4.35.1 to 4.35.3 (#244)

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.1 to 4.35.3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@c10b806...e46ed2c)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: standardize CODEOWNERS on @petry-projects/org-leads (#252)

Per the org-wide standard defined in petry-projects/.github
(standards/codeowners-standard.md), replace individual user/bot
listings with the @petry-projects/org-leads team.

Closes the CODEOWNERS gap from pr-review-agent#27.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

* chore(dev-lead): remove claude.yml — replaced by dev-lead.yml (#277)

* chore: ignore .dev-lead directory (#291)

feat: implement issue #255 — Compliance: codeowners-no-catchall

Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>

* ci: remove drift codeql.yml and enable GitHub-managed default setup (#216)

Per ci-standards §2, the GitHub-managed default setup is the required
approach for CodeQL scanning. A per-repo codeql.yml is treated as drift
by the compliance audit and causes double CI billing when both run.

Enabled default setup via API (state=configured, query_suite=default,
run_id=24189972152). Removes the inline codeql.yml workflow file.

Closes #168

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: don-petry <don-petry@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore(deps-dev): bump fast-uri from 3.1.1 to 3.1.2 in the npm_and_yarn group across 1 directory (#263)

chore(deps-dev): bump fast-uri

Bumps the npm_and_yarn group with 1 update in the / directory: [fast-uri](https://github.com/fastify/fast-uri).


Updates `fast-uri` from 3.1.1 to 3.1.2
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](fastify/fast-uri@v3.1.1...v3.1.2)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dependabot-automerge-petry[bot] <270452309+dependabot-automerge-petry[bot]@users.noreply.github.com>

* feat: implement issue #254 — Compliance: codeowners-org-leads-not-first (#300)

* feat: implement issue #254 — Compliance: codeowners-org-leads-not-first

* ci: trigger CI for compliance PR #300

---------

Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* feat: implement issue #258 — Compliance: check-suite-auto-trigger-347564 (#307)

Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>

* feat: implement issue #442 — SonarCloud modernization (1/3): src/ app code

* chore: dev-lead update (review-changes) [skip ci-relay]

* chore: sync 1 org-standard workflow stub(s) from petry-projects/.github (#474)

* chore: sync 1 org-standard workflow stub(s) from petry-projects/.github

* chore: dev-lead update (review-changes) [skip ci-relay]

* fix(bot): address bot feedback [skip ci-relay]

---------

Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>

* chore(deps-dev): bump fast-uri from 3.1.2 to 3.1.4 in the npm_and_yarn group across 1 directory (#469)

chore(deps-dev): bump fast-uri

Bumps the npm_and_yarn group with 1 update in the / directory: [fast-uri](https://github.com/fastify/fast-uri).


Updates `fast-uri` from 3.1.2 to 3.1.4
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](fastify/fast-uri@v3.1.2...v3.1.4)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.4
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: petry-projects-dependabot-automrg[bot] <270452309+petry-projects-dependabot-automrg[bot]@users.noreply.github.com>

* chore: sync 4 org-standard workflow stub(s) from petry-projects/.github (#479)

* chore: sync 4 org-standard workflow stub(s) from petry-projects/.github

* chore: sync 4 org-standard workflow stub(s) from petry-projects/.github

* chore: sync 4 org-standard workflow stub(s) from petry-projects/.github

* chore: sync 4 org-standard workflow stub(s) from petry-projects/.github

* chore: sync 1 org-standard workflow stub(s) from petry-projects/.github (#489)

* chore: dev-lead update (review-changes) [skip ci-relay]

* chore: dev-lead update (review-changes) [skip ci-relay]

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Don Petry <don.petry@gmail.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: DJ <dj@Rachels-MacBook-Air.local>
Co-authored-by: DJ <dj@Rachels-Air.localdomain>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: don-petry <don-petry@users.noreply.github.com>
Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot-automerge-petry[bot] <270452309+dependabot-automerge-petry[bot]@users.noreply.github.com>
Co-authored-by: petry-projects-dependabot-automrg[bot] <270452309+petry-projects-dependabot-automrg[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S This PR changes 10-29 lines, ignoring generated files standards-sync Org-standard workflow stub synced from petry-projects/.github

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant