Commit Graph

10468 Commits

Author SHA1 Message Date
pulse-triage[bot] 6570e95bdb fix(web): retain platform admission when reconnect refresh fails
A reproduced admission HTTP 503 after socket recovery removed platform destinations despite populated inventory. Retain the last valid facet on request failure, keep tenant resets and successful empty responses authoritative, and cover desktop/mobile interruption and recovery.

Change-source: pulse-maintainer
2026-09-05 05:12:58 +01:00
pulse-triage[bot] deac5e7750 Merge web cold reconnect admission repair
Change-source: pulse-maintainer
2026-09-05 04:47:35 +01:00
pulse-triage[bot] 672a497076 fix(web): preserve platform admission through cold reconnect
Keep resource snapshot receipt separate from alert hydration and tenant-scoped across reconnect. Include matching subsystem contracts, architecture coverage and fresh browser receipt.

Validation: 87 focused tests and three real-backend Chromium checks pass at 1440, 1100 and 390px. Exact release-candidate qualification remains outstanding.

Change-source: pulse-maintainer
2026-09-05 04:43:43 +01:00
pulse-triage[bot] ec462ad964 fix(release): inspect convergence logs through safe Actions reader
Scheduled reconciliation fails when gh api refuses ANSI-bearing Actions logs. Use the dedicated sanitising log reader without disabling terminal protection, preserving private authentication and fail-closed evidence handling. Focused reconciliation and policy tests pass; a read-only live job probe retains failure evidence without ESC bytes.

Change-source: pulse-maintainer
2026-09-05 04:32:38 +01:00
pulse-triage[bot] 193ead50fd Merge monitoring webhook identity regression coverage
Change-source: pulse-maintainer
2026-09-05 04:11:50 +01:00
pulse-triage[bot] 41a4563675 Merge web reconnect navigation regression coverage
Change-source: pulse-maintainer
2026-09-05 04:11:50 +01:00
pulse-triage[bot] acc1f43aaf test(monitoring): verify firing and recovery webhook identity
The powered-off recovery integration test previously discarded the firing payload, so it could pass even when the initial delivery named the wrong incident. Assert the grouped firing envelope contains exactly the active alert before checking recovery identity through the real loopback HTTP receiver.

Change-source: pulse-maintainer
2026-09-05 04:03:33 +01:00
pulse-triage[bot] ae954f776a test(web): guard navigation continuity during sync reconnects
Issue #1899 reports navigation disappearing when backend health changes to sync reconnecting on v6.4.1. Protect the isolated shell transition with stable link, label, icon and focus assertions rather than assuming the badge unit test covers navigation. This does not reproduce the reporter's browser or socket environment and makes no production fix claim.

Validation: AppLayout, useAppRuntimeState and ConnectionStatusBadge focused suites pass 46 tests. Temporarily hiding desktop navigation during sync reconnecting makes the new test fail; the mutation was restored and the suites rerun successfully.
Change-source: pulse-maintainer
2026-09-05 04:03:21 +01:00
pulse-triage[bot] fb9e4335e1 fix(ci): keep stable install smoke within caller permissions
Stable continuity run 33592377446 was rejected before any job ran: its read-only caller invoked a reusable job requesting contents:write. Extract the unchanged smoke execution into a body that inherits the caller budget, keeping the existing draft-capable entry point and its write-level draft GET access. Continuity now calls the shared body directly without broadening its token. Pin the permission boundary in regression coverage; do not relax immutable-release admission.

Change-source: pulse-maintainer
2026-09-05 04:02:24 +01:00
pulse-triage[bot] d60da624c8 test(web): qualify mobile alert focus return in Chromium and WebKit
The integrated removed-row focus repair had only jsdom coverage. Exercise populated Timeline and Resource dialogs with production styles in two browser engines so focus trapping, dismissal and fallback regressions are observable without live credentials or customer data. This is synthetic component qualification, not backend delivery evidence.

Change-source: pulse-maintainer
2026-09-05 03:44:17 +01:00
pulse-triage[bot] 99cc7f9e1a Merge mobile alert history focus regression coverage
Integrate the reviewed test-only guard for list focus when a refresh removes the investigated row.

Change-source: pulse-maintainer
2026-09-05 03:38:52 +01:00
pulse-triage[bot] 1be404f2d4 test(web): protect mobile history focus after row removal
History refreshes or filter changes can remove the card that opened an investigation. Cover the existing list-focus fallback so closing the dialog does not strand keyboard focus on the document body. Removing that fallback fails only the new test; all four tests pass after restoration.

Change-source: pulse-maintainer
2026-09-05 03:35:58 +01:00
pulse-triage[bot] a0211b8242 fix(hostmetrics): skip disk probes for cancelled collections
An already-cancelled collector could still admit a filesystem syscall which ignores cancellation and blocks indefinitely. Reject expired contexts before registering work while retaining shared in-flight probes. The new regression test reproduces one unwanted probe before this fix; focused collector and guarded-probe tests pass ten repeats under the race detector.

Change-source: pulse-maintainer
2026-09-05 03:35:35 +01:00
pulse-triage[bot] 2841339e9e Merge core runtime disk probe registry optimization
Integrate the reviewed allocation reduction while preserving shared stuck-mount protection and its focused concurrency coverage.

Change-source: pulse-maintainer
2026-09-05 03:25:39 +01:00
pulse-triage[bot] 38e1a116b6 Merge active-incident TrueNAS recovery regression coverage
Change-source: pulse-maintainer
2026-09-05 03:21:46 +01:00
pulse-triage[bot] 5bb1cc75ec Merge batch-start upstream main frontier
Change-source: pulse-maintainer
2026-09-05 03:21:46 +01:00
pulse-triage[bot] 1989ba5187 perf(hostmetrics): reduce shared disk probe registry allocations
Shared probes prevent overlapping collectors from stacking blocked statfs calls, but their short-lived sync.Map entries added measured collection overhead. Use a mutex-protected typed map and allocate only for the owning caller, retaining deadlines, result publication and one in-flight syscall per mount.

The paired filtering benchmark drops from 244 to 206 allocations and 21345 to 20129 bytes per operation. Five hostmetrics package repeats pass under the race detector, including new concurrent healthy-mount coverage. This is local mocked-collection evidence, not release or real-mount qualification.

Change-source: pulse-maintainer
2026-09-05 03:21:07 +01:00
pulse-triage[bot] 0af72aa112 test(web): cover TrueNAS recovery with another incident active
The existing recovery test empties the whole table, which can mask stale expanded detail while monitoring continues. Keep a second disk incident active and verify recovery removes only the old detail and the remaining incident opens with its own resource identity.

Change-source: pulse-maintainer
2026-09-05 03:18:20 +01:00
pulse-triage[bot] 0c3779d211 Merge pull request #1896 from rcourtman/maintainer/20260905T010422Z
Keep monitoring, alerts, and release qualification dependable
2026-09-05 02:56:14 +01:00
pulse-triage[bot] e3b308094f Merge reactive TrueNAS alert detail regression coverage
Change-source: pulse-maintainer
2026-09-05 02:52:52 +01:00
pulse-triage[bot] 55cf2e9f2f Merge provider escalation rate-limit regression coverage
Change-source: pulse-maintainer
2026-09-05 02:52:51 +01:00
pulse-triage[bot] b116d05592 test(alerts): qualify provider escalation rate limiting
The newly integrated critical-transition dispatch must retain the canonical incident notification budget. Exercise an exhausted budget through TrueNAS fixture ingestion while checking severity, identity and recovery; removing the rate-limit gate makes this case fail. Twenty focused repeats and five race repeats passed.

Change-source: pulse-maintainer
2026-09-05 02:48:59 +01:00
pulse-triage[bot] 6951a63f63 test(web): cover expanded TrueNAS alert escalation and recovery
Critical-transition backend repairs need a UI regression check: an already-open incident must show the new severity without losing resource identity, then clear on recovery. Add reactive component coverage without changing product behaviour.

Change-source: pulse-maintainer
2026-09-05 02:48:36 +01:00
pulse-triage[bot] 14dd276c76 Merge provider incident critical transition notification
Change-source: pulse-maintainer
2026-09-05 02:37:34 +01:00
pulse-triage[bot] 4752d5b4b7 fix(alerts): notify when provider incidents become critical
A TrueNAS WARNING progressing to EMERGENCY updated the live severity but never dispatched the critical transition. Bring provider incidents into line with metric critical re-notification using the existing rate-limit and delivery policy gates, without replacing lifecycle identity.

Add fixture-to-manager coverage for escalation, unchanged observations, downgrade, acknowledgement suppression and confirmed recovery. The new active transition case failed before the fix (one callback instead of two). TrueNAS tests passed 20 repeats and five race repeats; alerts and truenas package suites passed. External appliance and transport receipt remain unverified.

Change-source: pulse-maintainer
2026-09-05 02:33:42 +01:00
pulse-triage[bot] 11c573ea03 docs(web): distinguish refresh qualification from CI gates
Green aggregate checks do not prove the standalone backup runners executed, and the related integration spec is non-gating probation coverage. Document the evidence boundary so release review does not mistake existing checks or retained samples for exact-revision refresh qualification.

Change-source: pulse-maintainer
2026-09-05 02:29:06 +01:00
pulse-triage[bot] a3a8f0bf36 Merge TrueNAS emergency alert retention
Change-source: pulse-maintainer
2026-09-05 02:17:19 +01:00
pulse-triage[bot] 8433ea426c Merge web application refresh qualification
Change-source: pulse-maintainer
2026-09-05 02:13:05 +01:00
pulse-triage[bot] 65a024b3d3 fix(truenas): retain emergency alerts in incident delivery
TrueNAS documents EMERGENCY above ALERT, but native projection rejected it as an unknown level. Reproduced zero incidents and zero notification callbacks for this severity while the other six documented levels passed. Map it to critical so the most severe native condition is not silently omitted or mistaken for recovery.\n\nCover all seven native severity mappings, synchronous dispatch and confirmed recovery callbacks, and retention across repeated EMERGENCY observations. The two affected package suites and focused race checks pass; appliance and real notification-provider receipt remain unqualified.

Change-source: pulse-maintainer
2026-09-05 02:10:51 +01:00
pulse-triage[bot] c180d5f47d Merge core runtime TrueNAS lifecycle regression coverage
Change-source: pulse-maintainer
2026-09-05 01:56:37 +01:00
pulse-triage[bot] abff834d80 test(web): qualify backup refresh through application boundaries
The isolated Coverage fixture cannot establish whether resource-provider and WebSocket replacement preserves application interaction in issue #1869. Exercise the actual shell, scoped paginated resources, windowed Coverage and By date, and the real PBS History drawer with synthetic snapshots. Retain desktop and narrow evidence without claiming a deployed-release or Brave fix.

Change-source: pulse-maintainer
2026-09-05 01:55:54 +01:00
pulse-triage[bot] da9b321961 Merge delivery trust publication-clock fix
Preserve the reviewed release resolver commit while combining it with the later TrueNAS NOTICE integration on main.

Change-source: pulse-maintainer
2026-09-05 01:52:29 +01:00
pulse-triage[bot] 62c66d2a48 test(alerts): cover TrueNAS escalation and interrupted recovery
The INFO and NOTICE repairs need lifecycle coverage beyond isolated severity transitions. Verify that escalation retains identity and that renewed actionable evidence interrupts recovery, preventing a later single INFO observation from clearing the incident.

Change-source: pulse-maintainer
2026-09-05 01:52:14 +01:00
pulse-triage[bot] 7db3192a3f fix(release): measure candidate soak from release publication
Git tag creation can precede candidate publication, allowing stable promotion before the required observation period. Read the exact published prerelease and fail closed when publication evidence is unavailable. Cover repaired-candidate minor and patch boundaries.

Change-source: pulse-maintainer
2026-09-05 01:47:12 +01:00
pulse-triage[bot] fe8d7ed8ce Merge core runtime TrueNAS NOTICE correction
Change-source: pulse-maintainer
2026-09-05 01:45:34 +01:00
pulse-triage[bot] ff1d010dd9 fix(alerts): preserve actionable TrueNAS NOTICE incidents
The INFO noise repair also suppressed NOTICE because both native levels map to monitor risk. TrueNAS documents NOTICE as notification-worthy. Retain native severity so NOTICE stays actionable without inflating its canonical severity; INFO suppression and confirmed recovery remain intact.

A native-projection regression fails with the blanket filter and passes with the correction. Affected TrueNAS, unified resources, alerts and incident-memory package tests pass.

Change-source: pulse-maintainer
2026-09-05 01:40:34 +01:00
pulse-triage[bot] 0c4486102e Merge commit 'ac8172c42c2ded7ae242d2beca04a0e034b04f8e'
Change-source: pulse-maintainer
2026-09-05 01:39:24 +01:00
pulse-triage[bot] ac8172c42c Preserve backup coverage row focus across polling snapshots
Reconcile coverage rows by logical keys before windowing. Isolated Chromium checks at desktop and narrow widths preserve keyboard focus, expanded evidence, route and scroll across replacement HTTP snapshots. Include subsystem completion obligations and a content-bound browser receipt.

Does not qualify the full application scroll-jump report in #1869 or reporter resolution.

Change-source: pulse-maintainer
2026-09-05 01:33:47 +01:00
pulse-triage[bot] 7726539f83 fix(alerts): keep TrueNAS information out of actionable incidents
Issue #1892 reports successful replication information requiring acknowledgement. Preserve provider information on resources while excluding TrueNAS INFO-level conditions from active alert synchronisation. Warning conditions still activate and clear when downgraded to information.

Resource-incident timeline events contain numeric placeholders, not threshold evidence. Avoid displaying these as a fictitious 0 >= 0 trigger while retaining numeric metric formatting. Focused regressions reproduce both failures and pass with these changes.

Change-source: pulse-maintainer
2026-09-05 01:27:10 +01:00
pulse-triage[bot] 3c5d426543 Merge core runtime TrueNAS replication outcome fix
Change-source: pulse-maintainer
2026-09-05 01:13:40 +01:00
pulse-triage[bot] 62c6e07477 fix(truenas): recognise finished replication outcomes (#1892)
TrueNAS emits FINISHED for successful replication, but the recovery mapper treated it as unknown. Recognise that provider state while preserving error precedence and the missing-run guard; add regression coverage reproducing the reported outcome.

Change-source: pulse-maintainer
2026-09-05 01:07:18 +01:00
pulse-triage[bot] ddea7cd0bf Guard expanded backup evidence across workload polling
Issue #1869 reports views resetting during refresh. Exercise the mounted backup coverage view through three replacement workload snapshots so losing expanded restore evidence is caught before release. Confirm each refreshed workload name renders to exclude stale-state false positives.

Contract-Neutral: regression coverage only; no runtime or API changes.

Change-source: pulse-maintainer
2026-09-05 01:06:14 +01:00
pulse-triage[bot] e2e2990550 Guard authentication strategy selection across polling
Exercise the mounted credential slot through repeated snapshots and a different edit target. A mutation that stops marking strategy selections dirty fails the new regression test.

Contract-Neutral: regression coverage only; no runtime or API changes

Change-source: pulse-maintainer
2026-09-04 23:58:11 +01:00
pulse-triage[bot] bebe9b5df5 Merge core runtime Unraid pool-only alert fix
Change-source: pulse-maintainer
2026-09-04 23:50:24 +01:00
pulse-triage[bot] 3334cccfd9 fix(unraid): suppress parity warning for explicit pool-only arrays
Issue #1895 reports parity alerts when mdNumDisks=0 on a pool-only Unraid system. Array service state alone does not establish that a parity array exists.

Preserve the optional disk count from collection through canonical runtime conversion and suppress only the no-parity warning for an explicit zero. Missing or malformed counts retain legacy behaviour, and disk failure reasons remain active.

Validated focused Unraid tests in hostagent, storagehealth, monitoring, unifiedresources and alerts, including JSON zero preservation and canonical round trip. The new pool-only regression fails against the previous warning condition. Both agent and server need this change; no release or reporter retest is claimed.

Change-source: pulse-maintainer
2026-09-04 23:41:22 +01:00
pulse-triage[bot] d0df71fc4a Guard unsaved connection edits against polling regressions
Exercise the NodeCredentialSlot dirty-edit path across repeated server snapshots and verify Save retains operator values and the current edit target. Removing the dirty guard reproduces the failure.

Contract-Neutral: regression coverage only; no runtime or API changes

Change-source: pulse-maintainer
2026-09-04 23:18:48 +01:00
pulse-triage[bot] 3461c6cbd8 Deduplicate concurrent host mount usage probes
Host and Docker collectors can enter the same mount probe before either timeout expires. Register the in-flight call atomically and share its result and deadline so a blocked syscall cannot accumulate duplicate workers. Preserve the guard until the syscall returns even when a waiter is cancelled.

Change-source: pulse-maintainer
2026-09-04 22:58:19 +01:00
pulse-triage[bot] e7077fb06a Merge delivery trust installer ownership fix
Change-source: pulse-maintainer
2026-09-04 22:35:35 +01:00
pulse-triage[bot] 19c2b6a925 Fix portable root ownership for installer lifecycle state
Issue #1890 reports macOS agent updates stopping because the root group does not exist. Use numeric superuser ownership in the two shared lifecycle writes without relaxing failure handling or the least-privilege group boundary. Add a regression fixture that rejects named root ownership and checks that chown failures still prevent replacement.

Change-source: pulse-maintainer
2026-09-04 22:33:08 +01:00
pulse-triage[bot] 0f972f42f2 Isolate host and Docker CPU sampling baselines (#1894)
Near-synchronous host and Docker reports consumed a shared CPU baseline, measuring collection bursts rather than each module's reporting interval. Retain a collector per host collector and a separate Docker module collector while preserving the package-level convenience API and disk filters.

Add an interleaved-counter regression covering both collection entry points. It fails when routed through the shared baseline and passes with isolated state. All hostmetrics, hostagent and dockeragent tests pass, as do the focused CPU regression tests under the race detector.

Change-source: pulse-maintainer
2026-09-04 22:29:32 +01:00