Pre-release alpha of Cosmos 1.16.0.
Refresh of
a1with 15 additional milestone PRs merged since the first alpha, plus changes from review. The head branch was synced withmainso 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
/cosmosroute requires a logged-in Airflow user with read access to theWebsiteview, 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,/docsand/redocunder/cosmosare disabled, and the plugin registers no sub-application or menu entry whendbt_docs_projectsis 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_statusis now a dict (status,passed_count,failed_count,total_countand up to fivefailed_testsunique_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 readstatusfrom 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 anEmptyOperatorinstead of aDbtSourcetask that always ended with "Nothing to do" and failed when warn-error is enabled, matching the existingSourceRenderingBehavior.ALLpath. TheEmptyOperatorkeeps the dbt owner and does not receiveoperator_argsor per-nodeoperator_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.WATCHERtest sensors by @michal-mrazek in #2750 - Support
config.groupandgroup:selectors by @biswasbiplob in #2980
Enhancements
- Clarify missing profile field errors by @nightcityblade in #2970
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.WATCHERproducer 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
EmptyOperatorfor freshness tasks of test-only sources, which now carry the dbt owner when owner inheritance is enabled by @JH0917 in #3044
Others
- Rename the dbt Fusion CI matrix value to
2.0-dbt-fusionby @pankajastro in #3043 - Add end-to-end tests for metric views and semantic views by @tatiana in #3070
- Run Snowflake CI as
OSSUSERinOSS.COSMOS_CIwith a key pair by @tatiana in #3075 - Fix the pre-commit black failure on
mainby @tatiana in #3077 - Show the Runtime alpha tag in the
test-runtime-alpharun name and summary by @jedcunningham in #3078 - Dependency updates by @dependabot in #3074 and #3079
Milestone: Cosmos 1.16.0
Full changelog: astronomer-cosmos-v1.16.0a1...astronomer-cosmos-v1.16.0a2