Skip to content

Release v2.47.0 — fix two CI-load test races blocking the publish - #4722

Merged
atomantic merged 2 commits into
releasefrom
main
Aug 21, 2026
Merged

Release v2.47.0 — fix two CI-load test races blocking the publish#4722
atomantic merged 2 commits into
releasefrom
main

Conversation

@atomantic

Copy link
Copy Markdown
Owner

Summary

The v2.47.0 release PR (#4721) merged, but the Release workflow's full-ci went red, so the publish job skipped and no v2.47.0 tag or GitHub Release was created. Both failures were wall-clock races in tests, not product bugs — they only surface under full: true, which runs the whole suite rather than the impact-scoped subset the PR checks use.

  • llamaServerManager — the brew-keg-link test flipped findCommandOnPath on a 15 ms timer racing the install child's own 10 ms exit. On a loaded Windows runner the timer won, so the binary looked already-linked and brew link never ran (1 spawn call instead of 2). Now the flip is keyed off the link spawn, which is what actually puts the binary on PATH — deterministic, and still fails if the product stops linking.
  • SongBookViewer — the m metronome shortcut is a window listener attached in an effect, but findByLabelText resolves on the DOM mutation, which can commit first. The keystroke landed on a page with no handler. Now the keystroke is retried until it lands. (The click-based metronome tests were never exposed: those are React prop handlers.)

The lint job failure was a pure cascade — lint itself passed ("Checked 2142 files. No fixes applied"); the job only re-reports the client job's result.

No product code changed. package.json is already at 2.47.0 and no v2.47.0 tag exists, so merging this re-runs the Release workflow, which auto-tags and publishes.

Test plan

  • server && npx vitest run services/llamaServerManager.test.js — 18 passed
  • client && npx vitest run src/pages/SongBookViewer.test.jsx — 64 passed, 5 consecutive runs
  • Full suites green before the release commit: 32,024 server / 8,822 client / 257 DB

Both surfaced in the v2.47.0 release full-CI run, which runs the whole
suite rather than the impact-scoped subset the PR checks use.

- llamaServerManager: the brew-keg-link test flipped findCommandOnPath on a
  15ms timer racing the install child's own 10ms exit. On a loaded Windows
  runner the timer won, so the binary looked already-linked and 'brew link'
  never ran. Key the flip off the link spawn instead, which is what actually
  puts the binary on PATH.
- SongBookViewer: the 'm' metronome shortcut is a window listener attached in
  an effect, but findByLabelText resolves on the DOM mutation that can commit
  first, dropping the keystroke. Retry the keystroke until it lands.
Same class as the two races in ab0affb: findByLabelText resolves when the
textarea's DOM node appears, but TracksManager hydrates the form from the
loaded track in an effect that can commit afterwards. Under CI load that
hydration overwrote the typed prompt, so 'Design with AI' saved the original
and the updateTrack assertion failed.
@atomantic
atomantic merged commit 1c66413 into release Aug 21, 2026
12 checks passed
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