Skip to content

ci: add /ai-resolve-conflicts slash command and dispatch workflow#82246

Draft
suisuixia42 wants to merge 1 commit into
masterfrom
devin/1784235620-hyd-63-ai-resolve-conflicts
Draft

ci: add /ai-resolve-conflicts slash command and dispatch workflow#82246
suisuixia42 wants to merge 1 commit into
masterfrom
devin/1784235620-hyd-63-ai-resolve-conflicts

Conversation

@suisuixia42

Copy link
Copy Markdown
Contributor

What

Adds the /ai-resolve-conflicts slash command that repairs a hyd-ready PR which has gone DIRTY (merge conflict with master) before it reaches /ai-ready — the airbyte-side half of HYD-63 (Resolve merge conflicts as part of ai-ready).

Today hydra-automerge.yml never checks mergeability: on a conflicted PR, gh pr merge --squash fails all 3 retries and the PR sits stuck (approved, hyd-ready, unmerged). This command lets hands-free (or a human) resolve the conflict earlier so the PR re-enters the normal review → ready → merge flow instead of jamming the merge gate.

Pairs with the playbook + hands-free-hook PR: airbytehq/ai-skills#607.

How

  • .github/workflows/slash-commands.yml — register ai-resolve-conflicts in the dispatcher's commands: list.
  • .github/workflows/ai-resolve-conflicts-command.yml (new) — a single-job dispatcher, mirroring ai-prove-fix-command.yml: authenticate as the OCTAVIA GitHub App, require a PR context (comment + exit 1 otherwise, like ai-ready-command.yml), post a start comment, and launch a Devin session with playbook-macro: "!resolve_merge_conflicts" via aaronsteers/devin-action@main.

The re-review chain is intentionally handled inside the playbook, not here. devin-action is fire-and-forget (results come back via marker comments parsed by *-submit.yml workflows), so a needs:/workflow_call job could not gate on the resolver's outcome. Instead the resolver playbook, after a successful --force-with-lease push, posts a /ai-review comment as Airbyte Support Bot on the new HEAD — the same mechanism daily_hands_free_triage already uses. So this workflow only needs to dispatch the resolver.

Review guide

  1. .github/workflows/ai-resolve-conflicts-command.yml — new dispatch workflow (validated with actionlint, rc=0).
  2. .github/workflows/slash-commands.yml — one-line command registration.

User Impact

New /ai-resolve-conflicts command available on PRs. No change to existing commands or the merge gate. The deferred hydra-automerge.yml pre-merge safety guard (for the post-review race window and manual /ai-ready) is not in this PR — a planned fast follow-up.

Can this PR be safely reverted and rolled back?

  • YES 💚

Link to Devin session: https://app.devin.ai/sessions/c51aecdc57fb426da8920ecfbfc59866
Requested by: suisuixia42

Register ai-resolve-conflicts and add the dispatch workflow that runs the
resolver playbook, which re-triggers /ai-review on the resolved HEAD (HYD-63).

Co-Authored-By: suisui.xia <suisui.xia@airbyte.io>
@suisuixia42 suisuixia42 self-assigned this Jul 16, 2026
@linear-code

linear-code Bot commented Jul 16, 2026

Copy link
Copy Markdown

HYD-63

@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.
    • /enable-autopilot-rollouts - Enables autopilot progressive rollouts for the modified connector(s) in the PR, remediating "autopilot rollouts not enabled for {connector-name}" auto-merge blockers. Sets defaultRolloutMode: autopilot and enableProgressiveRollout: true, preserving any existing autopilotConfig.
      • Optional args: connector=<CONNECTOR_NAME> (defaults to the modified connectors in the PR), strategy=fast|slow|default (defaults to fast).
      • Example: /enable-autopilot-rollouts or /enable-autopilot-rollouts connector=source-faker strategy=slow
  • ☕️ 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.


- name: Post start comment
if: inputs.comment-id != ''
uses: peter-evans/create-or-update-comment@v4
> [View workflow run](${{ steps.job-vars.outputs.run-url }})

- name: Run AI Resolve Conflicts
uses: aaronsteers/devin-action@main
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