Report confirmed monitoring alert acknowledgments
Reviewed CI corrections — November 7
Current head: 29b82a9052995d2f5de70cbf4a384c871df5c0be. Inherited backend validation faults are corrected alongside the Admin change: resolver setup passes mandatory trusted context, the accounting module loads its already-declared mock plugin, and the existing import inventory is regenerated. The shared corrections are byte-identical to the reviewed #3430 changes. No Admin product behavior changes in this follow-up.
All 12 SQLite/PostgreSQL resolver cases and 73 combined MCP/inventory tests passed on this branch. Both changed Python files pass mypy 2.4.1 and Ruff. Independent review verified the port bytes and preserved assertions; Bandit findings match the existing test-only baseline. Earlier 29 focused Admin tests, full Admin TypeScript and ESLint evidence remain applicable.
Fresh required and advisory CI on this head is awaiting verification. Earlier CI reports below describe superseded heads. The requester's Change summary waiver remains in force. No merge or auto-merge has been requested.
Summary
The monitoring API records reading and acknowledging an alert separately. The Admin UI now keeps read-only alerts actionable and derives acknowledgment from the server's acknowledgment timestamp. The dashboard reads paginated alert lists, omits dismissed or currently snoozed items, and reports how many writes returned an acknowledgment for the requested alert. It uses the existing loading guard so the list refreshes after the action.
The shared real-backend E2E helper bootstraps a CSRF token through the public /health route, then sends the server-issued token as the matching cookie and header on seed/reset requests. This brings the validation setup into line with the backend's existing CSRF enforcement.
Verification
- 27 focused alert, dashboard and E2E-helper tests passed. Admin TypeScript and scoped ESLint passed.
- A native Node-fetch probe against an isolated full backend with synthetic databases passed seed, JWT bootstrap and reset with CSRF protection and user binding enabled. Missing CSRF tokens and an invalid support key both returned 403.
- The initial GitHub Admin unit ratchet found 40 inherited failures and zero regressions, verified against the exact base commit. Its production build passed. The real-backend setup failure exposed the missing CSRF bootstrap now corrected here.
- Independent review found no actionable issues in the helper correction. All eight protected GitHub checks on head
7e0f6d7b6616b000914310f7b08a4902e8e5315breport SUCCESS as of 12:47 UTC on November 7, including the required frontend job. - Full local browser UAT was outside this follow-up. Bandit applies to Python code; the runtime port and helper correction are TypeScript.
Task: TASK-15429. ADR required: no. The API already supplies both read and acknowledgment state.
Advisory coverage result on the superseded head (2026-11-07 UTC)
Shared-UI coverage shard 3/16 reports one failure, 1,862 passes and two skips. The existing LlamacppAdminPage test "retries asset refresh for completed downloads after a failed refresh" expected two mocked asset reads and observed one. This PR leaves the complete apps/ tree byte-identical to the exact run base 2f402bd7e34015ca6823793fd05cee68a16092b2 (tree c818e6242ee87c2e7e251541a46e286816d24571), including the component, test, dependencies and configuration. The coverage workflow is also identical (blob 297dd670ebe6c4af817bdad98d6281e18a353ee5). This is existing shared-UI coverage behavior, with no changed Admin-alerts code in that test path. The specific timing/root cause has not been diagnosed.
This advisory shard is not a dependency of the protected frontend-required job. The result above belongs to the superseded head. All eight protected checks still pass on the current head as of 14:17 UTC; advisory jobs are still running. The current-head auth shard result is documented below. This is not a claim that all CI passed. No unrelated llama.cpp code or test assertions were changed.
Required-check follow-up (November 7)
The required frontend run distinguished 40 inherited Admin unit failures and one additional AI Ops table failure. Its test waited for a static heading before synchronously querying asynchronously loaded rows. The AI Ops source and tests are byte-identical on the exact base and previous head; delaying the synthetic metrics response reproduced the same missing-row failure on both.
The follow-up changes one query to await the rendered agent rows. Both controlled base/head reproductions pass with the change, and all original names, count and price assertions remain. No production change, added retry, timeout increase or gate change. Validation: 29 focused tests, full Admin TypeScript, scoped ESLint and independent review pass. Required CI has now passed on the new head; the 40 inherited failures are not claimed fixed.
Current-head advisory auth result (November 7, 14:17 UTC)
The auth-integration-b-z shard reports 534 passes and six failures. All six are the org/team/user SQLite/PostgreSQL variants of test_vn_outer_transaction_resolves_cold_and_warm_storage_limits in test_vn_generated_file_idempotency.py.
These six failures are proven inherited: the baseline shard at ddd8731096074f17b4d32aca57696f1e18d2dad4 has the same six case names, assertion messages and 534 passes. That baseline and the exact run base 2f402bd7e34015ca6823793fd05cee68a16092b2 have the identical complete Git tree 688e7bf3bb327d31bcec822703064a4ac5fa67e1. The entire backend source/tests tree, root conftest, pyproject, GitHub configuration and helper scripts are identical between this PR head and its exact base. No Admin-alert regression is demonstrated by this shard.
This job does not show the additional database teardown or fatal pytest GC errors seen on #3428. No unrelated backend repair or deterministic baseline retry was made. Required checks remain successful; the remaining advisory jobs are still pending, so this is not a claim that all CI passed.
Requester Change summary exception
The requester explicitly waived the human-written Change summary requirement for PRs #3428, #3429, #3430 and #3431 in the CI follow-up chat, answering “waived” on November 6, 2026 (Pacific). Required checks and review still apply.
Summary by cubic
Reports confirmed monitoring alert acknowledgments on the dashboard and repairs the test infrastructure blocking CI for this PR.
- Acknowledgment state now comes from the server's
acknowledged_attimestamp, so read-only alerts stay actionable; dismissed and snoozed alerts are filtered from the list. - Bulk acknowledgment validates each write response and shows a success, partial, or failure toast based on the confirmed count, then refreshes with the shared in-flight guard.
postAdminE2EJsonnow bootstraps the server-issued CSRF token from the public/healthroute and echoes it as cookie and header, since Node fetch has no cookie jar.- The AI Ops test waits for asynchronously loaded rows instead of querying synchronously.
Migration
- Ports the independently reviewed shared fixes from TASK-15450: trusted bootstrap context for storage-resolver membership writes, module-scoped registration of the
pytest_mockplugin, and regenerated WebScraping import inventory line references.