Expected offline is availability-specific everywhere else: the canonical
ResourceOperatorState doc says it "suppresses availability noise", the
alert runtime suppresses only offline and availability signals, and both
monitoring-policy controls tell the operator it hides availability noise
only, with Mute all as the way to stop Alerts and Patrol. Patrol was the
outlier. Its projection returned a suppression cause for expected_offline
(and the legacy IntentionallyOffline flag) regardless of the finding, so
a disk, memory, backup or security finding on an expected-offline
resource was auto-acknowledged exactly as if the resource were muted.
The suppression decision is now per finding. Retired and muted still
silence every finding; expected_offline and the legacy flag (when no
MonitoringMode is projected, as in the alert runtime) silence only
findings in the shared down condition class that alert mirroring already
uses. The wake path judges the re-detected finding with the same helper,
so findings auto-acknowledged under the old behaviour wake on their next
detection.
That classifier matched "offline" in any reliability title, which would
have read a SMART "offline uncorrectable sectors" report as the resource
being down and hidden a failing disk. SMART findings now fall outside the
down class, which also stops them mirroring an offline alert.
A new test pins the split (availability silenced; disk, memory and SMART
findings visible) with muted as the negative control, plus a muted to
expected-offline transition that wakes only non-availability findings.
Each test fails when the old behaviour, the wake-path scoping or the
SMART guard is reverted.
Keep the failed Playwright body-byte observations and use the browser's array buffer to compare the actual transferred UTF-8 bytes with committed source. Product and documentation are unchanged.
Change-source: pulse-maintainer
Preserve exact public response bytes for diagnosis instead of weakening the source-bound browser check. No product or documentation change.
Change-source: pulse-maintainer
Bind the containing committed source to both themes at desktop and phone widths, actual Docs consumption, settled contrast, complete focus captures and native pixel inspection.
Change-source: pulse-maintainer
Pixel inspection found the phone outline at the viewport edge. Centre the existing link and assert capture clearance before retaining its focus pixels; the production link and assertions remain unchanged.
Change-source: pulse-maintainer
When cluster/resources polling fails, containers come from the per-node
collector, which built memory without a MemoryObservation. The unified
resource layer preserves that absence and the Workloads classifier then
reads every container on the node as "Freshness unknown", although the
same guest polled through the cluster listing reads current.
The fallback now annotates through the shared guestMemoryObservation
builder with the selected source, the listing time, the previous
snapshot
and the linked agent, so running containers read current from
cluster-resources (or agent) and stopped ones unavailable from
powered-off. Numeric selection, stabilisation and alerting are
unchanged.
Retain the immediate observation as well as the font and two-frame settled focus, then apply the unchanged outline and contrast assertions before pixel capture.
Change-source: pulse-maintainer
Give the existing safety guidance link a 44px phone target and a theme-aware keyboard focus outline, keeping desktop density and the shipped destination. Exercise read-reason updates and the consuming documentation in both themes.
Change-source: pulse-maintainer
A guest's per-filesystem disk alert is raised under <guest>-disk-<key>,
which names nothing the resource registry can resolve, so the Alerts
overview left its name linking to the top of the platform page. A full
filesystem is the most common guest alert, and the operator still had to
find the guest among every other one.
CheckGuest now stamps the owning guest on every filesystem alert as
guestResourceId metadata: the same guest ID the guest's own alerts are
raised under, on the canonical-spec and legacy checkMetric paths alike.
The card links a filesystem alert to ?resource=<guestResourceId>, so the
workloads table opens that guest's drawer, where the Filesystems panel
shows the mount that filled. Filesystem alerts raised before this change
carry no stamp and keep the platform page link; the card never falls
back to the filesystem id.
Model elapsed time in both the QGA cache and independently annotated snapshot. Check that cache expiry alone preserves recent last-known provenance, then that fresh diagnostic polls cannot retain fully expired memory or renew percentage/byte History. Keep ordinary recovery and provider-priority controls; no runtime or retention policy changes.
Contract-Neutral: Repair and strengthen the observation lifecycle fixture only; runtime, frontend, schema, retention and admission policy are unchanged.
Change-source: pulse-maintainer
Preserve the three exact PI commits and retained real-curl plus consuming Docs proof. The change disables curl URL globbing in the existing copied helper; API runtime and authentication contracts are unchanged.
Change-source: pulse-maintainer
Expect the complete reviewed PBS proof list. Collect full-width real process rows in the private NAS watchdog fixture, retaining exact ownership, deadlines and failure evidence instead of truncating long Darwin paths.
Contract-Neutral: Test fixtures only; production installers, process ownership checks, retention, registry policy and runtime behaviour are unchanged.
Change-source: pulse-maintainer
When cluster/resources polling fails, containers come from the per-node
collector, which built memory without a MemoryObservation. The unified
resource layer preserves that absence and the Workloads classifier then
reads every container on the node as "Freshness unknown", although the
same guest polled through the cluster listing reads current.
The fallback now annotates through the shared guestMemoryObservation
builder with the selected source, the listing time, the previous snapshot
and the linked agent, so running containers read current from
cluster-resources (or agent) and stopped ones unavailable from
powered-off. Numeric selection, stabilisation and alerting are unchanged.
A guest's per-filesystem disk alert is raised under <guest>-disk-<key>,
which names nothing the resource registry can resolve, so the Alerts
overview left its name linking to the top of the platform page. A full
filesystem is the most common guest alert, and the operator still had to
find the guest among every other one.
CheckGuest now stamps the owning guest on every filesystem alert as
guestResourceId metadata: the same guest ID the guest's own alerts are
raised under, on the canonical-spec and legacy checkMetric paths alike.
The card links a filesystem alert to ?resource=<guestResourceId>, so the
workloads table opens that guest's drawer, where the Filesystems panel
shows the mount that filled. Filesystem alerts raised before this change
carry no stamp and keep the platform page link; the card never falls
back to the filesystem id.
The production Docs fixture reads GET /api/security/status during the consuming journey. Record and admit that single endpoint/method class as synthetic fixture traffic, while aborting any other API or off-origin request. The desktop keyboard and touch-enabled narrow journey now completes exact-guide, linked help, fragment focus and reload checks.
Contract-Neutral: Browser verification driver only; the documented API helper, frontend runtime and subsystem contracts are unchanged.
Change-source: pulse-maintainer
Keep the two failed WebKit reload attempts as evidence rather than claim browser success. Exercise the same production Docs/router and exact copied guide in Chromium at desktop and touch-enabled phone widths, including linked administration help, fragment focus, reload and no API or off-origin requests. The helper and its response-privacy controls are unchanged.
Contract-Neutral: Browser verification driver only; documented API helper, frontend runtime and subsystem contracts are unchanged.
Change-source: pulse-maintainer
The private-response helper promises one request, but real curl expands quoted brace lists and bracket ranges into two or three requests, including POST, PUT and DELETE. Disable URL globbing without changing token-file transport, response privacy, scopes, TLS, deadlines or no-retry rules. Explain the literal-path and separate URL-encoding boundary.
Exercise the copied helper with both authentication headers, every supported method, encoded identifiers and adverse write responses. Add consuming desktop and narrow Docs/router verification.
Contract-Neutral: Documentation and synthetic recipe/browser checks only; API authentication, endpoint and runtime contracts are unchanged.
Change-source: pulse-maintainer
Accept exact Delivery candidate 00f0cbeb56 with retained complete documentation proof and consuming desktop/phone browser evidence. Preserve current main proxy-auth safety changes; no native QGA recovery or human PR delivery is claimed.
Change-source: pulse-maintainer
The full suite found two existing filesystem controls asserting current memory from the same explicitly stale Pulse Agent. Assert original retained zero and timestamp instead, then switch only memory to independent QGA/PVE origins and verify current zero returns while the agent-owned filesystem remains deferred. Preserve the completed failing whole-suite receipt; no production source, test scope, threshold or browser receipt changes.
Change-source: pulse-maintainer
On exact parent a665ef8ff1, desktop Chromium keyboard and narrow WebKit touch follow the production same-guest drawer and guidance links. Both consume the changed Markdown hash, preserve the nine safety distinctions, produce no external or mutating request and close the browser and listener. Both captures were inspected with native view_image. This is current-source documentation acceptance, not the unmerged human PR or native recovery.
Change-source: pulse-maintainer
Use the matched offline frontend snapshot to format the newly added driver before its browser acceptance. The canonical dependency tree refused access and was not retried; only the authorised launch export was used. No guide, component, reading or safety changes.
Contract-Neutral: Format the new browser driver only; no runtime, guidance, reading or safety contract delta.
Change-source: pulse-maintainer
Fresh Chromium desktop and WebKit phone proof on the containing source exercises canonical delta production, Workloads rows and both History drawers. Inspect all eight retained captures with native view_image; preserve original source/time and deferred QGA context, and distinguish reporting zero from stale zero. No native recovery or release acceptance is claimed.
Change-source: pulse-maintainer
The guest-reading docs control required a literal Unavailable caption even though the reading state and its explanation are the contract. Keep retained labels, disk-specific title/assistive wiring and unavailable producer checks; negative controls reject lost reasons while permitting caption-only changes. Guide keyboard and phone users through the existing reading indicator and same-guest details without treating a dash as an agent-installation diagnosis. Add a consuming current-source Docs browser check. No human PR is imported, amended or re-authored; its source and independent integration remain separate.
Contract-Neutral: Align existing filesystem guidance and its executable checks with unchanged reading states and accessible reasons; no polling, telemetry, runtime, access, safety or recovery contract changes.
Change-source: pulse-maintainer
The exact-source type check caught three missing required identity/presentation fields in the new typed regression fixture. Supply displayName, platformId and sourceType in both model and browser inputs. Retain the original type failure; no product, assertion, lease or deadline changes.
Change-source: pulse-maintainer
Pixel and source-facet inspection of the preliminary pass found that an identity-only input withdrew unrelated Proxmox facets. Supply the complete native resource expected by the canonical delta wrapper and assert that its platform, backup lock and QGA read deferral survive the agent-only change. Keep the earlier pass as non-acceptance evidence and repeat the intended consuming journey on this corrected source.
Change-source: pulse-maintainer
Keep guest-operation and mutation refusals, but match operation path segments rather than the run prefix of the read-only runtime-capabilities route. Bind the empty History fixture to the production metrics-store/history route. Preserve both prior browser failures and the original product assertions.
Change-source: pulse-maintainer
The first browser attempt captured useWebSocket outside its required provider. Supply only the disconnected synthetic alert transport used by the canonical drawer; retain the failure and keep production presentation and acceptance assertions unchanged.
Change-source: pulse-maintainer
Honour the server-owned stale signal only for the selected Pulse Agent observation. Preserve its original value and time as last known in rows, sorting, metric search and both History consumers, while independent Proxmox/QGA sources remain current. Add regression and connected browser fixtures without a client TTL, wire rewrite or guest operation.
Change-source: pulse-maintainer
Final combined-source race proof source-vvsdkdin passed securityutil, PBS and Proxmox but exposed two older caller controls expecting the healthy-guest note from a one-minute observation. The restored original-source path correctly takes priority there. Place both caller fixtures at three minutes, matching the reviewed helper control and preserving used-memory, source and exact healthy-path assertions. No runtime, deadline, window, provenance or alert behavior changes.
Contract-Neutral: Test-only caller fixture ages select the existing healthy-guest retention branch; product memory and safety contracts are unchanged.
Change-source: pulse-maintainer
The copied loopback recipe inherits http_proxy and ALL_PROXY even with curl --disable. Real-curl parent controls sent the synthetic administrator-capable header to the proxy and could report its denial as a Pulse role result. Explicitly bypass proxies for the selected backend and keep the protocol boundary clear.
Exercise both response directions and three proxy environment selectors, preserving privacy, deadlines, cleanup and the existing role/IdP trust boundary. Add a repeatable production Docs/browser check for the exact copied guide.
Contract-Neutral: Documentation and synthetic recipe/browser checks only; proxy authentication semantics and runtime contracts are unchanged.
Change-source: pulse-maintainer
The connected 32-case matrix and original-age controls now pass. The older healthy-guest fixture sat exactly at the two-minute boundary and legitimately selected the restored original-source path instead of its expected healthy fallback note. Place that distinct fallback control at three minutes, preserving both windows and assertions.
Contract-Neutral: Test fixture chooses the intended existing healthy-guest branch; runtime, thresholds, deadlines and provenance contracts are unchanged.
Change-source: pulse-maintainer
Exercise final model bytes through real backup rows, status dialogs, drawers and shipped filesystem guidance on desktop Chromium and narrow WebKit. Retain fresh own-parent evidence with fourteen natively inspected captures; no historical receipt is rebound and no native recovery is inferred.
Change-source: pulse-maintainer
Use the existing source-bound static fixture for backup completion and the installed browser workspace path for reading help. Keep explicit route, byte, method and cleanup controls. No product, documentation, dependency or contract change.
The rejected composition d56478d80d retained PR #2893 original human commit 4c15c13a and cannot satisfy maintainer committer provenance. It is abandoned, not amended or relabelled. Preserve its source repair and proof separately; this candidate starts from assigned 2abfcf92 and finishes the independent PR #2888 final drawer proof.
Change-source: pulse-maintainer
Reject impossible physical counters and overflowing cache estimates. Keep the original trusted source through repeated failed/negative-cache polls within the unchanged observation-age and capacity fences, instead of clearing the incident on an independent provider fallback after one retained poll.
Exercise all eight refusals through both collectors and both HTTP clients, original percentage/byte History, backup admission, real alert decisions, valid recovery and measured zero. Preserve TLS, operation locks, shared uncertainty, deadlines and native recovery exclusions. This completes the original guest-memory outcome coherently, not a replay of source-xubz2c16.
Change-source: pulse-maintainer
Use one ATX heading recogniser for version, feedback, secondary topics and field boundaries. Preserve lightly indented headings and separated closing hashes, reject non-headings, and exercise the real label consumer without contact or release lookups.
Contract-Neutral: Respect Markdown heading boundaries within the existing issue metadata classifier; no product runtime, API, rendered UI or triage-authority delta.
Change-source: pulse-maintainer
Preserve exact Core candidate 90ad71f9a4. Runtime, tests and dependency blobs match retained passing race/vet proof source-qxl39x59; the final candidate changes only proof-registration ordering from that source. No frontend source or routing/trust policy changes.
Change-source: pulse-maintainer
The exact-source broader audit suite exposed ENOEXEC differences in the direct Python exec path. Retain the former Bash executable-script fallback with a fixed exec program and literal argv, including whitespace and shell metacharacters in the executable path. Isolate the two path-lookalike fixtures so each still asserts its own one-commit guard result.
Contract-Neutral: Restore the existing Bash command compatibility within the new audit process group; audit classification, retry rules, dependency graphs, command arguments and external authority are unchanged.
Change-source: pulse-maintainer
Both required CI and the local gate must treat the new subprocess owner as audit runtime, not an unchanged dependency graph. Carry the actual helper into the isolated local-gate fixture and test positive findings, missing results, large change lists and exact-path lookalikes through both consumers.
Contract-Neutral: Extend the existing strict audit-runtime path classification to its new owned helper; advisory rules, dependency graphs, public runtime, credentials and external permissions are unchanged.
Change-source: pulse-maintainer
Validate PVE and PBS hosts before logging them, omit url.Parse input from syntax errors, and keep cluster logging, health snapshots, recovery summaries and returned error labels separate from configured routing and TLS identity. Exercise actual rejected-host constructors, cluster routing/recovery and accepted-host controls with synthetic credentials. Connection policy, authentication and guest safety fences are unchanged.
Change-source: pulse-maintainer
The existing helper leaves TERM-resistant children running after npm finishes or its attempt expires. Give each attempt its own process group and monotonic deadline, stop the owned group on every terminal path, and preserve the captured report and observed exit. An npm TERM handler returning zero cannot turn an expired attempt into a clean verdict. Exercise normal completion, failure, timeout, cancellation, positive findings and an unrelated live process through the actual shell helper.
Contract-Neutral: Repair the existing audit deadline and child ownership only; invocation arguments, manifests, strict and unchanged-graph advisory verdicts, retry budgets and external access remain unchanged.
Change-source: pulse-maintainer
Remove only the optional clarification from the imported tested metadata repair. Keep the existing public-doc mirror and rendered asset unchanged; the inline and quoted literal classifier and its 82 passing controls are retained.
Contract-Neutral: Remove optional source-doc wording only; no runtime, API, rendered content or triage-authority delta.
Change-source: pulse-maintainer