4688 Commits

Author SHA1 Message Date
pulse-triage[bot] cbf995df5e style(web): format app architecture and layout tests
The whole-tree frontend formatting gate blocks PR #2005 on these two tests. Apply the locked Prettier output without changing assertions or production code; the formatting check and all 56 focused tests pass.

Contract-Neutral: formatting-only test changes; runtime behaviour and assertions unchanged.
Change-source: pulse-maintainer
2026-09-09 13:17:03 +01:00
pulse-triage[bot] 6cddb75fb1 fix(web): wrap entitled organization header on compact screens
Activate the offline default context before mobile organization audits. Preserve visible session controls without page overflow, with real-backend Chromium and WebKit proof.

Change-source: pulse-maintainer
2026-09-09 11:42:59 +01:00
pulse-triage[bot] a98f1bdee2 docs: sync Proxmox update guidance to shipped help
The public troubleshooting source and the in-product copy must remain identical so operators receive the same least-privilege guidance from either surface.

Change-source: pulse-maintainer
2026-09-09 01:17:58 +01:00
pulse-triage[bot] b825735173 style(web): format webhook parity regression
Preserve both accepted candidate changes while satisfying the repository's Prettier check on the newly added regression.

Change-source: pulse-maintainer
2026-09-08 23:50:18 +01:00
pulse-triage[bot] ff34fa42de Merge candidate 20260908T222519Z-web-product
Change-source: pulse-maintainer
2026-09-08 23:48:43 +01:00
pulse-triage[bot] 15000f0a67 fix(security): upgrade frontend test tooling past new advisories
Use patched Vitest/coverage 4.1.11 and js-yaml 4.3.2. Adapt constructor mocks, callable mock types and explicit call-history cleanup for Vitest 4 without weakening assertions or audit gates.

Change-source: pulse-maintainer
2026-09-08 23:32:21 +01:00
pulse-triage[bot] 7de1195416 fix(web): align webhook test custom fields with saved configuration
Manually entered Pushover aliases were normalised on save but not on test, so the test could exercise a different payload. Apply the same normalisation and retain a failing-before parity regression; 56 focused webhook tests pass.

Change-source: pulse-maintainer
2026-09-08 23:29:31 +01:00
pulse-triage[bot] 6f3547bc5f test(web): trace agent-only NAS through Proxmox table projection
The new #1930 payload has agent and Docker sources without cluster metadata. Retain a sanitised API-to-table boundary test alongside a real PVE-shaped neighbour to distinguish that evidence from the earlier screenshot; this is diagnostic coverage, not a reproduced reporter fix.

Change-source: pulse-maintainer
2026-09-08 23:02:25 +01:00
pulse-triage[bot] 6edaa56f4f fix(web): avoid prescribing permissions from update access failures
The update evidence reason represents generic permission errors and HTTP 403, not a verified missing Sys.Audit privilege. Report access denial without prescribing a role change, as illustrated by the new #1802 retest. Preserve unavailable and stale evidence semantics. Both focused presentation and drawer suites pass (6 tests).

Change-source: pulse-maintainer
2026-09-08 21:59:40 +01:00
pulse-triage[bot] 327b333a39 style(web): format destination server guidance
Apply the repository formatter to the newly added server-error guidance so the required frontend check can validate the integrated batch.

Change-source: pulse-maintainer
2026-09-08 13:23:10 +01:00
pulse-triage[bot] 5a342cc2d9 Merge upstream Pulse main before publication
Change-source: pulse-maintainer
2026-09-08 13:05:32 +01:00
pulse-triage[bot] 6988e486f2 fix(web): identify notification destination server failures
The queue and health API expose server_error, but the delivery UI treated it as unclassified. Preserve that diagnosis and direct operators to service availability and server logs before retrying retained deliveries. Add focused label and health guidance regression coverage.

Change-source: pulse-maintainer
2026-09-08 12:54:21 +01:00
rcourtman 64da0d7db7 docs: explain release channels and qualification
Give users a public account of beta, RC and stable expectations so they can
choose an update channel and understand how releases earn promotion.
Document fixed candidates, observation periods and rollback guidance, with
links from the main documentation entry points and matching shipped docs.
2026-09-08 12:51:15 +01:00
rcourtman 39c090cfea Document standing maintainer reply and release authority
Align the public transparency page and shipped copy with the standing
publication and issue-reply grant. Keep ownership, qualification and
verification responsibilities explicit.
2026-09-08 10:00:11 +01:00
pulse-triage[bot] daa471edf3 test(web): verify incident convergence after native tab suspension
The verified headed-tab control previously stopped at blank-page lifecycle evidence. Apply the same single-session mechanism to the production incident hook and panel with bounded synthetic HTTP responses, preserving the failed same-URL fixture attempt and separating this result from installed release qualification.

Change-source: pulse-maintainer
2026-09-08 08:23:44 +01:00
pulse-triage[bot] 15b3deff9f test(web): establish native tab lifecycle positive control
Bare Xvfb window bounds requests never established native backgrounding. Use an owned second tab and verify background/foreground states before suspension so future convergence checks do not mistake protocol acknowledgement for visibility evidence. Preserve earlier adverse controls and separate this passing diagnostic from application and installed-release acceptance.

Change-source: pulse-maintainer
2026-09-08 08:01:53 +01:00
pulse-triage[bot] ad8f7af6c1 test(web): record headed lifecycle activation control
Add an opt-in owned-X-display diagnostic with window restoration and bounded foreground observations. Preserve the failed bare-Xvfb result: resumed timers do not establish restored visibility or Pulse convergence.

Change-source: pulse-maintainer
2026-09-08 07:52:15 +01:00
pulse-triage[bot] 73fd4da42f test(web): retain failed foreground activation control
A successful lifecycle resume leaves the diagnostic target hidden. Add an opt-in tab activation observation with explicit visibility and focus assertions so it cannot be mistaken for foreground convergence. Preserve both failed runs and the short timer-sampling limitation; no application or release qualification is claimed.

Change-source: pulse-maintainer
2026-09-08 07:41:45 +01:00
pulse-triage[bot] 90ff4e0b17 test(web): establish single-session browser freeze control
Compare forced focus with an independent unforced target using one CDP owner. Retain observed timer suspension and prior adverse evidence without claiming installed incident recovery.

Change-source: pulse-maintainer
2026-09-08 07:12:46 +01:00
pulse-triage[bot] 3e4b0b1370 Merge candidate 20260908T060013Z-delivery-trust
Integrate the reviewed installed-acceptance identity correction on the combined Pulse state without re-parenting the exact candidate.

Change-source: pulse-maintainer
2026-09-08 07:05:55 +01:00
pulse-triage[bot] 8e4c668105 docs(delivery): resolve acceptance identity from selected packet
Remove the superseded beta preparation SHA from the reusable installed checklist. Require a retained steward or active packet identity and keep superseded observations separate.

Contract-Neutral: acceptance evidence guidance only; no runtime or release policy changes.

Change-source: pulse-maintainer
2026-09-08 07:01:31 +01:00
pulse-triage[bot] 4caca9c12e test(web): retain failing browser suspension control diagnostic
The previous fresh-session focus intervention did not suspend timers. Preserve a bounded true-to-false comparison and its adverse result so acknowledged CDP commands cannot be mistaken for lifecycle or Pulse recovery proof. This diagnostic is deliberately outside CI and release qualification.

Change-source: pulse-maintainer
2026-09-08 07:00:33 +01:00
pulse-triage[bot] 6b6fea4a69 docs(web): scope alert recurrence acceptance by installed identity
The successor release changes occurrence history, while existing browser guidance covers backup refresh. Separate installed recurrence receipts from main-only spoken-feedback checks to avoid qualifying a different payload with local DOM evidence.

Change-source: pulse-maintainer
2026-09-08 05:21:46 +01:00
pulse-triage[bot] 8b1e901f83 test(alerts): satisfy incident fixture types
The integrated retry test used incomplete structural casts that the full frontend type-check rejected. Mark the intentional hook subset adaptation explicitly and provide every required incident identity field without changing runtime behavior.\n\nChange-source: pulse-maintainer

Change-source: pulse-maintainer
2026-09-08 05:11:21 +01:00
pulse-triage[bot] 90d37f2b36 test(alerts): cover failed resume rollback and retry
Alert suppression must remain truthful when resuming notifications fails. Exercise a reactive shared alert store for acknowledged and open alerts, asserting rollback, pending-state cleanup, no false success and a successful retry.

Change-source: pulse-maintainer
2026-09-08 04:21:55 +01:00
pulse-triage[bot] 45e0170f77 test(alerts): exercise history retry inside mobile drawer
Run the existing real-hook retry lifecycle through both inline and mobile investigation containers. Preserve cached-history and error-state assertions across drawer composition without changing product scope.

Change-source: pulse-maintainer
2026-09-08 03:56:40 +01:00
pulse-triage[bot] 6c91bedbb7 style(alerts): format incident retry coverage
Apply the repository Prettier layout to the integrated lifecycle test so frontend formatting checks accept the new coverage without changing its behavior.

Change-source: pulse-maintainer
2026-09-08 03:52:46 +01:00
pulse-triage[bot] b4748e3814 test(alerts): verify integrated incident history retry lifecycle
The merged panel now consumes the real request error state, but its existing failure test only toggles a mock. Exercise the hook and Refresh button together so failed reads cannot masquerade as empty history and cached evidence survives a failed refresh.

Change-source: pulse-maintainer
2026-09-08 03:47:41 +01:00
pulse-triage[bot] f526f72c21 Merge candidate 20260908T021505Z-web-product
Change-source: pulse-maintainer

# Conflicts:
#	docs/release-control/v6/internal/subsystems/alerts.md
#	docs/release-control/v6/internal/subsystems/frontend-primitives.md
#	frontend-modern/browser-verification.json
#	scripts/check-incident-request-ownership.mjs
2026-09-08 03:36:54 +01:00
pulse-triage[bot] a222424c63 Merge current upstream incident history before publication
Incorporate protected PR #1973 while preserving every reviewed local alert and notification commit in history. Reconcile its failed-read state with per-request ownership and retain exact combined browser evidence.

Change-source: pulse-maintainer
2026-09-08 03:21:41 +01:00
pulse-triage[bot] 7a915017d4 fix(alerts): preserve request ownership in incident error state
PR #1973 introduced resource incident error state independently of the request lifecycle repair. Reconcile its state with this branch's ownership guards so superseded or disposed reads cannot report a false current failure. Reset clears errors and retry preserves cached history while clearing the failure indicator.

Extend lifecycle assertions for error ownership, retry and superseded success after a current failure. Focused incident hook and panel tests pass: 3 files, 17 tests. Full merged UI browser acceptance remains separate.

Change-source: pulse-maintainer
2026-09-08 03:19:57 +01:00
pulse-triage[bot] 701362ac25 style(alerts): format incident timeline regression
Apply the repository's Prettier layout to the recurring incident timeline test so the required frontend check can execute the already-reviewed regression coverage. No test semantics change.

Change-source: pulse-maintainer
2026-09-08 03:10:10 +01:00
pulse-triage[bot] e5ef265c77 fix(alerts): retain ownership of incident history requests
Invalidate pending reads on reset and disposal, and gate success, failure and loading writes per resource. Convert the four reproductions to ordinary tests and retain reset/reopen and stale-failure controls. Qualify the real hook and panel with 14 Chromium lifecycle cases; register that exact browser surface proof without broadening path policies. This does not qualify installed delivery or PR1973's absent error accessor.

Change-source: pulse-maintainer
2026-09-08 02:57:57 +01:00
pulse-triage[bot] 20d2892d7d test(alerts): retain known incident request lifecycle failures
Retain deterministic reproductions of four unresolved main-branch races so request-ownership repairs cannot lose their acceptance cases between lane runs. Explicit it.fails markers describe known debt, not fixed behaviour; raw unmarked execution still fails four cases. Three ordinary controls protect row toggling, cache refresh, independent resources and current failures. No runtime or release behaviour changes.

Change-source: pulse-maintainer
2026-09-08 02:41:59 +01:00
rcourtman e2b6fe3b16 Preserve canonical incident history and Assistant handoffs
Filter canonical history before selecting occurrences, preserve source evidence
and expose bounded reads and failures. Reconcile duplicate saved shells without
splitting one alert lifecycle, and keep note identity and canonical risk intact.

Carry attributed operator notes into Assistant. Preserve mobile investigations
across layout changes, transfer composer focus on handoff and keep long event
text readable. Record scoped qualification and its unresolved wider limits.

Refs #1782
2026-09-08 02:08:15 +01:00
pulse-triage[bot] d44c6282de test(web): guard bootstrap timer cleanup across attempts
Slow-start recovery is advertised to preview users. Pin cleanup when the loading fallback unmounts and ensure a later attempt does not inherit the previous warning deadline. This guards existing UX without changing product behaviour; 34 focused bootstrap, connection badge and runtime tests pass.

Change-source: pulse-maintainer
2026-09-08 01:52:20 +01:00
pulse-triage[bot] 9b42b234aa test(alerts): pin recurring incident timeline and note isolation
Recurring alerts share an identifier, so history must retain occurrence-specific timelines and note targets. Exercise out-of-order loads and historical note saving without changing the current occurrence draft or cache. This protects existing behaviour without extending release scope.

Change-source: pulse-maintainer
2026-09-08 01:06:09 +01:00
pulse-triage[bot] 7eec890025 fix(web): clear explicitly withdrawn Proxmox memory
A canonical snapshot can omit memory after the producer marks its Proxmox
facet unavailable. Retaining the previous display metric hides withdrawal
and leaves a stale percentage visible. Clear that explicit transition in
full and fast merges and emit the corresponding store operation, preserving
ordinary partial omission and trusted canonical metrics including zero.

Pin withdrawal and recovery with adapter tests and desktop/narrow Chromium
acceptance. Workload details remain canonical-only; do not invent raw totals
or Usage UI. Record inspected screenshots and matching subsystem contracts.

Change-source: pulse-maintainer
2026-09-07 23:03:54 +01:00
pulse-triage[bot] a7484acca4 style(web): restore alert recovery formatting gate
Apply the repository formatter to the two alert recovery test files rejected by the protected frontend check. This is an additive formatting-only correction; reviewed commit identities and behavior remain unchanged.

Change-source: pulse-maintainer
2026-09-07 21:32:33 +01:00
pulse-triage[bot] 238c9762ba style(web): format hybrid memory regression fixture
Apply the repository Prettier policy to the newly integrated issue #1962 reactive-boundary fixture. The exact reviewed candidate remains preserved as a merge parent, and the focused test behavior is unchanged.

Change-source: pulse-maintainer
2026-09-07 19:58:26 +01:00
pulse-triage[bot] 5705f91e5c test(web): preserve canonical hybrid VM memory updates
Issue #1962 exposes disagreement between canonical and nested agent memory. Protect the reactive workload boundary against UI-only substitution, same-VMID instance mixing and confusion between missing telemetry and measured zero. Synthetic snapshots do not qualify the outstanding poller repair.

Change-source: pulse-maintainer
2026-09-07 19:48:14 +01:00
pulse-triage[bot] ffcf83ad6d Merge candidate 20260907T181015Z-web-product
Change-source: pulse-maintainer
2026-09-07 19:39:45 +01:00
pulse-triage[bot] 1f965e85b0 Merge current upstream main into reviewed alert recovery
Incorporate the landed Patrol planning work while preserving every reviewed alert recovery, credential-redaction and release-evidence commit and its ancestry.

Change-source: pulse-maintainer

# Conflicts:
#	docs/release-control/v6/internal/subsystems/agent-lifecycle.md
#	docs/release-control/v6/internal/subsystems/api-contracts.md
#	docs/release-control/v6/internal/subsystems/storage-recovery.md
#	frontend-modern/browser-verification.json
2026-09-07 19:16:44 +01:00
pulse-triage[bot] de40ac2ef3 test(web): cover unavailable reads after accepted recovery
Accepted queue actions and failed follow-up reads are different outcomes. Extend actual-tab regression coverage so unavailable health and history cannot erase SMTP edits or misrepresent the accepted action as rejected.

Change-source: pulse-maintainer
2026-09-07 19:13:00 +01:00
pulse-triage[bot] 5e0c3c4675 test(web): preserve recovery evidence on cancelled confirmation
Cancellation after a failed recovery must retain operator evidence and unfinished SMTP edits without triggering another API request. Cover this boundary in both actual destination-tab action scenarios.

Change-source: pulse-maintainer
2026-09-07 19:05:47 +01:00
pulse-triage[bot] f5d2c5d143 test(web): guard unsaved state during delivery recovery
Assert rejected and accepted retry/dismiss never clear the dirty flag after an SMTP edit; retained input value alone does not prove unsaved-state preservation.

Change-source: pulse-maintainer
2026-09-07 18:42:02 +01:00
pulse-triage[bot] f0369fd642 test(web): verify recovery preserves destination edits
Exercise the actual destinations tab, delivery hooks and SMTP editor across rejected and accepted Retry and Dismiss requests. Guard input identity, focus, dirty state, feedback and retained history rendering as health reconciles; standalone feedback tests did not cover this integration.

Change-source: pulse-maintainer
2026-09-07 18:33:30 +01:00
pulse-triage[bot] 800663fdf3 test(web): preserve editing focus during recovery feedback
Existing coverage checks focus after Clear but not when asynchronous failure feedback arrives. Guard input focus, unfinished text and mounted live-region identity without changing the interface or claiming screen-reader acceptance.

Change-source: pulse-maintainer
2026-09-07 18:06:54 +01:00
rcourtman c501376843 Preserve canonical Patrol planning and outcome continuity
Return persisted planning acceptance or refusal inside the investigation turn.
Keep model judgment separate from action authority and preserve accepted action
identity across provider failures. Enforce actor/request idempotency atomically
and retain complete approval and independent verification context.

Preserve unknown disk evidence, stream whitespace and historical resolution
timestamps. Keep conversation scrolling inside its own panel. Record real-model,
disposable-lab and browser qualification with explicit population limits.

Refs #1782
2026-09-07 17:24:25 +01:00
pulse-triage[bot] 468c2fef5c style(web): clear type-to-search formatting gate
Reproduce PR #1959 Frontend formatting failure and apply the locked formatter to the two affected files. Preserve keyboard behaviour; all five focused hook tests and the full frontend formatting check pass.

Change-source: pulse-maintainer
2026-09-07 17:07:31 +01:00