Commit Graph

15115 Commits

Author SHA1 Message Date
pulse-triage[bot] 7d5d2e2d1e Integrate reviewed PBS and NAS fixture fidelity repair
Retain exact candidate identity and source-yn4oqoy7 qualification. Production ownership, registry policy and runtime remain unchanged.

Change-source: pulse-maintainer
2026-10-13 10:03:34 +01:00
pulse-triage[bot] 54999db935 Reconcile batch-start upstream before reviewed fixture repair
Preserve published commits and locally reviewed integrations; no source scope expansion.

Change-source: pulse-maintainer
2026-10-13 10:03:23 +01:00
rcourtman 2ef16ccea5 Scope Patrol's expected-offline silence to availability
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.
2026-10-13 10:02:20 +01:00
pulse-triage[bot] 381ac0f257 Bind migration guide bytes through native browser Fetch
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
2026-10-13 09:58:18 +01:00
pulse-triage[bot] d50efec08e Retain received guide bytes when browser binding differs
Preserve exact public response bytes for diagnosis instead of weakening the source-bound browser check. No product or documentation change.

Change-source: pulse-maintainer
2026-10-13 09:56:41 +01:00
pulse-triage[bot] 8b58886c73 Record guest guidance keyboard and touch browser proof
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
2026-10-13 09:55:51 +01:00
pulse-triage[bot] 99f72ffedb Keep v6 migration on preserved-state upgrade paths
Replace unsafe generic update and historical downgrade shortcuts with the existing deployment-owned procedures. Keep configuration export distinct from full-state recovery and preserve data, keys, edition, uncertain-attempt evidence and ordinary monitoring checks.

Change-source: pulse-maintainer
2026-10-13 09:53:09 +01:00
pulse-triage[bot] b94922582c Keep the whole guidance focus target in browser captures
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
2026-10-13 09:50:33 +01:00
rcourtman dce4d62d88 Annotate memory provenance on the per-node LXC fallback (#2896)
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.
2026-10-13 09:45:44 +01:00
pulse-triage[bot] d63c18c283 Measure guidance focus after the rendered frame settles
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
2026-10-13 09:45:10 +01:00
pulse-triage[bot] f91752ed03 Make guest filesystem guidance easier to reach on phones
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
2026-10-13 09:41:00 +01:00
rcourtman 004a0aea9e Open the guest a filesystem alert belongs to (#2895)
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.
2026-10-13 09:36:37 +01:00
pulse-triage[bot] 637c9978e4 Expire guest-memory evidence by its original observation
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
2026-10-13 09:33:06 +01:00
pulse-triage[bot] 4fbdac3071 Integrate reviewed literal-target API help repair
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
2026-10-13 09:30:26 +01:00
pulse-triage[bot] a0804de6fb Keep PBS and NAS verification fixtures faithful to their source
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
2026-10-13 09:27:51 +01:00
rcourtman 9caccd545e Annotate memory provenance on the per-node LXC fallback
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.
2026-10-13 09:23:03 +01:00
rcourtman daa2baec74 Open the guest a filesystem alert belongs to
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.
2026-10-13 09:18:26 +01:00
pulse-triage[bot] ae33fa4081 Integrate reviewed source-owned stale Agent memory presentation
Retain exact candidate ancestry and its own-parent browser receipt. Existing source and browser proof qualify the bounded presentation change; native restart and thaw recovery remain separate.

Change-source: pulse-maintainer
2026-10-13 09:07:00 +01:00
pulse-triage[bot] 48aac2d784 Bind API help proof to the existing read-only security fixture
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
2026-10-13 08:46:36 +01:00
pulse-triage[bot] c104577dca Complete API help proof with keyboard and touch viewports
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
2026-10-13 08:37:27 +01:00
pulse-triage[bot] 2df2159b07 Keep copied API calls on one literal target
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
2026-10-13 08:28:45 +01:00
pulse-triage[bot] 2755ca69d6 Integrate reviewed disk-reading guidance and reason contract
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
2026-10-13 08:21:32 +01:00
pulse-triage[bot] 17d79490d7 Keep silent-agent filesystem controls on their owned memory source
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
2026-10-13 07:46:57 +01:00
pulse-triage[bot] 00f0cbeb56 Verify disk-reading context through the shipped guidance renderer
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
2026-10-13 07:44:08 +01:00
pulse-triage[bot] a665ef8ff1 Format the new consuming guidance browser check
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
2026-10-13 07:39:01 +01:00
pulse-triage[bot] 6a05569a6f Integrate reviewed direct proxy-auth diagnostic safety
Accept exact candidate 42b49532e3 with retained real-curl and Docs browser proof. Preserve the unrelated guest-retention fixture repair already on main.

Change-source: pulse-maintainer
2026-10-13 07:37:40 +01:00
pulse-triage[bot] c90cba3cc4 Record source-owned stale memory browser acceptance
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
2026-10-13 07:34:59 +01:00
pulse-triage[bot] f6d9201a49 Bind disk-reading guidance to states and accessible reasons
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
2026-10-13 07:33:36 +01:00
pulse-triage[bot] d4dccb54a7 Use the complete native Resource shape in memory fixtures
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
2026-10-13 07:30:25 +01:00
pulse-triage[bot] f90f7cf2c0 Preserve native facets in the source-owned memory browser fixture
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
2026-10-13 07:29:33 +01:00
pulse-triage[bot] c2bdf7de91 Match exact read routes in stale-memory browser proof
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
2026-10-13 07:26:15 +01:00
pulse-triage[bot] da0484d544 Supply the offline canonical drawer context in memory proof
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
2026-10-13 07:24:26 +01:00
pulse-triage[bot] 3e5cfc3df3 Keep stale agent memory out of current Web readings
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
2026-10-13 07:20:33 +01:00
pulse-triage[bot] e3ea596b98 Keep caller fixtures on the healthy guest retention path
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
2026-10-13 07:17:46 +01:00
pulse-triage[bot] 42b49532e3 Keep direct proxy-auth probes off environment proxies
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
2026-10-13 07:13:38 +01:00
pulse-triage[bot] 8d0682881a Integrate reviewed guest memory integrity and provenance
Change-source: pulse-maintainer
2026-10-13 06:58:55 +01:00
pulse-triage[bot] c287ddfcb6 Integrate reviewed audit subprocess ownership
Change-source: pulse-maintainer
2026-10-13 06:58:53 +01:00
pulse-triage[bot] e59bcd4672 Integrate reviewed final guest drawer verification
Change-source: pulse-maintainer
2026-10-13 06:58:33 +01:00
pulse-triage[bot] 6ef221ca9c Keep the healthy-guest control outside the original-source window
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
2026-10-13 06:27:05 +01:00
pulse-triage[bot] ffb66caa72 Integrate reviewed Markdown issue heading recognition
Change-source: pulse-maintainer
2026-10-13 06:24:01 +01:00
pulse-triage[bot] 4c61c52cf0 Complete consuming browser proof for the reviewed guest drawer model
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
2026-10-13 06:22:40 +01:00
pulse-triage[bot] 23409e4f7f Verify reviewed guest drawers without importing unowned PR history
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
2026-10-13 06:17:02 +01:00
pulse-triage[bot] aa98a002ed Keep guest memory trustworthy through rejected and cached reads
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
2026-10-13 06:08:47 +01:00
pulse-triage[bot] d2b126c3f8 Recognise edited Markdown issue fields without false declarations
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
2026-10-13 05:54:10 +01:00
pulse-triage[bot] b430e57e57 Integrate reviewed rejected endpoint diagnostic confidentiality
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
2026-10-13 05:50:17 +01:00
pulse-triage[bot] b74b4f126a Preserve literal Bash audit invocation inside the owned group
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
2026-10-13 05:39:13 +01:00
pulse-triage[bot] e41ce241ec Keep the audit process owner in strict delivery checks
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
2026-10-13 05:37:14 +01:00
pulse-triage[bot] 90ad71f9a4 Keep rejected infrastructure credentials out of client diagnostics
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
2026-10-13 05:35:21 +01:00
pulse-triage[bot] 25c811bad7 Own audit subprocess cleanup through completion and cancellation
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
2026-10-13 05:34:03 +01:00
pulse-triage[bot] ea6db69465 Keep the intake repair aligned with its unchanged published docs
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
2026-10-13 05:05:03 +01:00