fix(ingestion): repair validate-strict gate — pin CDK image, resolve $refs#1311
fix(ingestion): repair validate-strict gate — pin CDK image, resolve $refs#1311mitasovr wants to merge 1 commit into
Conversation
…$refs The pre-deploy strict-validation gate was unusable for any manifest using $refs, and the validator image floated on :latest. - Pin BASE_IMAGE to airbyte/source-declarative-manifest:6.60.9 — the airbyte-cdk version bundled with the deployed Airbyte platform 1.8.5 (airbyte-connector-builder-server/requirements.in). :latest drifts ahead of the deployed Builder UI schema. The local wrapper tag now derives from the pin, so bumping it auto-rebuilds the image. - validate_strict.py now preprocesses manifests with the CDK's own ManifestReferenceResolver — exactly what the Builder UI does — and then validates against declarative_component_schema.yaml without the runtime ManifestNormalizer pass. Raw no-resolution validation rejected every instance-side $ref (definitions.linked and Builder-export styles alike) on every CDK version, so manifests authored via the Builder UI could never pass the gate. - Fix four manifests with genuine Builder blockers surfaced by the repaired gate: missing type: AddedFieldDefinition on AddFields entries (claude-admin, cursor, bitbucket-server, confluence) and a missing top-level type: DeclarativeSource (bitbucket-server). - Update tool README, source.sh usage text, .env.local.example and the connector create workflow (§5.2) accordingly. All 16 declarative connectors now pass both validate-strict and runtime validate. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Roman Mitasov <Roman.Mitasov@constructor.tech>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (10)
📝 WalkthroughWalkthroughThis PR standardizes AddFields transformation entries across multiple declarative connectors to use explicit ChangesAddedFieldDefinition Schema Standardization
Image Pinning and Validation Infrastructure
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Problem
The mandatory pre-deploy gate
source.sh validate-strict(connector create workflow §5.2) had two defects:BASE_IMAGEdefaulted toairbyte/source-declarative-manifest:latest, so a routine rebuild on 2026-06-11 silently switched the gate to CDK 7.22.0 while the deployed Airbyte 1.8.5 bundles CDK 6.60.9 (airbyte-connector-builder-server/requirements.in, verified insideconnector-builder-server:1.8.5).$refresolution in the strict validator. Empirically (tested CDK 6.44.0 → 7.22.0), no schema version accepts instance-side$refs under raw jsonschema validation — yet the real Builder UI resolves all refs with the CDKManifestReferenceResolverbefore validating (official Builder-maintained manifest-only connectors, e.g.source-bamboo-hr, usestreams: [{$ref}]and$ref-with-sibling merge). So every manifest using$refs — including Builder-authored ones — could never pass the gate, regardless of image version.Fix
BASE_IMAGEtoairbyte/source-declarative-manifest:6.60.9(= deployed platform's CDK) insource.sh+Dockerfile; documented to bump together withAIRBYTE_VERSION. The local wrapper tag derives from the pin (local-<tag>), so a pin bump auto-rebuilds.validate_strict.pypreprocesses with the CDK's ownManifestReferenceResolver, then validates without the runtimeManifestNormalizerpass — matching Builder UI behavior while still catching what lenient runtimevalidateforgives (missingtype:, templated integer-only slots, unresolvable refs).type: AddedFieldDefinitiononAddFields.fields[](claude-admin, cursor, bitbucket-server, confluence) and missing top-leveltype: DeclarativeSource(bitbucket-server). Mechanical, runtime-neutral additions.source.shusage text,.env.local.example, create workflow §5.2.Verification
Full matrix run over every
connectors/*/*/connector.yamlwith the pinned image; the four repaired manifests also re-pass runtime validation.🤖 Generated with Claude Code
Summary by CodeRabbit
Documentation
Chores