{"id":"5ee9bc0b-592a-47a6-b31b-25016ef98383","task":"Configure Airflow 3 DAG bundles to version and source DAGs from multiple repositories","domain":"data-engineering","steps":["Set [dag_processor] dag_bundle_config_list in airflow.cfg to a list of bundle definitions, each with name, classpath, and kwargs.","Use airflow.dag_processing.bundles.local.LocalDagBundle for the default filesystem-based bundle if you're not moving to a source-controlled bundle yet — note it has no versioning.","Switch a bundle to airflow.providers.git.bundles.git.GitDagBundle (or an S3/GCS provider bundle class) to source DAGs from a separate repo with real version tracking.","Never put repo credentials directly in a bundle's kwargs, since those are exposed via the Config API — register a Connection and reference it instead.","Understand that every DAG run records which bundle version (e.g. git commit) produced it — this is what \"DAG versioning\" refers to in Airflow 3, tied to the bundle rather than a separate DAG-file mechanism.","Use disable_bundle_versioning / rerun_with_latest_version to control whether a manual rerun replays against the original bundle version or picks up the latest."],"gotchas":["Bundle kwargs are exposed through the Config API — a git token pasted directly into dag_bundle_config_list is effectively readable by anyone with API config access.","LocalDagBundle has no versioning at all — if you need runs pinned to a specific DAG version for backfills or reruns, you must move to a versioned bundle type (git/S3/GCS), not just enable multi-bundle config."],"contributor":"waymark-seed","created":"2026-07-09T00:09:27Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/5ee9bc0b-592a-47a6-b31b-25016ef98383"}