Skip to content

Keep recording processing available despite UDP startup failures - #492

Merged
Snazzie merged 4 commits into
mainfrom
Snazzie/investigate-sparse-recording-splitting
Oct 21, 2026
Merged

Snazzie merged 4 commits into
mainfrom
Snazzie/investigate-sparse-recording-splitting

Conversation

@Snazzie

@Snazzie Snazzie commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator

Change

  • Keep recording splitting and background processing available when another instance occupies the UDP telemetry port. Report the capture error without leaving processing stuck at zero.
  • Treat inconclusive historical lap classification as a valid limited result, not a failed run. Correct earlier ambiguous failures without replaying recordings or changing saved lap data.
  • Show neutral completion when only limited or unclassified results remain; reserve attention warnings for actual execution failures. Update completion text in all 16 supported locales.

Validation

  • Reproduced the original stall with a real UDP port collision. Regression coverage now completes all three seeded recordings with both occupied and available UDP ports.
  • Resumed the reported development instance: all nine recordings split successfully in 20 seconds with zero failures.
  • Verified the live classification API and actual UI at 1440px and 390px: one classified, eight limited, zero failed; neutral completion with no attention warning. Existing recording attempts remained unchanged.
  • Passed 40 backend E2E tests covering startup, classification, persisted-result correction, unchanged lap metadata, and genuine execution failures.
  • Passed root typecheck, changed-path lint, and 11 changelog checks.
  • Not run: the full Playwright upgrade scenario and repository-wide test suite.

PR checklist

  • I have manually tested the change to validate that it is working.
  • I have added or updated tests covering the changed observable behavior, or explained why tests are not applicable.
  • My UI changes use locale messages for new or changed user-facing text, including accessibility labels, with all supported locale catalogs updated; or this change does not affect UI text.
  • I have run relevant automated checks and reported any failures or checks not run.

Continue background processing when UDP startup fails. Treat inconclusive classification as limited and show neutral completion without attention warnings.

Correct persisted ambiguous failures without replaying recordings or changing lap metadata.
@Snazzie
Snazzie requested a review from a team October 21, 2026 14:21
@Snazzie
Snazzie merged commit f294ecc into main Oct 21, 2026
9 of 10 checks passed
@Snazzie
Snazzie deleted the Snazzie/investigate-sparse-recording-splitting branch October 21, 2026 14:53
@github-actions

Copy link
Copy Markdown
Contributor

Replay benchmark comparison

Runtime: Bun 1.4.3; CPU: AMD Ryzen 9 7950X 16-Core Processor (32 logical); OS: linux 6.18.33.2-microsoft-standard-WSL2 x64

Launches: processes=2, retainedProcesses=5, retainedWarmups=1; warmup=1000ms, measurement=2000ms, samples=10-100; caseOrder=forward

Case Baseline median Current median Estimated change (95% CI) CI margin Result
replay/parse 20,000 raw lap frames (CPU) 81304517.00 76315294.00 -1.86% (-6.44%, 7.92%) 7.18% PASS
replay/parse 20,000 raw lap frames (retained heap) 12023.00 12023.00 -0.00% (-0.04%, 4.98%) 2.51% PASS
replay/resolve 20,000 canonical envelopes (CPU) 63906159.00 65076034.00 -0.88% (-2.61%, 2.02%) 2.32% PASS
replay/resolve 20,000 canonical envelopes (retained heap) 3545.00 3540.00 unmeasurable — INCONCLUSIVE

@github-actions

Copy link
Copy Markdown
Contributor

App UI changes

Current PR screenshots compared with main.

Added: storybook ComboDash1

Base PR Diff
base pr diff

Added: storybook SetupBrowser

Base PR Diff
base pr diff

Added: storybook ReusableTable

Base PR Diff
base pr diff

Changed: responsive mobile f125-tracks

Base PR Diff
base pr diff

Added: storybook ForzaLiveDashboard

Base PR Diff
base pr diff

Added: storybook ReusableAvatars

Base PR Diff
base pr diff

Added: storybook AcEvoLiveDashboard

Base PR Diff
base pr diff

Added: storybook ReusableSearchMultiSelect

Base PR Diff
base pr diff

Added: storybook ReusableDropdownMenu

Base PR Diff
base pr diff

Added: storybook ReusableCard

Base PR Diff
base pr diff

Added: storybook theme-semantic-states

Base PR Diff
base pr diff

Added: storybook F1LiveDashboard

Base PR Diff
base pr diff

Added: storybook ReusableSearchSelect

Base PR Diff
base pr diff

Added: storybook ReusableBadges

Base PR Diff
base pr diff

Added: storybook AnalyseDataPanelParity

Base PR Diff
base pr diff

Added: storybook IRacingLiveDashboard

Base PR Diff
base pr diff

Added: storybook ReusablePanelSectionHeader

Base PR Diff
base pr diff

Added: storybook ReusableButtons

Base PR Diff
base pr diff

Added: storybook ReusableTabs

Base PR Diff
base pr diff

Changed: responsive mobile f125-cars

Base PR Diff
base pr diff

Added: storybook AnalyseVizPanel3D

Base PR Diff
base pr diff

Added: storybook ReusableDialog

Base PR Diff
base pr diff

Added: storybook SetupBrowserReadOnly

Base PR Diff
base pr diff

Added: storybook ComboDash2

Base PR Diff
base pr diff

Added: storybook AnalyseVizPanel3DViewMenuOpen

Base PR Diff
base pr diff

Added: storybook AccLiveDashboard

Base PR Diff
base pr diff

Added: storybook AnalyseTrackPanel

Base PR Diff
base pr diff

Added: storybook ReusableCollapsible

Base PR Diff
base pr diff

Added: storybook ReusableNoteModal

Base PR Diff
base pr diff

Rendered from Storybook and responsive app screenshot tests against main.

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