Skip to content

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

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

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

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-airtable 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.35.0 to 7.39.0.post5.dev39879313492@sha256:a45420a851310e75d893c93c73e8a353d610bc214788c39384f7bd776b614d7f.
    • dockerImageTag goes from 4.6.43 to 4.6.44.
  • No manifest, changelog or docs change.

Review guide

  1. airbyte-integrations/connectors/source-airtable/metadata.yaml

User Impact

None. This is never merged. Use /publish-connectors-prerelease to get a 4.6.44-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

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.

@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

🟢 Fix Proven (source-airtable row)

On a live connection, the pre-release airbyte/source-airtable:4.6.44-preview.5b074ea (SDM 7.39.0.post5.dev39879313492, built from the airbytehq/airbyte-python-cdk#1247 + #1248 stack) passed CHECK (CheckDynamicStream, stream_count: 1). The sync succeeded with exactly the same records and bytes (246 records / 954,217 bytes) as the connection's previous sync on 4.6.43. The OAuth token refresh and writeback kept working, and the connection is unpinned again. The GSM regression tests were inconclusive: CHECK failed on both versions because the test refresh token is dead.

Scope: only the source-airtable row of the requested table was tested. The other five rows (source-google-ads, source-amazon-seller-partner, source-hubspot, source-bing-ads, source-github) are not part of this PR and still need their own runs.

Next Steps

  1. Run /ai-canary-prerelease if you want broader canary coverage for Airtable (progressive rollout is enabled).
  2. Validate the other five connectors in the matrix on their own prerelease pin PRs, especially source-google-ads with end_date: "", the P0 case.
  3. Refresh the source-airtable GSM integration-test credentials. The refresh token was rejected with invalid_grant, so the regression tests can't exercise CHECK/DISCOVER/READ right now.

📋 Connector & PR Details

Connector: source-airtable
PR: #89693
PR HEAD SHA: 5b074ea8ac139687dd2d71fb061647aeba7393cf
CDK PR under test: airbytehq/airbyte-python-cdk#1248 (HEAD 2a09438a)
Pre-release Version Tested: airbyte/source-airtable:4.6.44-preview.5b074ea (digest sha256:d41e9ec5d0ac…)
Comparison Baseline: latest (auto) = 4.6.43 (SDM 7.35.0). No known-bad Airtable version was reported.
Evidence Harness: run_regression_tests (inconclusive) + live connection test
Read Result: ✅ 246 records, same as baseline
True-positive case: n/a. For Airtable the change doesn't loosen any check; CheckDynamicStream still resolves dynamic streams through _first_streams.
Detailed Results: Devin session

📝 Evidence Plan

Proving criteria: CHECK succeeds on the pre-release, the sync succeeds, and records/bytes match the prior 4.6.43 sync with no new errors. OAuth refresh-token writeback keeps working.

Disproving criteria: CHECK fails on the pre-release, dynamic table streams go missing, record counts drop, or new errors show up.

What #1248 changes for Airtable: streams() now runs through new _prepare_for_stream_build()/_create_streams() helpers; this is what READ exercises. CheckDynamicStream(stream_count=1) now calls _first_streams(1), which still resolves dynamic_streams (HttpComponentsResolver); this is what CHECK exercises. Airtable never reaches the static-only _streams_by_name skip path.

Strategy: regression tests first. Airtable uses single-use OAuth refresh tokens (refresh_token_updater), so it needs a live test. None of the internal Airbyte Airtable connections had synced in 90 days, so I used one non-sensitive, US, unpinned customer connection with a recent successful sync, after HITL approval.

🔍 Pre-flight Checks
  • ✅ Viability: the change can plausibly deliver the stated behaviour, and the Airtable path keeps resolving dynamic streams.
  • ✅ Safety: metadata-only diff (base image digest + patch bump). Nothing suspicious.
  • ✅ Breaking change: none. No schema, spec, PK/cursor, stream or state changes.
  • ✅ Reversible: patch bump. Unpinning restores the default version.
  • ✅ Pin exclusion: the candidate was verified unpinned (exclude_pinned) and standard tier. Pinning was approved in Slack HITL.
📊 Detailed Evidence Log
# Validation Credentials Result
1 run_regression_tests, all streams, vs 4.6.43 GSM ⚪ Inconclusive. SPEC ✅ (unchanged). CHECK ❌ on both control and target: Refresh token was rejected by the OAuth provider … invalid_grant. DISCOVER and READ failed on both sides for the same reason.
2 Live sync on pinned pre-release Live connection ✅ succeeded: 246 records / 954,217 bytes emitted and committed. Source container image airbyte/source-airtable:4.6.44-preview.5b074ea. Previous sync on 4.6.43: succeeded, 246 records / 954,217 bytes. No source errors (only the pre-existing schema-type warnings, which also appear on baseline).
3 Live connector CHECK on pinned pre-release Live connection ✅ succeeded: true

Cleanup: version overrides were removed after attempts 2 and 3. The connection is back on the default version.

@airbyte-support-bot Airbyte Support Bot (airbyte-support-bot) added the hyd-prove Hydra: ai-prove-fix stage has run label Oct 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

source-airtable Connector Test Results

39 tests   14 ✅  56s ⏱️
 1 suites  24 💤
 1 files     1 ❌

For more details on these failures, see this check.

Results for commit 5b074ea.

@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-airtable.
PR: #89693

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

View workflow run
Pre-release Publish: SUCCESS ✅

Docker image (pre-release):
airbyte/source-airtable:4.6.44-preview.5b074ea

Docker Hub: https://hub.docker.com/layers/airbyte/source-airtable/4.6.44-preview.5b074ea

Registry JSON:

@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

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants