Skip to content

CL-6462: keep polling past the stall state - #196

Merged
TheGreatAxios merged 2 commits into
mainfrom
cl-6462-stall-fix
Aug 21, 2026
Merged

TheGreatAxios merged 2 commits into
mainfrom
cl-6462-stall-fix

Conversation

@TheGreatAxios

Copy link
Copy Markdown
Contributor

Summary

PR #188 (CL-6462, onboarding land-in-chat) merged with real defects a design reviewer caught. This fixes them on top of main.

  • Critical — stall state stopped polling. In home-page.tsx, once (attempt + 1) * retryMs >= stallAfterMs, waitAndRetry set state: "slow" and returned without scheduling another retry timer. Nothing resumed until the user clicked "Try again." Reproduced with a test backend where Myra becomes ready shortly after the stall fires: the screen stayed on "taking longer than usual" and never navigated. Fixed by always scheduling the next retry, whether or not the slow message is showing — the message no longer means "we gave up."
  • Major — two verbs, one action. "Retry" (error state) and "Try again" (slow state) both called startOver. Unified on "Retry" to match every other retry action in the app (skills, plugins, insights, skill-detail pages).
  • Major — alarming icon on a non-error state. Both the error state and the explicitly-not-an-error stall state used WarningCircle. Stall state now uses Clock.
  • Minor — unspecified plural. setup-progress-note.tsx said "the rest of its agents," which a first-time user (who's met exactly one agent) can't act on. Reworded to drop the seed-count concept entirely.

Findings 5 (generic rotating tips) and 6 (unmeasured 45s threshold) are out of scope — separate work.

Test plan

  • Added a regression test (home-page.test.tsx) asserting a backend that becomes ready after the stall fires still auto-navigates with no click — confirmed it fails against the pre-fix code and passes after
  • Updated the existing "Try again" assertion to "Retry"
  • bun run typecheck, prettier --check, eslint, and bun run test all pass in apps/web (762 pass, 0 fail)
  • Not manually verified in a running stack (memory-constrained environment per instructions)

Not merging — flagging for peer review per instructions.

The stall message ("Myra is taking longer than usual") should never be
the end of the line — a backend that becomes ready after the 45s stall
threshold fires must still auto-navigate with no click required.
Design review on the CL-6462 land-in-chat wait surfaced four defects:

- Critical: once the 45s stall message fired, waitAndRetry stopped
  scheduling retries entirely — a backend that became ready afterward
  never got noticed, and only "Try again" resumed anything. Retries now
  keep running underneath the slow message; the button stays as an
  explicit escape hatch, not the only way forward.
- Same action, two verbs ("Retry" vs "Try again") on the identical
  startOver handler — unified on "Retry" to match every other retry
  action in the app (skills, plugins, insights, skill-detail pages).
- The stall state isn't an error, but shared WarningCircle with the
  actual error state — swapped it for Clock.
- setup-progress-note's "the rest of its agents" asserted an unspecified
  plural a first-time user (who has met exactly one agent) can't act on
  — reworded to drop the seed-count concept entirely.
@TheGreatAxios
TheGreatAxios merged commit 70fd8a4 into main Aug 21, 2026
0 of 2 checks passed
@TheGreatAxios
TheGreatAxios deleted the cl-6462-stall-fix branch August 25, 2026 15:29
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