Add live Scenario progress - #2374
Conversation
58c5c56 to
4337415
Compare
4337415 to
80a40b7
Compare
80a40b7 to
7fddb1d
Compare
7fddb1d to
e43a331
Compare
e43a331 to
9d55233
Compare
2fd41d4 to
b6ea257
Compare
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 5d02c2d5-b499-4f78-a04d-03bffa750817
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
b6ea257 to
cda766e
Compare
Behnam (behnam-o)
left a comment
There was a problem hiding this comment.
This PR should be scoped to the frontend live-progress experience; no changes under /pyrit are needed here. The progress and cancellation backend APIs come from earlier stack layers, ScenarioRunPlanGroupKind is only consumed by #2378, and the dataset-size override contract is first consumed by #2377. Moving those backend changes to their corresponding follow-up PRs would keep this layer focused and independently reviewable.
| SCENARIO_RUN_PLAN_VERSION = 1 | ||
|
|
||
|
|
||
| class ScenarioRunPlanGroupKind(str, Enum): |
There was a problem hiding this comment.
Could we move this enum and group_kind field to the later PR that actually introduces multiple group kinds? In this PR the enum has only ATTACK, and the field is only persisted—not consumed—so it adds a discriminator without distinguishing anything. If this needs to land here for forward compatibility with the stacked changes, it would help to include the upcoming values or otherwise make that dependency explicit.
| #: caller-supplied ``include_baseline=True`` raises ``ValueError``. | ||
| BASELINE_ATTACK_POLICY: ClassVar[BaselineAttackPolicy] = BaselineAttackPolicy.Enabled | ||
|
|
||
| #: Whether the default estimator must mirror matrix-builder seed compatibility. |
There was a problem hiding this comment.
Could we move this dataset-sizing contract to #2377, where it is first consumed? The live-progress work in this PR does not use DATASET_SIZE_LIMIT_OVERRIDE_SCOPE or get_dataset_size_limit_override_scope; #2377 wires it into the scenario registry and adds the scenario-specific overrides. Keeping it there would make this PR frontend-only and keep the backend sizing change with its actual behavior.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 5ece2d4e-f111-4a4a-80ba-39a59edd1298
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 5ece2d4e-f111-4a4a-80ba-39a59edd1298
Summary
Adds the live run dashboard with incremental polling, active/completed/pending attack groups, outcome accounting, elapsed time, ETA, cancellation, and result navigation. Progress cursors are isolated per run so route changes cannot reuse another run's opaque cursor.
What this layer adds
Preview
Stack
This is 3 of 7 in native GitHub Stack #2390 and depends on #2373.
See the full implementation, screenshots, walkthrough, validation, and operational notes.
Validation