Commit Graph

11852 Commits

Author SHA1 Message Date
pulse-triage[bot] 2c98baabea Align administration guide details with current handlers
Use the accepted organisation ID alphabet and canonical resource types, and expect the documented role assignments to return 204. Keep the guide lifecycle checks at the existing API contract.

Contract-Neutral: Documentation and test expectations only; API methods, validation, authentication and tenant isolation are unchanged.
Change-source: pulse-maintainer
2026-10-01 08:44:10 +01:00
pulse-triage[bot] 0e06f2b38b Make administration guides safe and executable
Keep RBAC, audit and organisation tokens out of process arguments. Use signed-in organisation mutations, actual schemas and acceptance rules, a custom role ID, and private audit exports. Exercise copied commands and handler lifecycles without changing runtime authority.

Contract-Neutral: Documentation and documentation tests only; authentication, RBAC, tenant isolation, licensing and API runtime contracts are unchanged.
Change-source: pulse-maintainer
2026-10-01 08:23:23 +01:00
pulse-triage[bot] 704f4eeb4e Keep fleet and action API tokens out of shell recipes
Use the existing HTTP routes with private header files, JSON on stdin and curl defaults disabled. Separate plan, decision and execution, explain their real permissions and retain uncertain-execution safety. Extend the executable guide tests to cover all seven recipes, both header formats, auth failures and trace-enabled local curl settings.

Contract-Neutral: API routes, authentication, scopes, action authority and runtime execution are unchanged; only existing guidance and its executable documentation checks change.
Change-source: pulse-maintainer
2026-10-01 07:27:49 +01:00
pulse-triage[bot] 9bbbc7a817 Integrate reviewed credential-safe agent guidance
Accept exact candidate d5c187613a68e6e891ae9a5b6dbfd6154cea1844; private-file setup and verified saved downloads improve existing help without runtime changes.

Change-source: pulse-maintainer
2026-10-01 06:28:00 +01:00
pulse-triage[bot] f5e305d4c9 Reconcile batch-start published Pulse main
Incorporate protected upstream 76188998f2 without re-parenting reviewed local candidates. Change-source: pulse-maintainer

Change-source: pulse-maintainer
2026-10-01 06:27:40 +01:00
pulse-triage[bot] d5c187613a Keep agent setup tokens out of commands and unverified downloads
Use existing Unix and Windows token-file installers, verified HTTPS downloads and inspection before execution across setup, retarget, profile and cleanup examples. Exercise private files, all profile arguments, rejected TLS and failed downloads with synthetic guest-local fixtures.

Contract-Neutral: Documentation and executable documentation tests only; installer behaviour, privileges and runtime contracts are unchanged.
Change-source: pulse-maintainer
2026-10-01 05:41:44 +01:00
pulse-triage[bot] 76188998f2 Keep missing TrueNAS readings out of live usage and History (#2360)
## What changed and why
TrueNAS reporting can return only some metrics, no metrics, or genuine
zero readings. Treating a timestamp as evidence that every metric was
present fabricated zero CPU/network/I/O samples; zero available memory
could also disappear. This repair follows the failed CORE 13 retest in
#2077 and reproduced source cases. It tracks presence per metric through
REST/realtime collection, host rows and History, preserves measured
zero, and keeps optional telemetry failures separate from successful
inventory collection. Diagnostics expose bounded categories/status, not
raw provider text.

The pinned-TLS pipeline fixtures exercise partial readings, failures and
recovery through the client, poller, registry, metric writer and History
readback. A test-only notification receipt watchdog now permits the
existing autonomous queue's two polling cycles while still requiring the
actual webhook payload and incident identity; production scheduling and
latency assertions are unchanged.

## Included source
Complete range
`bfe2b39ee0d110bb2a1fdaf582e04a1d72003126..78f2b7c0323fa130da5ef6313804688e51df10f1`.
Core candidate `20261001T020238Z-core-runtime`: runtime
`22ca07ba7171686f1e0904d1d14eb1f08101e134`, fixture corrections
`dc6a66a62cb18a976ce3e4a6e399e629fdeba16f`,
`00ed443d002b697f21874a4fa2758822ca47a448`,
`5c6e826cc49825fb235a3c5b68a798c8e8081be8`, and final
`28cdde7299364678e00abf33e9f531ea0d47b5c5`. Additive integration
`6b23876ec8104965c7842e194e055f3206134d4f` and upstream reconciliation
`78f2b7c0323fa130da5ef6313804688e51df10f1` preserve every reviewed
identity and published ancestor.

## Validation and limits
Recorded baseline `source-0pul7g9o` reproduced ten faulty cases. Final
`source-_4msx_t4` passed five focused race repetitions, complete
TrueNAS/monitoring race suites, vet and affected-library builds. Earlier
fixture and receipt-watchdog failures remain recorded. The composed
head's entire `internal`, `pkg`, `cmd`, `go.mod` and `go.sum` inputs
equal that tested candidate, so sufficient source validation was not
repeated.

Publication provenance, aggregate canonical completion and whitespace
checks pass. Browser guard correctly skips this backend-only range.
Proof used Go 1.26.7 rather than declared 1.26.8; exact-head CI must
establish the declared toolchain and all required results before
landing. These synthetic proofs are not native appliance acceptance, a
diagnosis of the reporter's response shape, complete #2077 resolution,
installed recovery or release qualification. No release placement is
claimed.


[How Pulse handles
triage](https://github.com/rcourtman/Pulse/blob/main/docs/AI_TRANSPARENCY.md)
2026-10-01 04:24:32 +00:00
pulse-triage[bot] 36418af66b Integrate reviewed shared-table touch activation repair
Preserve the exact Web candidate, parent-bound browser receipt and lint correction. Restore first-touch disclosure while retaining delegated nested controls and keyboard behaviour.

Change-source: pulse-maintainer
2026-10-01 05:21:00 +01:00
pulse-triage[bot] 6a47dad9ce Integrate reviewed credential-safe PBS guidance
Preserve the exact product-intelligence candidate and its tested private-file recipes. Existing PBS setup and troubleshooting now prefer read-only API access and verified TLS.

Change-source: pulse-maintainer
2026-10-01 05:20:59 +01:00
pulse-triage[bot] 78f2b7c032 Reconcile batch-start published Pulse main
Preserve reviewed TrueNAS telemetry and exact source identities while incorporating the published integration present at batch start.

Change-source: pulse-maintainer
2026-10-01 04:33:39 +01:00
pulse-triage[bot] 12c8a7aba3 Keep native and bound row-handler tests lint-compatible
Test caller-native and bound delegated click handlers on separate rows rather than combining JSX event props rejected by the existing duplicate-prop rule. The touch-row runtime and its parent-bound browser receipt are unchanged.

Change-source: pulse-maintainer
2026-10-01 04:33:11 +01:00
pulse-triage[bot] 88f52387af Restore touch activation on shared table rows
Mark clickable table rows as native WebKit touch targets without moving their actions out of Solid's delegated event ordering. Preserve keyboard disclosure, embedded controls, dynamic action removal and explicit native handlers; cover the shared table and data grid, and record production PBS drawer browser proof.

Change-source: pulse-maintainer
2026-10-01 04:24:25 +01:00
pulse-triage[bot] bfe2b39ee0 Make TrueNAS troubleshooting safer and History timelines accurate (#2359)
## What changed and why

- **Safer TrueNAS troubleshooting.** Existing help put Pulse tokens and
TrueNAS keys in shell arguments and requested unbounded logs. It now
uses private credential files, tests before saving, bounds logs, and
distinguishes hardware capacity from actual CPU/memory usage and
History. This also addresses the misleading capacity-versus-usage
evidence seen in #2077 without claiming to fix that appliance's missing
metrics.
- **Accurate drawer History timelines.** Sparse observations were
stretched independently across each panel, making five minutes look like
a full day. Panels now share the fulfilled, dated time window, preserve
real edge observations, retain matching bounds on failed refresh, and
clear them when the target or range changes. Existing keyboard/touch
inspection and polling limits remain.
- **Honest release-watchdog observations.** After stable publication, a
release branch can retain the stable VERSION while repairs accumulate.
The watchdog now observes that exact source and its preceding stable
reference instead of treating it as a new promotion. Candidate promotion
gates remain unchanged; watchdog artifacts cannot serve as
promotion-readiness evidence.

## Included candidates and complete range

Pulse main:
`e085c2e583fde3af58699ccc9c87f28bcb24715b..920aa2f27c6cb717cca7eb8e2cd3f1379d0fdf73`
(four source commits and four additive integration/reconciliation
commits).

- TrueNAS guidance: `19fa6b1c8dffacd10c0a9dbf025b039844eebbce`,
candidate 20261001T010405Z-product-intelligence.
- Dated History window: `5e886b04d67fbf9edf555d7379db932d28117c3b`,
candidate 20261001T010405Z-web-product.
- Watchdog observation and fixture correction:
`4101c37db548ca85ca8500f433b15a3c45fba2ab..e2fb6b2faee62f6da75b62249da85aced3b71fe6`,
including both commits, candidate 20261001T014538Z-delivery-trust.

The reviewed identities and ancestry are preserved. Reconciliation
`ffb6443862e038d5a050e8a941913f9617f46bd8` already incorporates current
published main; no additional upstream merge or source correction was
needed at this gate.

## Validation and limits

Existing sufficient exact-source evidence is reused:

- TrueNAS: `source-kqbglj0r` passes 23 Python/synthetic-recipe checks;
`source-n7uk8dco` passes 22 docs-link tests. Three Docs-renderer browser
cases pass across Chromium/Firefox desktop and WebKit phone emulation;
six screenshots were recorded as inspected.
- History: regression-first `source-fbz6bjig` records ten failures.
`source-4inm_uzq` passes type-check/lint but retains an AIChat
import-hook timeout; `source-x5tvsgds` passes the complete serial suite
(21,604 tests, three existing skips), embed build, bundle budgets,
formatting, headers and duplication checks without loosening assertions.
Eight production-renderer browser cases pass, with 40 screenshots
recorded as inspected. WebKit whole-row touch opening and screen-reader
speech remain unproved.
- Watchdog: final `source-z97o6_t2` passes 121 Python tests and five Go
regressions. The earlier fixture failure remains recorded; its additive
correction copies the existing checkout ignore policy without weakening
the clean-source assertion.
- Combined tip: provenance and whitespace pass; per-source-commit and
aggregate canonical completion checks pass. The range-aware browser
guard confirms both final changed frontend source blobs are covered by
parent-bound in-range receipts. Final blobs match the reviewed
candidates; intervening upstream changes affect alerts, not these
candidates' source or dependency graphs. A confined native-Git fixture
check passes 74 rehearsal/promotion tests. Its initial incorrect Python
import-path invocation failed before running the suites and is retained
separately.

These are synthetic/offline source and UI checks, not actual TrueNAS/PBS
acceptance, restored hosted watchdog coverage, installed update/rollback
proof or release qualification. Exact-head required CI and independent
review still govern landing. This PR changes no release version or tags
and makes no release-readiness claim. The separate v6.5 proposal #2344
remains unchanged and dependency-audit-blocked under its existing repair
ownership; it is not part of this main batch.


[How Pulse handles
triage](https://github.com/rcourtman/Pulse/blob/main/docs/AI_TRANSPARENCY.md)
2026-10-01 03:21:45 +00:00
pulse-triage[bot] 6b23876ec8 Integrate reviewed truthful TrueNAS telemetry
Preserve exact Core candidate commits and per-metric missing-versus-zero semantics. Appliance recovery and release qualification remain separate outcomes.

Change-source: pulse-maintainer
2026-10-01 04:16:35 +01:00
pulse-triage[bot] a5c8b5d597 Make PBS setup and diagnostics credential-safe
Prefer read-only API access, grant Audit to both PBS identities, keep tokens in private files and verify TLS before sending them. Exercise the documented recipes with synthetic tokens, HTTP failures and certificate rejection controls.

Contract-Neutral: Documentation and synthetic recipe checks only; no runtime API, installer, PBS identity or permission contract changes.
Change-source: pulse-maintainer
2026-10-01 04:11:04 +01:00
pulse-triage[bot] 28cdde7299 Allow the autonomous queue to produce the restart receipt
The complete race run observed a successful PBS recovery webhook after the functional test watchdog expired. Match the existing notification recovery contract watchdog: two autonomous five-second polls plus callback scheduling, while still requiring the actual HTTP payload and incident identity. No production queue, delivery policy or performance assertion changes.

Contract-Neutral: Test-only functional receipt watchdog for the existing autonomous notification queue; production delivery and API unchanged.
Change-source: pulse-maintainer
2026-10-01 03:59:08 +01:00
pulse-triage[bot] 5c6e826cc4 Advance the partial-reporting fixture through due poll cycles
Drive each modeled response through a due deadline instead of zeroing it, which legitimately reconstructs the existing future cadence. The production scheduling policy is unchanged.

Contract-Neutral: Test-only due-deadline setup for the telemetry pipeline; production polling and API unchanged.
Change-source: pulse-maintainer
2026-10-01 03:43:28 +01:00
pulse-triage[bot] 920aa2f27c Integrate reviewed post-publication watchdog observation
Change-source: pulse-maintainer
2026-10-01 03:39:51 +01:00
pulse-triage[bot] 8a0937a0f3 Integrate reviewed dated drawer History window
Change-source: pulse-maintainer
2026-10-01 03:39:50 +01:00
pulse-triage[bot] ffb6443862 Reconcile batch-start published Pulse main
Change-source: pulse-maintainer
2026-10-01 03:39:30 +01:00
pulse-triage[bot] 00ed443d00 Use certificate-pin trust for the self-signed pipeline fixture
Match the client's existing self-signed pin contract while retaining VerifyConnection. The full TrueNAS suite includes the pin mismatch refusal control; production transport remains unchanged.

Contract-Neutral: Test-only trust configuration for a pinned synthetic TLS endpoint; production transport and API unchanged.
Change-source: pulse-maintainer
2026-10-01 03:38:56 +01:00
pulse-triage[bot] dc6a66a62c Pin TLS in the TrueNAS telemetry pipeline fixture
Exercise the existing authenticated transport without a plaintext fixture or a verification bypass. Production telemetry and transport behavior are unchanged.

Contract-Neutral: Test-only pinned-TLS fixture for the existing telemetry contract; production transport and API unchanged.
Change-source: pulse-maintainer
2026-10-01 03:33:38 +01:00
pulse-triage[bot] 22ca07ba71 Keep missing TrueNAS samples distinct from observed zero
Carry per-metric presence through REST and realtime snapshots, canonical host rows and shared History writes. Do not interpret arbitrary numeric object fields as reporting values. Preserve bounded telemetry failure diagnostics without blocking inventory or exposing provider text.

Change-source: pulse-maintainer
2026-10-01 03:25:28 +01:00
pulse-triage[bot] e085c2e583 Keep alert acknowledgements through long-running incidents (#2358)
## What changed and why
Keep manual and automatic acknowledgements on incidents that are still
active during hourly tracking cleanup. Previously the canonical
acknowledgement could expire after 24 hours even while the incident
continued, causing a short recovery and recurrence to notify again.
Active canonical identities now receive the same protection as legacy
identities and ordinary cleanup. Inactive expiry and explicit
unacknowledgement are unchanged.

This repairs a reproduced defect in existing alert behavior. It is not a
diagnosis of the whole daily alert cycle reported in #2353 or a claim of
installed notification recovery.

The periodic-history persistence test also now uses virtual time with
the real ticker, verifies two exact persisted snapshots before shutdown,
and drains its worker. This replaces a scheduling-sensitive 750 ms poll
without changing production intervals or persistence behavior.

## Included source
Complete range
`7667114fe6dc45e9542d1c7531511964ca6f35ed..1c8f51bf1ff12d559cfbd0a47cf25b879c710fdd`:
- Runtime and regression candidate
`e256e9fc509cf35143b9bcde638d24baa562f1ae`.
- Test-only correction `da685d6d12147d945692df81be13392124bd36cd`.
- Reviewed additive integration
`1c8f51bf1ff12d559cfbd0a47cf25b879c710fdd`.
All reviewed identities and ancestry are preserved. Current upstream
remains the range base.

## Validation and limits
Recorded baseline `source-zk09jitb` reproduces acknowledgement loss and
duplicate dispatch. Final offline proof `source-406x6wbt` passes ten
focused race repetitions, complete alerts/notifications/monitoring race
suites, vet and affected-library builds. Eighty modeled recurrence
cycles cover manual/automatic acknowledgement, JSON/durable checkpoint
restart, zero duplicate dispatches, explicit unacknowledgement and seven
retention controls. The earlier full proof `source-74ad7ohd` failed the
periodic-history polling deadline; the additive test correction is
included, not an unchanged favorable rerun.

The final integrated alert, notification and monitoring source matches
the proved candidate; integration adds only already-published frontend
work outside these paths. Complete-range provenance/whitespace,
per-commit canonical contract guards and browser applicability checks
pass (no frontend delta). Sufficient source evidence was reused rather
than repeated solely for publication. Proof Go was 1.26.7 rather than
declared 1.26.8; required exact-head CI still must validate the declared
toolchain and source before landing.

Independent review and exact-head checks govern merge. Source checks do
not establish installed recovery, complete reporter acceptance or
release qualification. No release, tag or deployment is changed.


[How Pulse handles
triage](https://github.com/rcourtman/Pulse/blob/main/docs/AI_TRANSPARENCY.md)
2026-10-01 02:21:54 +00:00
pulse-triage[bot] 857b6e416d Integrate reviewed safe TrueNAS diagnostics
Preserve the exact reviewed documentation candidate and its synthetic recipe evidence. Existing TrueNAS help becomes credential-safe and distinguishes capacity from observed telemetry; no runtime change.

Change-source: pulse-maintainer
2026-10-01 03:10:54 +01:00
pulse-triage[bot] e2fb6b2fae Match watchdog Git fixtures to the checkout ignore policy
The first exact offline suite passed the metadata cases but the clean-tree assertion saw Python import bytecode because the fixture omitted the real .gitignore. Copy that existing policy into the fixture, retaining the source/no-mutation assertion.

Contract-Neutral: Fixture setup now copies the existing repository ignore policy; runtime and deployment contracts are unchanged.
Change-source: pulse-maintainer
2026-10-01 03:05:17 +01:00
pulse-triage[bot] 4101c37db5 Keep watchdog source observations separate from promotion gates
The exact no-mutation watchdog failed at published 6.4.5 because the release line has pending repairs but still declares its stable VERSION. Observe that governed source and its preceding stable reference without inventing a new promotion, while keeping candidate resolver gates unchanged and watchdog artifacts out of promotion-readiness records.

Change-source: pulse-maintainer
2026-10-01 02:56:58 +01:00
pulse-triage[bot] 1c8f51bf1f Integrate reviewed active alert acknowledgement retention
Change-source: pulse-maintainer
2026-10-01 02:49:11 +01:00
pulse-triage[bot] 5e886b04d6 Keep drawer History on one dated time window
Use the fulfilled API window and a common observed envelope across metric groups so sparse samples cannot look like a full selected range. Show dated endpoints, retain them with matching failed-refresh data, and clear them on range replacement. Preserve edge observations and reject non-date geometry.

Pin mounted/model regressions, update both affected contracts, and retain production PBS drawer browser proof with its installed-acceptance limits.

Change-source: pulse-maintainer
2026-10-01 02:45:12 +01:00
pulse-triage[bot] da685d6d12 Make periodic alert-history persistence proof deterministic
The complete alerts race suite failed the existing 750 ms filesystem-poll deadline. Use Go virtual time with the real periodic worker and configured interval instead of widening the deadline or rerunning unchanged source. Assert no pre-tick write, exact first- and second-tick history content before shutdown, and drain the worker for cleanup. Runtime saving and production intervals are unchanged.

Contract-Neutral: Use virtual time to strengthen the periodic-history persistence test; no runtime or contract delta.
Change-source: pulse-maintainer
2026-10-01 02:30:43 +01:00
pulse-triage[bot] 7667114fe6 Keep History readings correctly attributed and continuing alerts visible (#2357)
## What changed and why
Make existing drawer History readable with keyboard and touch, and keep
every inspected metric attributed to one actual stored time. Missing
sibling observations remain unavailable rather than borrowing
neighbouring or live values. Selection survives same-source refreshes
and clears at resource/range boundaries; refresh-failure warnings remain
intact.

Keep continuing unacknowledged alerts through retention cleanup.
Age-only cleanup could remove an observed condition and cause another
notification on the next failing poll. Cleanup now also requires
observation inactivity, preserving configured acknowledgement and
affirmative recovery behavior.

These repairs follow reproduced History attribution/accessibility and
alert-retention defects. They improve existing behavior, not new product
scope. They do not establish complete #1723 PBS/VirtualBox acceptance or
diagnose all of #2353's reported daily cycle.

## Included source
Complete range
`6f4e2f25c558d7c69717984c47d06a94c179c4ca..00f82e2afc3cd75035c997e9e245c6e0eeffffa9`:
- History inspection candidate
`d38e2ec61a933b1621895cc71c17ec366a8e99ce`, followed by common-time
correction `02090fe3515e324159225acab0130f4b82e444fb`.
- Alert retention candidate `7cbde2e3bf368e9ee36a34b4fc9dcf87d3089497`.
- Reviewed additive integrations
`0dc858cb366a394b159d2c911c5d85b3020e7881`,
`3e01f02cfca620bd0777db97257d52d63fc32ef7`,
`00f82e2afc3cd75035c997e9e245c6e0eeffffa9`, and upstream incorporation
`cf1e9b4ca3ea0c4277731a366d6fdd0daf8e24a8`.
All reviewed commit identities and ancestry are retained.

## Validation and limits
Recorded source proof `source-fcbetfv8` passes offline installation,
type-check, lint, 21,592 tests (three existing skips), build, bundle
budgets and formatting/header/duplication checks. Its final frontend
content matches the integrated tree. Chromium/Firefox desktop and
Chromium/WebKit phone proofs cover eight width/engine/theme cases with
16 screenshots recorded as inspected. Earlier keyboard/touch proof
`source-0cyn9bst` passed 21,567 tests; its behavior is included in the
later proof. Baseline `source-5g7tw1c0` records eight failures and two
passing controls before the pointer correction.

Alert proof `source-lh_dko1x` passes ten focused race repetitions, full
alerts/notifications/monitoring race suites, vet and affected builds;
baseline `source-rz64y65n` reproduces five callbacks where the corrected
behavior emits one. Final alert source matches the reviewed candidate.

Complete-range provenance, whitespace, canonical contract and
parent-bound browser receipt checks pass. Existing sufficient evidence
was reused, not repeated solely for batching. Proof Go was 1.26.7, not
the declared 1.26.8; matching toolchain preparation remains separate.
Required exact-head CI and independent review still govern landing.
Synthetic source/browser checks are not installed recovery, complete
reporter acceptance or release qualification. No release, tag or
deployment is changed here.


[How Pulse handles
triage](https://github.com/rcourtman/Pulse/blob/main/docs/AI_TRANSPARENCY.md)
2026-10-01 01:21:40 +00:00
pulse-triage[bot] 19fa6b1c8d Make TrueNAS diagnostics safe and distinguish missing telemetry
Replace token and API-key shell arguments with private header and payload files, verify the exact test/save recipes with synthetic credentials, and separate hardware capacity from actual usage and History. Bound local logs and keep sanitized evidence and trusted HTTPS as the troubleshooting path.

Contract-Neutral: Documentation and synthetic recipe checks only; no runtime, API, transport or metric contract changes.
Change-source: pulse-maintainer
2026-10-01 02:16:44 +01:00
pulse-triage[bot] e256e9fc50 Retain active alert acknowledgements through tracking cleanup
The hourly sweep pruned canonical acknowledgement records after 24 hours even while their incidents remained active. Preserve active tracking identities as the ordinary cleanup already does, so a short recovery and recurrence retain the operator decision. Keep inactive expiry, legacy timestamp fallback and explicit unacknowledgement unchanged. Validate manual and automatic acknowledgements through provider-native pool incident reconciliation, JSON and durable checkpoint restart, dispatch counters and retention bounds; update the alert contract in the same commit.

Change-source: pulse-maintainer
2026-10-01 02:14:32 +01:00
pulse-triage[bot] 00f82e2afc Integrate reviewed common-time History pointer inspection
Preserve the exact reviewed Web candidate and its browser receipts. Existing PBS History pointer readings now share one stored timestamp; absent sibling observations remain unavailable.

Change-source: pulse-maintainer
2026-10-01 02:01:05 +01:00
pulse-triage[bot] 3e01f02cfc Integrate reviewed observed-alert retention repair
Change-source: pulse-maintainer
2026-10-01 01:46:50 +01:00
pulse-triage[bot] 02090fe351 Keep drawer History pointer values at one observed time
Resolve pointer inspection against the group's actual stored timestamps. Missing series stay unavailable instead of borrowing neighbours or live readings, while keyboard focus, single samples and scoped refresh recovery remain intact. Add mounted regressions, the shared contract and exact-content browser receipts.

Change-source: pulse-maintainer
2026-10-01 01:38:17 +01:00
pulse-triage[bot] cf1e9b4ca3 Incorporate batch-start upstream publication
Change-source: pulse-maintainer
2026-10-01 01:37:30 +01:00
pulse-triage[bot] 7cbde2e3bf Keep observed unacknowledged alerts through retention cleanup
Age-based housekeeping deleted continuing conditions when automatic acknowledgement was disabled. Require last-observation inactivity as well as occurrence age, retain legacy timestamp fallback and inactive cleanup, and document the unchanged acknowledgement/recovery boundaries. Regression exercises cached, absent and failed Docker registry reports, callback/history identity and actual checkpoint restart.

Change-source: pulse-maintainer
2026-10-01 01:26:14 +01:00
pulse-triage[bot] 6f4e2f25c5 Reduce alert checkpoint churn and clarify ZFS monitoring (#2356)
## Changes and why
- Bound asynchronous active-alert checkpoints to one worker and one
requested follow-up during a burst. Current-state snapshots, immediate
lifecycle durability, failure recovery and the final shutdown save
remain intact. A blocked-writer fixture reproduced 512 workers for 512
requests before the repair; this removes that amplification without
claiming to resolve the installed CPU/write symptoms in #1966, #2112 or
#2113.
- Correct both ZFS help copies after discussion #2354 exposed a promise
of discovering every local pool. Explain the configured-Proxmox-storage
boundary, the host agent's mounted capacity view and the separate
unregistered-pool health-alert gap. The read-only guidance does not ask
users to alter their storage configuration.
- Permit a bounded, exact-source release-path watchdog check on demand,
retaining the scheduled no-publication/no-mutation envelope, rejecting
candidate/exception overrides and skipping candidate builds. This
addresses missing timely coverage after a prior watchdog ordering
failure; it does not publish a release.

## Included source
Complete range
`cfaad6b46d6c47ef9aed400cb57e1c5b54bd02f2..6fa78a01f813f373fda64922533f060963ff32fc`:
- Alert checkpoint candidate `5dea312f2b17323a25e616b81324855b4ca939da`.
- ZFS guidance candidate `cf8a3f9a6cca47509efc10df62ba24bb00f9aa09`.
- Watchdog candidate `40037f003581f8f553bb41de313c927256a0d3c2` through
`2043f3dd767d3f0970e4008a4d9067c5f7327c32`.
The additive integrations preserve every reviewed commit and include
upstream History publication `cfaad6b46d6c47ef9aed400cb57e1c5b54bd02f2`
without rewriting it.

## Validation and limits
- `source-gdu65a_x`: 25 focused race repetitions, complete
alerts/config/eventlog/reducer/specs race suites and vet pass.
`source-ezs4tqqg` retains the original blocked-worker reproduction.
- `source-_7_yx4oh`: 112 release-control Python tests and selected Go
install checks pass, including actual workflow
admission/source-selection checks.
- `source-y0mu1jos` observes the existing ZFS limits and configured
controls; `source-s2wg_5ix` passes 26 docs/card tests.
- Publication provenance and complete-range whitespace checks pass.
Integrated executable/test files match the validated candidates; the
only later watchdog contract-doc change is an already-published updater
section. The two help copies match.

Sufficient candidate evidence is reused, not rerun merely for batching.
Exact-head CI and independent review still govern landing. These checks
do not establish installed alert/write recovery, complete PBS
acceptance, restored operational watchdog coverage or release
qualification.


[How Pulse handles
triage](https://github.com/rcourtman/Pulse/blob/main/docs/AI_TRANSPARENCY.md)
2026-10-01 00:25:26 +00:00
pulse-triage[bot] 0dc858cb36 Integrate reviewed keyboard and touch History inspection
Preserve exact reviewed candidate d38e2ec61a and retain both History and update-progress browser evidence. Only the shared receipt file needed resolution; frontend runtime content matches the candidate receipt.

Change-source: pulse-maintainer
2026-10-01 01:13:28 +01:00
pulse-triage[bot] 6fa78a01f8 Integrate reviewed ZFS monitoring guidance
Change-source: pulse-maintainer
2026-10-01 00:59:20 +01:00
pulse-triage[bot] 4824d1067e Integrate reviewed bounded alert checkpoint worker
Change-source: pulse-maintainer
2026-10-01 00:51:00 +01:00
pulse-triage[bot] 468efad034 Incorporate batch-start upstream History publication
Change-source: pulse-maintainer
2026-10-01 00:50:59 +01:00
pulse-triage[bot] cfaad6b46d Keep History charts usable when refreshes fail (#2355)
## What changed and why
History drawers now keep correctly attributed, previously loaded charts
visible when a refresh fails, show a clear warning, and offer a scoped
keyboard-safe retry. A background poll that supersedes a manual refresh
also settles its loading state, so the drawer does not remain stuck.

Inspection and regression-first tests found these recovery defects in
the existing History renderer. This improves the PBS/host History
experience associated with #1723 without borrowing points from another
host or time range, exposing private diagnostics, or bypassing license
limits. It does not claim complete resolution of the reported
PBS/VirtualBox estate outcomes.

## Included candidate and complete range
Starting reviewed range:
`f3c92a242ebf9b7062dfc9f6ff711a56639f536c..a81c5227a517fcbd4cccd1e3030a64b7cd864e2f`.
Final proposal range against current upstream:
`2dd77df0247bb54302da131d4e46256a7d4bb6ce..d80b49835cb8becf3cd151d8a4bad0869c6949cd`:
- Reviewed Web candidate `20260930T210243Z-web-product`, source
`744160fa0ebf599ebc36e82c9f12178947a533e6`.
- Additive integration `0d3e5a801ab8fd1c1d224ef561cbf99e169c589f` and
upstream integration `a81c5227a517fcbd4cccd1e3030a64b7cd864e2f`.
During publication, upstream advanced to
`2dd77df0247bb54302da131d4e46256a7d4bb6ce` (already-landed
update-progress repair #2347). The ancestry check refused the stale head
before push. Additive merge `d80b49835cb8becf3cd151d8a4bad0869c6949cd`
incorporates that exact upstream commit; its sole conflict was the
browser-receipt record. Both original parent-bound proofs are retained
without inventing new browser execution. The upstream update-progress
changes are already on main, not new product scope selected by this
proposal. All accepted identities and ancestry are preserved.

## Validation
The reviewed source's recorded offline proof `source-47j38yd_` passed
install, type-check, lint, 21,553 tests (three existing skips), embedded
build and bundle budgets. `source-iql94lcs` passed
formatting/header/duplication checks. Regression-first proofs recorded
seven initial failures and the superseding-read loading defect.

The production renderer/query browser proof covered desktop and phone
widths in light/dark themes with 12 screenshots recorded as inspected:
failed polling, held/repeated activation, recovery/focus, overlapping
reads, target withdrawal and license locks. Parent-bound content
comparisons and the final range browser guard confirm those proved
source files are unchanged. Earlier broader fixture/browser execution
failures remain limits, not successful installed evidence.

Because upstream changed the dependency lock after the reviewed frontend
proof, publication ran an additional focused combined-source offline
proof, `source-hfmynznu`, at exact head
`a81c5227a517fcbd4cccd1e3030a64b7cd864e2f`: locked install, type-check,
39 History refresh/shared-query/dependency-security tests, embedded
build and bundle budgets all pass. Earlier upstream Build and Test run
`36786204046` passed; incoming #2347 also had passing
frontend/backend/security/governance/E2E/benchmark checks (provider-pair
Docker acceptance was skipped). Final merged-head proof
`source-gp1tz3hx` passed locked install, type-check and all 60 tests
across five History/query/security/update-progress/readiness files at
`d80b49835cb8becf3cd151d8a4bad0869c6949cd`. Provenance, canonical
completion, range browser verification and whitespace checks pass.

## Landing and release limits
Independent review and exact-head functional/security CI govern landing.
Source/browser fixtures are not installed PBS/VirtualBox acceptance or
real upgrade/rollback through Tailscale Serve. This later recovery
improvement is not an additional prerequisite for the instructed v6.4.6
repair quartet, does not replace an RC, and does not publish or qualify
a release. Existing owners retain those installed and release outcomes.


[How Pulse handles
triage](https://github.com/rcourtman/Pulse/blob/main/docs/AI_TRANSPARENCY.md)
2026-09-30 23:34:15 +00:00
pulse-triage[bot] 5dea312f2b Bound asynchronous alert checkpoints during bursts
Coalesce full active-alert snapshots into one worker and one requested follow-up instead of queueing a goroutine per mutation. Preserve immediate lifecycle durability, fresh snapshots, failure recovery and the final shutdown save; reproduce the old burst amplification and validate the new admission and persistence boundaries.

Change-source: pulse-maintainer
2026-10-01 00:28:53 +01:00
pulse-triage[bot] 9093cc881d Integrate reviewed exact-source release watchdog
Preserve the fixed no-publication envelope, component verdicts and reviewed Delivery commit identities.

Change-source: pulse-maintainer
2026-10-01 00:28:33 +01:00
pulse-triage[bot] d38e2ec61a Make drawer History inspectable by keyboard and touch
Expose existing stored history through labelled native observation controls and dated accessible descriptions. Keep missing samples distinct from live or neighbouring readings, preserve the selected timestamp through refreshes and reset selection at resource/range boundaries. Cover input state and real native browser interaction without changing collection or licence gates.

Change-source: pulse-maintainer
2026-10-01 00:28:29 +01:00
pulse-triage[bot] cf8a3f9a6c Clarify monitoring for unregistered Proxmox ZFS pools
Explain the configured-storage boundary, the existing agent capacity path and the separate pool-health gap. Keep data-only pools unchanged and put storage membership ahead of permission changes in troubleshooting.

Change-source: pulse-maintainer
2026-10-01 00:24:25 +01:00
pulse-triage[bot] d80b49835c Incorporate newly landed update-progress repair
Preserve accepted History recovery and current upstream ancestry after the publication boundary detected an upstream advance. Resolve the browser receipt collision by retaining both original parent-bound records without claiming new browser execution.

Change-source: pulse-maintainer
2026-10-01 00:11:24 +01:00
rcourtman 2dd77df024 Keep the update progress modal moving when the update stream goes quiet (#2347)
Updating through Tailscale Serve left the modal stuck on "Downloading
update... 10%" while the update finished in the background. The SSE
endpoint now sends status on connect, flushes each event, heartbeats
every 15s and disables proxy buffering. The modal falls back to polling
when the stream goes quiet, only enters the restart phase on real
restart evidence, and never auto-reloads on unconfirmed completion
without a pre-update version baseline. Planned for v6.4.6.
2026-10-01 00:09:17 +01:00