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]

Reply via email to