feat(ui): failure panel#39
Merged
Merged
Conversation
A fixed-height drawer under the timeline surfaces the engine's detected failures for the active trace: - Ranked critical -> warning -> info, then by first affected event, over a display-order index array (the engine's failure slice is never mutated). - Each row shows severity, code, and description; selecting one expands its remediation steps and affected events (accordion, at most one open) and jumps to its primary event, so a failure and its evidence line up. - A clean trace shows a positive "no failures detected" state; a detection-skipped large trace says so instead. - The status bar now carries the severity breakdown. split is horizontal-only, so the drawer is a fixed-height child of a vertical column beneath the timeline|detail split. Jump selects and highlights the event; the literal viewport scroll rides the runner eject (#33), like the session jump in #30. Tests: the ordering and severity-summary helpers (pure), and over the failed-auth conformance fixture the failure renders, expanding reveals its steps, and clicking jumps to the event; the a11y sweep now covers the drawer. Closes #31
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Surfaces the engine's detected failures in a failure panel — a fixed-height
drawer beneath the timeline that lists what
detectFailuresfound for the activetrace, with one-click navigation to the evidence.
Failure, ordered critical → warning → info,then by first affected event. Each row shows a severity dot, the failure code,
and its description.
suggested_stepsandaffected event ids (accordion: at most one open at a time).
timeline highlights it and the detail pane (feat(ui): message inspector + session panel #30) shows it.
detected"; a detection-skipped large trace (ADR-0007) says so. The status bar
now carries the severity breakdown (e.g.
2 failures: 1 critical, 1 warning).Design notes
ui.splitis horizontal-only (it lays panes along x), so thedrawer isn't a vertical split —
activeBodyis a column: the timeline|detailsplit grows to fill, the 240px failure drawer sits below it. The drawer's list
scrolls and is capped for pathological inputs.
sortedFailureIndicesreturns indices into theengine's
failuresslice; the slice itself is never reordered. Failureidentity (the accordion's
expanded_failure, each row's jump target) is theraw index, so sorting can't desync the state.
primary event. The literal timeline viewport scroll needs the runner eject
tracked in feat(ui): interactive open — native dialog + drag-drop (ejected runner) #33 (the runtime owns the virtual list's offset); realistic failure
evidence is usually already on screen.
Testing
native test -Dplatform=null— 82 headless tests green (macOS local; CI runsboth OSes). New coverage:
and the severity-breakdown summary string.
failed-authconformance fixture: theFAILED_AUTHORIZATIONrowrenders, remediation is hidden until expanded then shows its steps + affected
events, and clicking the row expands it and selects the primary event.
select_failuretoggles the accordion and jumps; out-of-range isignored.
entry.
native check --strictclean;native build(ReleaseFast) builds. Living docs(
CURRENT_STATE.md) updated in-branch.Closes #31