Commit Graph

103 Commits

Author SHA1 Message Date
pulse-triage[bot] 6860dde3ef Find safe diagnostics without requiring another live run
Match the current Support navigation and phone control labels, explain absent exports, and lead reporting with existing evidence. Keep live-check, full-bundle and privacy limits intact; verify the shipped guide against the actual route and state owners.

Contract-Neutral: Existing help and diagnostic-state tests only; no runtime, renderer, routes, access, exports or live-check behaviour changes.
Change-source: pulse-maintainer
2026-10-14 05:14:08 +01:00
pulse-triage[bot] 4793af28d5 Preserve existing phone access in retirement troubleshooting
Replace pre-retirement plan wording, unbounded log readers and speculative re-pairing or restarts with preserved evidence, bounded server log help and the approved phone-alert alternatives. Keep existing bookmarks and continuing Relay subscriber terms. This changes server documentation only, not app or Relay behaviour.

Contract-Neutral: Existing help correction only; no app, Relay, entitlement, API or runtime contract changes.
Change-source: pulse-maintainer
2026-10-13 22:24:42 +01:00
pulse-triage[bot] b048cb184d Distinguish Active PBS connections from missing monitoring data
Add a safe missing-PBS path to the existing guide and troubleshooting entry. Separate connection polling, the server row, direct inventory and History without requesting credential changes, an agent install or repeated diagnostics.

Contract-Neutral: Documentation and consuming proof only; no API, monitoring, permissions or runtime behaviour change.
Change-source: pulse-maintainer
2026-10-13 17:50:22 +01:00
pulse-triage[bot] ed2107bee0 Explain stopped agent commands without credential or state churn
Distinguish private prompt preparation, preflight and read-only profile inspection from installation and destructive removal. Keep existing unavailable-agent and automatic-update investigations separate, and route FAQ and troubleshooting readers to the existing private-file and recovery guides.

Contract-Neutral: Help copy and rendered-document regression checks only; installer, credential, lifecycle and monitoring contracts are unchanged.
Change-source: pulse-maintainer
2026-10-13 12:07:59 +01:00
pulse-triage[bot] c036461de7 Explain dated History readings before storage and licence changes
Make the existing guide distinguish same-time stored observations, missing metrics, independent panel times and qualified fallback. Link it from the guest-memory workflow, separate retained data from runtime access and explain the retired Relay compatibility limit without offering a new plan. Preserve read-only evidence and guest recovery boundaries.

Contract-Neutral: Existing help, mirrors and regression/browser checks only; collectors, rendering behaviour, runtime grants, retention defaults and product routes are unchanged.
Change-source: pulse-maintainer
2026-10-12 17:43:22 +01:00
pulse-triage[bot] 1fe3fab006 Preserve agent recovery state when the saved server is unavailable
Align existing removal and orphan-service help with credential-first Unix admission. Explain same-instance recovery, keep older served scripts and Windows behaviour distinct, and prevent stopping retries from being mistaken for revocation or completed removal.

Contract-Neutral: Existing operator guidance and regression assertions only; no runtime, schema, lifecycle or trust-boundary change.
Change-source: pulse-maintainer
2026-10-12 02:33:20 +01:00
pulse-triage[bot] 94ada96ae3 Reconcile upstream customer documentation corrections
Incorporate the upstream frontier recorded at the start of this coordination batch; retain reviewed local history and independent proof bindings.

Change-source: pulse-maintainer
2026-10-11 14:23:21 +01:00
rcourtman 8a99b16d6c docs: correct customer docs that drifted from the source
Audited the customer-facing docs against the code: about 5,200 concrete
claims (env vars, endpoints, flags, defaults, ports, UI labels), plus every
environment variable the code reads. Each discrepancy was re-verified
against the source before editing, and every edit was reviewed again.

What users would have hit following the old text:
- UI paths and labels that no longer exist (Settings > Relay, Platform
  connections, Access Control, SSO Providers, Create Organization) and
  Patrol mode names (now Ask first, Safe auto-fix, Autopilot).
- Wrong values and behaviour: LOG_MAX_AGE=0 does not disable cleanup,
  Patrol evidence budget is 10 calls and 12 turns, ALLOW_UNPROTECTED_EXPORT
  covers private networks too, PULSE_AUDIT_ASYNC defaults on.
- Agent install: install.sh ignores PULSE_ENABLE_KUBERNETES and
  PULSE_ENABLE_PROXMOX, rejects --disable-auto-update, and the token
  fallback lives in the state directory.
- API: audit endpoints answer 402 on Community, onboarding QR is GET,
  type=container is rejected, several routes need admin plus a scope.
- HTTP_REDIRECT_PORT was not documented anywhere.

Docs are mirrored under frontend-modern/public/docs, so each change is
applied to both copies. The tests that pinned the old wording (including
three that asserted claims the code contradicts) are updated alongside.

Contract-Neutral: Customer docs corrected to match shipped behaviour; no runtime, API or contract change.
2026-10-11 13:59:56 +01:00
pulse-triage[bot] c461900509 Make safe troubleshooting paths reachable from the first screen
Put existing symptom and incident guidance ahead of the long troubleshooting recipes. Keep server and workload updates, agent acceptance, unknown readings and disclosure recovery distinct; validate every destination through the shipped Docs renderer.

Contract-Neutral: Existing troubleshooting navigation and link controls only; no runtime or subsystem contract delta.
Change-source: pulse-maintainer
2026-10-11 11:38:49 +01:00
pulse-triage[bot] 2ca102cc21 Distinguish memory baseline regressions from growth in support guidance
The latest memory report is about a higher steady baseline, not a leak. Keep steady regressions actionable, separate unlike process ages and CPU savings from RSS recovery, and preserve existing evidence without another restart, downgrade or profile. Keep the shipped guides, optional intake and regression controls aligned.

Contract-Neutral: Clarifies interpretation of existing memory reports and documentation only; no runtime, API, route, collection recipe, label synchronizer or subsystem contract changes.
Change-source: pulse-maintainer
2026-10-11 10:56:42 +01:00
pulse-triage[bot] fcc633337e Bound copied log diagnostics by bytes as well as records
Cap server and agent excerpts at 256 KiB before display or request-ID search. Buffer only a bounded owner-only temporary file, preserve reader failures, and apply the hard deadline to the complete read-only pipeline. Exercise exact-size, overflow, stream, privacy, cleanup and closed-pipe deadline controls without accessing a real journal, daemon or service.

Contract-Neutral: Documentation-only passive log recipe bounds and executable copied-recipe tests; no runtime, API, authentication, installer or monitoring contract change.
Change-source: pulse-maintainer
2026-10-11 02:24:14 +01:00
pulse-triage[bot] dcd6851220 Stop resident-memory diagnostic readers at their deadline
A TERM-resistant reader can survive the old timeout after its collection shell exits. Apply the eight-second hard deadline to the entire read-only group, buffer the complete sample and withhold raw reader errors on failure. Retain ordinary privileges, unavailable results and no workload mutation.

Contract-Neutral: Documentation and copied-recipe safety verification only; no runtime collection, memory accounting, service lifecycle or API contract changes.
Change-source: pulse-maintainer
2026-10-10 14:08:50 +01:00
pulse-triage[bot] 6409a38480 Explain safe containment after an accidental public disclosure
Existing forms warn against uploading secrets but stop at prevention. Explain issuer revocation, separate attachment removal, surviving copies, private follow-up and independent monitoring coverage without asking for another diagnostic or credential test.

Change-source: pulse-maintainer
Contract-Neutral: Documentation and guidance coverage only; runtime, API, storage and deployment contracts are unchanged.
2026-10-10 09:54:36 +01:00
pulse-triage[bot] 616aa5b4b9 Explain guest memory pressure without changing working workloads
Separate hypervisor footprint, Linux availability and process RSS in existing troubleshooting, FAQ and threshold help. Keep comparisons on the same guest, kernel, time and units, preserve unknown or retained evidence, and avoid diagnostic probes, restarts, cache drops and blanket suppression.

Contract-Neutral: Documentation and source-bound help regressions only; memory collection, Patrol decisions, alert controls and access contracts are unchanged.
Change-source: pulse-maintainer
2026-10-10 00:46:08 +01:00
pulse-triage[bot] 7218babbb2 Keep guest reading guidance separate from coverage and routing
Explain existing current, prior and unavailable disk labels, source precedence and a passive unfiltered inventory review without widening access or bypassing guest-read pauses. Reconcile Primary IP help with the integrated interface-associated collector while preserving unknown associations and virtual-only addresses.

Contract-Neutral: Documentation and source-bound help regressions only; collection, access, UI and safety contracts are unchanged.
Change-source: pulse-maintainer
2026-10-09 14:14:13 +01:00
pulse-triage[bot] 01a7bc896a Explain withheld webhook replies without replaying deliveries
Keep operators and triage from treating intentional response privacy as missing evidence. Explain HTTP verdicts, uncertain receipt after read failures, bounded Test response counts and the safe use of existing receiver records without Debug capture or a duplicate send. Preserve historical-log and export privacy limits in both shipped guides and intake guidance.

Change-source: pulse-maintainer
Contract-Neutral: Clarifies existing diagnostic confidentiality and receipt limits; no delivery, access or subsystem contract change.
2026-10-09 12:42:49 +01:00
pulse-triage[bot] 237c72afc9 Explain guest IP selection without changing working networks
Separate selected guest addresses from default-route and reachability evidence. Point API-only LXC users to existing interface/address context, without asking them to alter bridges, install agents or expose network identities.

Contract-Neutral: Documentation and static assertions only; no guest collection, identity, routing, API or frontend runtime contract changes.
Change-source: pulse-maintainer
2026-10-09 11:11:09 +01:00
pulse-triage[bot] e320e3c685 Explain intentionally scoped Proxmox access without widening tokens
The departmental-token report in Pulse #2756 distinguishes intended access denials from missing monitoring rights. Explain the existing per-connection selection limit, why display and alert filters do not stop reads, and why those denials do not justify broader grants or unhealthy-node conclusions. Preserve the same boundary in shipped help and a focused documentation assertion.

Contract-Neutral: Documentation-only clarification and its regression assertion; no runtime, API or subsystem contract delta.
Change-source: pulse-maintainer
2026-10-09 10:24:58 +01:00
pulse-triage[bot] f2a76a9750 Distinguish log display controls from backup safety pauses
System Logs pauses and clears only its browser display, while Support Bundle exports server logs and configuration. Explain those existing limits, warn about Debug's private guest details, and qualify warn-level suppression without changing runtime or recommending new probes. Keep the three shipped guides in sync and exercise their safety boundaries in the existing docs check.

Contract-Neutral: Documentation and focused guidance checks only; existing log controls, exports, monitoring, API and backup policy are unchanged.
Change-source: pulse-maintainer
2026-10-09 09:13:40 +01:00
pulse-triage[bot] b0dc796ffb Explain notification pause, cancellation and in-flight limits
Distinguish global cancellation from quiet-hours holds, queued policy skips from provider receipt, and settings changes from recall or credential revocation. Add connected sender and persistent-queue controls, and run the existing notification guidance suites in docs-only CI.

Contract-Neutral: Documentation, mirrors, tests and documentation-only CI describe existing notification behaviour; no runtime, API, permission, schema, dependency or user-visible feature contract changes.
Change-source: pulse-maintainer
2026-10-08 08:46:03 +01:00
pulse-triage[bot] c8e0f0deb2 Explain unavailable backup-age evaluation without weakening protection
Keep failed age evaluation separate from backup failure, retained alerts and native recovery. Reuse bounded incident logs and preserve the intended policy, backup data and guest-safety checks. Cover the missing guidance and reconcile its existing cleanup source assertions with the reviewed fail-closed helper.

Change-source: pulse-maintainer
2026-10-08 06:28:35 +01:00
pulse-triage[bot] cb74547e15 Explain safe Proxmox replication disagreement checks
Separate job outcome classification from stale or absent inventory, point to existing native and expanded-row evidence, and keep disruptive diagnostics and broad permissions out of the help path.

Contract-Neutral: Existing mirrored help and rendered guidance checks only; replication runtime, API and authority contracts are unchanged.
Change-source: pulse-maintainer
2026-10-07 17:40:05 +01:00
pulse-triage[bot] 453509905a Explain safe cross-installation Proxmox identity comparisons
Keep wrong-node errors, backup attribution and lost agent-backed Docker monitoring separate. Provide passive existing-view comparisons and native fallbacks without renaming hosts, re-enrolling agents or recreating the incident. Bind the help entry points and privacy limits to rendered documentation checks.

Contract-Neutral: Existing help maintenance only; no runtime, identity or provider contract changes.
Change-source: pulse-maintainer
2026-10-07 16:44:12 +01:00
pulse-triage[bot] 53e1bff13c Clarify combined destination severity and tag routing
Correct the empty-filter delivery claim and explain non-exclusive minimum severity, exact all/any tag matching and per-member grouped routing. Bind the existing help and copied examples to the real saved settings and ordinary delivery job builder, without changing routing behaviour.

Contract-Neutral: Documentation and verification only; existing notification routing, alert policy, runtime and API contracts are unchanged.
Change-source: pulse-maintainer
2026-10-07 06:55:39 +01:00
pulse-triage[bot] 96be0b33a4 Integrate reviewed bounded severity incident-help reader
Retain exact specialist commit and source-uvo644ts proof. Bound the remaining severity-filtered journal recipe, withhold failed partial output, and avoid incident-time reinstall or full-unit disclosure. No runtime or new product surface changes.

Change-source: pulse-maintainer
2026-10-07 06:44:02 +01:00
pulse-triage[bot] a45bff746f Integrate reviewed alert reminder and recovery guidance
Preserve exact candidate 96648dab04. Reviewed existing-help guidance against unchanged notification policy and retained exact-source frontend/runtime receipts; combine with bounded general incident-help intake.

Change-source: pulse-maintainer
2026-10-07 06:37:49 +01:00
pulse-triage[bot] 0fbc00609f Bound severity-filtered incident logs without reinstalling Pulse
Keep warning-priority evidence within the existing incident reader's deadline, record limit and failure handling. Explain info-priority legacy units without requesting a full secret-bearing unit or an incident-time installer rerun.

Contract-Neutral: Documentation and copied-reader regression tests only; no runtime, API, setting, permission or lifecycle contract changes.
Change-source: pulse-maintainer
2026-10-07 06:04:06 +01:00
pulse-triage[bot] 31eccb559e Integrate reviewed bounded general incident-help path
Change-source: pulse-maintainer
2026-10-07 05:50:51 +01:00
pulse-triage[bot] 96648dab04 Explain alert reminders and destination-qualified recovery
Document once-per-occurrence cooldown-off semantics, the independent hourly limit and recovery eligibility without treating missing messages as workload health. Verify rendered links, shipped mirrors and the actual saved/reloaded schedule.

Contract-Neutral: Documentation and verification only; existing alert policy, notification routing, runtime and API contracts are unchanged.
Change-source: pulse-maintainer
2026-10-07 05:50:14 +01:00
pulse-triage[bot] d688aad7d0 Integrate reviewed alert incident-action guidance
Preserve the exact reviewed docs and test commits, retaining current bounded diagnostic guidance. Acknowledge and snooze are notification holds, not workload recovery.

Change-source: pulse-maintainer
2026-10-07 05:43:01 +01:00
pulse-triage[bot] f331ab4fe1 Route general incident help through bounded log readers
The general help checklist bypassed the deadline and failure-handling recipes already on the same page. Link that existing path without requiring a request ID or repeated action, and exercise its actual copied readers.

Contract-Neutral: Documentation and regression checks only; no runtime, API, setting, or service-lifecycle change.
Change-source: pulse-maintainer
2026-10-07 05:42:43 +01:00
pulse-triage[bot] 6987eaddae Explain alert acknowledgement and snooze without implying recovery
Document existing incident holds, hidden active alerts, bulk scope and the local-calendar snooze preset. Link delivery troubleshooting to the controls and verify the rendered help and acknowledgement readback.

Contract-Neutral: Existing help and verification only; no alert runtime, API, schema or frontend control changes.
Change-source: pulse-maintainer
2026-10-07 05:16:48 +01:00
pulse-triage[bot] 5b15a6f946 Keep bounded process readers at the collector's privilege
Read counters directly under an already authorised account instead of elevating a child reader inside an unprivileged timeout. A denied read remains unavailable; no sudoers, service permissions or credential change is suggested. Preserve the original sudo recipe only as synthetic parent-control evidence.

Contract-Neutral: Existing passive diagnostic instructions and their synthetic controls only; no runtime, API, permission or frontend behaviour changes.
Change-source: pulse-maintainer
2026-10-07 04:48:09 +01:00
pulse-triage[bot] 21cd03540d Stop performance reader descendants at the collection deadline
The exact-source TERM-ignoring control returned 124, not the intended kill result. Use GNU timeout's whole-group KILL deadline for these read-only collectors and verify that the owned synthetic reader is no longer running. Retain the adverse initial proof rather than relaxing its assertion.

Contract-Neutral: Diagnostic recipes and their synthetic deadline controls only; no runtime, API, permissions or frontend behaviour delta.
Change-source: pulse-maintainer
2026-10-07 04:40:27 +01:00
pulse-triage[bot] b621549e69 Make performance sample pairs bounded and identity-safe
Withhold incomplete write/container counter pairs, reject reader and identity failures, and pin Docker stats to the full running container ID. Preserve the 60-second passive window and data-safety guidance without changing monitoring or permissions.

Contract-Neutral: Existing diagnostic documentation and synthetic recipe tests only; no runtime, API, permission or UI behaviour changes.
Change-source: pulse-maintainer
2026-10-07 04:33:27 +01:00
pulse-triage[bot] e95e53cf9e Withhold incomplete diagnostic logs and bound copied readers
Capture both local log streams before presenting notification excerpts or request-ID matches. A reader error or deadline reports unavailability without a partial excerpt; missing GNU timeout has no unbounded fallback. Exercise copied recipes with successful, empty, partial-failure, missing-tool and hung readers, including termination grace.

Contract-Neutral: Existing read-only troubleshooting recipes and shipped mirror only; no runtime, API, permissions, settings or navigation contract changes.
Change-source: pulse-maintainer
2026-10-07 04:04:08 +01:00
pulse-triage[bot] 8ffdf54dbb Integrate reviewed bounded passive memory guidance
Compose the unchanged memory recipe repair with notification privacy guidance, preserving original commits and retained deadline controls.

Change-source: pulse-maintainer
2026-10-07 03:51:16 +01:00
pulse-triage[bot] f8a52fcaf5 Bound passive resident-memory sampling without inventing readings
Keep the sampled counters and process identity behind a read-only deadline. Hanging readers and a missing timeout utility produce an unavailable result, while privacy, PID-reuse and measured-zero controls remain. Preserve the ten-second test assertion and clean up the test-owned shell on timeout.

Contract-Neutral: Documentation and copied-recipe verification only; no runtime collection, memory accounting, service lifecycle or API contract changes.
Change-source: pulse-maintainer
2026-10-07 03:42:08 +01:00
pulse-triage[bot] af586eb56c Keep notification delivery evidence private before sharing
Replace the blanket sanitisation promise with the actual recognised-URL masking boundary. Explain provider free text and infrastructure identity risk at both existing troubleshooting entry points, keep the bundled guides exact, and test rendered precautions and links.

Contract-Neutral: Notification delivery, URL masking and API behaviour are unchanged; this corrects existing public guidance to match their privacy limits.
Change-source: pulse-maintainer
2026-10-07 02:57:52 +01:00
pulse-triage[bot] ef2df62f17 Make quiet-hours setup select a real notification window
Complete the existing copied schedule with explicit days, timezone and critical-category choices. Explain calendar boundaries, held delivery and safe configuration preservation, and test the example against the actual delivery policy.

Contract-Neutral: Existing quiet-hours behaviour and API are unchanged; this repairs shipped setup guidance and tests its copied configuration.
Change-source: pulse-maintainer
2026-10-07 02:26:29 +01:00
pulse-triage[bot] 8ebd62d141 Make webhook retry guidance match normal queued delivery
Explain terminal failure classes, transient HTTP exceptions and the inclusive attempt budget without promising enhanced transport retries. Keep saved-destination, duplicate and safe batch-recovery constraints at both existing help entry points; verify rendered content and links.

Contract-Neutral: Documentation-only clarification of existing webhook retry behaviour; no runtime or subsystem contract delta.
Change-source: pulse-maintainer
2026-10-07 00:44:43 +01:00
pulse-triage[bot] 62b7e47f45 Keep troubleshooting on the complete backup safety precaution
Replace the thaw-only restart shortcut with independent post-backup thaw, writes to every covered filesystem and workload liveness. Route affected systemd and Docker/Compose users to the shared precaution, preserving in-flight uncertainty, failed-check pauses, prior-active restoration and outage coverage. Check the rendered entry point against its exact parent.

Contract-Neutral: Existing help and regression checks only; guest operations, backup safety policy, APIs, frontend runtime and dependencies are unchanged.
Change-source: pulse-maintainer
2026-10-07 00:25:09 +01:00
pulse-triage[bot] e032238241 Consolidate overlapping PBS guidance while preserving help entry points
The exact PI candidate overlaps the already integrated Web PBS guide. Keep that authoritative guide byte-identical, route Recovery and Troubleshooting to it, and focus the added tests on mirrors and rendered navigation rather than maintaining duplicate safety text.

Contract-Neutral: Existing backup help and renderer navigation tests only; no posture, API, permissions or collection contract changes.
Change-source: pulse-maintainer
2026-10-06 23:46:55 +01:00
pulse-triage[bot] 4273480242 Explain conflicting PBS backup health without unsafe diagnostics
Distinguish listed artifacts and verification from workload posture, link one-row passive checks from existing help, and preserve native identity, privacy and backup-safety boundaries. Add shipped-renderer and navigation regression checks.

Contract-Neutral: Existing backup help and tests only; no posture, API, permissions or collection contract changes.
Change-source: pulse-maintainer
2026-10-06 23:23:14 +01:00
pulse-triage[bot] c17d65074b Distinguish login failures by credential source and request path
Replace blanket cookie clearing and hash escaping with source-specific, non-destructive guidance. Keep local lockout, SSO, browser sessions, API scopes and CSRF distinct, and link the existing private recovery recipes. Add six documentation/source-consistency checks and keep the served guide identical.

Contract-Neutral: Documentation and text/source-consistency tests only; existing authentication, permissions, cookies, lockout and request behaviour are unchanged.
Change-source: pulse-maintainer
2026-10-06 13:26:49 +01:00
pulse-triage[bot] 46307a8c81 Keep CORS setup exact-origin and credential-aware
Correct the FAQ, configuration, proxy help and existing Network settings field together. Distinguish same-origin proxy routing from cross-origin browser access, explain wildcard credential limits, preserve authentication and private diagnostics, and link actual rendered guidance. Verify desktop and phone input/override/help states without an API or proxy mutation.

Change-source: pulse-maintainer
Contract-Neutral: Existing CORS guidance, accessible description and renderer coverage only; API, origin policy, settings persistence and authentication contracts are unchanged.
2026-10-06 09:16:16 +01:00
pulse-triage[bot] cf95b692a4 Diagnose missing readings without resetting connections
Separate missing navigation, current readings and stored History. Route the FAQ to platform-specific evidence and distinguish browser-to-Pulse refusal from server-to-platform refusal, preserving credentials, identity, TLS and backup safety.

Contract-Neutral: Documentation and rendered-guide regressions only; no monitoring, API, authentication, network or dependency contract changes.
Change-source: pulse-maintainer
2026-10-06 07:00:33 +01:00
pulse-triage[bot] 5bacce0f63 Distinguish Pulse service errors from failed TrueNAS polling
The copied help treated Pulse's truenas_unavailable response as an appliance or API-key problem. Explain the local handler/persistence failure, preserve existing request evidence and keep explicit opt-out, failed probes and stale collection separate. Bind the guidance to actual handler responses and shipped-viewer links without probing an appliance.

Contract-Neutral: Correct existing TrueNAS help and add response/renderer regression tests; runtime, API, polling, permissions and dependency contracts are unchanged.
Change-source: pulse-maintainer
2026-10-06 06:30:24 +01:00
pulse-triage[bot] e70e2c6430 Make memory troubleshooting passive and process-scoped
Distinguish LXC/container memory charts from Pulse RSS, heap and virtual memory. Add a bounded five-counter sample with process identity readback, failure preservation and private-data cautions. Exercise the copied recipe with synthetic failures and an owned Linux child, preserving the existing CPU/write recipes.

Change-source: pulse-maintainer
Contract-Neutral: Documentation and executable recipe checks only; no runtime or public-contract delta.
2026-10-06 02:52:50 +01:00
pulse-triage[bot] aae30e2baa Explain safe recovery of retained notification failures
A destination edit and a passing Test do not update the settings stored in an old queued delivery. Make the existing recovery help distinguish those paths, explain the passive Telegram header check, and keep the shipped guides in sync. Connect a real rejected HTTP delivery through edit, Test, restart, retained retry and new alert, including current disable, removal and pause controls.

Contract-Neutral: Documents and verifies existing destination-snapshot and retry semantics; no runtime, API, schema or delivery-policy change.
Change-source: pulse-maintainer
2026-10-06 01:30:57 +01:00