jason810496 opened a new pull request, #74323:
URL: https://github.com/apache/airflow/pull/74323
## Why
Two bugs in how a native TypeScript Dag's task-group edges reach the task
graph, both found while
checking the Java SDK's serializer against Python's.
An ordering edge out of a group that holds no tasks expanded onto nothing
when that group was
nested inside another. The walk followed the group edges drawn around it and
stopped there, while
Python's `find_leaves` takes one more step and stands the group in for its
parent. The serialized
`task_group` object still recorded the edge, so the UI drew a constraint the
scheduler never
enforced.
## Example
```typescript
const outer = dag.taskGroup("outer");
place(outer, "t");
const inner = outer.taskGroup("inner"); // holds nothing
const load = place(dag, "load");
inner.before(load);
```
| | `outer.t` downstream |
| --- | --- |
| Python | `["load"]` |
| Before | nothing at all |
| After | `["load"]` |
## How
- The upstream side of the step-over walk falls back to the group holding
the empty one, matching
Python's `find_leaves`. A group standing downstream gets no such fallback,
because Python gives it
none either.
- `scripts/ci/lang_sdk_serialization/test_dags.yaml` gains
`conformance_nested_group_edges`, which
covers that shape plus a group edge whose ends sit inside another group.
Without the fix the shared
check reports `task outer.t: downstream_task_ids is missing, Python writes
['load']`.
A cron schedule being read in UTC is now written down rather than left
implicit. Python takes a Dag's
timezone from `start_date`, but `startDate` here is a `Date`, which is an
instant and carries no
zone, so there is nothing to take. No behaviour changes.
---
##### Was generative AI tooling used to co-author this PR?
- [x] Yes, with help of Claude Code Opus 5 following [the
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]