Skip to content

chore(source-bing-ads): DO NOT MERGE - pin prerelease SDM 7.39.0.post5.dev39879313492 (airbyte-python-cdk#1248) - #89695

Closed
devin-ai-integration[bot] wants to merge 1 commit into
masterfrom
pnilan/sdm-prerelease-1248-source-bing-ads
Closed

devin-ai-integration[bot] wants to merge 1 commit into
masterfrom
pnilan/sdm-prerelease-1248-source-bing-ads

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

🤖 This PR was generated by an AI Agent.

DO NOT MERGE. Test-only PR, requested by Patrick Nilan (@pnilan). It pins source-bing-ads to the SDM prerelease built from airbyte-python-cdk#1248 so a connector prerelease can be published and tested.

What

Points connectorBuildOptions.baseImage at airbyte/source-declarative-manifest:7.39.0.post5.dev39879313492. That image was built by CDK publish run 39879313492 from devin/1792688475-check-skip-dynamic-streams.

How

  • metadata.yaml:
    • baseImage changes from SDM 7.37.1 to 7.39.0.post5.dev39879313492@sha256:a45420a851310e75d893c93c73e8a353d610bc214788c39384f7bd776b614d7f.
    • dockerImageTag goes from 3.0.16 to 3.0.17.
  • No manifest, changelog or docs change.

Review guide

  1. airbyte-integrations/connectors/source-bing-ads/metadata.yaml

User Impact

None. This is never merged. Use /publish-connectors-prerelease to get a 3.0.17-preview.<sha> image for pinning.

The title contains "DO NOT MERGE", so the semantic-title check fails on purpose. Checks that expect a changelog entry may fail too.

Can this PR be safely reverted and rolled back?

  • YES 💚
  • NO ❌

Link to Devin session: https://app.devin.ai/sessions/a359f078a4634bbab6d79afaaf709c17
Open in Devin Desktop: https://app.devin.ai/desktop/session/a359f078a4634bbab6d79afaaf709c17?variant=devin

Important

Active progressive rollout warning for source-bing-ads.

  • (Click to Approve:) Bypass the active progressive rollout warning for source-bing-ads in the PR comment here.

Important

Autopilot Progressive Rollout Enabled

Autopilot progressive rollouts are enabled for one or more connector(s) modified in this PR. Check the box below if you need to bypass normal rollout safety processes and release to all users immediately upon merge:

  • ⚡ Release immediately (bypasses automatic progressive rollout)

Note:

  • ⚠️ The above bypass option is for emergency/hotfix use only.
  • 🔗 You can monitor or manually advance a rollout at ops.internal.airbyte.ai.

…5.dev39879313492 (airbyte-python-cdk#1248)

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

Copy link
Copy Markdown
Contributor Author

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • 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-breaking-change-review - Step 1 for a connector breaking change. Reviews whether the change needs to be breaking, destination data-loss risk, and whether the migration guide, metadata message, and docs let users upgrade safely. Opens one conversation on the PR for each item the author needs to handle.
    • /ai-breaking-change-ready - Step 2, after you've replied to and resolved each of those conversations. Checks that every one has a reply and is resolved, then pings the breaking-change reviewers in Slack for human review.
  • 📝 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.

@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Detected source-bing-ads Active Rollout: true

Important

Active progressive rollout warning for source-bing-ads.

To bypass this warning, click on the matching checkbox in the PR description. Look for the checkbox text:

(Click to Approve:) Bypass the active progressive rollout warning for source-bing-ads in the PR comment

  • Rollout version: 3.0.16
  • Rollout state: in_progress
  • Rollout last updated by: Airbyte Support Bot <airbyte-support-bot@airbyte.io>
  • Open Connector Rollout Manager in Retool to clean up or close out this rollout if appropriate.

Version on master Branch: 3.0.16

  • RC marker on master branch: false

PR Description Checkbox Status

  • Bypass checkbox checked: false

ℹ️ More Information

Show/hide details...

🤔 What happens if this PR is merged

Checking the checkbox will allow the PR to merge, but it does not necessarily stop the active rollout by itself. The result of the PR merging depends on what connector version is published.

Expected outcomes by type of version number change:

If connector version is not modified in this PR...

No new connector version should be released, and the active rollout should continue unchanged.

If the connector version increments to a higher version...

After this PR is merged, the new version will be published and advertised as this connector's rollout candidate, replacing the current one. An -rc suffix is not required for this: with enableProgressiveRollout, an ordinary version bump becomes the rollout candidate. When it is registered, the platform cancels — not finalizes — any existing non-terminal rollout for this connector, without unpinning actors. Actors pinned to 3.0.16 therefore keep syncing on that old image: they are not rolled back to the previous default version, and the merge itself does not move them to the new candidate.

The new rollout still has to be started before those actors move. With defaultRolloutMode: autopilot, the autopilot cron starts it on its next eligible pass; otherwise a human starts it from Connector Rollout Manager. Starting it migrates the previous rollout's pins onto the new candidate version by default (migratePins), which is what moves those actors forward. Until then, they stay on the old version.

If the connector version changes from RC to non-RC (GA) version...

You should not merge the PR unless/until the RC has been finalized as canceled. See above Rollout state for detected status.

[!Warning]
This PR should not be merged if the RC rollout is still active. First finalize the active rollout as successful or cancel it in Connector Rollout Manager.

When you finalize an RC rollout as successful, the platform triggers a promotion workflow that strips the -rc suffix, removes stable-version registryOverrides, disables progressive rollout, force-merges that promotion, and unpins actors.

🔁 How to rerun this check

To rerun the check, simply check and uncheck the box, or else modify the PR description and/or title in any way.

Alternatively, you can find the Active Progressive Rollout CI workflow and manually rerun it (although this is generally slower than the above methods).


This comment will be updated as PR and/or rollout status changes.

Workflow run

@pnilan

Patrick Nilan (pnilan) commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

/ai-prove-fix specifically want to confirm this stack of PRs functions as expected.

Connector What it exercises Expected result
source-google-ads streams() override; a config with end_date: "" SUCCEEDED after the P0 fix (FAILED on this head)
source-amazon-seller-partner CheckDynamicStream, stream_count: 1, api_budget, spec validators Same status as 7.39.0
source-airtable CheckDynamicStream over dynamic streams only Same status as 7.39.0
source-hubspot HttpComponentsResolver and api_budget Same status as 7.39.0
source-bing-ads Slowest check in the epic benchmark; dynamic streams Same status, faster
source-github config_overrides on the check component Same status as 7.39.0

AI Prove Fix Started

Running readiness checks and testing against customer connections.
View workflow run
🔍 AI Prove Fix session starting... Running readiness checks and testing against customer connections. View playbook

✅ Devin AI session created successfully!

@airbyte-support-bot

Airbyte Support Bot (airbyte-support-bot) commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

🧪 Fix Validation Evidence

🟡 Outcome: No Regression Detected — Fix Not Exercised

On source-bing-ads, the prerelease SDM 7.39.0.post5.dev39879313492 builds only the accounts stream during check. Control builds all 77. Check takes 2–3.5 s on the target and about 48 s on control (local run, same invalid config, same FAILED status). Invalid credentials are still rejected. But the integration-test refresh token has expired, so CHECK returned FAILED on both versions and no successful check ran on the target. Across the stack: source-github passed every step with no diff. source-google-ads CHECK is SUCCEEDED on both versions. source-airtable could not connect (expired token). source-hubspot CHECK is SUCCEEDED on both versions. source-amazon-seller-partner CHECK is FAILED on both (expired token). Their catalogs are identical. READ for those two was still running when this report was posted.

🚦 Next Steps
  1. To close the gap, refresh the source-bing-ads (and source-airtable) integration-test OAuth secrets, then re-run /ai-prove-fix. Or pin a healthy connection to a 3.0.17 pre-release (with approval) and confirm its source check and sync succeed. Both connectors write OAuth tokens back, so customer-credential regression runs are excluded by policy.
  2. No regression was found on any step that ran on both versions. Code review and the CDK unit tests in airbyte-python-cdk#1248 cover the rest.
  3. After a passing check is shown, consider /ai-canary-prerelease for broader validation.

📋 Connector & PR Details

Connector: source-bing-ads (stack: source-airtable, source-amazon-seller-partner, source-github, source-hubspot, source-google-ads)
PR: #89695 (CDK: airbytehq/airbyte-python-cdk#1248)
PR HEAD Validated: 57e67843699e1d8e54011e697aa27fb5c369da8f
Pre-release Version Tested: n/a — regression tests built the target from PR HEAD (local true-positive used SDM 7.39.0.post5.dev39879313492 with the PR's manifest + components)
Comparison Baseline: latest (auto) (source-bing-ads:3.0.16 on SDM 7.37.1)
Evidence Harness: run_regression_tests
Read Result: FAIL — 0 RECORD / 77 STATE (both versions; expired integration-test refresh token)
True-Positive Case: PASS — invalid OAuth credentials still rejected on target (check FAILED, invalid_grant) via local docker run of the prerelease SDM with the PR manifest
Detailed Results: https://github.com/airbytehq/airbyte-internal-issues/issues/17934#issuecomment-6355435841 (private) · Devin session

📝 Evidence Plan

Proving Criteria

Each connector's CHECK status on the target matches control, with no SPEC/DISCOVER/READ regression. source-bing-ads CHECK builds only the static stream it names and runs faster.

Disproving Criteria

A CHECK that passes on control and fails on target, or a DISCOVER/READ regression (catalog diff, record-count drop).

Cases Attempted

Connector (PR) CHECK target / control DISCOVER READ Notes
source-bing-ads (#89695) FAILED / FAILED ✅ both ❌ both GSM refresh token expired (AADSTS700082). Control logs 77 stream builds during check; target logs 1.
source-github (#89696) SUCCEEDED / SUCCEEDED ✅ 40 = 40 streams ✅ 1074 = 1074 records config_overrides check passes; only diagnostic state-value diffs on 3 streams
source-google-ads (#89699) SUCCEEDED / SUCCEEDED ❌ both n/a DISCOVER failed on both versions with a gRPC TLS error through the harness proxy (infra). Whether the GSM config has end_date: "" is not confirmed.
source-airtable (#89693) FAILED / FAILED ❌ both n/a GSM refresh token rejected (invalid_grant)
source-hubspot (#89697) SUCCEEDED / SUCCEEDED ✅ 52 = 52 streams, identical ⏳ still running at report time HttpComponentsResolver + api_budget; same status as control
source-amazon-seller-partner (#89694) FAILED / FAILED ✅ 48 = 48 streams, identical ⏳ still running at report time GSM LWA token returns 401 on both versions (infra/creds)

Escalation stopped at GSM credentials. source-bing-ads and source-airtable write OAuth tokens back (refresh_token_updater). The playbook excludes them from customer-connection_id regression runs. A live pinned-connection test (pre-release + approval) was offered and declined by the requester. The verdict stays at Not Exercised.

True-Positive Case

The change makes check more lenient: dynamic-stream failures no longer fail a static-only check. Local run of airbyte/source-declarative-manifest:7.39.0.post5.dev39879313492 with the PR's manifest.yaml + components.py and the connector's integration_tests/invalid_config.json: check → FAILED ("Stream accounts is not available: Refresh token was rejected … invalid_grant"). Control 7.37.1 gives the same result. discover on both images returned identical 77-stream catalogs. Check wall time: control 48.2 s / 48.7 s, target 3.5 s / 2.1 s (two runs each).

✅ Pre-flight Checks
  • Viability: the change does what the CDK PR describes (_streams_by_name builds only the named static configs; the streams() override guard is kept for source-google-ads)
  • Safety: No malicious code or dangerous patterns
  • Breaking Change: None. Patch bump; base-image swap; no schema/spec/PK/cursor/state changes.
  • Pin Exclusion: No live connections pinned
  • Reversibility: Patch bump, revertible
📊 Detailed Evidence Log
  • 01:11Z: 6 comparison regression runs triggered (GSM creds, all streams), one per stack PR.
  • 01:14–01:17Z: airtable, github, google-ads, bing-ads completed (results above).
  • 01:20Z: local true-positive and timing runs for source-bing-ads.
  • 01:45Z: hubspot and amazon-seller-partner SPEC/CHECK/DISCOVER artifacts reviewed. READ for both had been running since 01:14Z and was not finished.

Note: run links and detailed logs are recorded in the linked private issue.

@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

Closing: test-only DO NOT MERGE PR; the /ai-prove-fix run is complete (see the Fix Validation Evidence comment above). Requested by Patrick Nilan (@pnilan).

Written by Devin

@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-breaking-change-review - Step 1 for a connector breaking change. Reviews whether the change needs to be breaking, destination data-loss risk, and whether the migration guide, metadata message, and docs let users upgrade safely. Opens one conversation on the PR for each item the author needs to handle.
    • /breaking-change-ready - Step 2, after you've replied to and resolved each of those conversations. Checks that every one has a reply and is resolved, then pings the breaking-change reviewers in Slack for human review.
  • 📝 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.

@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Pre-release Connector Publish Started

Publishing pre-release build for connector source-bing-ads.
PR: #89695

Pre-release versions will be tagged as {version}-preview.57e6784
and are available for version pinning via the scoped_configuration API.

View workflow run
⚠️ Pre-release Publish CANCELLED for source-bing-ads.

@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

Prerelease published from this PR's original head commit, as requested. Closing again (DO NOT MERGE test PR).

Written by Devin

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

Labels

connectors/source/bing-ads hyd-prove Hydra: ai-prove-fix stage has run

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants