Skip to content

Redesign failed-run recovery eligibility and lineage - #3243

Open
AbigailDeng wants to merge 3 commits into
feat/2026-08-04_workflow-activity-vnextfrom
fix/2026-08-06_run-retry-eligibility-lineage
Open

Redesign failed-run recovery eligibility and lineage#3243
AbigailDeng wants to merge 3 commits into
feat/2026-08-04_workflow-activity-vnextfrom
fix/2026-08-06_run-retry-eligibility-lineage

Conversation

@AbigailDeng

@AbigailDeng AbigailDeng commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

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 recovery subcontract from the run-detail read model. It:

  • enables retry and run again only when the corresponding typed action is explicitly eligible;
  • keeps unavailable controls keyboard-focusable and associates each with a visible reason;
  • maps typed access/configuration recommendations to the scoped Settings surfaces;
  • previews source immutability, input, definition revision, starting step, prior-output reuse, and cost risk before dispatch;
  • presents the fork response as New run accepted, with transport identifiers kept in technical details;
  • creates related-run links only from typed parent/child run IDs and never treats newRunActorId as a run identity.

Impact paths

  • Workflow Activity vNext run-detail recovery actions and confirmation
  • Workflow Activity API response decoding and typed frontend models
  • Run lineage links and accepted fork receipt presentation
  • English and Chinese vNext locale catalogues
  • Focused adapter, resolver, observation-fixture, and route integration tests

Backend dependency

The current ObservatoryRunDetail backend 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 exposes newRunActorId, not a new runId.

Until the backend adds and populates the typed read-model fields consumed here, recovery decodes to null, both fork actions remain unavailable with visible explanations, and no lineage link is invented. This is therefore the frontend portion of #3225 and intentionally does not close the issue.

Local verification

  • Focused changed and catalogue tests: pnpm exec jest --selectProjects jsdom --runTestsByPath src/locales/catalog.test.ts 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 --runInBand - PASS, 5 suites / 28 tests.
  • Changed-file formatting: pnpm exec biome format <10 analyzer-selected files> - PASS, 10 files, no fixes.
  • Changed-file lint: pnpm exec biome lint <10 analyzer-selected files> - PASS, 10 files, no fixes.
  • Stability guard: bash tools/ci/test_stability_guards.sh - PASS.
  • vNext baseline: python3 docs/design-baselines/workflow-activity-vnext/verify-baseline.py from apps/aevatar-console-web - PASS, 17/17 frames and byte-identical generator output.
  • Whitespace: git diff --check - PASS.
  • Dependency-related Jest selection reached 92 passing suites / 1,165 passing tests; its sole failure was the locale catalogue rejecting a Chinese machine-translation substring. The locale was corrected and the catalogue plus all changed tests passed in the final focused run. A later fresh dependency rerun was stopped before a result after sustained resource contention with another Jest process.
  • Browser route check reached http://localhost:5188/scopes/scope-alpha/workflow-activity-vnext/activity/run-source-alpha, but local interactive verification was blocked by the existing NyxID configuration gate because NYXID_BASE_URL is not configured. Authentication state was not bypassed or inspected.
  • Full frontend suite, package-wide typecheck, and production build: delegated to GitHub CI by the personal incremental frontend policy. No reliable repository-native affected typecheck target is available.

Design baseline

Design baseline:
apps/aevatar-console-web/docs/design-baselines/workflow-activity-vnext/
Primary design:
aevatar-workflow-activity-vnext.excalidraw
Design SHA-256:
30e74d7b410ae72c4c91432355436679033679c54c10b1702908435b001577de
Contract specification:
apps/aevatar-console-web/docs/superpowers/specs/
2026-08-04-workflow-activity-vnext-design.md
User paths:
apps/aevatar-console-web/docs/superpowers/specs/
2026-08-04-workflow-activity-vnext-user-paths.md
Authentication and localization:
Existing Aevatar login, callback, session, returnTo, and Umi locale logic;
presentation may change, behavior may not.
Production data source:
Real APIs and API-acknowledged user actions only; no mock fallback.
Baseline integrity:
python3 apps/aevatar-console-web/docs/design-baselines/
workflow-activity-vnext/verify-baseline.py

Relates to #3225.

CI remediation (2026-08-07)

  • Merged latest base be74bab5302b0ec9b5d4b2d6eecb9156dbf829a0; this supplies the three backend-catalogue locale keys that caused the prior console-web failure.
  • Failed CI test reproduction: pnpm --dir apps/aevatar-console-web exec jest src/locales/hardcodedCopyAudit.test.ts --runInBand - 1 suite / 7 tests passed.
  • Related tests: pnpm exec jest 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 --runInBand - 4 suites / 23 tests passed.
  • Changed-file static checks: pnpm exec biome check <10 analyzer-selected changed files> - 10 files passed.
  • Test stability guard: bash tools/ci/test_stability_guards.sh - passed.
  • Full frontend suite, package-wide typecheck, and production build are delegated to GitHub CI by the personal incremental frontend policy.

@AbigailDeng

AbigailDeng commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

Local verification

  • Related tests: pnpm exec jest 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 --runInBand — 4 suites, 23 tests passed
  • Changed-file static checks: pnpm exec biome lint 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 — 10 files passed
  • Test stability guard: bash tools/ci/test_stability_guards.sh — passed
  • Full frontend suite/typecheck/build: deferred to GitHub CI by personal local workflow policy

…y-vnext' into fix/2026-08-06_run-retry-eligibility-lineage
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant