Skip to content

FEAT GUI: Browse Scenario result parents and children #3602

Closed

Description

@romanlutz

Is your feature request related to a problem? Please describe.

Scanner run results already have an Atomic attack groups / Attack executions presentation with group summaries, objectives, outcomes, durations, retries/errors, timestamps, and result Details. The hierarchy backend merged in #3167 adds saved compound parents and ordered child references, but current main does not expose that lineage in the existing results surface.

The original description was too broad about "adding hierarchy browsing" and not explicit enough about consolidating the existing table. Open #3611 initially added a second results section with overlapping rows and fields. The user has now requested improving the existing attack-group presentation instead, making saved result-to-chat navigation direct, and preserving a breadcrumb back to the Scenario.

Describe the solution you'd like

Extend and consolidate the existing Scenario run results presentation:

  • Add expandable parent/child rows to the existing Atomic attack groups/results surface, not a parallel results browser. Keep aligned columns; indent only the result/objective column. Use explicit outcome labels and distinguish an orchestration summary from a saved target-facing result.
  • Add typed API adapters for bounded roots and selected-node/child expansion. Root continuation must not be used as descendant continuation: the root cursor loads more roots, while each parent's child-reference cursor loads more of that parent's saved children.
  • Distinguish orchestration parents, target-facing results and unknown legacy roles. Show absolute immediate-parent child order and explicit unresolved references, including pages consisting entirely of unresolved entries.
  • Keep shared backend completion, outcome, error and retry totals unchanged as users load more nodes. Neither visible rows nor producer roles measure physical target calls. Do not invent roots for rootless/cyclic diagnostic samples.
  • Preserve existing group identities/summaries, ordinary and live-progress rows, timestamps, retries/errors, Details, and backend-owned totals. Display groups can contain several atomic groups; do not force saved hierarchy nodes into a progress-row type or count visible child rows as extra completed work.
  • For a saved result with a conversation, make the primary result action open its corresponding existing chat view directly. Retain Details as a separate metadata action. Sequential/orchestration parents may have no conversation of their own: expand their saved children and provide labelled child links instead of inventing a parent transcript or silently selecting an unrelated conversation.
  • Reuse existing result-detail, scorer, identity, conversation, and media presentation. Fetch metadata on demand; do not fetch transcript bodies as part of hierarchy/node loading. Preserve History filters and suite return context.
  • Carry Scenario context through attackConversationRoutePath and reuse the existing ChatWindow Scenario breadcrumb. Current App reads that context from the URL. Verify return navigation and a full chat URL reload rather than add a second breadcrumb or rely only on transient component state.
  • Handle loading, empty, retryable error, stale/mismatched cursor and truncated states with keyboard-accessible controls and a usable narrow-screen layout.
  • Cover ordinary and nested compound results, missing/legacy references, continuation boundaries, ancestor-cycle protection, statistics stability, resume/reload, saved-objective precedence, direct chat navigation, conversationless parents, and return navigation with focused component/API tests and deterministic real-backend journey coverage. The navigation fixture must contain actual saved transcript messages, not result rows alone. Capture exact-head desktop/narrow evidence for the changed states.

For example, opening a Sequential result should show its saved children in order. If a saved child cannot be resolved, keep its position visible as unresolved rather than silently dropping it. Loading another child page must not change the run's completion or retry totals.

Out of scope: new transcript rendering or conversation pagination. Those belong to the separate scope-10B follow-up using the same delivered backend. No backend accounting, roles, links, schema, graph store, scheduler, estimate, dataset or execution-engine changes. No automatic target/provider calls or sends. Optional work such as exports or suite analytics is not a prerequisite.

Describe alternatives you've considered, if relevant

Keeping only flat rows hides lineage. Reconstructing the graph in the browser, loading the entire run, counting rendered nodes or duplicating the shared result viewer would create inconsistent behavior and unnecessary work.

A second hierarchy table repeats the existing group's objectives, outcomes, timing, retries, and Details. Reusing a formatter or modal is not sufficient deduplication when the page still has two independent results presentations.

Additional context

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions