Commit Graph

172 Commits

Author SHA1 Message Date
pulse-triage[bot] 757acf055e Isolate lock-evidence fixture keys without clearing guest fences
Retained full-suite proof reports an inherited agent-cooldown before the invalid-UTF8 lock case dispatches any command. Give each synthetic case a distinct base path, keeping all clients in that case on its shared key. A same-listener control retains the prior uncertainty fence unchanged. No runtime guest guard, native target or assertion is weakened.

Change-source: pulse-maintainer
2026-10-14 14:47:17 +01:00
pulse-triage[bot] 5b895ff78e Bound routing ownership proof without a one-second latency assumption
The retained 277ec211 source proof times out on a correctly retained target, with injected requests zero and its pin unchanged. This test owns routing and trust, not a latency SLO. Use explicit five-second client and ten-second caller fixture bounds, record elapsed work, and retain every routing/pin/guest assertion. Runtime timeouts and timeout controls are unchanged; the original failed receipt remains adverse evidence, not a diagnosed host fault.

Change-source: pulse-maintainer
2026-10-14 14:37:46 +01:00
pulse-triage[bot] 277ec2110a Preserve contradictory saved cluster trust through producer and refresh
Carry exact duplicate-row conflicts into owned client trust before map deduplication. Keep unresolved saved trust through initialization, missing-client retry and topology refresh without replacing pins or stopping trusted siblings. Cover actual monitor lifecycle routes and member projections alongside client TLS controls.

Change-source: pulse-maintainer
2026-10-14 14:27:25 +01:00
pulse-triage[bot] bea93859d3 Refuse conflicting saved TLS pins for equivalent Proxmox URLs
Resolve all saved pins for an endpoint before credential-bearing construction. Contradictory trust is an explicit failure, not a missing-pin fallback or first-use opportunity. Preserve independent authorities, agreeing formats and saved configuration; prove zero provider work, sibling monitoring and normal reload through the member projection.

Change-source: pulse-maintainer
2026-10-14 13:36:51 +01:00
pulse-triage[bot] 9dcd5697cc Keep incomplete Proxmox guest inventories out of publication
Require whole bounded, unambiguous enumerations on the efficient and node fallback routes. Preserve scoped empty inventories, LXC integer compatibility and ordinary counter/receipt semantics. Validate retained readings, History, breaches and template policy through actual fallback and recovery.

Change-source: pulse-maintainer
2026-10-14 11:35:55 +01:00
pulse-triage[bot] ba9bb34d09 Require complete Proxmox node inventory before recovery
Consume the bounded response through EOF before admitting nodes or a cluster probe. Reject missing, ambiguous and incomplete inventories without leaking response details, retain scoped empty arrays and provider metadata, and cover trusted startup, recovery, cached reads and consuming endpoint projection.

Change-source: pulse-maintainer
Contract-Neutral: Tightens existing node-inventory and recovery-health admission without changing the public response schema, API surface, permissions, TLS or guest-command policy.
2026-10-14 10:10:50 +01:00
pulse-triage[bot] db8587f7d1 Align the cached fallback fixture with observed recovery
Replace the old optimistic-health expectation with cached selection, failed-request and later-success controls. Advance no production clock or safety fence and avoid an irrelevant constructor attempt in the in-memory fixture.

Contract-Neutral: Test-only correction to the recovery contract established in 4147f48db3; runtime and browser inputs are unchanged.
Change-source: pulse-maintainer
2026-10-14 07:39:58 +01:00
pulse-triage[bot] 4147f48db3 Keep failed Proxmox nodes probes out of recovered health
Require the actual nodes/login probe to succeed at startup, recovery and lazy selection instead of accepting guest-like response text. Retain failed single-endpoint health until an ordinary request succeeds, preserving cached last-resort reads, real guest error handling, temporary rate-limit handling and trust policy. Add producing-path and connected projection regressions and revise the old nodes-as-guest fixture contract.

Change-source: pulse-maintainer
2026-10-14 07:24:36 +01:00
pulse-triage[bot] 2d14da7380 Bind recovery fixtures to real fields and independent guest origins
The projection fixture now uses the actual saved ClusterEndpoint schema. Give each malformed-filesystem fixture an independent base path so reused listener ports cannot borrow a previous live uncertainty fence; all real guard state and response assertions remain.

Contract-Neutral: Test-only schema correction and independent synthetic endpoint identity; no production policy, deadline, wire or configuration changes.
Change-source: pulse-maintainer
2026-10-14 05:43:31 +01:00
pulse-triage[bot] bf67cf6532 Keep probe counts faithful to their actual observation
A completed first-use retry does not return its nodes payload. Omit that unknown diagnostic count rather than reporting zero. Concurrent ordinary reads may legitimately open additional TLS sockets, so the construction control bounds logins and probe reads rather than pooled read connections.

Contract-Neutral: Diagnostic-count fidelity and fixture-only connection counting; no wire, trust, polling, authority or consumer contract delta.
Change-source: pulse-maintainer
2026-10-14 05:40:56 +01:00
pulse-triage[bot] ddc86c4293 Keep lazy Proxmox session construction serial during pin capture
The shared probe must release the health mutex for first-use trust. Retain the prior single construction boundary so joined readers do not duplicate capture and password login. The actual TLS concurrency control checks eight ordinary reads and nonblocking health inspection.

Contract-Neutral: Preserve existing serialized lazy client construction while releasing only the health and trust mutex for first-use capture; no wire, authority, configuration or consumer contract changes.
Change-source: pulse-maintainer
2026-10-14 05:39:47 +01:00
pulse-triage[bot] 0c130694cc Recover declared Proxmox members through password TLS admission
Use one bounded first-use probe for constructor and nodes-read pin failures at startup, recovery and lazy selection. Keep capture credential-free, primary and saved pins immutable, and full polling-session acceptance separate. Qualify all existing auth encodings and refusal, cancellation and consuming projection controls.

Change-source: pulse-maintainer
2026-10-14 05:35:12 +01:00
pulse-triage[bot] 3844a230f0 Keep independent guest-response fixtures out of retained cooldowns
The containing race suite observed a prior cooldown before the invalid-success matrix sent its first HTTP request. Use per-case synthetic base paths instead of recycled listener authority; prove two first admissions and preserved cross-client fences on one shared listener. Production admission keys, aliases and safety state are unchanged.

Contract-Neutral: Isolate synthetic test identities; no production guest admission, TLS, session, polling or History contract delta.
Change-source: pulse-maintainer
2026-10-14 04:35:17 +01:00
pulse-triage[bot] 3096fb2748 Require complete Proxmox password sessions before publication
Reject incomplete or ambiguous 200 login bodies before replacing ticket, CSRF, expiry and PVE generation. Preserve retained sessions, joined renewal failures, normal encoding fallback and later ordinary recovery; cover real pinned startup/poll/broadcast consumption.

Contract-Neutral: Restore existing complete-session and failed-renewal preservation guarantees; no API/wire schema, TLS trust, credential authority, guest lifecycle, polling cadence or History contract delta.
Change-source: pulse-maintainer
2026-10-14 04:25:26 +01:00
pulse-triage[bot] 13984070ff Keep Proxmox recovery authentication within its caller budget
Carry cancellation through PVE/PBS construction, cluster probes and retained sessions, startup retries and port fallback. Preserve prior health/errors on caller termination; accepted clients retain independent ordinary reads and full timeouts. Cover real pinned HTTPS cancellation, deadlines, form fallback and first-poll publication.

Contract-Neutral: Restore existing caller cancellation and usable-session guarantees; no wire/API schema, agent lifecycle, TLS trust, guest safety, polling cadence or History contract delta.
Change-source: pulse-maintainer
2026-10-14 03:18:40 +01:00
pulse-triage[bot] 8eb0daddc9 Require a usable polling session before cluster recovery
Retain the actual authentication refusal and existing client when the full-timeout session cannot be constructed after a successful short probe. Cover pinned HTTPS rejection, malformed and form-refused sessions, later ordinary recovery and the monitor endpoint projection.

Change-source: pulse-maintainer
2026-10-13 23:44:32 +01:00
pulse-triage[bot] 83d51d75a5 Keep impossible guest reply types behind the uncertainty fence
Validate result/content/truncated types before shared guest-command admission is released. Scalar results must not become empty inventories, and wrongly typed file fields must not release admission before decoder failure. Preserve compatible empty/null rows and completed but unusable measurements. Add six-reader, alias/expiry and actual-state polling/broadcast/History controls with untouched healthy-read origins. Native thaw and restart recovery remain separately unverified.

Change-source: pulse-maintainer
2026-10-13 15:19:02 +01:00
pulse-triage[bot] 768065b0db Stop cancelled Proxmox first-use certificate probes
Bind the credential-free capture handshake to the polling context under the existing five-second ceiling. Recheck cancellation before publishing a runtime pin; retain established trust, endpoint selection and ordinary declared-member first use. Add local stalled-handshake, peer-closure, no-dial and later-recovery controls.

Change-source: pulse-maintainer
2026-10-13 11:15:48 +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] 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] 97e4c8eac7 Share Proxmox session renewal across concurrent polling reads
Publish ticket, CSRF and expiry as one locked snapshot, and bind expiry/401 renewal to the rejected session generation. Concurrent readers share one authentication attempt while retaining their own cancellation and ordinary single-retry behaviour. Keep guest commands single-attempt and token/TLS policy unchanged.

Contract-Neutral: Synchronise existing Proxmox password-session renewal without changing API fields, TLS policy or guest-command admission and replay rules.
Change-source: pulse-maintainer
2026-10-12 18:14:32 +01:00
pulse-triage[bot] a31fdc77da Measure endpoint ownership independently of startup probe count
The first single-endpoint ordinary read performs a connectivity check before the requested API read. Keep the fixture assertion on successful declared-target monitoring and zero injected-target authentication; guest single-attempt and admission assertions remain exact. Retain the failed final-source proof rather than treating it as a runtime failure.

Change-source: pulse-maintainer
2026-10-11 21:17:00 +01:00
pulse-triage[bot] 496b37ec71 Own cluster endpoint membership before routing and trust checks
Snapshot constructor endpoints before guest-channel registration and initial network checks. Caller configuration reuse cannot introduce an undeclared first-use trust target or bypass in-flight guest admission. Preserve endpoint order, TLS policies, backup locks, uncertainty fences and non-replay; prove ordinary monitoring and concurrent input reuse.

Change-source: pulse-maintainer
2026-10-11 20:48:07 +01:00
pulse-triage[bot] cc72ea76e3 Expose caller-owned cluster endpoint edits bypassing admission
Discriminate live routing, first-use TLS trust and shared guest-command coordination after the constructor input is reused. Use only synthetic loopback services; no native guest workload or reporter recovery is claimed.

Change-source: pulse-maintainer
2026-10-11 20:43:26 +01:00
pulse-triage[bot] f0d27be7ba Coordinate mapped IPv4 guest reads without sharing TLS pins
IPv4-mapped IPv6 and literal IPv4 reach the same numeric guest channel. Share only per-VM admission so another spelling cannot bypass an in-flight or uncertain command. Preserve the previous certificate origin identity, URL, proxy and first-use trust behaviour.

Change-source: pulse-maintainer
2026-10-11 12:09:32 +01:00
pulse-triage[bot] f6bd20136f Align ordinary config redirect controls with origin confinement
The broad suite retained the old cross-endpoint positive oracle. Keep same-origin proxy reads, require cross-origin refusal before a second request, and retain every stricter guest-lock refusal and same-target recovery assertion.

Contract-Neutral: Update a verification oracle for the already implemented infrastructure origin contract; no runtime change or relaxation of guest-command safety.
Change-source: pulse-maintainer
2026-10-11 06:43:55 +01:00
pulse-triage[bot] 5abea19419 Expose infrastructure credentials following redirects to another origin
Exercise actual TLS sockets and the PVE/PBS token, ticket/CSRF and password JSON/form flows using synthetic credentials. Retain same-origin proxy paths and the existing ten-redirect budget.

Contract-Neutral: Add discriminating source controls for the existing infrastructure connection trust boundary; no runtime or authority change.
Change-source: pulse-maintainer
2026-10-11 06:34:28 +01:00
pulse-triage[bot] e7d8092c63 Reject case-variant guest filesystem identity fields
Apply the existing canonical-key admission rule to filesystem identity and filter metadata as well as counters. A case-variant mount or type can otherwise overwrite a real volume, filter it out and falsely publish a complete healthy inventory. Preserve valid peers with the existing completeness error and hold only the original qualified disk evidence. Cover metadata ordering, array and object replies, both collectors, History, alert continuity and genuine ordinary recovery without changing guest command admission.

Contract-Neutral: Repairs existing filesystem identity and incomplete-reading invariants; no public wire schema, guest command, retry, lock, permission, threshold or backup contract delta.
Change-source: pulse-maintainer
2026-10-10 09:49:01 +01:00
pulse-triage[bot] 615fa29918 Keep incomplete guest filesystem readings out of recovery
Retain valid peer rows with a completeness error instead of treating rejected or unrecognized volumes as removed. Both collectors hold only the last complete tuple within its original age bound, preserving History and real filesystem breaches until a complete ordinary replacement can recover. Keep guest command admission and backup policy unchanged.

Contract-Neutral: Repairs existing truthful guest filesystem completeness and recovery invariants; no public wire schema, guest command, retry, lock, permission, identity or backup contract delta.
Change-source: pulse-maintainer
2026-10-10 05:28:48 +01:00
pulse-triage[bot] b9409a0c74 Preserve measured zero guest memory and reliable guidance proofs
Keep explicit status/current zero availability through decoding and JSON copies so genuine exhaustion cannot become a healthy cache fallback. Connected direct/cluster collector controls cover canonical memory, History and breach/recovery. Complete race validation also exposed a shared-logger guidance fixture race: keep guidance on its caller logger with ordinary fallback, and stop the named scheduler-health fixture monitor. Message, backup precautions, command fences, thresholds and dependencies are unchanged; prior failed proof receipts remain retained.

Change-source: pulse-maintainer
2026-10-10 04:08:26 +01:00
pulse-triage[bot] 7100938fb3 Keep established Proxmox certificate pins during recovery
Reject automatic replacement of primary and known member fingerprints. Admit first-use capture only for a declared new member and a typed local verifier failure; preserve concurrent trust, caller-owned configuration and operator-visible mismatch evidence. Validate real changed/restored TLS leaves through startup, recovery and new-member acceptance while retaining guest-command safeguards.

Change-source: pulse-maintainer
2026-10-09 20:06:58 +01:00
pulse-triage[bot] d16885bc35 Defer guest commands after unrecognised HTTP client errors
An unfamiliar 4xx from an intermediary does not establish QGA command completion. Keep supported terminal refusals and command-bound HTTP 500 rejections as errors; retain the shared uncertainty fence for other statuses. Cover all six readers, configured aliases, independent guests, resumption and connected last-known History without changing ordinary API reads or backup locks.

Change-source: pulse-maintainer
2026-10-09 18:36:47 +01:00
pulse-triage[bot] 96653f81c4 Reject malformed UTF-8 backup-lock evidence before guest reads
Do not let encoding/json repair malformed configuration strings into evidence of an absent operation lock. Reject the whole malformed response before a guest command and before publishing its payload, while retaining valid Unicode and ordinary configuration decoding.

Contract-Neutral: Restore the existing malformed-config deferral contract without changing guest commands, lock policy, payloads or public interfaces.
Change-source: pulse-maintainer
2026-10-07 19:05:53 +01:00
pulse-triage[bot] ef222a7c7b Reclaim expired guest-command admission before capacity deferral
Count only new endpoint/VMID slots and reclaim expired idle entries when a whole alias group otherwise exceeds the unchanged 4096-entry bound. Keep busy work, uncertain completion, backup locks and single-attempt commands protected. Cover all six HTTP readers, alias reuse and fail-closed full capacity; no native recovery or reported-cause claim.

Change-source: pulse-maintainer
2026-10-07 17:41:02 +01:00
pulse-triage[bot] 6dcff07343 Keep untrusted guest filesystem counters out of disk usage
Preserve exact byte observations and explicit zero readings; reject missing, negative, fractional, ambiguous and out-of-range usage instead of publishing a healthy default or wrapping signed disk values. Keep valid peer rows and existing guest-agent request and backup safeguards.

Contract-Neutral: Repairs existing truthful guest disk reading invariants; no wire fields, routes, command admission, retry, lock, backup or identity contract changes.
Change-source: pulse-maintainer
2026-10-07 13:21:19 +01:00
pulse-triage[bot] e9924fac05 Replace presumptive backup ACL recipes with evidenced access guidance
Use observed HTTP status to distinguish authentication rejection, denial and unknown cause. Point to the actual saved connection and attempted endpoint without prescribing a role, mutating ACLs or exposing token identities or provider text. Preserve inventory and setup semantics and privilege separation; cover custom/manual identities and real-client 401/403/proxy producer paths.

Contract-Neutral: Correct existing diagnostic guidance and expose only internal HTTP-status evidence; no API shape, collection, inventory, setup permission or guest-safety contract changes.
Change-source: pulse-maintainer
2026-10-07 02:39:19 +01:00
pulse-triage[bot] 1b8f077012 Keep replication observations owned through ordinary polling recovery
Dispatch replication independently of the efficient guest path, coalesce bounded runtime-scoped reads and fence obsolete client/runtime completions. Preserve prior inventory on unavailable input or cancellation; only an explicitly complete empty read clears it. Bind scheduler, replacement and HTTP cancellation controls to this repair.

Contract-Neutral: Repair existing replication scheduling and cancellation ownership; no wire, endpoint, cadence, permission or host-agent lifecycle contract changes.
Change-source: pulse-maintainer
2026-10-07 02:30:24 +01:00
pulse-triage[bot] 61662b8c59 Keep the native replication control free of synthetic config status
Supply a success-shaped config outcome only to unavailable or unmatched-status controls. Otherwise it masks the original healthy-job enrichment defect in the parent comparison. Preserve both observed-only and config-only controls.

Contract-Neutral: Corrects the discriminating source fixture only; runtime and replication contract are unchanged.
Change-source: pulse-maintainer
2026-10-06 21:19:59 +01:00
pulse-triage[bot] 45b9dfbe58 Do not reuse configuration as a replication sync outcome
Withdraw any configuration-carried outcome before status enrichment so missing source identity, denied and malformed reads remain unknown. The HTTP matrix starts with a success-shaped configuration string and still requires observed source-job status.

Contract-Neutral: Enforces the observed-only replication outcome contract without changing its shape or polling policy.
Change-source: pulse-maintainer
2026-10-06 21:15:43 +01:00
pulse-triage[bot] 02ca5a0414 Populate replication outcomes from observed source-job status
Report successful syncs and zero-count errors truthfully without inferring health from configuration or unavailable data. Match response job/source identity before enrichment and verify fourteen-job polling, wire projection and failure recovery. The separate lifecycle report remains unresolved.

Change-source: pulse-maintainer
2026-10-06 21:12:41 +01:00
pulse-triage[bot] 09e465aadf Bind the guest transport-refusal control to a valid endpoint
The complete remaining-case proof reproduced all five fixture cases stopping at invalid-guest-key: their manually constructed Client had no endpoint. Supply a valid synthetic identity to exercise the unchanged transport refusal and preserve its zero-dispatch assertion. Keep the original failed proofs and reporting-bound loss.

Change-source: pulse-maintainer
2026-10-06 08:36:04 +01:00
pulse-triage[bot] 2092defd95 Keep the streamed guest-admission fixture deterministic
Keep its channel identity immutable across the handler and test, bound the fixture timeout and prove an unrelated endpoint can issue its own same-VMID command. Static review found the mutable fixture channel before execution; no race outcome is inferred.

Change-source: pulse-maintainer
2026-10-06 08:11:04 +01:00
pulse-triage[bot] d0f2430a6c Coordinate equivalent Proxmox endpoints before guest reads
Use one origin key for DNS case, numeric/default ports and IPv6 spelling in per-VM admission and configured alias registration. Keep wire URLs, TLS policy and independent scheme/path/zone/port identities unchanged. Cover all six readers, streamed in-flight replies, uncertainty and normal resumption. This remains a process-local pause, not native thaw or restart recovery.

Change-source: pulse-maintainer
2026-10-06 08:09:43 +01:00
pulse-triage[bot] caceb1d266 Defer guest reads after unverified successful replies
Keep per-VM admission held until a direct HTTP 200 supplies one complete, unambiguous guest response envelope. Malformed, conflicting and prefix-only payloads keep the existing uncertainty cooldown across methods, diagnostic clients and cluster aliases.

Preserve valid payload variants and independent CPU observations. Connected polling controls keep original guest caches and History labelled last-known. Native thaw, workload recovery and cross-process/restart safety remain unresolved.

Change-source: pulse-maintainer
2026-10-06 06:46:07 +01:00
pulse-triage[bot] 9daf5c6f71 Keep guest filesystem failure guidance backup-safe
Bind stopped-agent and access diagnoses to observed command and HTTP evidence. Missing or unsupported readings no longer prescribe QGA activation, restarts, setup or shared-role changes; synthetic collector controls preserve unavailable disks and independent current counter receipts.

Change-source: pulse-maintainer
2026-10-06 05:22:37 +01:00
pulse-triage[bot] b77e6908e6 Require same-target unambiguous locks before guest-agent reads
Guest lock verification used ordinary redirect-following config reads and last-key-wins JSON decoding. Refuse redirected or ambiguous lock evidence before dispatch and after a complete guest response, without changing ordinary config redirects, pooled TLS policy or session recovery. Cover all six readers and connected cache/History continuity and fresh resumption; this source hardening does not establish native backup thaw.

Change-source: pulse-maintainer
2026-10-04 15:01:23 +01:00
pulse-triage[bot] cd1e3ba12f fix(proxmox): defer guest reads after uncertain HTTP failures
Preserve the actual HTTP response status rather than trusting quoted API errors. Apply the VM-wide cooldown after request timeouts and unexplained server or gateway failures, while retaining exact command-bound terminal refusals as ordinary errors. Reject ambiguous error envelopes and preserve cached guest observations alongside fresh live counters.

Change-source: pulse-maintainer
2026-10-04 11:54:46 +01:00
pulse-triage[bot] 076a4ff94f Prevent transparent replay of Proxmox guest-agent commands
Guest-agent GETs enqueue serial work: ordinary HTTP pooling, stream recovery and redirects can resend a command despite the application single-attempt guard. Use an isolated single-use HTTP/1 transport with the configured TLS, proxy, dial and timeout policy, and defer redirects without contacting their destination. Keep ordinary API recovery and current CPU/I/O counter presence/receipts unchanged. Pin wire-level lost replies, all read/redirect paths, TLS trust and connected deferred cache/History behaviour.

Change-source: pulse-maintainer
2026-10-04 10:53:56 +01:00
pulse-triage[bot] 227f4f7ef9 Require complete VM config bodies for guest-agent lock checks
Do not admit guest commands or publish their payloads from an unlocked JSON prefix when the authoritative config response is incomplete. Preserve bounded ordinary config reads, live CPU and I/O observations, cache timestamps and healthy resumption.

Change-source: pulse-maintainer
2026-10-04 04:11:34 +01:00
pulse-triage[bot] 3c57c2d207 Defer guest commands after incomplete HTTP error responses
The HTTP error wrapper hid truncated response bodies from guest admission. Preserve the bounded read failure as a private wrapping type so error statuses also cool down the whole guest. Cover both 200 and 500 truncation, and retain complete permission refusals plus subsequent healthy reads.

Contract-Neutral: Completes the existing full-response/incomplete-body guest safety contract; error text and ordinary API errors retain compatibility, with no new interface or surface.
Change-source: pulse-maintainer
2026-10-03 15:10:01 +01:00