diff --git a/airflow-core/adr/lang-sdk/0007-taskflow-across-language-boundary.md b/airflow-core/adr/lang-sdk/0007-taskflow-across-language-boundary.md index e2f8abf8f8be0..b3dcbba997cfe 100644 --- a/airflow-core/adr/lang-sdk/0007-taskflow-across-language-boundary.md +++ b/airflow-core/adr/lang-sdk/0007-taskflow-across-language-boundary.md @@ -276,6 +276,9 @@ tracked in [#70523](https://github.com/apache/airflow/issues/70523). - The mechanism is not private to `@task.stub`: any TaskFlow-shaped operator that sets `is_stub` gets arg-binding materialization. A stub-flagged operator that is not a `DecoratedOperator` is recognized as stub-backed but receives no bindings (decision B). +- Core is not the only producer. A language SDK that declares a Dag of its own serializes its tasks + with `is_stub` and writes `_arg_bindings` into the Dag it submits, with no Python operator behind + them, so `_arg_bindings` means "a stub task's captured arguments", not "@task.stub". - Older clients are unaffected: the version migration strips `arg_bindings`, and the server skips deriving it for them entirely. diff --git a/airflow-core/src/airflow/serialization/schema.json b/airflow-core/src/airflow/serialization/schema.json index fa149734b7b94..086bccb34bb5b 100644 --- a/airflow-core/src/airflow/serialization/schema.json +++ b/airflow-core/src/airflow/serialization/schema.json @@ -367,7 +367,7 @@ "max_active_tis_per_dag": {"type": "integer"}, "max_active_tis_per_dagrun": {"type": "integer"}, "_arg_bindings": { - "$comment": "Only present on @task.stub tasks called with TaskFlow arguments", + "$comment": "Used for mixed-language tasks (the @task.stub operator) or tasks defined in a non-Python SDK Dag", "type": "array", "items": { "$ref": "#/definitions/arg_binding" } } diff --git a/ts-sdk/schema/dag-schema.json b/ts-sdk/schema/dag-schema.json index fa149734b7b94..086bccb34bb5b 100644 --- a/ts-sdk/schema/dag-schema.json +++ b/ts-sdk/schema/dag-schema.json @@ -367,7 +367,7 @@ "max_active_tis_per_dag": {"type": "integer"}, "max_active_tis_per_dagrun": {"type": "integer"}, "_arg_bindings": { - "$comment": "Only present on @task.stub tasks called with TaskFlow arguments", + "$comment": "Used for mixed-language tasks (the @task.stub operator) or tasks defined in a non-Python SDK Dag", "type": "array", "items": { "$ref": "#/definitions/arg_binding" } }