github astronomer/astronomer-cosmos astronomer-cosmos-v1.16.0a2
v1.16.0a2

pre-release4 hours ago

Pre-release alpha of Cosmos 1.16.0.

Refresh of a1 with 15 additional milestone PRs merged since the first alpha, plus changes from review. The head branch was synced with main so this cut actually contains all of them. The plugin-discovery (#2893) and bare-selector (#2978) changes are now listed under Breaking Changes in the release PR. See the release PR for full provenance, the complete 120-PR changelog, and the test plan: #3073.

Breaking Changes

  • The Airflow 3 dbt docs plugin now requires authentication. Every /cosmos route requires a logged-in Airflow user with read access to the Website view, matching the Airflow 2 plugin; unauthenticated requests receive HTTP 401 and users without that permission receive HTTP 403. Previously these routes were served without authentication, exposing model SQL and schema metadata to anyone who could reach the API server. As a result, opening dbt docs from the Airflow UI now requires Airflow 3.1.1 or later (Astro Runtime 3.1-3 or later): the Airflow 3.1.0 UI discards its session cookie after login, so on Airflow 3.1.0 (including Astro Runtime 3.1-1 and 3.1-2) the docs return HTTP 401 and the plugin logs a warning. The plugin still loads on Airflow 3.1.0, and bearer-token API access to the docs still works. FastAPI's /openapi.json, /docs and /redoc under /cosmos are disabled, and the plugin registers no sub-application or menu entry when dbt_docs_projects is empty. See #3081.

Behaviour Changes

  • In ExecutionMode.WATCHER (including the Kubernetes and GKE variants), the aggregated test status that the producer pushes to XCom under <model_unique_id>_tests_status is now a dict (status, passed_count, failed_count, total_count and up to five failed_tests unique_ids) instead of the "pass" or "fail" string, and the test sensors log that summary. The sensors and the trigger still accept the string, so DAG runs in flight during the upgrade are unaffected; anything reading that XCom key directly must now read status from the dict. See #2750.
  • Under SourceRenderingBehavior.WITH_TESTS_OR_FRESHNESS, a source that has tests but no freshness checks now renders its freshness task as an EmptyOperator instead of a DbtSource task that always ended with "Nothing to do" and failed when warn-error is enabled, matching the existing SourceRenderingBehavior.ALL path. The EmptyOperator keeps the dbt owner and does not receive operator_args or per-node operator_kwargs. The test tasks are unchanged. See #3044.

Features

  • Log a per-model test summary (passed and failed counts, and the failing test unique_ids) in the ExecutionMode.WATCHER test sensors by @michal-mrazek in #2750
  • Support config.group and group: selectors by @biswasbiplob in #2980

Enhancements

Bug Fixes

  • Require authentication on the Airflow 3 dbt docs routes by @tatiana in #3081
  • Fix duplicate dbt Docs views in the Airflow 3 plugin by @ieCecchetti in #3071
  • Fall back to subprocess in the ExecutionMode.WATCHER producer on dbt (oss) 2.0 by @fpiped in #2998
  • Parse dbt JSON log output when extracting error and warning messages in subprocess mode by @ieCecchetti in #3072
  • Use EmptyOperator for freshness tasks of test-only sources, which now carry the dbt owner when owner inheritance is enabled by @JH0917 in #3044

Others

Milestone: Cosmos 1.16.0
Full changelog: astronomer-cosmos-v1.16.0a1...astronomer-cosmos-v1.16.0a2

Don't miss a new astronomer-cosmos release

NewReleases is sending notifications on new releases.