Commit Graph

10794 Commits

Author SHA1 Message Date
pulse-triage[bot] 7a261e4830 test(alerts): cover held delivery rows across log outages
Existing outage coverage exercises attempted deliveries only. Protect held-only histories from appearing readable during an outage, and verify recovery uses the current held state rather than stale rows or a misleading empty result.

Change-source: pulse-maintainer
2026-09-07 09:26:35 +01:00
pulse-triage[bot] b85444c7c2 Merge candidate 20260907T071010Z-delivery-trust
Change-source: pulse-maintainer
2026-09-07 09:02:13 +01:00
pulse-triage[bot] 0d0b105352 fix(release): map non-root browser mount access
Rootless Docker maps the unchanged browser UID to a subordinate host UID, so the host-owned 0770 integration tree is inaccessible. Grant that mapped identity POSIX ACL access only within the disposable integration mount, without following symlinks or granting world access. Inherit host access for generated evidence and fail closed on mapping or ACL errors. Preserve container UID/GID, image selection, direct installed CLI, browser gates and failure propagation. Focused fixtures cover identity mapping, subordinate mapping and preparation failures; exact release qualification remains separate.

Change-source: pulse-maintainer
2026-09-07 08:19:30 +01:00
pulse-triage[bot] 0529b32c57 test(web): preserve current notification hold evidence
The current notification diagnostic demand records confusion between failed delivery and intentional silence. Pin precedence of current holds over historic dispatch, known event reason labels and unknown-reason fallback so future UI changes do not erase that distinction. This adds regression coverage only; it does not establish recipient delivery.

Change-source: pulse-maintainer
2026-09-07 08:16:38 +01:00
pulse-triage[bot] ae1ac6ae95 fix(release): prevent Playwright runner download fallback
Exact admission attempted to fetch playwright@1.63.0 when the mounted runner was unavailable. Invoke the npm-ci-installed CLI directly so missing or inaccessible dependencies fail closed without substituting a registry package. Preserve the existing container identity and gates; this does not claim to resolve the observed EACCES. Exercise shell arguments and failure propagation with a mocked Docker command.

Change-source: pulse-maintainer
2026-09-07 00:24:10 +01:00
pulse-triage[bot] a5cbbaf1d4 Merge pull request #1946 from rcourtman/maintainer/20260906T201829Z
Stop permanent alert retries and keep delivery and backup evidence truthful
2026-09-07 00:03:21 +01:00
pulse-triage[bot] de5b49678e test(web): preserve mixed guest backup coverage evidence
Operator feedback distinguishes successful job completion from protection of every guest. Lock down the existing model boundary with mixed protected, unprotected, failed and unevaluated guests so aggregate success cannot silently erase missing coverage. Task success must not substitute for canonical posture evidence.

Change-source: pulse-maintainer
2026-09-06 22:57:17 +01:00
pulse-triage[bot] 9dd4750536 docs: sync watchdog guidance to shipped mirror
Copy the reviewed troubleshooting guidance into the shipped frontend mirror so public docs and repository docs remain identical.\n\nChange-source: pulse-maintainer

Change-source: pulse-maintainer
2026-09-06 22:36:42 +01:00
pulse-triage[bot] edcd1dcc5e Merge batch-start upstream main
Change-source: pulse-maintainer

# Conflicts:
#	docs/release-control/v6/internal/subsystems/api-contracts.md
2026-09-06 22:31:11 +01:00
pulse-triage[bot] ad0a70bc75 test(notifications): cover SMTP transaction retry replies
Check permanent, transient and recovered sends at envelope and DATA boundaries without external delivery.

Change-source: pulse-maintainer
2026-09-06 22:26:55 +01:00
rcourtman 560dbf314c Merge pull request #1935 from rcourtman/fix/docker-observation-evidence
Preserve diagnostic evidence and Patrol outcome truth
2026-09-06 22:21:42 +01:00
pulse-triage[bot] 8490038699 style(frontend): format delivery refresh regression
Apply the repository formatter to the accepted stale-delivery evidence regression test. This changes layout only and preserves the reviewed assertions.

Change-source: pulse-maintainer
2026-09-06 22:17:09 +01:00
pulse-triage[bot] 13e5201f02 Merge candidate 20260906T210510Z-delivery-trust
Change-source: pulse-maintainer
2026-09-06 22:16:05 +01:00
pulse-triage[bot] e9904249c9 Merge candidate 20260906T210504Z-core-runtime
Change-source: pulse-maintainer
2026-09-06 22:16:04 +01:00
pulse-triage[bot] 8b295385cd Merge candidate 20260906T205512Z-web-product
Change-source: pulse-maintainer
2026-09-06 22:16:04 +01:00
pulse-triage[bot] 92c3297049 ci: add fixed UUID layout diagnostic without release gate waiver
The exact release tree retains a failed paired UUID benchmark check, while push CI cannot repeat that comparison. Provide a reviewed-source route to collect the requested four-condition hosted layout evidence instead of repeating local samples or changing product order.

Fix source/tree/toolchain identities, isolate diagnostic controls, alternate ten rounds, and retain partial receipts without publishing binaries. Execution still needs separate operator authority; collection success does not dispose of the failed gate. Nine focused harness tests and existing benchmark contract tests pass.

Change-source: pulse-maintainer
2026-09-06 22:11:03 +01:00
pulse-triage[bot] 79577981f9 fix(notifications): stop SMTP retries on permanent failures
Respect structured delivery classes in the inner email retry loop, retaining transient retry budgets and accurate attempt counts. Add queue-free SMTP failure regression coverage.

Change-source: pulse-maintainer
2026-09-06 22:10:04 +01:00
pulse-triage[bot] 56f8d50311 style(frontend): format alert regression coverage
Apply the repository formatter to the two reviewed test files that failed the existing proposal check. This changes layout only and preserves the accepted test behavior.

Change-source: pulse-maintainer
2026-09-06 22:06:45 +01:00
pulse-triage[bot] 6cbf3889aa Merge candidate 20260906T205002Z-core-runtime
Change-source: pulse-maintainer
2026-09-06 21:59:32 +01:00
pulse-triage[bot] 0f0fc5858a test(web): prevent stale delivery success after log refresh
Protect notification diagnosis when a refreshed log replaces successful attempts with retries, failures or cancellations. Assert both the new outcome and removal of the old success and alert identity, so stale positive evidence cannot survive a row refresh. All 31 focused delivery-log hook, card and overview tests passed.

Change-source: pulse-maintainer
2026-09-06 21:57:46 +01:00
pulse-triage[bot] 4a981bc2ec fix(notifications): prioritise HTTP rejection over retry body hints
A provider 403 response mentioning an authentication timeout was treated as a transient network failure and sent again with unchanged credentials. Classify explicit HTTP status before diagnostic text, retaining existing transient status and network fallback behaviour. Add a status/body matrix and a queue-free loopback regression that verifies one request and terminal delivery history.

Change-source: pulse-maintainer
2026-09-06 21:54:18 +01:00
pulse-triage[bot] b501163805 test(web): protect demo install link visibility and dismissal
The integrated install handoff must remain demo-only and respect tab-session dismissal. Assert link absence as well as notice absence, and exercise remount and session reset so future banner refactors cannot silently undo those boundaries. Validated with 21 focused DemoBanner and Login tests.

Change-source: pulse-maintainer
2026-09-06 21:49:17 +01:00
rcourtman df0735cc79 Integrate current main with verified Patrol action history
Preserve the incoming delivery-health ordering and demo install-link
changes alongside the qualified Patrol action history. Retain prior
source bindings and record the merged build and browser checks so the
shared proof receipt reflects the integrated tree.
2026-09-06 21:44:13 +01:00
pulse-triage[bot] af763cd7e4 Merge commit '1b060ba48d8dd9744534199431df472355724e2a'
Change-source: pulse-maintainer
2026-09-06 21:26:47 +01:00
pulse-triage[bot] 97bc3b04b4 Merge remote-tracking branch 'origin/main'
Change-source: pulse-maintainer
2026-09-06 21:26:47 +01:00
rcourtman eef4ea21e7 Merge pull request #1945 from rcourtman/claude/demo-banner-install-link
Link the demo banner back to the install steps
2026-09-06 21:23:55 +01:00
rcourtman 3853124a39 Keep Patrol action history consistent with recorded outcomes
Refresh durable investigation lifecycle from authoritative actions while
preserving completed evidence. Keep resolved history reviewable and label
recorded plan facts separately from action outcomes. Follow all resource
pages during qualification and record live approval, rejection and storage
semantic-review results. Integrate current main and preserve its alert
ordering correction.
2026-09-06 21:23:01 +01:00
pulse-triage[bot] 1b060ba48d docs(alerts): explain whole-site outage watchdog verification
Community outage reports expose the difference between local delivery health and a monitor surviving site failure. The existing External watchdog has no troubleshooting entry explaining that boundary. Document its current setup, period-plus-grace timing, secret handling and authorised receipt/recovery checks without adding runtime scope or claiming end-to-end qualification.

Change-source: pulse-maintainer
2026-09-06 21:22:44 +01:00
pulse-triage[bot] a52a44f2f2 Merge current upstream main into reviewed alert coverage
Change-source: pulse-maintainer
2026-09-06 21:21:20 +01:00
pulse-triage[bot] 537807300c Merge pull request #1944 from rcourtman/maintainer/20260906T185414Z
Keep delivery warnings current and alert checks reliable
2026-09-06 21:13:58 +01:00
pulse-triage[bot] b8149182fe Merge reviewed delivery-log recovery coverage
Integrate the web-product regression test over the newer canonical warning-transition coverage while preserving the exact reviewed candidate commit.

Change-source: pulse-maintainer
2026-09-06 21:04:53 +01:00
pulse-triage[bot] 2bf570bec8 test(alerts): protect delivery log outage recovery presentation
Previously loaded delivery rows must not look current when a later read fails. Cover the rendered outage and recovery lifecycle, including removal of stale failures and transition to a genuinely empty log, rather than only initial unavailability.

Change-source: pulse-maintainer
2026-09-06 21:01:28 +01:00
pulse-triage[bot] a54b026fbd test(monitoring): cover delivery warning activation transitions
Protect suppression after snoozing an active incident and dispatch of recurrence after reactivation. A bypassed activation guard fails the regression; restored lifecycle selection passes 30 race-enabled repetitions.

Contract-Neutral: Regression coverage only; no runtime or public surface changes.

Change-source: pulse-maintainer
2026-09-06 20:58:14 +01:00
pulse-triage[bot] 130ccca882 Merge reviewed alert regression coverage
Change-source: pulse-maintainer
2026-09-06 20:49:53 +01:00
pulse-triage[bot] cecead1421 test(alerts): retain current diagnosis after stale request failure
Exercise a rejected previous-incident request after a same-resource recurrence has loaded its suppression explanation. Protect the current card from failure handling that clears newer delivery state.

Change-source: pulse-maintainer
2026-09-06 20:47:03 +01:00
pulse-triage[bot] 168b8c37c9 test(monitoring): preserve warnings while notifications are inactive
Cover pending and snoozed activation through the monitor projection: failures remain visible and current without dispatch, recoveries clear, and recurrences remain suppressed. Bypassing the activation guard fails both cases; restored focused lifecycle tests pass 30 race-enabled repetitions.

Contract-Neutral: Test-only protection for existing delivery-warning activation policy; no runtime or public surface changes.
Change-source: pulse-maintainer
2026-09-06 20:45:43 +01:00
rcourtman f23553f825 Link the demo banner back to the install steps
pulserelay.pro sends curious visitors to the public demo, and the demo
was a dead end: once inside, the only way back to installing Pulse was
the browser's history. The demo-mode banner now ends with "Run Pulse on
your own hardware", opening the site's setup steps in a new tab. It is
install guidance rather than an upsell, so it belongs in demo mode where
commercial surfaces are otherwise hidden.

The read-only notice keeps its own element so the existing text lookup
and dismiss behaviour are unchanged. Verified on a DEMO_MODE=true mock
backend behind Vite at 1280x800 and 390x844: the link renders after the
notice, wraps cleanly on a phone, and carries target _blank with rel
noopener noreferrer.

Contract-Neutral: demo banner copy and link only; no public API, config, or contract surface changes
2026-09-06 20:40:26 +01:00
pulse-triage[bot] 66bd017541 Merge commit '4af5d5216ede73e3ce44d6ca5d8ea8140ee88ef0'
Change-source: pulse-maintainer
2026-09-06 20:35:00 +01:00
pulse-triage[bot] 4af5d5216e test(monitoring): cover delivery warning projection lifecycle
Exercise classified health snapshots through the real alert manager: unchanged and count-only changes stay quiet, new failure classes dispatch, recovery clears, and the same cause starts a new incident. Assert synchronous dispatch timestamps rather than timing asynchronous callbacks. The fingerprint-removal control fails on count drift; restored lifecycle and ordering tests pass 100 race-enabled repetitions.

Change-source: pulse-maintainer
Contract-Neutral: Test-only coverage of existing delivery-warning projection and alert lifecycle semantics; no runtime, public API or product surface changes.
2026-09-06 20:29:07 +01:00
pulse-triage[bot] f65bfcdbaf test(alerts): preserve delivery status across same-resource recurrence
A late diagnosis for a previous incident must not erase the current incident's suppression explanation when both concern the same resource. Pin this rendered boundary: the test passes with request ordering and fails when its version guard is removed. Both focused alert files pass all 16 tests after restoring production code.

Change-source: pulse-maintainer
2026-09-06 20:22:18 +01:00
rcourtman 57ead19484 Preserve Patrol evidence and surface action submission failures
Live funded qualification found hidden tool results and misleading action
submission outcomes. Share the result-bearing transcript across stored chat
and product history, render the retained evidence, and distinguish captured
proposals from broker acceptance. Keep review usable while Patrol is paused.

Record Gemini route pricing and exact qualification limits. Integrate current
main and repeat browser proof for the incoming login flow. Approved/rejected
recovery remains unqualified without the development command agent.
2026-09-06 20:09:54 +01:00
pulse-triage[bot] 49b33a3254 Merge reviewed delivery-health projection ordering repair
Preserve the exact race-tested monitoring repair while retaining canonical main's integrated token fixture and alert UI updates.

Change-source: pulse-maintainer
2026-09-06 20:07:17 +01:00
pulse-triage[bot] 8033fa581a fix(monitoring): serialize delivery health alert projection
Concurrent timer and queue callbacks could apply an older health snapshot after a newer one, hiding a new delivery failure or resurrecting a dismissed warning. Serialize the complete read/apply operation without holding the monitor or queue mutex across alert updates.

Add isolated channel-controlled stale-clear and stale-raise regression cases. Removing the lock fails both final-state assertions; restored code passes 100 race-enabled focused repetitions. This does not qualify the integrated release candidate or clear unrelated adverse evidence.

Change-source: pulse-maintainer
Contract-Neutral: Restores monitoring contract extension point 21 immediate canonical delivery-warning reconciliation by serializing existing read/apply operations; no public API, verdict, throttle, alert identity, or agent-lifecycle contract changes. Existing isolated ordering regression tests cover both stale-clear and stale-raise outcomes.
2026-09-06 20:02:06 +01:00
pulse-triage[bot] cb70a8a9dc Merge current main into the token-fixture repair
Preserve the reviewed fixture-race repair while incorporating the upstream merge of the alert wording update.

Change-source: pulse-maintainer
2026-09-06 19:57:58 +01:00
pulse-triage[bot] df7eca7913 Merge pull request #1942 from rcourtman/maintainer/20260906T171513Z
Keep alert delivery status from reverting after newer checks
2026-09-06 19:52:24 +01:00
pulse-triage[bot] 05e31eadf0 test(monitoring): synchronise canonical token host fixture
GetMonitor starts polling concurrently, so monitor.mu does not protect the fixture host slice from State.GetSnapshot. Use the state-owned UpsertHost setter to match the reader lock while retaining all canonical-token diagnostics assertions. Addresses the fixture race reported in PR1943 rest-1; no production behaviour changes.

Change-source: pulse-maintainer
2026-09-06 19:46:16 +01:00
pulse-triage[bot] 293246ee95 Merge commit '63246694e6494411c568f3ce1b3007a7016afeab'
Change-source: pulse-maintainer

# Conflicts:
#	frontend-modern/browser-verification.json
2026-09-06 18:57:51 +01:00
rcourtman 63246694e6 Merge pull request #1941 from rcourtman/claude/demo-auto-login
Sign demo-mode visitors in instead of showing them demo/demo
2026-09-06 18:32:49 +01:00
pulse-triage[bot] 6163492069 Merge reviewed diagnosis lifecycle regression protection
Integrate the exact web-product candidate on top of the current canonical alert ordering repair without re-parenting its reviewed commit.

Change-source: pulse-maintainer
2026-09-06 18:28:42 +01:00
pulse-triage[bot] 144f5d3627 Merge current main into reviewed alert ordering repair
Preserve the reviewed alert diagnosis ordering commit while incorporating the upstream merge that published its base.

Change-source: pulse-maintainer
2026-09-06 18:19:36 +01:00