Redesign failed-run recovery eligibility and lineage - #3243
Open
AbigailDeng wants to merge 4 commits into
Open
Conversation
Contributor
Author
Local verification
|
…y-vnext' into fix/2026-08-06_run-retry-eligibility-lineage
AbigailDeng
changed the base branch from
feat/2026-08-04_workflow-activity-vnext
to
fix/2026-08-06_run-detail-outcome-path-usage
August 10, 2026 03:27
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.
Stack
This PR is intentionally stacked on #3242 (
fix/2026-08-06_run-detail-outcome-path-usage). #3242 owns the Run Detail presentation foundation; this PR adds authoritative recovery eligibility and lineage on top. After #3242 merges, this PR should be retargeted tofeat/2026-08-04_workflow-activity-vnext.Problem and solution
Run detail inferred retry eligibility from failed-step count and run-again eligibility from graph shape. That made non-retryable failures look actionable, left unavailable actions unexplained, and could not represent authoritative retry consequences or lineage.
This frontend change removes those inferences and consumes an optional typed
recoverysubcontract from the run-detail read model. It:New run accepted, distinct from observed completion;newRunActorIdas a run identity.Conflict resolution
getRunGraphquery and graph refresh/error dependency. Execution path uses versionedrun.steps; recovery uses onlyrun.recovery.Relative to #3242, the final stacked diff contains exactly the 10 files owned by #3243's recovery feature.
Impact paths
Backend dependency
The current
ObservatoryRunDetailbackend contract does not yet expose typed retry/run-again eligibility, failure recommendation, definition revision, reuse semantics, cost semantics, or durable parent/child run lineage. The current fork receipt exposesnewRunActorId, not a newrunId.Until the backend adds and populates the typed read-model fields consumed here,
recoverydecodes tonull, both fork actions remain unavailable with visible explanations, and no lineage link is invented. This is the frontend portion of #3225 and intentionally does not close the issue.Local verification
pnpm exec jest --listTests --findRelatedTests src/pages/workflow-activity-vnext/activity/RunDetailPage.tsx src/pages/workflow-activity-vnext/activity/runRecovery.ts src/shared/api/workflowActivityApi.ts- PASS, bounded to 6 Workflow Activity vNext test files.pnpm exec jest --runInBand --findRelatedTests src/pages/workflow-activity-vnext/activity/RunDetailPage.tsx src/pages/workflow-activity-vnext/activity/runRecovery.ts src/shared/api/workflowActivityApi.ts- PASS, 6 suites / 134 tests.pnpm exec jest --runInBand --runTestsByPath src/pages/workflow-activity-vnext/activity/RunDetailPage.test.tsx src/pages/workflow-activity-vnext/activity/runRecovery.test.ts src/pages/workflow-activity-vnext/hooks/useRunObservation.test.ts src/shared/api/workflowActivityApi.test.ts- PASS, 4 suites / 27 tests.pnpm exec jest --runInBand --runTestsByPath src/locales/catalog.test.ts src/locales/hardcodedCopyAudit.test.ts- PASS, 2 suites / 14 tests.pnpm exec biome check src/locales/workflowActivityVNextMessages.en-US.ts src/locales/workflowActivityVNextMessages.zh-CN.ts src/pages/workflow-activity-vnext/activity/RunDetailPage.test.tsx src/pages/workflow-activity-vnext/activity/RunDetailPage.tsx src/pages/workflow-activity-vnext/activity/runRecovery.test.ts src/pages/workflow-activity-vnext/activity/runRecovery.ts src/pages/workflow-activity-vnext/hooks/useRunObservation.test.ts src/shared/api/workflowActivityApi.test.ts src/shared/api/workflowActivityApi.ts src/shared/models/workflowActivity.ts- PASS, 10 files.bash tools/ci/test_stability_guards.sh- PASS.python3 apps/aevatar-console-web/docs/design-baselines/workflow-activity-vnext/verify-baseline.py- PASS, 17/17 frames and byte-identical generator output.git diff --check origin/fix/2026-08-06_run-detail-outcome-path-usage- PASS.Full frontend suite, package-wide typecheck, and production build are delegated to GitHub CI by the personal incremental frontend policy. No reliable repository-native affected typecheck target is available. CI is not being babysat as part of this update.
Design baseline
Design baseline:
apps/aevatar-console-web/docs/design-baselines/workflow-activity-vnext/Design SHA-256:
30e74d7b410ae72c4c91432355436679033679c54c10b1702908435b001577deRelates to #3225.