You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Maintainer-owned: This issue is intentionally labeled not ready yet. Please leave implementation to a PyRIT maintainer unless a maintainer explicitly assigns or approves the work.
Describe the bug
A failure from the initializer catalog endpoint (GET /api/initializers) causes the page to report both Baseline initializers and Additional initializers as empty, even when GET /api/initializers/settings succeeds and returns valid saved settings.
This presents a transient catalog outage as a configuration state change. A user can no longer inspect the initializers that are actually configured and may conclude that startup or saved configuration was lost. Severity: moderate because the UI gives a materially false account of persisted state until recovery.
Steps/Code to Reproduce
Configure one baseline initializer and one additional refresh_datasets initializer with days set to 14.
Open the Initializers page and confirm both cards are visible.
Make GET /api/initializers return HTTP 503 with a synthetic catalog error while allowing GET /api/initializers/settings to return the valid settings.
Choose Refresh.
Observe the catalog error alert and the two empty-state messages: No baseline initializers are configured and No additional initializers are configured.
Restore the catalog response and choose Refresh again.
Observe that the same baseline and additional settings reappear without being recreated.
# N/A - GUI-only reproduction; no Python code is required.
Expected Results
The page should distinguish catalog availability from saved configuration. It should continue rendering settings returned by the settings endpoint, or preserve the last known settings with a clear stale/error state, rather than claiming that both sections are empty.
Actual Results
One catalog request failure clears both rendered sections and replaces valid settings with false empty-state messages. The add controls are also unavailable. A subsequent successful refresh restores the unchanged settings, demonstrating that no configuration was actually removed. The reproduction used only a synthetic local HTTP 503 response.
Screenshots
Sanitized before/recovery screenshots and WebM evidence, showing only the application viewport and synthetic values/errors, are attached in the evidence comment below.
Important
Maintainer-owned: This issue is intentionally labeled
not ready yet. Please leave implementation to a PyRIT maintainer unless a maintainer explicitly assigns or approves the work.Describe the bug
A failure from the initializer catalog endpoint (
GET /api/initializers) causes the page to report both Baseline initializers and Additional initializers as empty, even whenGET /api/initializers/settingssucceeds and returns valid saved settings.This presents a transient catalog outage as a configuration state change. A user can no longer inspect the initializers that are actually configured and may conclude that startup or saved configuration was lost. Severity: moderate because the UI gives a materially false account of persisted state until recovery.
Steps/Code to Reproduce
refresh_datasetsinitializer withdaysset to14.GET /api/initializersreturn HTTP 503 with a synthetic catalog error while allowingGET /api/initializers/settingsto return the valid settings.# N/A - GUI-only reproduction; no Python code is required.Expected Results
The page should distinguish catalog availability from saved configuration. It should continue rendering settings returned by the settings endpoint, or preserve the last known settings with a clear stale/error state, rather than claiming that both sections are empty.
Actual Results
One catalog request failure clears both rendered sections and replaces valid settings with false empty-state messages. The add controls are also unavailable. A subsequent successful refresh restores the unchanged settings, demonstrating that no configuration was actually removed. The reproduction used only a synthetic local HTTP 503 response.
Screenshots
Sanitized before/recovery screenshots and WebM evidence, showing only the application viewport and synthetic values/errors, are attached in the evidence comment below.
Versions
3dd9946ee4ef08a2048c64ff4b29d3a856a8068e@playwright/test1.62.0)pyrit.show_versions(): N/A for this frontend-only reproduction