feat(pipeline-run): add task-status and task-wait commands#40
Open
arseniy-pplx wants to merge 1 commit into
Open
feat(pipeline-run): add task-status and task-wait commands#40arseniy-pplx wants to merge 1 commit into
arseniy-pplx wants to merge 1 commit into
Conversation
task-status prints the task-name to status map for a root execution by walking its child executions; container state falls back to graph-state reduction for nested pipelines. task-wait polls until every task is terminal. SUCCEEDED and SKIPPED are non-failure terminals; failures exit 2 with a stderr summary and the full status map on stdout. Wait bounds are validated up front and the deadline applies while resolving children. Transient 5xx on the per-poll root details fetch are retried within the wait deadline instead of aborting the wait; unbounded waits give up after a few consecutive failures. Also adjusts the shared status reducer used by the existing run-level status/wait: WAITING_FOR_UPSTREAM and UNINITIALIZED now count as active so a run is not reported terminal while a task still waits upstream, mixed terminal aggregates reduce to the failure terminal ahead of SKIPPED/SUCCEEDED, and wait bounds reject NaN/inf.
arseniy-pplx
marked this pull request as ready for review
July 20, 2026 18:10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
task-statusto print the{task_name: status}map for a root executiontask-waitto poll until every child task is terminalstatus/wait: WAITING_FOR_UPSTREAM and UNINITIALIZED now count as active (a run is no longer reported terminal while a task waits upstream), mixed terminal aggregates reduce to the failure terminal ahead of SKIPPED/SUCCEEDED, and wait bounds now reject NaN/inftask-waitwithin the wait deadline, matching the child-state tolerance; unbounded waits give up after a few consecutive failures so a persistent outage still surfacesContext
Run-level
statusandwaitdo not expose which task is still active or failed. These commands provide task-level observability for CI and automation without requiring callers to reconstruct the execution tree from raw API calls.Testing
uv run pytest tests/test_pipeline_runs_cli.pyuvx ruff checkon the touched source filesuv lock --checkgit diff --check