Skip to content

ci: add weekday Slack digest of PRs marked ready for review - #1107

Draft
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
chore/slack-ready-for-review-digest
Draft

ci: add weekday Slack digest of PRs marked ready for review#1107
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
chore/slack-ready-for-review-digest

Conversation

@devin-ai-integration

Copy link
Copy Markdown
Contributor

Summary

New scheduled workflow .github/workflows/slack-ready-for-review-digest.yml that posts one digest to #dev-apis-prs (C0BHDAPNPCY) at 7:00 AM Pacific, Mon–Fri, listing every PR marked ready for review since the previous digest. It does not replace the existing per-PR slack-pr-notification.yml; it reuses that workflow's Slack action (same SHA pin), channel, and jq escaping conventions, but deliberately omits the <!subteam^…> mention so the daily digest stays quiet.

Window semantics. Rather than assuming a fixed 24h/72h lookback, the window starts at the created_at of the last successful scheduled run of this workflow, so a skipped or failed run is absorbed by the next one instead of dropping PRs:

previous_run=$(gh api ".../workflows/slack-ready-for-review-digest.yml/runs?event=schedule&status=success&per_page=1" --jq '.workflow_runs[0].created_at')
# no history yet (first run) -> Monday looks back 72h, other weekdays 24h
# workflow_dispatch lookback_hours overrides both

The cron carries a timezone: "America/Los_Angeles" key, so Pacific 7 AM holds across DST without the two-cron PST/PDT workaround.

"Marked ready for review" is not a searchable field, so selection is two-phase: gh pr list --search "updated:>=<window date>" narrows the candidate set, then each candidate's issues/<n>/timeline supplies the timestamp of its most recent ready_for_review event (falling back to createdAt for PRs opened straight out of draft). Comparison is on epoch seconds, not ISO strings, since the API returns …Z while date --iso-8601 emits …+00:00.

Each digest line renders #N — title, author, +adds -dels across N file(s), and reviewers — the union of requested reviewers (teams included) and people who actually submitted a review, with bots stripped via a [bot]-suffix rule plus a small extensible $bots denylist for apps like coderabbitai whose login lacks the suffix. reviewers: unassigned is the signal worth scanning for. Merged/closed PRs stay in the digest but carry a state marker so finished work is skippable. When nothing qualifies, the Slack step is skipped rather than posting an empty digest.

workflow_dispatch takes lookback_hours and dry_run for testing.

Verification

  • actionlint (v1.7.12), YAML parse, and bash -n on all run: blocks pass.
  • The collection and payload logic was run locally against this repo with a 30-day window: 24 PRs, with correct diff stats, human reviewers, and state markers. Boundary-checked by moving the window one second either side of a known PR's ready-for-review timestamp (24 vs. 23 results).
  • Not yet exercised as a real Actions run — the first scheduled run (or a dry_run=true dispatch after merge) is the remaining check.

Link to Devin session: https://app.devin.ai/sessions/8690034cbdc9443ca2b1432dba20b892

Co-Authored-By: patrick.nilan@airbyte.io <patrick.nilan@airbyte.io>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown

👋 Greetings, Airbyte Team Member!

Here are some helpful tips and reminders for your convenience.

💡 Show Tips and Tricks

Testing This CDK Version

You can test this version of the CDK using the following:

# Run the CLI from this branch:
uvx 'git+https://github.com/airbytehq/airbyte-python-cdk.git@chore/slack-ready-for-review-digest#egg=airbyte-python-cdk[dev]' --help

# Update a connector to use the CDK from this branch ref:
cd airbyte-integrations/connectors/source-example
poe use-cdk-branch chore/slack-ready-for-review-digest

PR Slash Commands

Airbyte Maintainers can execute the following slash commands on your PR:

  • /autofix - Fixes most formatting and linting issues
  • /poetry-lock - Updates poetry.lock file
  • /test - Runs connector tests with the updated CDK
  • /prerelease - Triggers a prerelease publish with default arguments
  • /poe build - Regenerate git-committed build artifacts, such as the pydantic models which are generated from the manifest JSON schema in YAML.
  • /poe <command> - Runs any poe command in the CDK environment
📚 Show Repo Guidance

Helpful Resources

📝 Edit this welcome message.

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown

PyTest Results (Fast)

4 181 tests  ±0   4 169 ✅ ±0   8m 4s ⏱️ -3s
    1 suites ±0      12 💤 ±0 
    1 files   ±0       0 ❌ ±0 

Results for commit b121f5a. ± Comparison against base commit 4758b15.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants