Skip to content

Conversation

@aaronsteers
Copy link
Collaborator

What

Fixes critical bugs in metadata service model source YAML files that were preventing validation of connector metadata.yaml files. These bugs were discovered during validation testing for airbyte-python-cdk PR 807 which adds JSON schema validation for metadata.yaml files.

Issues fixed:

  1. Invalid type: const syntax in ConnectorBreakingChanges.yaml (JSON Schema Draft 7 does not support const as a type value)
  2. Incorrect required fields in SecretStore.yaml (copied from Secret.yaml but should match SecretStore's actual properties)
  3. Copy-paste errors in $id references (both Secret.yaml and SecretStore.yaml pointed to non-existent TestSecret.yaml)

How

ConnectorBreakingChanges.yaml

  • Replaced type: const with type: string alongside const: stream
  • JSON Schema Draft 7 treats const as a validation keyword, not a type
  • This was causing validation to fail with "Unknown type 'const'" error

SecretStore.yaml

  • Changed required: [name, secretStore] to required: [type, alias]
  • Original required fields were incorrectly copied from Secret.yaml
  • SecretStore's actual properties are type (enum: ["GSM"]) and alias (string)
  • Verified all 304 connectors with secretStore entries have both type and alias fields
  • Fixed $id to point to SecretStore.yaml instead of TestSecret.yaml

Secret.yaml

  • Fixed $id to point to Secret.yaml instead of TestSecret.yaml
  • No other changes needed (this file's required fields were correct)

Review guide

  1. ConnectorBreakingChanges.yaml:58 - Verify type: string + const: stream is valid JSON Schema Draft 7 syntax
  2. SecretStore.yaml:7-9 - Confirm that SecretStore's properties are actually type and alias (not name and secretStore) by checking actual connector metadata.yaml files
  3. SecretStore.yaml:3 and Secret.yaml:3 - Verify $id fixes point to correct files

Note: These source YAML files are combined into a JSON schema in airbyte-python-cdk. After this PR merges, the schema will need to be regenerated in PR 807 for the fixes to take effect.

User Impact

Before: Validation of connector metadata.yaml files failed for all 10 tested certified connectors due to schema bugs
After: Once schema is regenerated in airbyte-python-cdk, metadata.yaml validation will work correctly

No immediate user impact - these are source schema definition files. Changes only take effect after regeneration in the CDK repo.

Can this PR be safely reverted and rolled back?

  • YES 💚

These are source YAML files that need regeneration to take effect. Reverting would simply restore the buggy state before any downstream regeneration occurs.


Link to Devin run: https://app.devin.ai/sessions/0078df9742174c169753b2c4c4d247da
Requested by: AJ Steers (@aaronsteers)

devin-ai-integration bot and others added 2 commits October 27, 2025 21:58
…erences

- Change SecretStore required fields from [name, secretStore] to [type, alias]
  - These were incorrectly copied from Secret.yaml
  - Verified all 304 connectors with secretStore have both type and alias
- Fix SecretStore.yaml  to point to SecretStore.yaml instead of TestSecret.yaml
- Fix Secret.yaml  to point to Secret.yaml instead of TestSecret.yaml

Co-Authored-By: AJ Steers <aj@airbyte.io>
… schema

- Replace invalid 'type: const' with 'type: string' alongside 'const: stream'
- JSON Schema Draft 7 does not support 'const' as a type value
- The const keyword is a validation keyword, not a type
- This was causing validation to fail with 'Unknown type const' error

Co-Authored-By: AJ Steers <aj@airbyte.io>
@devin-ai-integration
Copy link
Contributor

Original prompt from AJ Steers
Received message in Slack channel #ask-devin-ai:

@Devin find the pending Python CDK PR 807 which adds a new JSON schema file for manifest.yaml files. 

Use the JSON schema file from that PR to try to validate our own connectors current files. Start with 10 random certified connectors and report back. We want to see if there are valid reasons they won't/can't pass validation in their current state - either due to problems in the new JSON file or in problems with the files, or problems with the spec that the JSON files are generated from
Thread URL: https://airbytehq-team.slack.com/archives/C08BHPUMEPJ/p1761600622971549?thread_ts=1761600622.971549

@devin-ai-integration
Copy link
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 and CI monitoring

@github-actions
Copy link
Contributor

👋 Greetings, Airbyte Team Member!

Here are some helpful tips and reminders for your convenience.

Helpful Resources

PR Slash Commands

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

  • /format-fix - Fixes most formatting issues.
  • /bump-version - Bumps connector versions.
    • You can specify a custom changelog by passing changelog. Example: /bump-version changelog="My cool update"
    • Leaving the changelog arg blank will auto-populate the changelog from the PR title.
  • /run-cat-tests - Runs legacy CAT tests (Connector Acceptance Tests)
  • /build-connector-images - Builds and publishes a pre-release docker image for the modified connector(s).
  • 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
    • /bump-bulk-cdk-version type=patch changelog='foo' - Bump the Bulk CDK's version. type can be major/minor/patch.
  • 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.

📝 Edit this welcome message.

title: SecretStore
description: An object describing a secret store metadata
type: object
required:
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin, the affect of them being missed was that neither was actually required in the pydantic models. Let's make neither of them required here either.

The previous required fields (name, secretStore) were invalid and pointed to non-existent properties. This meant the generated Pydantic models effectively treated all fields as optional. Making both type and alias explicitly optional maintains backward compatibility with existing behavior.

All 304 connectors with secretStore entries already include both type and alias fields, so this change is purely for backward compatibility and won't mask any existing data quality issues.

Co-Authored-By: AJ Steers <aj@airbyte.io>
Copy link
Contributor

@dbgold17 dbgold17 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

non-blocking comment

@devin-ai-integration

This comment was marked as off-topic.

@aaronsteers aaronsteers merged commit 4a6b8f1 into master Oct 28, 2025
32 checks passed
@aaronsteers aaronsteers deleted the devin/1761602255-fix-metadata-schema-bugs branch October 28, 2025 00:27
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.

3 participants