jason810496 opened a new pull request, #73190:
URL: https://github.com/apache/airflow/pull/73190

   - related ADR: `ts-sdk/adr/0001-mixed-lang-dag-interface.md` (decision 6)
   - **Depends on `feature/ts-sdk/taskflow-arg-folding` get merged first** 
(only the last commit is new here).
   - **Diff for early review**: 
https://github.com/jason810496/airflow/compare/feature/ts-sdk/taskflow-arg-folding...feature/ts-sdk/taskflow-xcom-args
   - **next**: `feature/ts-sdk/with-arg-names`
   
   ## Why
   
   `summarize(extract())` means "hand the handler what extract returned", but 
only literals could bind,
   so such an argument failed the task and told the author to pull the XCom by 
hand.
   
   ## How
   
   - Airflow names the upstream task in the binding spec, so the runtime pulls 
those `return_value` XComs itself, all of them concurrently:
     a task called with four upstream outputs waits for one round-trip, not 
four.
   - The whole spec is still validated before anything is pulled, so a binding 
this SDK cannot honour costs no round-trip,
     and leaves no half-resolved call behind.
   - Arguments resolve before the handler runs, the one stretch of a task's 
life with nothing else listening for termination,
     so the abort signal cuts the pulls short rather than leaving a killed task 
to sit out the force-exit grace period.
   - An upstream that pushed no output fails the task, naming both the argument 
and the task it came from.
     Telling that apart from an upstream that pushed null needs more than 
`getXCom`, which answers null for both,
     so the coordinator's own client keeps the found flag the supervisor 
already sends. Handlers stay typed against `TaskClient` and never see it.
   - A Python `int` beyond the range a JavaScript number holds exactly is 
refused rather than bound.
     Airflow stamps `format: "int64"` on the argument, and the value arrives 
with its low digits already lost, so nothing downstream could notice.
   
   ## Note
   
   ADR-0001 decision 6 is unchanged: being upstream is not being passed.
   A `>>` dependency still declares order only, and a value the call did not 
pass is still read explicitly.
   
   ---
   
   ##### 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