Skip to content

ci(hydra): add error_classification_change and error_handler_fail_or_retry automerge scopes - #79660

Open
Pedro S. Lopez (pedroslopez) wants to merge 2 commits into
masterfrom
devin/1781130315-add-error-handling-automerge-scopes
Open

Pedro S. Lopez (pedroslopez) wants to merge 2 commits into
masterfrom
devin/1781130315-add-error-handling-automerge-scopes

Conversation

@pedroslopez

@pedroslopez Pedro S. Lopez (pedroslopez) commented Jun 10, 2026 •

Copy link
Copy Markdown
Contributor

What

Adds two new change scopes to the Hydra auto-merge evaluator, derived from analysis of Phase 1 merged results. These scopes cover the most common pattern in successful Hydra PRs (5/7 merged PRs) while explicitly blocking the dangerous action: IGNORE pattern that can cause silent data loss (e.g. #79171).

Requested by Pedro S. Lopez (@pedroslopez).

How

Three changes to .github/workflows/hydra-automerge.yml:

  1. Schema — Added two new scope definitions to the structured-output-schema:

    • error_classification_change: PRs that ONLY add failure_type/error_message annotations to existing response filters. Zero behavior change.
    • error_handler_fail_or_retry: PRs that add new response filters but ONLY with safe actions (FAIL, RETRY, RATE_LIMITED). Explicitly blocks IGNORE and SUCCESS — the name makes this self-documenting.
  2. Evaluate step — Added both new scopes to the ANY-must-pass gate logic.

  3. Report builder — Added both new keys to the scope display loop.

Also added a shared "accompanying files" rule to the change_scope description preamble so version bumps, changelog entries, and test files don't need repeating in each scope definition.

Evaluation Evidence

Ran the exact prompt + structured output schema against 11 real PRs using child Devin sessions. All 11 classified correctly (100% match rate).

Phase 1 merged PRs (expected: new scopes PASS for 5, FAIL for 2)

PR Connector error_classification_change error_handler_fail_or_retry Correct?
76323 hubspot PASS fail YES — only adds failure_type to 6 existing filters
77988 twilio fail PASS YES — new FAIL filter for pagination-limit 400
78048 notion fail PASS YES — new RATE_LIMITED + FAIL filters
78237 linear fail PASS YES — new RATE_LIMITED filter + backoff
78342 facebook-pages PASS fail YES — only adds failure_type to 1 existing filter
75476 chargebee fail fail YES — uses action: IGNORE (correctly blocked)
76153 zendesk-support fail fail YES — paginator template fix (not error handling)

Additional test PRs (expected: correctly classified)

PR Connector error_classification_change error_handler_fail_or_retry Other scope matched Correct?
79196 source-github fail fail dependency_version_bump = PASS YES — pure lockfile/version bump
79171 source-asana fail fail none YES — action: IGNORE correctly blocked
79626 source-metricool fail fail none YES — schema field addition, not error handling

Key safety validations

  • PR 79171 (asana): Uses action: IGNORE to skip pagination-limit records → error_handler_fail_or_retry correctly returns FAIL with reasoning: "The PR adds a new HttpResponseFilter with action: IGNORE. The scope requires that every new filter uses ONLY action FAIL, action RETRY, or action RATE_LIMITED."
  • PR 75476 (chargebee): Uses action: IGNORE for 404 deleted subscriptions → both new scopes correctly FAIL
  • PR 79626 (metricool): Manifest-only but modifies stream schema definitions → both new scopes correctly FAIL (not error handling)

Child session links

Evaluation sessions (Phase 1 batch)
Evaluation sessions (additional batch)

Review guide

  1. .github/workflows/hydra-automerge.yml — single file, three logical sections modified

User Impact

Hydra PRs that modify only declarative manifest error handling (the most common Hydra fix pattern) will now be eligible for auto-merge, provided they don't use action: IGNORE or action: SUCCESS.

Expected impact from Phase 1 data:

  • 5/7 merged PRs would have been auto-merged (hubspot, twilio, notion, linear, facebook-pages)
  • 2/7 correctly excluded (chargebee uses IGNORE, zendesk-support is a paginator fix)
  • PR 79171 (asana, uses IGNORE) correctly blocked

Can this PR be safely reverted and rolled back?

  • YES 💚

Link to Devin session: https://app.devin.ai/sessions/5c2831dd9e3f41d0a52011656442e285

… automerge scopes

Add two new change scopes to the Hydra auto-merge evaluator:

- error_classification_change: PRs that only annotate existing response
  filters with failure_type/error_message fields (zero behavior change)
- error_handler_addition: PRs that add new response filters with safe
  actions only (FAIL, RETRY, RATE_LIMITED). Explicitly blocks IGNORE and
  SUCCESS actions to prevent silent data loss.

Also adds a shared 'accompanying files' rule to the change_scope
description so version bumps, changelog entries, and test files don't
need repeating per scope definition.

Co-Authored-By: Pedro Lopez <pedroslopez@me.com>
@devin-ai-integration

Copy link
Copy Markdown
Contributor

🤖 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

Copy link
Copy Markdown
Contributor

👋 Greetings, Airbyte Team Member!

Here are some helpful tips and reminders for your convenience.

💡 Show Tips and Tricks

PR Slash Commands

Airbyte Maintainers (that's you!) can execute the following slash commands on your PR:

  • 🛠️ Quick Fixes
    • /format-fix - Fixes most formatting issues.
    • /bump-version - Bumps connector versions, scraping changelog description from the PR title.
      • Bump types: patch (default), minor, major, major_rc, rc, promote.
      • The rc type is a smart default: applies minor_rc if stable, or bumps the RC number if already RC.
      • The promote type strips the RC suffix to finalize a release.
      • Example: /bump-version type=rc or /bump-version type=minor
    • /bump-progressive-rollout-version - Alias for /bump-version type=rc. Bumps with an RC suffix and enables progressive rollout.
  • ❇️ AI Testing and Review (internal link: AI-SDLC Docs):
    • /ai-prove-fix - Runs prerelease readiness checks, including testing against customer connections.
    • /ai-canary-prerelease - Rolls out prerelease to 5-10 connections for canary testing.
    • /ai-review - AI-powered PR review for connector safety and quality gates.
  • 📝 AI Documentation:
    • /ai-docs-review - AI-powered documentation review for PRs with connector changes.
    • /ai-create-docs-pr - Creates a documentation PR for connector changes, stacked on the current PR.
  • 🚀 Connector Releases:
    • /publish-connectors-prerelease - Publishes pre-release connector builds (tagged as {version}-preview.{git-sha}) for all modified connectors in the PR.
  • ☕️ JVM connectors:
    • /update-connector-cdk-version connector=<CONNECTOR_NAME> - Updates the specified connector to the latest CDK version.
      Example: /update-connector-cdk-version connector=destination-bigquery
  • 🐍 Python connectors:
    • /poe connector source-example lock - Run the Poe lock task on the source-example connector, committing the results back to the branch.
    • /poe source example lock - Alias for /poe connector source-example lock.
    • /poe source example use-cdk-branch my/branch - Pin the source-example CDK reference to the branch name specified.
    • /poe source example use-cdk-latest - Update the source-example CDK dependency to the latest available version.
  • ⚙️ Admin commands:
    • /force-merge reason="<REASON>" - Force merges the PR using admin privileges, bypassing CI checks. Requires a reason.
      Example: /force-merge reason="CI is flaky, tests pass locally"
📚 Show Repo Guidance

Helpful Resources

📝 Edit this welcome message.

Makes the scope name self-documenting: only FAIL/RETRY/RATE_LIMITED
actions are in scope, IGNORE is explicitly excluded.

Co-Authored-By: Pedro Lopez <pedroslopez@me.com>
@devin-ai-integration devin-ai-integration Bot changed the title ci(hydra): add error_classification_change and error_handler_addition automerge scopes ci(hydra): add error_classification_change and error_handler_fail_or_retry automerge scopes Jun 10, 2026
@pedroslopez
Pedro S. Lopez (pedroslopez) marked this pull request as ready for review June 10, 2026 22:46

@NexusMBD NexusMBD 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.

✅ Approved

Clear bug fix / improvement. CI all passed.
Safe to merge.

— Code Reviewer (L - Code Reviewer)

@devin-ai-integration

Copy link
Copy Markdown
Contributor

❌ Cannot revive Devin session - the session is too old. Please start a new session instead.

This branch has not been deployed

No deployments
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.

2 participants