Commit Graph

11019 Commits

Author SHA1 Message Date
pulse-triage[bot] 5a342cc2d9 Merge upstream Pulse main before publication
Change-source: pulse-maintainer
2026-09-08 13:05:32 +01:00
pulse-triage[bot] 1ab5782f29 Merge candidate 20260908T115002Z-web-product
Change-source: pulse-maintainer
2026-09-08 12:59:16 +01:00
rcourtman 075ef57275 Merge pull request #1987 from rcourtman/docs/release-channels
docs: explain release channels and qualification
2026-09-08 12:58:00 +01:00
pulse-triage[bot] 6988e486f2 fix(web): identify notification destination server failures
The queue and health API expose server_error, but the delivery UI treated it as unclassified. Preserve that diagnosis and direct operators to service availability and server logs before retrying retained deliveries. Add focused label and health guidance regression coverage.

Change-source: pulse-maintainer
2026-09-08 12:54:21 +01:00
pulse-triage[bot] b12d700b5d Merge candidate 20260908T113500Z-core-runtime
Change-source: pulse-maintainer
2026-09-08 12:51:20 +01:00
pulse-triage[bot] aba3465143 Merge upstream Pulse main at coordination batch start
Change-source: pulse-maintainer
2026-09-08 12:51:19 +01:00
rcourtman 64da0d7db7 docs: explain release channels and qualification
Give users a public account of beta, RC and stable expectations so they can
choose an update channel and understand how releases earn promotion.
Document fixed candidates, observation periods and rollback guidance, with
links from the main documentation entry points and matching shipped docs.
2026-09-08 12:51:15 +01:00
pulse-triage[bot] c65ba29bf7 fix(notifications): retain queue retries for transient HTTP rejections
Webhook transport already retries HTTP 421, 423 and 425, but shared classification marked them terminal and discarded the remaining queue retry budget. Align these exceptions with retryable connectivity or receiver failure classes. A synthetic 400-599 transport matrix reproduces the three mismatches and verifies permanent rejections remain terminal without starting storage workers.

Change-source: pulse-maintainer
2026-09-08 12:47:30 +01:00
pulse-triage[bot] 9a1f9ae43f Merge pull request #1986 from rcourtman/maintainer/20260908T110726Z
Keep notification recovery responsive and issue follow-up accurate
2026-09-08 12:44:56 +01:00
pulse-triage[bot] 550b2d80a1 fix(notifications): retain HTTP verdict on interrupted response bodies
A truncated diagnostic body currently erases a received HTTP rejection, causing terminal failures such as 403 to consume extra delivery attempts and report a connectivity class. Preserve the HTTP verdict and wrapped read error so existing retry rules still apply. Transport-only regressions reproduce the extra attempt, verify transient recovery and retain successful-response read-error behaviour.

Change-source: pulse-maintainer
2026-09-08 12:14:32 +01:00
pulse-triage[bot] 1470144340 Merge candidate 20260908T105011Z-delivery-trust
Change-source: pulse-maintainer
2026-09-08 12:04:55 +01:00
pulse-triage[bot] 2520bbc797 Merge candidate 20260908T105008Z-core-runtime
Change-source: pulse-maintainer
2026-09-08 12:04:55 +01:00
pulse-triage[bot] fe4dea061b Merge upstream Pulse main at coordination batch start
Change-source: pulse-maintainer
2026-09-08 12:04:55 +01:00
pulse-triage[bot] 4d5222f217 fix(monitoring): release reload callers on server cancellation
The reload watcher exits with the parent context, so unconditional request and reply waits could strand callers during shutdown. Select on that same context at both waits and reject calls before Start; retain buffered completion for an in-flight reload.

Channel-only regression fixtures reproduce the old hang and verify cancellation, late completion and unchanged result propagation without starting monitors or storage. Update the monitoring contract with the bounded lifecycle guarantee and its limits.

Change-source: pulse-maintainer
2026-09-08 12:01:54 +01:00
pulse-triage[bot] 05d8ae9227 fix(triage): preserve concurrent community label changes
Apply classification label deltas instead of replacing the stale issue-event label set. This keeps Community retest and unrelated labels untouched while retaining metadata cleanup; regressions cover newer additions, removals and API failures.

Change-source: pulse-maintainer
2026-09-08 12:00:46 +01:00
pulse-triage[bot] ebc13a5332 Merge pull request #1985 from rcourtman/maintainer/20260908T100023Z
Honor service recovery timing and protect saved alert settings
2026-09-08 11:59:07 +01:00
pulse-triage[bot] 57fb1c3bdf Merge candidate 20260908T103023Z-core-runtime
Change-source: pulse-maintainer
2026-09-08 11:44:05 +01:00
pulse-triage[bot] 439c1a6195 fix(notifications): refresh recovery queue owner after monitor reload
Recovery handlers retained the startup monitor after router reload, unlike normal notification handlers. Stopping that monitor cleared its queue and left Retry/Dismiss returning 503 even when the replacement notifier was available. Refresh the stable handler in both replacement paths and synchronise its owner reads. Add stopped-owner regression, concurrent replacement and scope proofs; keep queue persistence semantics unchanged.

Change-source: pulse-maintainer
2026-09-08 11:37:20 +01:00
pulse-triage[bot] 590b80cfe7 fix(triage): retire version-only retest posting and timeout closure
An older reported version does not establish a relevant released fix, and silence after generic advice does not justify closing an unresolved report. Retire both scheduled paths and retain no-write compatibility entry points. Preserve metadata classification while leaving retest state to Community's evidence-backed whole-thread review. Focused regression tests cover both entry points, label ownership and workflow retirement.

Change-source: pulse-maintainer
2026-09-08 11:32:57 +01:00
pulse-triage[bot] bcc869b0ca fix(alerts): avoid unchanged checkpoint directory chmod
The JSON mirror fast path avoided file replacement but still dirtied directory metadata on every save through chmod. Check the current permissions before repairing them, retaining correction of unsafe modes. A Linux regression reproduces the ctime change and verifies unchanged metadata and permission repair. This is a narrow contributor to #1966, not a claim that aggregate write amplification is resolved.

Change-source: pulse-maintainer
2026-09-08 11:19:49 +01:00
pulse-triage[bot] 1f2e696381 Merge current upstream Pulse main before publication
Change-source: pulse-maintainer
2026-09-08 11:04:54 +01:00
pulse-triage[bot] c2fe165359 Merge pull request #1984 from rcourtman/maintainer/20260908T090419Z
Strengthen alert retry and incident refresh regression coverage
2026-09-08 09:53:31 +00:00
pulse-triage[bot] 95b3182681 Merge candidate 20260908T094027Z-core-runtime
Change-source: pulse-maintainer
2026-09-08 10:46:11 +01:00
pulse-triage[bot] f47472b817 test(notifications): cover receiver settings at monitor startup
Verify saved email and HTTP Apprise receiver configuration through the real constructor alongside routing intent, without transport calls or reapplying setters.

Change-source: pulse-maintainer
2026-09-08 10:42:33 +01:00
pulse-triage[bot] 5e0bf3ff34 docs(delivery): align stable recovery with standing authority
Replace the retired per-release founder approval instruction with steward admission. Preserve qualification, soak, review, verification and operator revocation.

Change-source: pulse-maintainer
2026-09-08 10:41:27 +01:00
pulse-triage[bot] 8c788d67a0 Merge commit 'ef4116bc385ccc21cf9281bcb09397f0492ad392'
Change-source: pulse-maintainer
2026-09-08 10:39:14 +01:00
pulse-triage[bot] ef4116bc38 test(alerts): distinguish staged recovery edits from saved intent
The real-backend persistence check covered only the saved path. Assert that reload discards an unsaved recovery edit before saving it, so browser-only state cannot be mistaken for persisted operator intent. Retain reload and real startup checks after Save.

Change-source: pulse-maintainer
2026-09-08 10:32:49 +01:00
pulse-triage[bot] 87d05f4857 Merge candidate 20260908T092506Z-core-runtime
Change-source: pulse-maintainer
2026-09-08 10:32:41 +01:00
pulse-triage[bot] 2a43c51815 test(notifications): verify saved choices at monitor startup
Exercise the production monitor constructor twice from persisted routing, resolve, activation and webhook filtering choices without reapplying notification setters. Document that constructor restoration does not establish browser saving, process restart or destination delivery.

Change-source: pulse-maintainer
2026-09-08 10:28:43 +01:00
pulse-triage[bot] bc2d0563e3 Merge candidate 20260908T090014Z-web-product
Integrate the reviewed saved alert intent persistence test without re-parenting its exact candidate commit.

Change-source: pulse-maintainer
2026-09-08 10:25:57 +01:00
pulse-triage[bot] 546e0a864a Merge branch 'maintainer-async/20260908T090014Z-core-runtime/pulse'
Change-source: pulse-maintainer
2026-09-08 10:18:15 +01:00
pulse-triage[bot] f1cf225a34 Merge current upstream Pulse main before publication
Preserve the reviewed publication tip and incorporate upstream documentation merged after the gate refresh.

Change-source: pulse-maintainer
2026-09-08 10:11:48 +01:00
rcourtman 2f225a16ae Merge pull request #1983 from rcourtman/docs/maintainer-standing-authority
Document standing maintainer reply and release authority
2026-09-08 10:07:22 +01:00
pulse-triage[bot] 6a66de4556 test(alerts): verify saved recovery intent across backend restart
Exercise the production Schedule control and real configuration API on an owned local backend without alert endpoint mocks. Keep persistence evidence distinct from installed notification delivery.

Change-source: pulse-maintainer
2026-09-08 10:06:21 +01:00
pulse-triage[bot] 7a92b60cd9 fix(notifications): honour service-unavailable retry hints
HTTP 503 can advertise a recovery delay through Retry-After, but the transport previously ignored it and retried after the default second. Use the existing bounded parser for 503 as well as 429 without changing retry budgets or terminal-error classification. Add request-spacing coverage for valid and malformed 503 hints and both zero-hint status sequences. The valid 503 test fails before the repair (1.0005s versus 2s); focused race tests pass three times. This longstanding interoperability repair is main-only, not a release-candidate regression backport.

Change-source: pulse-maintainer
2026-09-08 10:04:36 +01:00
rcourtman 39c090cfea Document standing maintainer reply and release authority
Align the public transparency page and shipped copy with the standing
publication and issue-reply grant. Keep ownership, qualification and
verification responsibilities explicit.
2026-09-08 10:00:11 +01:00
pulse-triage[bot] c2575433ff Merge candidate 20260908T085005Z-web-product
Change-source: pulse-maintainer
2026-09-08 09:56:30 +01:00
pulse-triage[bot] 3acdaca754 Merge upstream main after candidate 20260908T084517Z-core-runtime
Preserve the reviewed candidate commit and incorporate the upstream merge recorded before this coordination batch.\n\nChange-source: pulse-maintainer

Change-source: pulse-maintainer
2026-09-08 09:51:04 +01:00
pulse-triage[bot] 953cda829a docs(test): clarify mocked alert activation in browser proof
The application journey stubs configuration and active alerts as well as incident data. State those boundaries explicitly so UI refresh evidence is not mistaken for saved-intent persistence or real activation acceptance.

Change-source: pulse-maintainer
2026-09-08 09:50:56 +01:00
pulse-triage[bot] 2a62340706 test(notifications): cover terminal rejection after rate limit
Rate-limit and initial terminal-response tests do not cover their interaction. Verify a later credential rejection stops the transport despite remaining budget and retains accurate final history and event identity, using a queue-free synthetic receiver.

Change-source: pulse-maintainer
2026-09-08 09:46:52 +01:00
pulse-triage[bot] d6797a47b0 Merge pull request #1982 from rcourtman/maintainer/20260908T080114Z
Make release rehearsals dependable and strengthen alert regression coverage
2026-09-08 08:45:03 +00:00
pulse-triage[bot] a39b08e55d test(web): verify native return through owning CDP session
The application preflight stayed visible because Playwright enabled focus emulation on another CDP session. Disable that override in an opt-in loopback transport without fabricating visibility or weakening assertions. Preserve the ordinary fixtures and prior adverse evidence.

Change-source: pulse-maintainer
2026-09-08 09:24:03 +01:00
pulse-triage[bot] 7443465c28 test(web): retain application incident foreground preflight
Exercise the real history row before native background and explicit refresh. Keep the opt-in headed check and its observed visibility failure distinct from passing component coverage and installed acceptance.

Change-source: pulse-maintainer
2026-09-08 09:20:43 +01:00
pulse-triage[bot] 20af32e015 test(ai): await incident note persistence before cleanup
The hosted backend shard and local repetition showed TempDir cleanup racing RecordNote persistence. Wait for the existing asynchronous save in this test so validation cannot fail after assertions pass; runtime behaviour is unchanged.

Change-source: pulse-maintainer
2026-09-08 09:10:22 +01:00
pulse-triage[bot] 70291a4c88 Merge current upstream Pulse main before publication
Retain the complete reviewed alert, rehearsal, and browser evidence batch while incorporating the landed prior proposal without rewriting accepted commits.

Change-source: pulse-maintainer
2026-09-08 09:08:20 +01:00
pulse-triage[bot] 03f8a7408d Merge pull request #1981 from rcourtman/maintainer/20260908T070407Z
Strengthen alert recovery, backup-setting, and browser lifecycle evidence
2026-09-08 07:47:36 +00:00
pulse-triage[bot] bfede0934a Merge candidate 20260908T074012Z-web-product
Change-source: pulse-maintainer
2026-09-08 08:47:27 +01:00
pulse-triage[bot] c5dca69702 test(web): cover production incident refresh after tab suspension
Existing suspension coverage forces overlapping requests through a fixture-only control. Add a separate cached-read scenario using the enabled production Refresh button after native foreground return, so that ownership evidence is not mistaken for user refresh integration. Document the synthetic component and full-application boundary.

Change-source: pulse-maintainer
2026-09-08 08:42:45 +01:00
pulse-triage[bot] a16ebcc2f3 Merge candidate 20260908T073525Z-core-runtime
Change-source: pulse-maintainer
2026-09-08 08:42:11 +01:00
pulse-triage[bot] 7243595085 test(notifications): protect destination and occurrence receipt identity
Recovery eligibility depends on both the original destination and the firing occurrence. Existing restart coverage exercises webhooks, but did not directly protect email and Apprise key normalisation from configuration ordering changes or accidental mutation. Add pure-function regression checks for equivalent and changed destinations, incomplete identities and nanosecond-separated recurrences without requiring network delivery or database fixtures.

Change-source: pulse-maintainer
2026-09-08 08:37:35 +01:00