Page body
What this page shows
Control Verification is the operator-facing monitoring page for system integrity checks.
It combines:
- historical verification runs
- compliance-style summary cards
- manual verification trigger
- baseline management in the detail dialog
- component-level comparison against the previous successful verification
When to use it
- confirm that automatic verification is still running within the expected daily cadence
- review recent failures or partial verification runs
- inspect which components failed and whether any critical areas were affected
- trigger a manual verification before or after sensitive infrastructure changes
- mark one successful run as the current trusted baseline
How to read it
The visible summary cards are backend-owned aggregates:
Total Verificationscounts runs from the last 90 daysAvg Execution Timeis the rounded average runtime of non-null executions from the last 30 daysCritical Failurescounts recent runs where the critical-components array is not emptyRecent Failurescountsfailureandpartialruns from the last 24 hours
These cards come from a separate statistics endpoint and do not follow the table filters below.
The current UI subtitle under Recent Failures says Last 7 days, but the traced backend
query is a 24-hour query.
The page also uses backend statistics to show operational alerts:
Automatic Verification Not Runningappears when no automatic run exists in the last 24 hoursCompliance Alertrepeats the same 24-hour automatic-verification failure below the cardsCritical Components Failedappears when the 30-day critical-failure count is greater than zerosuccessRate,lastVerification, andcomplianceScoreare returned by the statistics endpoint but are not rendered as cards on this page
The main table is the audit log for individual runs. Each row shows:
- when the run happened
- whether it was
automatic,manual,on-demand, orinstallation - whether the run ended in
success,failure, orpartial - how many components were valid
- who initiated the run
- whether critical impact was recorded
View Details opens the comparison dialog. That dialog is where operators:
- inspect component results by service area
- compare against the previous successful verification
- set the current successful run as the verified baseline
- remove the verified baseline
- run a local manual file-verification checklist before setting a baseline
- export the selected detail view as browser-generated PDF, JSON, or CSV
Filters that change the result
Start Date, default empty, maximum current dateEnd Date, default empty, maximum current date and minimum equal to selectedStart DateVerification Type, defaultAll Types, optionsAutomatic (24h),Manual,On-Demand,InstallationStatus, defaultAll Status, optionsSuccess,Failure,PartialSearch, placeholderSearch by component, hash, or user...Show Critical Failures Only, default off- table page, default
0 - rows per page, default
25, options10,25,50,100 - sort field, default
created_at - sort order, default
desc
Action and filter behavior
- The filter accordion uses mostly live-bound controls. Changing dates, type, status, or
Show critical onlyimmediately updates the logs query. Searchschedules the logs query after 500ms, but the current handler does not cancel prior timers, so rapid typing can still send several delayed searches.Refreshre-fetches the current logs query and the separate summary-statistics endpoint. It does not commit a second hidden filter state.Clear Filtersresets dates, type, status, search, critical-only toggle, page, page size, and default sorting.Export Reportis a CSV-only page action. The button enables when at least one filter is active, but the current FE call passes onlystartDateandendDateinto the export request.Trigger Manual Verificationposts the fixed reasonManual trigger from dashboard, then refreshes the table/statistics immediately and again through the hook's delayed mutation.- The logs and statistics SWR hooks already poll every 30 seconds; the page also has its own 30-second interval calling
refetch().
Detail dialog behavior
The detail dialog has three tabs:
Components (N): grouped component list with category expansion, current hash, optional previous hash, optional verified baseline hash, andChangedstatus chipsFailed (N): failed-component list with expected hash, actual hash, and impact chipActions & Metadata: persisted action text, gaming-stopped alert, verification id, algorithm, IP address, expiry date, and raw metadata JSON
The dialog comparison model is:
- previous successful verification is loaded from
/logs/:verificationId?includePrevious=true - verified baseline is loaded separately from
/baseline - when a verified baseline exists, the dialog recalculates visible pass/fail counts by comparing current component hashes with the baseline component hashes
- new components without a baseline hash are treated as passing when the current component itself is valid
- hash display is truncated by default and can be expanded with
Show Full Hashes
Manual file verification is a local operator checklist inside the dialog. It lets the operator
check individual files or categories before opening Confirm Verification Baseline; it does not
persist per-file checklist state to the backend. The backend only receives the selected
verificationId and verifiedBy.
Why this page can differ from other monitoring screens
This page is not a generic uptime dashboard. It is built from stored verification logs in
gs-admin-backend, while the actual verification chain also includes the local admin
system-core hash collection, a casino-services verification hop that reaches
gs-casino-backend, and the nx-workspace/services/core verification endpoint. The page
therefore reflects the persisted audit result of the verification workflow, not a live
polling view of each service.
Known caveats
- Search is backend-owned and matches verification id, master hash, initiator, and serialized invalid-component text. It is broader than the placeholder wording suggests.
Recent Failureshas a visibleLast 7 dayssubtitle, but the backend formula is last 24 hours.Export Reporton the page only threads the date range into the export request. Type, status, search, critical-only, pagination, and sort state are not reflected in the current export call.- The visible summary cards are global statistics from
/statistics; they do not recalculate when the table filters are narrowed. Set baselineis only valid for successful runs. Failed or partial runs cannot become the trusted baseline.- Detail comparisons use the stored verified baseline when one exists and also show the previous successful verification as historical context.
- Detail PDF/JSON/CSV exports are generated from loaded dialog data in the browser, not by the backend export route.
Verification status
- status:
verified_backend_and_core - FE route, filters, summary cards, table, and detail dialog are mapped
gs-admin-backendowns the audit log, statistics, baseline actions, and export flowgs-casino-backendparticipates in the manual verification fan-outnx-workspace/services/coreis part of the verification chain and appears in component comparison data