Skip to content

Console: marshaling friendly names + robustness batch (#337, #340, #341)#345

Merged
ryan-johnson2 merged 1 commit into
develfrom
frontend-robustness-batch
Jul 3, 2026
Merged

Console: marshaling friendly names + robustness batch (#337, #340, #341)#345
ryan-johnson2 merged 1 commit into
develfrom
frontend-robustness-batch

Conversation

@ryan-johnson2

Copy link
Copy Markdown
Contributor

Fixes #337 and #340, plus the confirmed export item from #341 (user-approved fix batch from the release review).

Gates: both svelte-check passes clean, 491/491 tests, lint clean.

🤖 Generated with Claude Code

#341)

- (#337) Marshaling audit trail + "Reverse a ruling"/"Resolve" pickers: the
  server bakes raw log offsets ("(ref N)") into some summaries and names no
  competitor structurally for lap-/target-addressed rulings. The screen now
  re-composes each line from the structured fields: a lap-addressed target
  resolves its competitor through the lap list, a protest-resolution/reversal
  chases its target audit entry, and the callsign renders via the shared
  resolver. Picker options read "<what> - <callsign> . #offset" (offset only a
  trailing detail); audit lines strip the raw "(ref N)" the same way.
- (#340a) Silent [] on directory loads: LiveRaceControl, Marshaling, and the
  global ContextHeader no longer swallow failed pilots/heats reads into empty
  arrays (raw refs with no error state). Each tracks a load-error flag,
  keeps the last good data, shows a visible "Couldn't load - retry" state
  (+ one toast on the transition into error), and retries via a nonce.
- (#340b) Marshaling open-protest count now matches the server's Finalize
  gate (open_protest_count, control_handler.rs): a filing is closed only by
  an UNreversed resolution targeting it, so a ProtestResolved later undone by
  RulingReversed counts the protest as open again - no more Finalize offered
  client-side only to be rejected by the server.
- (#340c) Rounds form: clearing "Laps" (First-to-N / Best-of-N) or the
  FromRanking "Take top" no longer silently saves 1 - both block submit via
  the same canSubmit pattern as the timed race-time field (#329).
- (#341, verified) Results JSON export: the legacy standings / heatResult
  sections carried raw competitor refs. Both now resolve through the shared
  resolver with the raw ref kept alongside (competitor_ref), like every
  other exported view.

Tests: new/updated coverage in MarshalingScreen, LiveRaceControl,
ContextHeader, EventRounds, and results tests; test-session pilot/heat seams
default to inert success so the new error state only shows when a test
injects a failure. Both svelte-check passes, vitest (491), and lint clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.

Marshaling audit lines + Reverse-a-ruling picker show raw log refs / unresolved entries

1 participant