Commit Graph

4999 Commits

Author SHA1 Message Date
pulse-triage[bot] 5fbc773563 Integrate reviewed alert reconciliation and precise lookup controls
Retain exact Core commits 4768058216 and d500b4f211. Reviewed callback release ordering, metadata-specific measurement boundary and retained race, vet and build proof; unrelated JSON drain failure remains Core-owned.

Change-source: pulse-maintainer
2026-10-05 07:37:52 +01:00
pulse-triage[bot] d500b4f211 Reconcile delivery failures after releasing alert gates
Commit the normal retry/dead-letter attempt audit before invoking monitoring health reconciliation outside the firing-alert delivery gate. Keep explicit operator actions immediate, transient retry budgets, configuration refusal, policy cancellation and operational links unchanged.

Change-source: pulse-maintainer
2026-10-05 06:40:53 +01:00
pulse-triage[bot] cadb669610 Integrate reviewed private-help checks without replacing stronger fixtures
Preserve the reviewed candidate commits as the second parent and retain canonical one-shot, redirect, partial-response and disclosure controls in the overlapping API/PBS smoke fixtures. Keep the candidate's canonical PBS guard, scoped private temperature-file assertions and unchanged-verdict audit diagnostics.

Contract-Neutral: Integration of test-only private-help adapters; no runtime, guides, dependencies or frontend source changed.
Change-source: pulse-maintainer
2026-10-05 06:39:53 +01:00
pulse-triage[bot] 4768058216 Measure lookup metadata allocations at the clone boundary
Retain the three-sample baseline-plus-ten bound in an isolated copy of the same test binary. Add full-publication copying controls and exact complete admission-content parity, rather than attributing independent registry allocation variation to ignored metadata.

Contract-Neutral: Test measurement correction only; no runtime, identity, freshness, publication or allocation-limit contract changes.
Change-source: pulse-maintainer
2026-10-05 06:02:27 +01:00
pulse-triage[bot] e4dde6563a Incorporate supplied upstream frontier for this candidate batch
Change-source: pulse-maintainer
2026-10-05 05:35:30 +01:00
pulse-triage[bot] 221a86057e Integrate reviewed pass-local system grouping index
Preserve exact Core candidate ab15c4db8a and its two prerequisite commits. Retained connected proof and complete cost samples support allocation and scaling gains, not native CPU/RSS relief.

Change-source: pulse-maintainer
2026-10-05 05:21:49 +01:00
pulse-triage[bot] e02f949b09 Preserve reviewed monitoring repairs with current upstream overviews
Compose exact upstream a82a8e0474 additively without changing accepted commits. Resolve the append-only registry-test conflict by retaining both the reviewed metadata invalidation control and upstream stale-health control. Existing PR2486 remains unchanged while normal source-check corrections are pending.

Change-source: pulse-maintainer
2026-10-05 05:05:48 +01:00
rcourtman 43c38253b6 Explain backup protection in plain words
The Coverage tooltip and expansion render the posture explanation
verbatim, and it read like the model: "a current subject-linked
backup", "older than the configured freshness window", "a newer
provider failure", "a stronger protection claim".

Each explanation now says what Pulse found in plain words and stays true
to its branch: the stale case names the window ("the newest confirmed
backup is older than 7 days"), the failure case no longer claims a
timing it cannot know, and partial history without a backup no longer
says a backup exists. The window formatter never rounds a sub-hour or
fractional window up. The frontend fallbacks for checking, unrated and
unknown rows and the snapshot-only tooltip use the same voice.
2026-10-05 05:03:08 +01:00
pulse-triage[bot] 8ad902ed1f Bind guide checks to private PBS and API response recipes
Repair deterministic governance and script-smoke failures against the reviewed guides without restoring public response output, literal credential commands or clobbering downloads. Exercise the actual shared API helper and independently verify private, unique response files, methods, bodies and hostile curl defaults.

Contract-Neutral: Update test adapters for the existing reviewed credential-private guide contract; no runtime or guide change.
Change-source: pulse-maintainer
2026-10-05 04:59:34 +01:00
pulse-triage[bot] ab15c4db8a Index only possible grouping owners and exercise real pass boundaries
Maximum-priority roots cannot be better than any group in a snapshot, so leave them out of the temporary owner indexes while retaining every resource and group. Correct new fixtures to respect existing attachment semantics: differently ranked hosts may already merge, and an agent's first-pass IP attachment must remain ambiguous until its two owners merge. Cover equal-priority Proxmox cost before any timing run.

Contract-Neutral: Candidate-only priority pruning and faithful regression fixtures preserve all stored/published resources, identity, strict attachment ambiguity, evidence precedence, public schemas and counted-system admission.
Change-source: pulse-maintainer
2026-10-05 04:29:10 +01:00
pulse-triage[bot] cf62ee09bc Keep grouping proof helpers callable and pin admission ambiguity
Rename the parameterised benchmark bridge so Go does not discover it as a benchmark entry point. Preserve the reference's exact-owner keys even for empty internal sets while retaining nonempty hostname-form admission. Pin unique versus ambiguous host attachment in the real monitored-count/prospective-admission path without mutating stored inventory.

Contract-Neutral: Test harness correction and faithful internal owner representation only; complete inventory, canonical identity, grouping evidence, counted-system admission and public schemas stay unchanged.
Change-source: pulse-maintainer
2026-10-05 04:18:17 +01:00
pulse-triage[bot] ff46264503 Reuse sorted owner buckets within each system-grouping pass
Build complete hostname/IP/form owner indexes once in priority order, visit only strictly better owners and reject once two distinct qualifying roots prove ambiguity. Preserve exact/short/IP evidence precedence, metadata freshness, exclusions and all resources. Bind the immediate-parent algorithm and enumerate targets independently; exercise real provider grouping and connected Infrastructure output.

Contract-Neutral: Pass-local representation and cost only; complete inventory, strict better-priority and ambiguity rules, evidence ordering, identity, public schemas, observations and alert policy are unchanged and covered by exhaustive and connected reference controls.
Change-source: pulse-maintainer
2026-10-05 04:14:27 +01:00
pulse-triage[bot] bec1d6455f Keep registry freshness controls faithful to source naming rules
Assert refreshed status and CPU on the same canonical VM instead of requiring a Proxmox rename that the existing source-priority merge intentionally rejects. Use the mock runtime's supported maximum cadence. The initial fixture and assertion failures remain retained; no production behaviour is changed.

Refs: #2199

Contract-Neutral: Correct independent test assumptions only; no runtime or resource contract delta.
Change-source: pulse-maintainer
2026-10-05 03:09:56 +01:00
pulse-triage[bot] d211cc82cd Pin materialized copy ownership and cold registry read costs
Keep the assigned-base typed-view rebuild as an independent benchmark reference. Measure warm reads, dirty List-only reads and dirty List plus typed views rather than claiming that moving derivation removes cold cost. Pin stale and between-record freshness, canonical policy detachment and arbitrary clone refresh.

Refs: #2199

Contract-Neutral: Extend independent validation of unchanged resource schemas and existing freshness/ownership guarantees; runtime source is unchanged.
Change-source: pulse-maintainer
2026-10-05 03:01:54 +01:00
pulse-triage[bot] 51ef7eddda Derive canonical bulk-read metadata once per registry mutation
Keep full inventory and arbitrary clone refresh. Detach materialized identity and policy under the existing registry lock, invalidate between batch records and on stale-source transitions, and keep List-only reads independent of typed view construction. Compare every field and wire payload with an independent fresh-clone oracle across all demo providers.

Refs: #2199
Change-source: pulse-maintainer
Contract-Neutral: Registry-internal copying and invalidation repair existing freshness and ownership guarantees; canonical resource fields, wire schemas, identity rules, policy derivation, telemetry and alert evaluation are unchanged.
2026-10-05 02:59:48 +01:00
pulse-triage[bot] d79f7e545b Pin bulk registry metadata freshness and allocation ownership
Retain the pre-change fresh-clone oracle for every derived field, incremental ingestion and detached reads. Expose repeated canonical derivation in a 1000-resource bulk read before altering production code.

Refs: #2199

Contract-Neutral: Add independent regression controls and paired measurements; runtime and public contracts are unchanged.
Change-source: pulse-maintainer
2026-10-05 02:50:40 +01:00
rcourtman 384bfacdfe Merge remote-tracking branch 'origin/main' into feat/docker-silent-hosts 2026-10-05 02:49:42 +01:00
pulse-triage[bot] 7331f3579d Merge reviewed scoped agent identity lookups
Preserve exact Core candidate history and complete published monitoring inventory while removing unrelated temporary metadata copies.

Change-source: pulse-maintainer
2026-10-05 02:32:33 +01:00
rcourtman 97c2f6f6ac Say when a Docker host goes silent, and stop repeating host columns
A Docker host whose agent stopped reporting kept showing its last CPU,
memory and disk bars as if they were live, with only an orange dot to
hint otherwise. The tables now read the backend's telemetry_stale
reason: that host's metric cells are dimmed, Uptime shows how long it
has been silent, and its container group header says "No report for 1h".

Health could only carry that reason when nothing outranked it, so a
silent host with an offline alert lost the signal. The verdict still
leads with the alert, and a stale source now adds a trailing
telemetry_stale reason. The first reason, which the state summary
reports, is unchanged.

Grouped by host, the containers table also repeated the host name and
engine on every row, about a quarter of its width. Those columns are
dropped in grouped mode and the group header names the engine once;
flat mode keeps them, and a saved sort on either hidden column no longer
reorders grouped rows.
2026-10-05 01:46:58 +01:00
pulse-triage[bot] 36fc9fbf89 Make agent copy-ownership expectations independent
Freeze the source expectation as serialized bytes before mutating returned records. A broken clone cannot change both the tested state and its reference, so module, update and applied-config alias regressions must be detected.

Change-source: pulse-maintainer
2026-10-05 01:45:52 +01:00
pulse-triage[bot] 39906a220a Compare agent lookup evidence independently of registry build time
The unchanged-parent allocation controls fail as intended. Its semantic oracle also compared separate wall-clock registry construction timestamps. Retain all source timestamps and canonical payloads while excluding only Resource.UpdatedAt from the full-reference comparison.

Change-source: pulse-maintainer
2026-10-05 01:22:51 +01:00
pulse-triage[bot] 187e5daaa8 Keep agent identity lookups scoped to relevant inventory
Avoid cloning and ingesting twenty known non-host Kubernetes metadata kinds in temporary per-report matching registries, while preserving all publication and canonical matching. Clone only the selected native record for exact host reads and detach mutable host update, module and config state. Pin reference equivalence, live report publication, ownership and allocation scaling with connected controls.

Change-source: pulse-maintainer
2026-10-05 01:17:08 +01:00
pulse-triage[bot] bedb245c72 Reproduce fleet-sized work in agent identity lookups
Compare complete canonical host views with a full-snapshot reference and pin current replacement. Measure unrelated Kubernetes metadata and peer-host allocation growth before repairing report lookups.

Change-source: pulse-maintainer
2026-10-05 01:08:54 +01:00
pulse-triage[bot] f1c7e413ba Integrate published demo workload names into reviewed guest safety batch
Preserve every accepted commit and compose the exact current published frontier before publication.

Change-source: pulse-maintainer
2026-10-05 01:04:27 +01:00
pulse-triage[bot] 8ccb82a7f9 Merge reviewed platform-aware guest Discovery verification
Resolve the prior non-Linux skip in favor of the exact reviewed real-registration refusal fixture. Preserve candidate a2608c9 and runtime safety contracts.

Change-source: pulse-maintainer
2026-10-05 00:28:07 +01:00
pulse-triage[bot] 1f0d12af85 Match safety fixtures to private responses and native platforms
PR2472 build run 37239183545 extracts no wrapped TrueNAS recipes; exercise all three current blocks and retain synthetic HTTP response bodies only in private files, including 201 save and error controls. Native run 37239183481 expects a Linux QGA capability on macOS and Windows; assert non-Linux agents do not advertise it and scope the connected PVE fixture to its actual Linux runtime. Production safety and documentation remain unchanged.

Contract-Neutral: Test-only reconciliation of already-reviewed private-response recipes and existing Linux-only guest-execution capability; no product contract change.
Change-source: pulse-maintainer
2026-10-05 00:08:47 +01:00
rcourtman b8554bdd78 Stop repeating Kubernetes workload names in the demo
The demo scenario renamed every generated deployment to one of four
curated names and every pod to one of ten, cycling by index. With the
default 14 deployments and 40 pods per cluster the Kubernetes overview
listed checkout-api four times in one namespace, and the curated
pending and crash-looping pods appeared more than once. Kubernetes
itself refuses duplicate names in a namespace, so the public demo
looked broken.

Ten more healthy services fill out the default deployment count, a
numeric suffix keeps any larger count unique, and pods past the curated
story become healthy ReplicaSet-style replicas of the cluster's own
deployments on ready nodes, so each curated failure appears once.

Contract-Neutral: Mock fixture naming only: demo Kubernetes deployments and pods get unique names; no runtime contract delta.
2026-10-05 00:00:14 +01:00
pulse-triage[bot] f1e221a0fb Keep failed guest metadata refreshes from renewing evidence
Retain metadata values and the last useful observation time through failed, empty and unusable refreshes. Apply the existing retry backoff separately instead of making retained identity new guest-agent evidence or a fresh complete-cache hit. Preserve useful partial responses, normal cache hits and OS failure policy, with HTTP polling and recovery controls.

Contract-Neutral: Behavioural correction to existing guest metadata observation timestamps and retry scheduling; no schema, API, route, field, guest command, admission, duration, retention or numeric source-selection contract delta.
Change-source: pulse-maintainer
2026-10-04 23:34:19 +01:00
pulse-triage[bot] a2608c9fad Match guest Discovery integration proof to native platform capabilities
Native Windows and macOS correctly advertise no PVE guest guard, so their real-server fixture must assert refusal before any config or QGA handoff. Keep the existing Linux admission, outcome and resumption assertions and exercise foreign platform labels without changing runtime capability policy.

Contract-Neutral: Test-only platform evidence repair; guest execution and Discovery runtime contracts, capability advertisement and safety gates are unchanged.
Change-source: pulse-maintainer
2026-10-04 22:49:53 +01:00
pulse-triage[bot] a15920eaeb Keep retained guest observations out of new History points
Use the existing producer-owned memory observation and filesystem validity in the native Proxmox History writer. Preserve old points and legacy unannotated policy while keeping independent current memory, CPU, valid I/O and measured-zero recovery. Controls reproduce the unchanged-parent failures through real HTTP polling, in-memory and persisted series, and short/long chart reads.

Contract-Neutral: Behavioural repair consuming existing guest observation and filesystem validity in the existing History path; no schema, API, route, numeric source selection, guest-agent admission, alert threshold, timestamp precision or retention contract delta.
Change-source: pulse-maintainer
2026-10-04 22:43:53 +01:00
pulse-triage[bot] 0fd7768e9d Preserve explicit filesystem disablement during deferred reads
Separate operator policy from retained numeric evidence. Apply a filesystem disable override without evaluating its old usage or treating absent deferred inventory as authoritative removal.

Change-source: pulse-maintainer
2026-10-04 21:41:32 +01:00
pulse-triage[bot] 5ce63f1400 Keep retained guest readings out of alert decisions
Use selected memory observation state and filesystem read validity at both threshold and filter boundaries. Retained or failed inventory cannot open or resolve incidents, refresh their evidence or remove per-filesystem alerts. Independent current metrics, legacy readings and deliberate disablement retain their existing policy.

Change-source: pulse-maintainer
2026-10-04 21:39:16 +01:00
pulse-triage[bot] b0f8b96c8a Reproduce retained guest readings changing alert state
Exercise production memory/filesystem alert admission, delayed breaches, filters, canonical recovery and the connected HTTP backup-lock polling boundary. Retained evidence is not a new observation or an authoritative filesystem removal.

Change-source: pulse-maintainer
2026-10-04 21:37:11 +01:00
pulse-triage[bot] c0f5e98d5d Exercise every CORE recovery regression poll cycle
A zero test deadline reinstates the real connection interval, so it did not make subsequent cycles due. Use a nonzero expired fixture deadline and assert each cycle reaches the disk endpoint; keep production scheduling and failure/recovery assertions unchanged.

Change-source: pulse-maintainer
2026-10-04 20:55:13 +01:00
pulse-triage[bot] b0c5eb1a82 Avoid full resource copies in metadata read helpers
Borrow the already detached resource for read-only sensitivity and platform facet scans. Keep the classification algorithm, scope rules and timed benchmark workloads, while verifying selected memory provenance and clone ownership.

Contract-Neutral: Internal read-only metadata borrowing preserves canonical scope, policy, clone, memory provenance and wire semantics.
Change-source: pulse-maintainer
2026-10-04 20:46:52 +01:00
pulse-triage[bot] 1ab97537d7 Keep CORE inventory when disk rotation metadata is unknown
Treat optional REST rotation rates as the RPC reader does, without weakening required inventory decoding or fabricating disk health. Cover complete CORE snapshots, mixed alert arguments, topology and saved-config poll failure/recovery/disable.

Refs: #2466
Change-source: pulse-maintainer
2026-10-04 20:42:02 +01:00
pulse-triage[bot] d7ef00f2f2 Keep VM command and Discovery evidence truthful
Project verified guest status and decoded output instead of qm transport success. Reject ambiguous terminal outcomes without replay; retain known failed or truncated results as failures without inventing uncertainty. Admit only successful stdout to Discovery and preserve saved results when attempted probes yield no evidence. Keep backup precautions, source bounds and native acceptance dependencies unchanged.

Change-source: pulse-maintainer
2026-10-04 19:46:32 +01:00
pulse-triage[bot] 4188c2a9ba Reproduce false VM command and Discovery success
Add source controls for actual guest exit/output projection, ambiguous terminal receipts, failed probe evidence exclusion, and saved manual/background Discovery through explicit recovery. The fixtures never invoke PVE or QGA.

Contract-Neutral: Test-only regression controls exercise existing command and Discovery boundaries without changing production code, payloads, capabilities or budgets.
Change-source: pulse-maintainer
2026-10-04 19:35:32 +01:00
pulse-triage[bot] 8b6513581c Align Discovery controls with explicit VM cancellation truth
Keep the generic catalogue-error fixture distinct from unknown timed-out guest handoff, and require the existing canceled-VM control to expose a safety deferral without dispatch. The new completion/cancellation parent failures and full-source adverse result remain retained; no production behavior changes in this commit.

Contract-Neutral: Test-only correction records the existing guest cancellation and ordinary-command error contracts without changing production source, APIs, protocol or time budgets.
Change-source: pulse-maintainer
2026-10-04 18:47:43 +01:00
pulse-triage[bot] f9ed9311f2 Keep interrupted VM Discovery as an explicit safety deferral
Cancellation before dispatch or server-side expiry before a final agent result must not turn optional VM probes into completed fresh evidence or saved metadata fallback. Preserve the original error and stop subsequent probes while the agent retains its independent uncertainty fence.

Contract-Neutral: Completes the existing Discovery unavailable-evidence and cancellation requirements without changing API identity, statuses, protocol, command catalogue, approvals or non-VM execution.
Change-source: pulse-maintainer
2026-10-04 18:35:15 +01:00
pulse-triage[bot] 5f43619505 Make URL security controls deterministic in offline source checks
The connected suite exposed three public-host success cases that depended on external DNS. Resolve fixture-only public, private, mixed and missing names through in-process DNS responses while exercising the real parser/resolver and all existing SSRF checks; production resolution and its failures are unchanged.

Contract-Neutral: Test-only deterministic DNS fixtures preserve production URL resolution, SSRF address policy, fetch transport and public interfaces.
Change-source: pulse-maintainer
2026-10-04 18:27:05 +01:00
pulse-triage[bot] 419d80e2e4 Require terminal guest status before releasing VM execution admission
A zero qm CLI exit may return only a handed-off PID or an unverified guest result. Preserve actual CLI output/exit semantics but pause uncertain terminal dictionaries without another QGA command; accept complete canonical termination evidence and keep native thaw acceptance separate.

Change-source: pulse-maintainer
2026-10-04 18:20:25 +01:00
pulse-triage[bot] 2a734a5c53 Keep canceled VM lock evidence an explicit execution deferral
A cancellation before or during postflight config verification must not become an ordinary optional Discovery failure with usable output, especially on the final probe. Preserve fixed safety classification and no-handoff truth on canceled local admission.

Contract-Neutral: Completes the existing cancellation and unavailable-evidence requirements without changing protocol fields, guard version, lock/identity admission, time budgets or command catalogues.
Change-source: pulse-maintainer
2026-10-04 18:15:30 +01:00
pulse-triage[bot] 713e8d9e4b Keep guest-safety fixtures on canonical Discovery identities
Retain nested Docker VM scanner deferral controls without treating that execution-only type as a public Discovery/store identity. Exercise saved/manual/background preservation on canonical VM requests; runtime and API scope are unchanged.

Change-source: pulse-maintainer
2026-10-04 18:11:55 +01:00
pulse-triage[bot] d20b15b1e6 Complete Discovery compilation and accept canonical PVE config keys
The first exact proof established all ten parent no-admission failures and registered-session controls, then stopped on a missing strings import. Complete that import and preserve ordinary hyphenated PVE dictionary keys while keeping duplicate/case-conflicting lock rejection.

Contract-Neutral: Preserves the guest safety protocol and its lock, identity, budget and dispatch requirements; completes compilation and accepts canonical hyphenated config keys.
Change-source: pulse-maintainer
2026-10-04 18:05:57 +01:00
pulse-triage[bot] be319e8204 Guard VM Discovery and command execution at the owning host agent
Require local current-node lock evidence and registered guard support before QGA execution. Serialise VM probes, stop on deferral, retain actual in-flight outcomes and saved Discovery evidence, and pause uncertain completion without replay. Config checks do not reserve QGA or prove native thaw; the existing backup monitoring-outage precaution remains.

Change-source: pulse-maintainer
2026-10-04 17:59:09 +01:00
pulse-triage[bot] def087ed90 Reproduce unverified VM command admission at the host agent
Approvals and trusted Discovery commands currently cross QGA handoff without evidence of a local unlocked guest. Assert explicit no-handoff deferral without contacting a native target.

Change-source: pulse-maintainer
2026-10-04 17:41:40 +01:00
pulse-triage[bot] 80d8ad0f59 Keep unknown linked-agent observation times explicitly last-known
An online source status without a valid original receipt time cannot assert current memory freshness. Preserve its numeric availability and existing selection while omitting unknown/future time; cover both cases at the linked view. Remove the stray adapter-test comment copied during test relocation.

Contract-Neutral: Completes the optional memory-observation semantics and wire shape documented with 43ccc6c39a; no new contract or selection delta.
Change-source: pulse-maintainer
2026-10-04 17:03:47 +01:00
pulse-triage[bot] 43ccc6c39a Keep guest-memory provenance bound to its original observation
Expose current, last-known and unavailable memory through raw guest and selected unified metrics without renewing QGA evidence during repeated backup deferrals. Preserve independent PVE/linked-agent source times, numeric selection, History and alert policy. Annotate selected metrics as well as raw facets so cross-source fallback cannot inherit another source freshness. Add connected observation, source ownership, clone and wire controls and update the shared subsystem contracts.

Change-source: pulse-maintainer
2026-10-04 17:00:24 +01:00
pulse-triage[bot] c50b8340fd Initialise the guest-memory control metadata limiter
The first control panicked at an uninitialised synthetic Monitor map before reaching the provenance assertions. Supply the same map as production and retain that failed attempt without claiming a product regression.

Change-source: pulse-maintainer
2026-10-04 16:50:29 +01:00