[eas-cli] recognize queued workflow runs and report finishedAt only for final runs - #4258
Open
hSATAC wants to merge 1 commit into
Open
Conversation
hSATAC
force-pushed
the
ash/eng-25945-eas-cli-recognize-the-waiting-workflow-run-status-and-stop
branch
from
August 24, 2026 07:42
ab86db8 to
5f577f9
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #4258 +/- ##
==========================================
+ Coverage 63.76% 63.80% +0.05%
==========================================
Files 1030 1030
Lines 47497 47516 +19
Branches 9993 9998 +5
==========================================
+ Hits 30280 30313 +33
+ Misses 17116 17102 -14
Partials 101 101 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
hSATAC
force-pushed
the
ash/eng-25945-eas-cli-recognize-the-waiting-workflow-run-status-and-stop
branch
from
August 24, 2026 07:50
5f577f9 to
67a0f44
Compare
…or final runs Signed-off-by: Ash Wu <hsatac@gmail.com>
hSATAC
force-pushed
the
ash/eng-25945-eas-cli-recognize-the-waiting-workflow-run-status-and-stop
branch
from
August 24, 2026 08:13
67a0f44 to
573db07
Compare
|
✅ Thank you for adding the changelog entry! |
hSATAC
marked this pull request as ready for review
August 24, 2026 08:18
|
Subscribed to pull request
Generated by CodeMention Warning: The preamble and epilogue options in commentConfiguration are deprecated. Use template instead. |
Contributor
Author
|
Heads up: the failing GraphQL schema check is expected for now. This PR uses Review can proceed in the meantime — the check should go green once #30099 is deployed. |
sjchmiela
approved these changes
Aug 24, 2026
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.
Why
Queue semantics for workflow concurrency added a
WAITINGrun status: a run queued behind its concurrency group until the run holding the group finishes. eas-cli currently treats it as just another transient status — polling keeps working, but nothing explains why a run isn't starting, queued runs can't be selected inworkflow:cancel, and run listings print a bogus finish time for runs that haven't finished.How
workflow:run --waitandworkflow:statusshow a queued run asWorkflow run is queued: Waiting for <run name>, naming the run that holds the group via the newblockingWorkflowRunfield. When that run is itself waiting on user action (an approval gate or a device registration), the spinner appends— it needs your action first: <link to the run>, matching the CLI's link-out convention for actions that happen on the website. The wording leads with "queued" to match the website's label for this state.workflow:runsreportsfinishedAtonly for final statuses, reading the server'sfinalizedAtinstead ofupdatedAt(which any later write to the row refreshes). Final runs predating thefinalizedAtcolumn report null rather than an approximated time.workflow:cancelincludes queued runs in the interactive picker. While in there, this also fixes--non-interactive, which was parsed but never applied (the command scanned argv for the flag, but oclif consumes declared flags out of argv), so automation could hang on the interactive picker.blockingWorkflowRunfield, which ships with the www concurrency stack. Once that stack is live,yarn generate-graphql-codeshould reproduce the snapshot with no diff.Merge gate: do not merge until expo/universe#30099 is live in production — the polled query selects
blockingWorkflowRunat runtime, so a release cut before that deploy would breakworkflow:run --waitandworkflow:status. Gating the merge instead of the release keeps main releasable at all times.Test Plan
Jest covers
finishedAtfor every status (including thefinalizedAtpreference and the legacy fallback), the cancel picker listing both in-progress and queued runs, and two--non-interactiveregressions. Lint, format, typecheck, and the changelog check are green.