Commit Graph

4888 Commits

Author SHA1 Message Date
pulse-triage[bot] d04f368f6f fix(alerts): allow overview health refresh after recovery outage
Retry or Dismiss can succeed while the subsequent health request fails. Offer the existing refresh action when overview health is unavailable so users can verify recovery in place. Two regression cases fail without the fix; 24 focused tests pass with it. API mocks do not qualify installed notification delivery.

Change-source: pulse-maintainer
2026-09-06 01:55:06 +01:00
pulse-triage[bot] 4a68f98602 Merge commit '3413b37940add4305f7b8f16369d37320799073f'
Change-source: pulse-maintainer
2026-09-06 01:01:28 +01:00
pulse-triage[bot] 3413b37940 fix(ci): include release trains in build and E2E triggers
PR #1921 targets release/v6.4 but receives only docs and boundary checks because build and E2E triggers still name the historical release branch. Include versioned release trains for push and pull request events without changing job gates or path filters. A focused regression fails all four event/workflow combinations before repair and passes after it.

Change-source: pulse-maintainer
2026-09-06 00:58:57 +01:00
pulse-triage[bot] 9d1b726da9 Fix stale notification health ownership with browser regression proof
Keep overlapping success, failure and loading completion owned by the latest started read. Retain caller and queue-action controls, subsystem contracts and exact-source scripted Chromium evidence. Installed delivery and release qualification remain separate.

Change-source: pulse-maintainer
2026-09-06 00:57:10 +01:00
pulse-triage[bot] 229d8668af Record disabled queued notifications as cancelled, not delivered
Distinguish policy skips from provider success so suppressed jobs do not create false sent rows or successful audit entries. Reconcile cancelled queue health after releasing alert gates, preserve real attempt history, and cover all three providers for firing/recovery and global/destination disablement.

Change-source: pulse-maintainer
2026-09-05 23:29:16 +01:00
pulse-triage[bot] f9b5f6254a Merge candidate 20260905T215524Z-core-runtime
Preserve the reviewed notification retry finality fix and its exact ancestry after incorporating the batch-start upstream main.

Change-source: pulse-maintainer
2026-09-05 23:15:23 +01:00
pulse-triage[bot] fe273fc949 Prevent notification retries from replaying resolved alerts
Resolution only cancelled pending/sending rows, so retained failures could resurrect healthy incidents after operator retry and restart. Suppress terminal firing entries too, preserve unrelated grouped alerts and recovery jobs, and reconcile queue health after releasing locks. Reject stale per-item retries of cancelled or delivered rows. Regression tests reproduce both bypasses and retain failed-attempt history; focused race tests pass.

Change-source: pulse-maintainer
2026-09-05 23:11:02 +01:00
pulse-triage[bot] ce0c5a9795 Merge current upstream main before reliability proposal update
Incorporate the landed Patrol evidence-trust repair while preserving reviewed publication tip 6d6a776ef5 unchanged in ancestry.

Change-source: pulse-maintainer
2026-09-05 23:10:56 +01:00
pulse-triage[bot] 64e2da1e0c Merge commit '135abb541439882545e299abc1d68112fc42624e'
Change-source: pulse-maintainer
2026-09-05 22:43:20 +01:00
pulse-triage[bot] 1bb8643f1d Merge reviewed exact Helm public-package receipt
Preserve the delivery candidate commit and combine it with the already-integrated Patrol evidence repair.

Change-source: pulse-maintainer
2026-09-05 22:37:23 +01:00
rcourtman 5288b64d40 fix(patrol): preserve refusals and expose measured summary evidence
A provider policy refusal was classified as a connection failure, while
summary tools mixed high-utilisation heuristics with unchecked health claims.
Preserve explicit refusals before tool recovery and provide retained metrics
with source scope, observation timestamps and bucket extrema for diagnosis.

Record the live qualification limits and the shared temporal tier-query gap.
2026-09-05 22:29:48 +01:00
pulse-triage[bot] 135abb5414 fix(api): validate Docker update agent running health readback
Replacement identity alone could confirm an unhealthy or restarting container when no independent observer was available. Check agent-reported running state and health, retaining inconclusive truth for unknown health and preserving intentionally stopped updates. Seven regression cases cover these distinctions; the four unsafe cases failed before the repair. Execution and compensation history are unchanged.

Change-source: pulse-maintainer
2026-09-05 22:25:48 +01:00
pulse-triage[bot] b5784df4b7 fix(delivery): verify public Helm package against qualified bytes
Readable chart metadata does not prove that the public index serves the OCI-qualified package. Pull through the consumer repository and compare exact bytes before reporting convergence, with offline regression coverage for mismatched, missing and unavailable downloads. Activation and publication authority remain unchanged.

Change-source: pulse-maintainer
2026-09-05 22:24:18 +01:00
pulse-triage[bot] c5e0ade24e Merge current upstream main before reliability publication\n\nIncorporate the landed Patrol resource-evidence repair while preserving the exact reviewed publication tip and its ancestry.\n\nChange-source: pulse-maintainer
Change-source: pulse-maintainer
2026-09-05 22:23:58 +01:00
rcourtman 7e33b2d37c Merge pull request #1916 from rcourtman/fix/patrol-resource-evidence
Repair resource evidence and Patrol readiness gates
2026-09-05 22:16:14 +01:00
pulse-triage[bot] 88bf626d3a Merge pull request #1909 from rcourtman/maintainer/20260905T170325Z
Keep alerts accurate through outages, restarts, and genuine recovery
2026-09-05 22:03:23 +01:00
pulse-triage[bot] 6375d09a8b fix(runtime): reject contradicted Docker update readback
Independent update verification must match the replacement's reported state and reject unhealthy running observations, not just match container identity. Preserve intentionally stopped replacements and keep missing agent readback inconclusive. Reproduced stopped, restarting and unhealthy false confirmations before the fix; 19 focused API tests and three lifecycle replay tests pass. This does not establish the root cause of issue #1891.

Change-source: pulse-maintainer
2026-09-05 21:49:41 +01:00
rcourtman b7f546f81a Repair resource evidence for Patrol and Assistant
Real homelab investigations lost metrics behind mismatched resource IDs,
queried only post-restart memory, and filtered every physical disk out.
Resolve canonical metrics targets, use retained history, preserve CPU
topology and chronological samples, and separate disk operation and format.

Keep unattached resource shortcuts blocked while allowing named resources
to be resolved through query search. Report incomplete readiness honestly,
including saved evaluations, without granting Patrol suitability.
2026-09-05 21:43:02 +01:00
pulse-triage[bot] a8038a051a Merge remote-tracking branch 'origin/main'
Change-source: pulse-maintainer
2026-09-05 21:30:58 +01:00
pulse-triage[bot] 96bc6f084f fix(release): bind Helm application version to chart release
Reject mismatched image defaults before packaging; preserve equal and default versions. Reproduced four accepted mismatches before the fix. All 58 focused tests pass; no publication performed.

Change-source: pulse-maintainer
2026-09-05 21:13:23 +01:00
pulse-triage[bot] 7c373a5162 fix(release): reject draft Helm chart publication retries
Reproduce draft and unknown publication states reaching the Pages index boundary. Require an explicitly non-draft existing release before uploading, editing or advertising its chart, without implicitly publishing operator drafts.

Exercise the actual publication shell with a fake GitHub CLI and wire its seven retry tests into canonical governance. Existing digest and maturity behaviour remains covered.

Change-source: pulse-maintainer
2026-09-05 20:55:01 +01:00
rcourtman 3e8dbb8276 Preserve investigation evidence and Proxmox temperatures
Real homelab evaluation exposed missing node sensor observations and loss of
recent tool evidence before the model reached its conclusion. Project both
canonical sensor sources and retain observations while context fits.

Add source and selection regressions plus a multi-turn retention proof.
Record the live diagnosis result and the unresolved Patrol provider block.
2026-09-05 20:47:38 +01:00
pulse-triage[bot] d79ee6449f Merge remote-tracking branch 'origin/main'
Change-source: pulse-maintainer
2026-09-05 20:35:05 +01:00
pulse-triage[bot] 3f0dbd514f Merge commit '49b998a2517bd5c8a76aca43fa222d8c72d0cc6a'
Change-source: pulse-maintainer
2026-09-05 20:12:17 +01:00
pulse-triage[bot] 829be07d3c Merge remote-tracking branch 'origin/main'
Change-source: pulse-maintainer

# Conflicts:
#	docs/release-control/v6/internal/subsystems/frontend-primitives.md
#	frontend-modern/browser-verification.json
2026-09-05 20:06:58 +01:00
pulse-triage[bot] 49b998a251 fix(alerts): recover storage incidents on confirmed empty capacity
A zero usage observation was skipped even when positive total capacity, zero used bytes and matching free bytes confirmed an empty store. Allow that consistent observation through the existing capacity lifecycle without treating absent counters or offline storage as recovery.

Reproduced the retained incident before the fix. Added six lifecycle cases and a local production-callback/webhook test for missing capacity, correlated zero recovery, history and duplicate avoidance. Focused storage/capacity tests, repeated webhook tests and race-enabled storage/PBS lifecycle checks pass. This is not installed-artifact qualification.

Change-source: pulse-maintainer
2026-09-05 20:06:03 +01:00
rcourtman 9316507df0 Preserve Patrol finding volume beyond the history cap
New-finding telemetry lost older activity once the run history reached its
100-entry cap. Persist a bounded daily finding tally with a separate
upgrade cursor, preserving run counts while backfilling retained findings.

Cover restart, repeated saves, upgrade, read failure and UTC-day retention.
Record the measurement boundary and retire the resolved coverage gap.
2026-09-05 19:48:49 +01:00
pulse-triage[bot] 57cb1a83bf fix(alerts): report clearing observation in metric recovery
Receiver-level PBS lifecycle checks reproduced resolved payloads retaining 50% firing usage after measurements fell to 9.765625% or zero. Clone and refresh the canonical metric snapshot before recording recovery so resolved callbacks and recent history carry the clearing value, message and observation time without changing incident identity.

Validated both PBS cases with three repeated integration runs and a race-enabled run, plus focused canonical metric, history, missing telemetry, resolved notification, receipt and queue restart tests. This is local synthetic receiver proof, not installed or off-host qualification.

Change-source: pulse-maintainer
2026-09-05 19:41:25 +01:00
rcourtman d223ba0262 Start scoped explanations from Patrol and alert actions
Explain actions previously opened a blank conversation and discarded richer
finding context. Dispatch the selected explanation through shared chat
handling, retain evidence and drafts, and cancel pending work on tenant
switches. Keep unrelated workflow starters out of scoped conversations.

Record the remaining real-model and customer-outcome qualification gap
without treating scripted browser responses as proof of product value.
2026-09-05 19:13:11 +01:00
pulse-triage[bot] 6cd22b2e03 Merge commit '537c7ae9a50025efbf7963cdf7e544f42cbf0f7e'
Change-source: pulse-maintainer
2026-09-05 18:35:14 +01:00
pulse-triage[bot] 537c7ae9a5 fix(web): keep Docker phone update labels and detail names readable
Chromium receipts showed that the phone table clipped update badges without any horizontal path to recover the text. Wrap existing labels within reduced cell padding and allow expanded drawer names to wrap, preserving Android page-owned scrolling and existing action semantics. Add real text-bound and heading assertions and retain six passing reconnect cases plus inspected synthetic screenshots.

Change-source: pulse-maintainer
2026-09-05 18:28:23 +01:00
pulse-triage[bot] 3d984b0226 fix(pbs): reject incomplete alerting measurements
Reproduced a false resolved webhook when HTTP-success status contained memory total but omitted used. Require present CPU and memory measurements before marking node metrics available, retaining genuine zero and unrelated-field compatibility. Extend client and real-poller webhook regression coverage and monitoring contract.

Change-source: pulse-maintainer
2026-09-05 18:04:21 +01:00
pulse-triage[bot] 31f1f1933a fix(pbs): reject absent node status instead of resolving alerts
A successful response containing null or omitted data decoded into zero-valued node metrics. Repeated polls could therefore clear an active memory incident without any usable recovery evidence. Decode the status through a pointer and reject absent data so existing unavailable-metric handling preserves the incident.

Reproduced the failure through the real poller and notification queue with a local webhook. Added absent-envelope client cases and extended lifecycle coverage to assert unavailable metrics, stable incident identity, and genuine recovery. Focused client and monitoring tests pass three repetitions under the race detector; this is not installed or off-host qualification.

Change-source: pulse-maintainer
2026-09-05 17:50:07 +01:00
pulse-triage[bot] 6998908d2a fix(release): limit asset validation readiness claims
Downstream release-note syndication repeats the asset check banner even when installed health or release convergence is not qualified. Report asset checks only and state the remaining evidence boundaries for both draft and post-publication banners.

Change-source: pulse-maintainer
2026-09-05 17:30:49 +01:00
pulse-triage[bot] 07404979e2 Merge commit '57beb6010f2c5729e7f070d0db2327015a83f1dd'
Change-source: pulse-maintainer
2026-09-05 16:35:48 +01:00
pulse-triage[bot] 57beb6010f test: reap isolated browser writers before credential cleanup
Shell-only signal traps could leave browser descendants writing sensitive state after cleanup, and simultaneous runs shared the same cookie cache. Give the Linux qualification runner an invocation-owned cookie root and a child-subreaper supervisor so catchable interruption waits for writers before removing owned artifacts. Preserve normal reports for inspection and fail closed if writers cannot be reaped. Focused fixtures cover all three signals, late detached writers, concurrent isolation and forced termination; no real-browser cleanup or release readiness is claimed.

Change-source: pulse-maintainer
2026-09-05 16:31:12 +01:00
pulse-triage[bot] 2b78867cae fix(pbs): preserve metric alerts when node status is unavailable
A reachable PBS can deny or fail its node-status endpoint while datastore collection succeeds. The resulting zero values previously resolved active CPU and memory alerts without a healthy measurement. Carry internal availability evidence from polling and skip metric evaluation for those samples, preserving independent connectivity and policy suppression. Add failing-before unit coverage and an HTTP polling lifecycle regression for dispatch and recent recovery history.

Change-source: pulse-maintainer
2026-09-05 16:26:42 +01:00
pulse-triage[bot] ddafcf5330 Merge commit '857e25f6b1dc4675272f09b110d8c0900269c5a7'
Change-source: pulse-maintainer
2026-09-05 16:08:37 +01:00
pulse-triage[bot] 857e25f6b1 fix(web): preserve scoped local principal for organisation management
Scoped local sessions correctly lose privileged security-status fields, but Settings relied on the configured admin username and hid owner controls. Expose the validated current principal without broadening capabilities, and use it for organisation identity.

Include the API and dependent subsystem contracts, recognised payload and settings-shell tests, and a source-bound desktop/narrow browser receipt in this commit. Fresh matrices each pass six scenarios with one expected disabled-feature skip. Admission/reconnect and interruption cleanup remain separate unfinished qualification.

Change-source: pulse-maintainer
2026-09-05 16:04:12 +01:00
pulse-triage[bot] bf6121e41d fix(release): reject ambiguous activation asset inventories
Count all activation marker names before validating their metadata so a malformed duplicate cannot pass the immutable packet boundary. Reproduced acceptance with a valid uploaded marker plus a zero-size pending duplicate; both valid and malformed duplicates now fail before attestation or download.

Validation: 13 focused integrity tests and 46 promotion policy tests pass; bash syntax and git diff checks pass. No publication or deployment performed.
Change-source: pulse-maintainer
2026-09-05 15:43:23 +01:00
pulse-triage[bot] f06fc3fd7e Merge commit 'c3b28f455728d20b0607d72ea06b9f9d196bc583'
Change-source: pulse-maintainer
2026-09-05 15:23:57 +01:00
pulse-triage[bot] c3b28f4557 fix(pbs): classify backup cache failures by HTTP status
A gateway body quoting API error 403 must not discard cached backups. Use the client's typed response status before legacy text fallback; cover gateway failures and genuine terminal responses.

Change-source: pulse-maintainer
2026-09-05 15:05:53 +01:00
pulse-triage[bot] 296a131c0a test(e2e): use session identity for cross-org sharing diagnostic
Reproduced the restricted primary token being refused after organisation reload. Keep token isolation intact and exercise the sharing flow with a cookie session, with explicit authentication preconditions.

The diagnostic still fails on missing acceptance controls; retain that failure, quarantine and exact runtime receipts. Record process-group TERM cleanup limits rather than claiming complete artifact cleanup.

Change-source: pulse-maintainer
2026-09-05 15:02:06 +01:00
pulse-triage[bot] 0b73d36011 test(e2e): separate quarantined multi-tenant diagnostic from tier gates
The shell multi-tenant suite previously selected a spec ignored by every project, preventing real backend diagnosis. Add an explicit desktop-only configuration that rejects tier identity, while retaining the normal quarantine. Cover discovery and tier refusal and document the evidence boundaries. A local source-built diagnostic returned five passes, one failure at organisation-switch login, and one skip; this is not release qualification.

Change-source: pulse-maintainer
2026-09-05 14:39:37 +01:00
pulse-triage[bot] 7caaa65ffa Merge batch-start upstream release cadence policy
Incorporate the upstream main frontier recorded before this coordination batch while retaining the reviewed runner-isolation commit unchanged.

Change-source: pulse-maintainer
2026-09-05 14:07:04 +01:00
rcourtman 5f3b73955a Leave release cadence to maintainer judgment
Withdraw the imposed minor-release calendar following clarified founder
intent. Preserve exact-candidate and clean-soak requirements while leaving
scope, version, maturity and timing to evidence-informed judgment.

Keep required backend matrix check names present on documentation-only
changes so policy updates can land without weakening branch protection.

Contract-Neutral: Backend CI check reporting only. The shard test commands,
 dependency security proof and deployment contracts are unchanged.
2026-09-05 12:37:07 +01:00
pulse-triage[bot] db621d933c docs: separate PBS history integrity from persistence write cost
Installed PBS qualification must distinguish accurate metric history from API load and persistence write traffic. File growth and whole-device counters alone cannot attribute write cost to Pulse, so an unqualified measurement could lead to incorrect regression or wear claims.

Document matched baseline and repaired measurement windows, counter limitations and backup I/O separation without changing runtime behaviour or claiming installed recovery.

Validation: git diff --check passed; documentation-only change. Installed artifact qualification remains dependent on an authorised environment.

Change-source: pulse-maintainer
2026-09-05 10:42:09 +01:00
pulse-triage[bot] fecd68eb97 docs: define artifact-bound PBS history qualification
Aggregate historical row counts across unlike resources do not establish whether the integrated PBS source-time repair works on an installed artifact. Release qualification needs common observation windows and independent source timestamps to distinguish valid unchanged-value samples from restamped cached data.

Document an operator-run check covering mixed polling, outage, recovery and whole-process restart, with exact artifact identity and per-metric SQL measurements. This provides acceptance criteria, not installed proof or grounds to close #1882.

Validation: documented SQL previously exercised against synthetic SQLite healthy-cadence, duplicate-identity and empty-window cases; git diff --check passes. Documentation only; no production behaviour changed.

Change-source: pulse-maintainer
2026-09-05 10:14:02 +01:00
pulse-triage[bot] 6570e95bdb fix(web): retain platform admission when reconnect refresh fails
A reproduced admission HTTP 503 after socket recovery removed platform destinations despite populated inventory. Retain the last valid facet on request failure, keep tenant resets and successful empty responses authoritative, and cover desktop/mobile interruption and recovery.

Change-source: pulse-maintainer
2026-09-05 05:12:58 +01:00
pulse-triage[bot] deac5e7750 Merge web cold reconnect admission repair
Change-source: pulse-maintainer
2026-09-05 04:47:35 +01:00