Commit Graph

5085 Commits

Author SHA1 Message Date
rcourtman e7f36efceb Merge pull request #2089 from rcourtman/fix/pr-validation-refresh
Cancel superseded pull request validation
2026-09-14 23:44:50 +01:00
rcourtman 092e988239 Cancel superseded pull request validation
Replacement PR checks were queued behind obsolete runs even after the
previous revision failed. Cancel prior validation only for pull_request
events, preserving completed verdicts for branch pushes and manual runs.

Contract-Neutral: Only PR concurrency changes. Semantic YAML comparison confirms all jobs and triggers, including frontend dependency security checks, are unchanged. No security verification change is warranted. The scheduling contract is updated.
2026-09-14 23:07:22 +01:00
pulse-triage[bot] 10d466e1a3 style(alerts): format warning preference repair
Resolve the PR2087 frontend formatting gate without changing severity behavior or rewriting the reviewed source. Re-run the production-component browser matrix and refresh its content hashes; whole-tree formatting and local TypeScript checking pass.

Change-source: pulse-maintainer
2026-09-14 22:46:12 +01:00
pulse-triage[bot] e8bbda6f71 fix(alerts): preserve warning-level notification preferences
Retain warning severity through email API save/reload and webhook editing instead of coercing it to all. Add adapter round-trip and webhook edit/save regressions for issue #2069 with alerts, API and notifications contracts. Browser verification covers production components at desktop and narrow widths using synthetic settings; backend filtering is unchanged.

Change-source: pulse-maintainer
2026-09-14 22:36:28 +01:00
pulse-triage[bot] 646bba571b fix(truenas): accept non-object REST alert arguments
Preserve snapshot refresh and formatted alerts when legacy args are scalar, array or null. Restrict SMART metadata to typed object fields and cover repeated snapshot collection plus error boundaries for #2077.

Change-source: pulse-maintainer
2026-09-13 18:42:50 +01:00
pulse-triage[bot] c9e71eac86 test(monitoring): register physical disk round-trip runtime proof
Register the focused skipped-poll regression under monitoring runtime verification as well as the shared lifecycle and read-state edges.

Change-source: pulse-maintainer
2026-09-13 18:26:15 +01:00
pulse-triage[bot] 01742e2279 fix(monitoring): preserve physical disk source identity on refresh
Skipped disk polls must write the Proxmox source key back into inventory rather than hashing the canonical resource ID again. Add repeated-cycle runtime and JSON projection coverage for serial-less disks, distinct node/controller scopes and removal.

Change-source: pulse-maintainer
2026-09-13 18:25:42 +01:00
pulse-triage[bot] ae38b93c0c fix(release): stop public writer chain on workflow cancellation
Preserve successful qualification and optional skipped ancestors while rejecting workflow cancellation independently of completed needs. Cover tag, Docker, Helm, readiness, convergence dispatch and activation; retain evidence and cleanup joins.

Change-source: pulse-maintainer
2026-09-13 14:21:55 +01:00
pulse-triage[bot] f9569426f5 fix(release): publish qualified tags after optional skipped checks
Use an explicit status guard while requiring successful preparation and qualification. Model the beta skipped-ancestor path and adverse direct prerequisites; retain immutable identity and all release gates.

Change-source: pulse-maintainer
2026-09-13 13:03:02 +01:00
pulse-triage[bot] 6f301ee8fb fix(vmware): probe canonical vSphere 8.0.3 JSON release
Probe 8.0.3.0 before the legacy spelling and older API schemas. Issue #2070 demonstrates method routing on the canonical version while Pulse reports 8.0.2.0. Retain legacy fallback and hard authentication/permission failures.

Add canonical negotiation, legacy/older fallback and auth/permission regression controls; update the runtime contract. Five reduced-function race probes fail before and pass after. Full package validation is unavailable with the installed offline dependency cache. This repairs negotiation, not the unresolved metrics/events/folder enrichment report.

Change-source: pulse-maintainer
2026-09-13 09:25:10 +01:00
pulse-triage[bot] 343f15eec5 Merge pull request #2065 from rcourtman/fix/proxmox-node-guest-navigation
Show a node's guests from the Proxmox overview row
2026-09-12 22:55:38 +01:00
rcourtman c7c503994b Merge pull request #2063 from rcourtman/fix/disposable-release-qualification
Isolate release preparation and qualification on hosted VMs
2026-09-12 18:33:17 +01:00
rcourtman 982465e63c Show a node's guests from the Proxmox overview row
Selecting a node filters its guests and reveals an off-screen guest
heading without moving results that are already visible. Repeating the selection
clears only the node filter. Keep node details on the
chevron and preserve other guest filters when changing or clearing nodes.

Build node filter options from inventory as well as guests so empty nodes
retain their names and selection after reload. Do not present unrelated
inventory failures as the cause of an empty filtered result.

Refs lane L8. Update the owning interaction and identity contracts.
2026-09-12 17:24:46 +01:00
rcourtman 051ce81a72 Isolate release preparation and qualification on hosted VMs
Persistent prerelease runners can retain state from earlier source execution
and influence later admission, build output or qualification. Use the
existing hosted stable-release path for every channel while preserving
exact-source checks, resource planning, watchdogs and release gates.
2026-09-12 15:44:11 +01:00
pulse-triage[bot] 34ba9a5ed9 Merge candidate 20260911T204017Z-core-runtime
Change-source: pulse-maintainer
2026-09-11 21:47:11 +01:00
pulse-triage[bot] 097422837b fix(release): preserve quarantined version identity
Reject historical draft reuse before PATCH when its retained target is not the exact checkout SHA, including missing targets and moving refs. Preserve same-source recovery and activation guards.

Depends on PR2056 qualification-first workflow and immutable tag checks. Executable absent-tag fixtures fail before repair and pass on PR head 9e5e18f0 plus this patch; 53 policy, 6 immutability and 42 trust tests pass. Update the deployment contract in the same commit.

Change-source: pulse-maintainer
2026-09-11 21:43:11 +01:00
rcourtman 9e5e18f008 fix(release): qualify candidates before public version writes
A draft GitHub release does not hide its public Git tag or registry
images. Publishing those before qualification consumed a beta identity
when the candidate later failed.

Stage drafts without Git refs, join exact-source checks before public
tag, Docker and Helm publication, and preserve exposed tag identities.
Keep final digest verification before release activation.
2026-09-11 21:04:46 +01:00
rcourtman 02d8165b8b fix(metrics): isolate statistics reads from history load
History requests can occupy every database connection and make cheap
statistics reads wait for seconds. Reserve one read-only connection for
current committed counts, owned and closed by the metrics store.

Keep the SQL, data model, load workload and latency budgets unchanged.
Add deterministic pool-saturation, committed-data and shutdown coverage.
2026-09-11 18:19:51 +01:00
pulse-triage[bot] bfae4ce0c8 fix(ui): keep disk mounts in the parent scrolling flow
The nested 140px mount list relies on a thin scrollbar to reveal additional disks, which #2051 reports as invisible in Firefox. Remove that nested scroll boundary so all mounts participate in the existing outer scroll flow without changing data or global scrollbar styling.

Validate short and long lists in light/dark Firefox and Chromium fixtures, including keyboard reachability, and retain aggregate/empty-state component coverage. This is synthetic browser proof, not reporter installation acceptance.

Change-source: pulse-maintainer
2026-09-11 11:26:20 +01:00
pulse-triage[bot] 3e920df03d fix(alerts): skip unchanged pending-intent checkpoints
Complete the JSON-only checkpoint fast path: compare sorted, bounded actual pending-state bytes before replacement. Preserve changes, clearing, failed-write retry and unsafe-destination repair. Focused before regression fails; repeated race proof passes. Sixty unchanged synthetic checkpoints fall from 245760 process write bytes to zero; changing alert freshness remains a separate contributor, not aggregate issue #1966 acceptance.

Change-source: pulse-maintainer
2026-09-11 07:05:34 +01:00
pulse-triage[bot] 45f76ed7a9 fix(release): map 6.4.5 reliability checkpoints to release line
The following notification reliability patch needs an explicit branch binding before selection. Keep 6.4.4 frozen and preserve historical and unlisted patch mappings while testing beta, RC and stable workflow resolution.

Change-source: pulse-maintainer
2026-09-11 00:23:11 +01:00
rcourtman 3c723569e3 Merge main into source-build update safeguards
Reconcile parallel release-version test fixtures while preserving the
current provider settings changes. Refresh browser verification against
the combined source before landing the diagnostic update safeguards.

Refs #1913
2026-09-10 21:31:38 +01:00
pulse-triage[bot] 3da2356dda fix(ci): archive durable root-pair candidate
The reviewed diagnostic named an ephemeral proposal commit that is no longer fetchable after its branch was retired, so a hosted checkout could not archive the fixed candidate. Use the merged main commit with the identical reviewed tree, retain the original evidence identity in metadata, and require an exactly balanced AB/BA contract.

Change-source: pulse-maintainer
2026-09-10 19:13:29 +01:00
pulse-triage[bot] 9902c204d0 ci: collect fixed hosted root-route pair evidence
The completed local study did not explain the adverse hosted root comparison. Add an exact-source root-only collector with matched builds, ten alternating samples and retained layout and host evidence, rather than repeat full qualification or relax its threshold. Eight focused mocked collector tests pass; hosted execution remains after independent review and protected landing.

Change-source: pulse-maintainer
2026-09-10 19:03:01 +01:00
pulse-triage[bot] b5a9b7aac2 Merge commit 'e8449477ff1098be8975cccee42952e45c73aa74'
Change-source: pulse-maintainer
2026-09-10 18:41:40 +01:00
pulse-triage[bot] e8449477ff fix(settings): restore Ollama Basic Auth configuration
The backend supports authenticated Ollama servers but the provider editor omitted its credential fields. Expose write-only password editing with explicit clearing and preserve unchanged credentials. Verify Settings persistence, authenticated connection tests and the Patrol streaming factory using synthetic endpoints.

Change-source: pulse-maintainer
2026-09-10 18:21:29 +01:00
pulse-triage[bot] c0967d02db test(ai): wire typed planners in control projection fixtures
Repair stale transport-only availability fixtures without weakening runtime planner or policy checks. Exercise planner removal with execute authority, transport-only provider projections, and read-only policy with an installed planner.

Change-source: pulse-maintainer
2026-09-10 18:17:48 +01:00
rcourtman 7f15acfbad Keep diagnostic source builds out of release update flows
Diagnostic versions must keep their exact identity without advertising a published server or agent update target. Reuse the canonical source-build classification and discard cached release offers when runtime identity changes.

Show source-build status and manual image replacement guidance. Verify release and preview controls remain available.

Refs #1913
2026-09-10 17:06:27 +01:00
pulse-triage[bot] fd2327d3cf fix(ai): advertise lifecycle control from planner availability
The hosted synthetic lifecycle diagnostic offered no control tool despite an installed canonical planner: availability still depended on retired execution transports. Match exposure to the plan-only boundary while preserving read-state and control-level policy. Assert provider and gateway tool offers so scripted calls cannot hide this mismatch, and retain literal-search behaviour as separate evidence.

Change-source: pulse-maintainer
2026-09-10 17:04:01 +01:00
rcourtman dd388decf5 Merge pull request #2031 from rcourtman/fix/1913-agent-continuity
Preserve live agent state over saved enrollment history
2026-09-10 16:41:10 +01:00
rcourtman 751b8dd8c1 Merge pull request #2030 from rcourtman/fix/manual-update-freshness
Fix manual update freshness and unknown release dates
2026-09-10 16:14:11 +01:00
rcourtman bd37ae186a Preserve live agent state over saved enrollment history
Saved enrollment records can correlate with a live Proxmox host after a
reinstall. The continuity overlay then replaced its current agent payload
with an older offline identity, hiding metrics and marking the node offline.

Use canonical matching to add only absent continuity resources. Preserve
current identity, telemetry and provider links without deleting history or
changing token admission. Cover repeated reads and identity collisions.

Refs #1913
2026-09-10 16:00:36 +01:00
rcourtman 837a5b8843 Fix manual update freshness and unknown release dates
Manual checks previously bypassed only the browser cache, so a newly
published preview could remain hidden behind a fresh-looking server result.
Carry explicit freshness to the provider, retain prior evidence on failure,
and omit unknown dates instead of rendering year one.
2026-09-10 15:33:53 +01:00
pulse-triage[bot] 153b80f7a1 docs(ai): clarify hosted diagnostic request budget
Distinguish logical adapter-call and provider-neutral request limits from transport retries, compatibility fallbacks, and provider billing attempts. Keep the hosted fixture behavior unchanged.\n\nChange-source: pulse-maintainer

Change-source: pulse-maintainer
2026-09-10 14:25:11 +01:00
pulse-triage[bot] 6f03c8c898 test(ai): add bounded synthetic hosted lifecycle diagnostic
Use production Assistant instructions with synthetic inventory and approval-only planning. Keep gateway inference distinct from native Gemini transport, retain adverse output, and enforce fixed session and token budgets. Hosted execution remains opt-in; local regressions cover model-owned continuation, wire planning and hard call limits.

Change-source: pulse-maintainer
2026-09-10 14:05:15 +01:00
pulse-triage[bot] c49b316409 Merge origin/main before publication
Change-source: pulse-maintainer
2026-09-10 10:02:46 +01:00
rcourtman 93a039fb17 Merge pull request #2027 from rcourtman/docs/immutable-release-policy
Align release policy with immutable publication
2026-09-10 09:55:07 +01:00
rcourtman 73ac0eecf4 Align release policy with immutable publication
The workflow stages and verifies its activation marker in the unpublished
draft, then publishes the complete release immutably. The policy still
placed the marker upload after publication and implied public read-back
could return the committed release to draft.

Describe the implemented commit boundary, inert private staging and the
complete readiness join. Preserve source identity, signing, qualification
and customer convergence requirements without changing release execution.
2026-09-10 09:50:56 +01:00
rcourtman bd678cfde6 Merge pull request #2026 from rcourtman/docs/release-reliability-priority
Prioritize dependable release delivery
2026-09-10 09:49:23 +01:00
rcourtman 5d862dfce8 Prioritize dependable release delivery
Record clean, consistent releases as the highest current objective.
Keep release consistency explicitly unconfirmed until actual release
and recovery evidence establishes dependable delivery.
2026-09-10 09:05:46 +01:00
pulse-triage[bot] ab225c0d3b fix(alerts): reject stale escalation callback admissions
Revalidate policy, active occurrence, acknowledgement and snooze at the monitoring callback boundary. Preserve current routing and cooldown behaviour with live-incident fixtures. Pin pre-deadline policy changes and queued email routing versus resolution independently.

Change-source: pulse-maintainer
2026-09-10 08:42:59 +01:00
pulse-triage[bot] 1c2c6b7e88 Merge commit '7dd5982ace56f8ea2329e2b4697dcc1b58c41fb6'
Change-source: pulse-maintainer
2026-09-10 07:07:53 +01:00
pulse-triage[bot] 7dd5982ace fix(auth): synchronise local admin permissions during setup
First-run setup saved the configured administrator but left the router authorizer on its startup identity. This split Settings capability checks: administrator-only panels remained visible while API Access and Pulse Intelligence were denied until restart. Keep the captured authorizer aligned when setup commits the identity, and clear its prior bypass on successful development reset.

Cover the exact split with real file-backed RBAC policy and session setup, preserve outsider denial and identity replacement, and synchronise concurrent policy reads. Extension implementations still require independent compatibility review; this is not installation or release acceptance.

Change-source: pulse-maintainer
2026-09-10 06:52:38 +01:00
pulse-triage[bot] 07ad2a8ea3 fix(alerts): discard pending history reads after clearing
A history request started before a successful clear can return deleted rows afterwards and repopulate the view. Invalidate those reads and settle loading only after the clear succeeds, preserving history on failure and allowing later refreshes.

Change-source: pulse-maintainer
2026-09-10 06:44:37 +01:00
pulse-triage[bot] 9f2d98ad76 fix(alerts): retain automatic acknowledgement across refires
Cleanup only marked the active alert acknowledged, leaving recurrence retention and reducer state unlike manual acknowledgement. A short recovery and refire consequently reopened it unacknowledged. Mirror automatic acknowledgements into both tracking paths and request persistence before callbacks.

Regression fails before the repair at short recovery/refire. Focused cleanup, manual acknowledgement and automatic acknowledgement race tests pass.

Change-source: pulse-maintainer
2026-09-10 06:03:24 +01:00
pulse-triage[bot] f825e0b0a1 test(agentexec): isolate registration ordering log probe
The regression temporarily replaces zerolog's global logger. A prior WebSocket
handler can still be finishing after its own test returns, so joining only this
probe's handler does not prevent a race with that earlier log write. Run the
hook in a bounded child invocation of the same race-instrumented test binary.

Change-source: pulse-maintainer
2026-09-10 04:42:33 +01:00
pulse-triage[bot] 03dcabdf87 fix(agentexec): reserve registration acknowledgement before dispatch
A session was discoverable before its registration acknowledgement reserved the write lock. An immediate dispatch could therefore become the first frame, which the unified client rejects while awaiting registration. Reserve the new connection write lock under the session-map lock so no dispatcher can overtake the handshake.

The deterministic publication-window regression fails before the repair. Agentexec package race tests and real unified-agent typed receipt replay/cancellation tests pass after it; no timeout thresholds or admission checks are relaxed.

Change-source: pulse-maintainer
2026-09-10 04:04:11 +01:00
pulse-triage[bot] c07ef8f113 test(ai): exercise Gemini discovery and lifecycle planning
The existing scripted-provider tests do not cover Gemini wire translation after read-only discovery. Exercise the actual adapter with synthetic SSE replies to prove canonical reboot planning retains approval and to record the distinct tool-free model conclusion limitation without manufacturing actions. This is orchestration evidence, not hosted-model or customer acceptance; no production behaviour changes.

Change-source: pulse-maintainer
2026-09-10 03:22:14 +01:00
pulse-triage[bot] 605643b017 fix(web): preserve PBS host history targets in Backups
Backups fetched only PBS service rows, leaving standalone host telemetry unavailable, and rejected agents merged into PVE guests. Include PBS agent rows and reuse the deduplicated Overview inventory for unique correlation without changing the PBS drawer identity. Keep guests without agent telemetry and ambiguous identities excluded. Focused drawer and surface regressions cover missing disk data and canonical history targets.

Change-source: pulse-maintainer
2026-09-10 01:03:55 +01:00
pulse-triage[bot] 1dcf4db9ea Merge candidate 20260909T233145Z-delivery-trust
Change-source: pulse-maintainer
2026-09-10 00:44:45 +01:00