Background
The current ExecutableCoordinator
(providers/sdk/executable/src/airflow/providers/sdk/executable/coordinator.py)
is the shared Python-side launcher for any native-executable SDK (Go, Rust,
C++, Zig, ...) that produces an AFBNDL01-trailered bundle. It currently
exposes can_handle_dag_file, get_code_from_file, dag_parsing_cmd,
and task_execution_cmd and handles both the pure-executable Dag path
and the Python @task.stub Dag path.
A design discussion is in flight on the dev list about how this interface
should evolve as more lang-SDKs adopt it. The decision is not yet final;
this issue exists to track the eventual refactor so the deferred work has
a stable URL.
What needs to happen
- Reach consensus on the dev-list thread for the new interface shape.
- Apply the agreed-upon refactor to
ExecutableCoordinator.
- Update the bundle-spec doc (
providers/sdk/executable/docs/bundle-spec.rst)
to match.
- Update the Go SDK's
bundlev1server.Serve coordinator-mode dispatcher
(ADR 0003) only if the interface change requires a wire-level adjustment.
- Migrate any in-tree subclasses (Java provider, future Go provider) at
the same time.
Acceptance criteria
ExecutableCoordinator interface matches the dev-list outcome.
- ADR 0003 / 0004 in
go-sdk/adr/ are updated to reflect the new shape.
- E2E tests still pass for both the pure-executable and Python-stub paths.
Context
Drafted-by: Claude Code (Opus 4.7) (no human review before posting)
Background
The current
ExecutableCoordinator(
providers/sdk/executable/src/airflow/providers/sdk/executable/coordinator.py)is the shared Python-side launcher for any native-executable SDK (Go, Rust,
C++, Zig, ...) that produces an
AFBNDL01-trailered bundle. It currentlyexposes
can_handle_dag_file,get_code_from_file,dag_parsing_cmd,and
task_execution_cmdand handles both the pure-executable Dag pathand the Python
@task.stubDag path.A design discussion is in flight on the dev list about how this interface
should evolve as more lang-SDKs adopt it. The decision is not yet final;
this issue exists to track the eventual refactor so the deferred work has
a stable URL.
What needs to happen
ExecutableCoordinator.providers/sdk/executable/docs/bundle-spec.rst)to match.
bundlev1server.Servecoordinator-mode dispatcher(ADR 0003) only if the interface change requires a wire-level adjustment.
the same time.
Acceptance criteria
ExecutableCoordinatorinterface matches the dev-list outcome.go-sdk/adr/are updated to reflect the new shape.Context
BaseCoordinatorinterface to support pluggable communication channels #66838 (pluggable BaseCoordinator).8612c4574f2("Fix commandresolution in ExecutableCoordinator for improved task execution").
Drafted-by: Claude Code (Opus 4.7) (no human review before posting)