Commit Graph

11965 Commits

Author SHA1 Message Date
pulse-triage[bot] 3d77bb5b3c Keep physical disk rows current across live snapshots
The keyed platform renderer preserves row owners, but the disk table captured mount-time presentation. Derive current health, readings, placement and target bindings reactively without discarding focus or expanded detail. Cover snapshot replacement, in-place updates, missing evidence and attention-filter recovery; record desktop and phone browser acceptance.

Change-source: pulse-maintainer
2026-10-02 11:17:00 +01:00
pulse-triage[bot] 33d6d729c1 Integrate reviewed Apprise diagnostic confidentiality repair
Change-source: pulse-maintainer
2026-10-02 10:57:53 +01:00
pulse-triage[bot] 1adc8abc42 Reconcile recorded upstream frontier with reviewed local integrations
Change-source: pulse-maintainer
2026-10-02 10:49:49 +01:00
pulse-triage[bot] 5635f74043 Integrate reviewed getting-started safety and retirement guidance
Change-source: pulse-maintainer
2026-10-02 10:48:57 +01:00
pulse-triage[bot] b16e37820a Align API governance fixture with Apprise confidentiality coverage
Keep the exact backend-payload verification expectation aligned with the added alerting notification tests. Preserve every existing required path, policy and runtime blob; source-3jslpxf8 retained the prior one-of-170 assertion failure.

Change-source: pulse-maintainer
2026-10-02 10:29:18 +01:00
pulse-triage[bot] 2e331d594d Correct Apprise confidentiality queue and API fixtures
Handle nullable retry-row diagnostics while checking the actual attempt audit and DLQ error; verify omitted stored API keys through the established redacted response type and preserve authorised endpoint/target round-trips. Retain the original diagnostic repair and its adverse proof.

Change-source: pulse-maintainer
2026-10-02 10:17:49 +01:00
pulse-triage[bot] 1ce98f2693 Keep Apprise credentials and private payloads out of diagnostics
Suppress raw CLI targets/output, HTTP response bodies and credential-bearing endpoint paths across firing, recovery, tests, queue audits and settings logs. Preserve exact delivery inputs, typed causes and retry classification; retain structured status, counts and safe validation reasons.

Contract-Neutral: Shared agent-lifecycle and storage-recovery references are unchanged; this diagnostic repair alters no agent or storage behaviour, API schema, destination admission or delivery policy.
Change-source: pulse-maintainer
2026-10-02 03:34:36 +01:00
pulse-triage[bot] b433165658 Restore TrueNAS CORE metrics and keep queued alerts within quiet hours (#2379)
## Additional repair in this publication

Restore native TrueNAS CORE monitoring for #2077 across CPU, memory,
measured temperature, device-bound network/disk I/O, and History. Native
RRD rows use external timing and legends rather than embedded
timestamps; empty/null buckets remain distinct from measured zero. CPU
states are normalized, ARC stays aligned with free RAM, stale readings
are not presented as current, graph selection/splitting is bounded, and
absent device graphs cannot produce misleading partial host totals.
Measured temperature also reaches the existing local and persistent
Thermals paths.

The complete publication range is now
`4317db177e341a0ca52b649c258ac43bc0135d0b..b32a4369e7f55c39a4baed0f122336384185618d`.
It preserves every commit in the preceding proposal and adds native CORE
candidate commits `b50313c59998d0e1506ab5ca42730bbb2e386dcd`,
`c78840e3717b7dd3794ed401529e5f4bdcab2e50`,
`bab5cf77d60f5252311bad05f28aecb4d76f1de1`,
`579eee290759f5518f6ef16d0b9189a2dec7d856`, and
`45eec9a20eac55a356acfb1c17833cd6c8d067ad`, integrated by
`b32a4369e7f55c39a4baed0f122336384185618d`.

The previous head completed its checks. Governance run `36949586647`
failed the remaining subsystem-lookup list assertion, while its reported
build/test, frontend, eight E2E shards/verdict, boundary, docs, security
and benchmark checks succeeded. Additive
`50c24260cab18db1609be0bb1ea91d89c6c99f70` aligns that assertion with
the existing startup verification, without removing coverage. Because a
corrected head is necessary, the independently reviewed CORE repair is
included now; this does not interrupt a still-checking head.

Recorded CORE validation: `source-7of9at5x` passes full TrueNAS
correctness/races/vet and connected monitoring controls; every TrueNAS
blob is unchanged here. `source-6mf6bu65` reproduces the predetermined
parent thermal-write fault and passes final connected/writer
correctness/races/vet, including local/persistent History and the
local-window fast path. `source-d3jaf8_z` passes real embedded frontend
and server/agent builds using verified matching dependency inputs. The
integrated CORE/monitoring/registry source exactly matches that proved
candidate. Earlier ARC/cancellation failures were corrected, not
dismissed. `source-woncpjdu` remains overall failed after 44 frontend
cases/typecheck/assets passed, because it selected the wrong module's Go
cache; it is not a full pass. Native appliance/browser/containing-stable
acceptance remains separate, with compatible next-patch placement owned
rather than adding this work to the frozen v6.4.6 quartet.

Publication provenance passes; both available upstream tips match the
inventory and are retained ancestors. Current-workspace
registry/contract and per-commit completion guards pass. The gate's
confined native-Git executor passes all 163 subsystem lookup fixtures,
including the previously failed assertion. Earlier proposal evidence
remains applicable to its unchanged scope, as retained here:

## What changed and why

Queued alert notifications recheck the current quiet-hours schedule when
they become due, including continuous schedules and late replay. Held
items do not consume a provider attempt; mixed batches deliver only
eligible alerts, preserving destinations, retry budgets,
acknowledgements, cancellation and recovery. Startup binds saved policy
before persisted work starts. Schedule edits do not accelerate
already-future deadlines.

Agent troubleshooting distinguishes permission from an admitted,
connected command channel, addressing the confusion in discussion #2333.
Notification troubleshooting distinguishes a direct test from real alert
delivery, explains retained-failure recovery and duplicate-retry risks,
and replaces an unbounded email pipe that masked reader failures with
bounded local readers. Both Docker streams and exit status matter; raw
provider bodies may expose private information. Source guides and
shipped mirrors agree.

## Complete range and proposal repair

Published main base `4317db177e341a0ca52b649c258ac43bc0135d0b` through
proposal tip `57cd5171c234c5f9626625e2bc0b237de6b4c277`:

- Quiet-hours runtime/tests/contracts
`5213b794b2856fe260ccb3fade0af29efddeda44`, registry-order correction
`c3f627d0d68811cbcc0d7466e0376e83679a0658`, integration
`defaa2344de20d51a681f76b9cf7a57fd215ba7d`.
- Agent-channel guide `c08583dd54a8462566ad34094fcc7e8f577bf854`,
integration `fc4deb6c177183a06f201794a4fd90735ab9fd06`.
- Notification guide/tests `76e1aea061bb60d0922e27fb799a79198bd8de07`.
- Additive governance fixture corrections
`96986379d1d88d81ea56dc872ba3183b11e35419` and
`57cd5171c234c5f9626625e2bc0b237de6b4c277`.

The preceding proposal finished CI: governance run `36940673378` failed
two fixture expectations after the reviewed startup test was added to
the verification registry. The correction aligns all three affected
exact-list expectations, without changing policy, coverage or runtime.
Every previously reviewed identity and author is unchanged. All sixteen
files in the earlier proposal still match it exactly. The newer
independent guide is included now because a corrective proposal head is
needed, not merely to restart an already-running batch.

## Validation

- Recorded `source-5mneylzw` reproduced predetermined predecessor faults
and passed final affected alerts/notifications correctness/races,
bootstrap races, vet and package builds. `source-fmtyrqhz` passed
final-tip equivalence and focused replay/startup races.
- Recorded agent-guide controls and thirteen recipe tests passed in
`source-5y8u5a2z`; `source-059hcqfl` passed 25 documentation/mirror
cases. These are not native appliance recovery.
- This gate's confined native-Git fixture executor passed all 132
governance fixture tests and all 38
notification/request-log/mirror/agent-troubleshooting cases. The first
partial governance correction still failed the later monitoring
assertion; that failed attempt is retained, followed by the complete
correction and pass.
- Public-doc checker passed for 211 Markdown files. Publication
provenance, whitespace, each source commit's completion guard, registry
audit and contract audit passed. Browser guard explicitly skipped: no
user-visible frontend source changed.
- Earlier `source-t_33yywy` had 97 passes and an unchanged agent-profile
timeout; later omitted-check clients did not execute during gateway
restart. Relevant changed-guide checks are now complete; the unrelated
token-profile timeout and frontend-only self-chosen proof remain
separate follow-through, not full-suite passes.
- Optional `source-44iq3ddd` whole-profile VM audit remains failed on
unavailable repository identity/wider layout. Actual-workspace audits
pass, but do not change that receipt. Recorded Go proofs used 1.26.7,
not the declared 1.26.8 environment; no full application build is
claimed.

Exact-head CI must pass before landing. Natural schedule/day/DST,
destination/recipient and installed command-channel acceptance remain
separate. This neither changes the frozen v6.4.6 quartet nor approves
any release; compatible quiet-hours next-patch placement stays owned
separately.


[How Pulse handles
triage](https://github.com/rcourtman/Pulse/blob/main/docs/AI_TRANSPARENCY.md)
2026-10-02 02:31:40 +00:00
pulse-triage[bot] bbd7f62eed Integrate reviewed fresh-receipt checks for copied agent setup commands
Change-source: pulse-maintainer
2026-10-02 03:21:19 +01:00
pulse-triage[bot] 5ad50ea7d4 Keep shipped getting-started translations in sync
Include both localized documentation mirrors in the same getting-started maintenance candidate. The full mirror check exposed their missing updates after the first source commit; retain that failed check and keep all 62 shipped documents byte-identical to their canonical sources.

Contract-Neutral: Static documentation mirrors only; no runtime, entitlement, release-selection or subsystem contract delta.
Change-source: pulse-maintainer
2026-10-02 03:09:51 +01:00
pulse-triage[bot] 98e489729a Require fresh receipts for copied agent setup commands
A skipped profile could reuse an earlier installer receipt and falsely pass the guide's regression check. Clear each recipe's receipt, require its own invocation, and exercise successful no-op and nonzero controls without changing the existing ten-second bound. Apply the same isolation to retarget and cleanup recipes.

Change-source: pulse-maintainer
2026-10-02 03:00:24 +01:00
pulse-triage[bot] b32a4369e7 Integrate reviewed native TrueNAS CORE telemetry and History repair
Change-source: pulse-maintainer
2026-10-02 02:56:46 +01:00
pulse-triage[bot] 439604c0bd Make getting-started installs fail closed and plans current
Chain signed installer downloads, verification and execution in the English, German and Spanish landing pages so a failed trust step cannot run stale or unverified bytes. Keep the pinned signer, namespace and release URLs, preserve real installer exits, and correct the existing plan and paired-app retirement guidance. Exercise the copyable Bash gate with offline command stubs and run those documentation regressions in Public docs CI.

Contract-Neutral: Public documentation and its secret-free CI validation only; no runtime, entitlement, release-selection or subsystem contract delta.
Change-source: pulse-maintainer
2026-10-02 02:53:31 +01:00
pulse-triage[bot] 50c24260ca Align subsystem lookup fixture with notification startup verification
Completed PR #2379 governance run 36949586647 reached a later subsystem lookup assertion that also omitted the reviewed startup test. Preserve registry coverage and update the remaining stale expectation additively; no runtime or permission change.

Change-source: pulse-maintainer
2026-10-02 02:21:31 +01:00
pulse-triage[bot] 45eec9a20e Keep native TrueNAS Thermals in local and persisted host History
Finish the connected #2077 outcome: persist an observed TrueNAS host temperature through the existing canonical writer, so local chart coverage cannot suppress the Thermals panel. Extend the pinned REST-to-chart control to cover the write, persistent readback and full local-window fast path; preserve source and absence gates.

Change-source: pulse-maintainer
Contract-Neutral: Restores existing TrueNAS Thermals history through its canonical writer; no agent lifecycle, schema, route, resource identity or alert-policy delta.
2026-10-02 02:09:48 +01:00
pulse-triage[bot] 57cd5171c2 Include startup coverage in the monitoring fixture expectation
The first correction exposed the later monitoring-specific assertion in the same test. Align that exact list too, without changing policy or coverage. All 132 governance fixture tests now pass under the confined native-Git fixture executor.

Change-source: pulse-maintainer
2026-10-02 02:04:01 +01:00
pulse-triage[bot] 96986379d1 Keep governance fixtures aligned with notification startup coverage
PR #2379 governance run 36940673378 failed two exact verification-file assertions after the reviewed startup test was added to the registry. Retain the declared coverage and update both fixture expectations; runtime and accepted commit identities remain unchanged.

Change-source: pulse-maintainer
2026-10-02 02:03:18 +01:00
pulse-triage[bot] 579eee2907 Preserve independent ARC and stop cancelled CORE reporting before I/O
Complete the native CORE #2077 repair after its whole-suite adverse result: retain ARC without inventing free RAM, enforce live-window freshness even with coarse RRD steps, and assert bounded graph splitting including CPU temperature. Keep empty/zero, aligned ARC and transport boundaries intact.

Change-source: pulse-maintainer
2026-10-02 01:49:25 +01:00
pulse-triage[bot] bab5cf77d6 Prove native CORE catalogue overflow fails without partial totals
Exercise the unique-device selection ceiling separately from deduplication, and keep the graph-isolation account aligned with catalogue-selected requests. No runtime logic or public contract shape is changed.

Change-source: pulse-maintainer
2026-10-02 00:48:46 +01:00
pulse-triage[bot] c78840e371 Classify the native CORE reporting fixture for canonical verification
Bind the anonymised JSON regression input to the existing TrueNAS runtime proof policy. The repair restores existing canonical behavior and has no public contract shape change; its source, tests and substantive monitoring account remain in the preceding commit.

Change-source: pulse-maintainer
2026-10-02 00:32:55 +01:00
pulse-triage[bot] b50313c599 Decode native CORE reporting rows across live metrics and History
Use external RRD timing, native legends, scoped device graphs and measured CPU temperature for issue #2077. Keep absent, empty and zero buckets distinct, normalize CORE CPU states and preserve ARC alignment, safe transport failures and canonical projection. Add native-shape and end-to-end monitoring controls without changing release selection.

Change-source: pulse-maintainer
Contract-Neutral: Restores existing canonical metrics and temperature behaviour for CORE input formats; no public schema, route, resource identity or alert-policy delta.
2026-10-02 00:32:32 +01:00
pulse-triage[bot] 76e1aea061 Make notification troubleshooting bounded and delivery-aware
Use the existing delivery activity and failure classes before collecting raw logs. Keep both Docker streams and log-reader exits visible, warn about provider echoes and duplicate retries, and distinguish test success from real alert delivery. Exercise the copied bounded recipes and their unsafe predecessor with synthetic readers.

Change-source: pulse-maintainer
2026-10-02 00:28:59 +01:00
pulse-triage[bot] fc4deb6c17 Integrate reviewed command-channel troubleshooting guidance
Preserve the exact product-intelligence candidate and clarify execution scope versus live channel admission without changing runtime behaviour.

Change-source: pulse-maintainer
2026-10-02 00:00:47 +01:00
pulse-triage[bot] defaa2344d Integrate reviewed queued quiet-hours policy repair
Change-source: pulse-maintainer
2026-10-01 23:54:31 +01:00
pulse-triage[bot] 4317db177e Keep quiet hours correct across clock changes and clarify TrueNAS diagnostics (#2377)
## What changed and why

- Quiet-hours alert schedules now follow the configured local clock
through repeated and skipped daylight-saving minutes. Previously,
constructing start/end timestamps could release alerts during a repeated
quiet hour or keep them held after a skipped end. Initial replay uses
the next eligible real minute, without changing selected calendar days
or critical-alert exceptions. Full-day replay and later queued-policy
revalidation remain unchanged.
- The TrueNAS CORE guide now explains how to find an incoming graph
response rather than its outgoing request, including Firefox message
filters, matching request IDs, and CPU usage versus temperature. This
addresses the diagnostic obstacle reported in #2077. Canonical and
shipped guides remain identical; sharing stays limited to sanitized
response details, not credentials or full captures. This is guidance,
not a claim that the appliance's missing readings are fixed.

## Included source

Complete unpublished range:
`6448ea3816e40f79fa89ae6b6d0f16508ac71f8b..680ac756e6320e2e79a72459d1caa35a611bafe7`.

- Reviewed quiet-hours candidate
`0834ec0e1422fe47ca3d0629bb83222f50202656`: runtime
`cecbd5418bb2d33c58d6223ca21b860e5a4018bd`, test alignment
`89a0896959b0aec441e5950e3d2e2adab07a6100`, and verification-registry
ordering correction `0834ec0e1422fe47ca3d0629bb83222f50202656`.
- Reviewed guide candidate `36066f04069c74c698910681d39ceb41579a23e5`.
- Integration merges `452ca8ed10f7e81e440c0b63b7a76f29b5ff1c3c` and
`680ac756e6320e2e79a72459d1caa35a611bafe7` preserve those identities and
ancestry.

## Validation

- Recorded quiet-hours source proof `source-4dcf07qu`: predetermined
parent failures, six final regression groups/32 subcases, complete
alerts/notifications correctness and race checks across six packages,
affected vet and package builds. Go 1.26.7 was observed; this is not a
whole-application build or installed notification receipt.
- Recorded guide proofs `source-4dykigld` and `source-etia09y0`: five
recipe cases with parent controls and 53 Docs cases. Final candidate
bytes remain unchanged by the integrations.
- Publication-range provenance, per-commit canonical guards, aggregate
contract/registry audits and whitespace checks pass. Browser guard
explicitly skips unchanged frontend runtime source.
- The lightweight guide fixture attempt hit its confinement's
localhost-listener restriction, not a guide assertion failure; its
result is retained separately.

An additional aggregate guide check was requested in the source VM but
is still queued for executor capacity at proposal time, with no executed
result. It is not counted as a pass; the unchanged guide bytes retain
their completed exact-candidate proofs.

Exact-head GitHub checks remain required for landing. Source publication
does not select a release or establish installed delivery.


[How Pulse handles
triage](https://github.com/rcourtman/Pulse/blob/main/docs/AI_TRANSPARENCY.md)
2026-10-01 22:37:09 +00:00
pulse-triage[bot] c08583dd54 Distinguish command permission from a connected agent channel
The LXC discovery report reached command-capable credentials but could not distinguish them from live command-channel admission. Explain the blocked state, keep successful guest checks, and provide a bounded local journal check without credential resets, broader permissions or full-log disclosure. Bind the guidance and command syntax to the existing service events.

Change-source: pulse-maintainer
2026-10-01 23:25:48 +01:00
pulse-triage[bot] c3f627d0d6 Keep monitor bootstrap verification in canonical order
Move the quiet-hours startup regression beside the other monitor proof files without changing any runtime, test or contract content. This corrects the registry audit's lexical ordering error.

Change-source: pulse-maintainer
2026-10-01 23:10:43 +01:00
pulse-triage[bot] 5213b794b2 Revalidate queued alert delivery against current quiet hours
Keep continuous and late replay held without spending a provider attempt. Split mixed batches atomically so eligible alerts retain admitted destinations, occurrence links and retry budgets, and bind saved monitor policy before activating persisted work. Add local receipt, cancellation, rollback, reconstruction and race regression coverage with the owning contracts and verification routes.

Change-source: pulse-maintainer
2026-10-01 23:05:07 +01:00
pulse-triage[bot] 680ac756e6 Integrate reviewed CORE response guidance
Change-source: pulse-maintainer
2026-10-01 22:23:21 +01:00
pulse-triage[bot] 452ca8ed10 Integrate reviewed local-clock quiet-hours repair
Change-source: pulse-maintainer
2026-10-01 22:23:20 +01:00
pulse-triage[bot] 0834ec0e14 Keep quiet-hours verification paths in canonical order
Repair the deterministic registry audit rejection by moving the dedicated quiet-hours test into its lexicographic position and matching the existing indentation. Preserve all verification entries, path policies and runtime bytes.

Change-source: pulse-maintainer
2026-10-01 21:54:09 +01:00
pulse-triage[bot] 36066f0406 Explain how to find CORE graph responses without exposing a capture
The CORE reporter could find requests but not the matching replies. Clarify Firefox message filtering, per-request IDs, CPU versus temperature and bounded response sharing in the canonical and shipped guide; keep secrets and full captures out of diagnostics. Add guidance regression coverage while preserving the existing authenticated connection recipes.

Change-source: pulse-maintainer
2026-10-01 21:32:16 +01:00
pulse-triage[bot] 6448ea3816 Keep healthy RAID spares from triggering critical alerts and preserve audit recovery evidence (#2373)
## What changed and why

A healthy MD RAID array with four required members and one hot spare
could be reported as critically degraded (#2369). Preserve the
required-member count through collection, ingestion and readback,
distinguish it from spare-inclusive totals, and retain critical alerts
for genuine member loss. Explicit zero-active observations, recovery and
maintenance states remain meaningful; this is not blanket spare
subtraction or alert suppression.

Audit help also contained unsafe advice to regenerate or replace a live
signing key and treated failed verification as proof of tampering. The
canonical and shipped guides now distinguish failed, unsigned,
unavailable and unchecked results; preserve history and both matching
keys; describe isolated recovery; and correct default audit-store paths.
Regression tests exercise those distinctions with the actual signer and
encryption manager on synthetic temporary data.

## Included source

Complete main range:
**d69d6d0555405342f24655a1a31e52641fc92f7c..db35048acac1484687b8969c0e52aa738eb48756**
(37 files, four commits).

- RAID candidate **14d3dc3b6cf95d2fd5dd13fd74687be19c85ba6a**,
integrated by **efb6fb742b20b04f720836c97d86b8bc9753e880**.
- Audit-help candidate **86c707da355ca079fdff64f618296451edd3e8d0**,
integrated by **db35048acac1484687b8969c0e52aa738eb48756**.

Both reviewed identities and their ancestry are preserved. All 37
candidate-changed files retain their exact reviewed final blobs; the
changes have no overlapping source files. Current remote main matches
the range base.

## Validation and limits

Existing complementary source proofs were retained rather than repeating
passing suites:

- RAID: `source-wk_9oecb` reproduces both predecessor faults.
`source-shmp0enb` passes 66 focused checks, complete correctness in 12
affected packages, races in 11 packages plus affected monitoring races,
and vet. Its overall exit 1 is retained: a missing frontend cache
package prevented later build stages. Same-tip `source-tq3sevgc` (exit
0) completes real frontend/embed generation, synchronization and `go
build ./...` using a hash/manifest-bound matching dependency export. Its
output retains the reported line-bound flag and existing warnings.
- Audit help: `source-ozlyqc41` (exit 0) passes 51 Docs/renderer/link
cases. `source-62ok17li` (exit 0) passes 20 security/admin/setup recipe
cases, public-doc/mirror checks and 18 signer/key tests plus 32 subcases
under race, including six recovery controls. Initial `source-7j2yfjg8`
exit 1 from three Python import errors remains adverse evidence; the
corrected proof covered skipped work, not a passing-suite replay.
- Publication checks pass: provenance, aggregate canonical completion,
whitespace, clean source, retained ancestry and exact candidate-blob
comparisons. Browser range validation correctly skips unchanged frontend
runtime source.

Recorded source compiler is Go 1.26.7, not the declared 1.26.8; that
toolchain discrepancy remains owned follow-through. Required exact-head
CI and independent source review still govern landing. Native
reporter-array behavior, visual audit-help acceptance, containing
release qualification and installed recovery remain distinct outcomes.
No release or customer-resolution claim is made here.


[How Pulse handles
triage](https://github.com/rcourtman/Pulse/blob/main/docs/AI_TRANSPARENCY.md)
2026-10-01 20:17:57 +00:00
pulse-triage[bot] 89a0896959 Match quiet-hours diagnosis regression to its category reason
Keep the new clock/dispatch proof aligned with the unchanged quiet_hours:non-critical diagnosis contract; no production or schedule policy changes.

Change-source: pulse-maintainer
2026-10-01 21:14:07 +01:00
pulse-triage[bot] cecbd5418b Respect local clocks through alert quiet-hours changes
Compare scheduled civil minutes on each selected day so repeated or missing DST minutes cannot shift suppression. Calculate non-full-day replay from real clock boundaries and keep location fallback read-only for concurrent policy consumers. Retain category controls and the existing full-day replay boundary; pin the civil-time contract and dedicated regression proof.

Change-source: pulse-maintainer
2026-10-01 21:11:11 +01:00
pulse-triage[bot] db35048aca Integrate reviewed audit recovery guidance repair
Preserve the exact reviewed specialist commit and its documentation and signer controls alongside the current canonical frontier.

Change-source: pulse-maintainer
2026-10-01 20:42:05 +01:00
pulse-triage[bot] efb6fb742b Integrate reviewed RAID spare-count repair
Preserve exact Core candidate identity for issue #2369, its required-member provenance and genuine-deficit controls. Retain source proof limitations and the owned compatible patch route; no frontend content changes.

Change-source: pulse-maintainer
2026-10-01 20:36:29 +01:00
pulse-triage[bot] d69d6d0555 Keep update alerts steady and make setup and troubleshooting clearer (#2368)
## What changed and why

Make existing monitoring, setup and help more reliable without adding a
new product surface:

- Reduce connected-dashboard allocation overhead reported in #2199,
preserving identities, grouping, ordering, alerting and freshness.
Synthetic complete-broadcast measurements show about 77% fewer
allocation bytes, not verified fleet CPU relief.
- Keep credentials out of copied container, security, Kubernetes,
metrics and Unix lifecycle commands. Preserve identity, scoped issuance,
TLS/custom CA checks and private-file cleanup. OpenShift assertions now
match that private-token setup.
- Preserve unattended-update consent during manual version changes.
Correct listener-owned health and durable telemetry-preference
transitions from #2351.
- Align FAQ/plan guidance with Mobile's 31 March 2027 retirement and
continuing Relay subscribers' Pro entitlements at their existing price.
- Keep an asserted Docker update incident's age, acknowledgement and
dispatch identity through restart/cleanup rather than spuriously
resolving or reopening it (#2353 follow-through). Explicit recovery,
fresh delays and host isolation remain intact.
- Stop demo diagnostics at failed tailnet readiness without exposing
network topology; make Docker troubleshooting account-specific and
bounded.
- Make request-log troubleshooting find both service JSON and console
logs, include Docker stderr, bound collection and distinguish failed
readers/no matches. Canonical and shipped help match.
- Restore column-header associations in sanitized Docs tables. Clarify
private-file and uninstall instructions using complete sentences without
changing commands or credential handling.

## Included source

Complete unpublished `pulse` range
**4eeb297ca6cac83723928ddea4cef1e8bc81e711..f99803f46db7a5ba308cd8beefa46690e89772cd**:
39 commits including additive integrations. All reviewed authors, commit
identities and ancestry are retained; no accepted history was rewritten.

Previously proposed candidates remain: container/private input
`413d5ae7`/`166f6d8a`, security `603d4cad`, broadcast `c0525852`
(including `db9e0896`, `4b01e25c`, `36200e07`), consent `eb7e7013`,
setup/metrics `04429cb4`, Unix lifecycle `bd973b66` (including
`b21f086e`, `b66e774f`), health/preferences `33345f29` composed at
`291cb526`, retirement `4f6a71d6`/`13c18121`, OpenShift assertions
`052cd4fc`, Docker help `14c48992`, and formatting `deeded9fd`.

Newly included range
**deeded9fd19d2df644c0252e1ef637e165de7b4d..f99803f46db7a5ba308cd8beefa46690e89772cd**:
- Demo readiness: `bb1903e48d6b3a02a3b77f8f956e5d19e77dc59a`, integrated
at `53e69c06fe24e3c07deaddb5e40418d07bb0b34b`.
- Docker alert lifecycle: `ed8415ea6a0fad4c7d3de5434d45259f13017198` and
`1f4f3a09578db0ab5df10a0b6e8588958f0b8377`, composed at
`2ae06bb2f34993a5355809329e4b1421e7023a28`.
- Request-log help: `b04d892670a6acb1b499010df845f8099111dac1`,
integrated at `9a1c063f6d3ea645073a24ab2af9f4632fff4f89`.
- Copy repair `1a0cd7c9d5aa02de754535a293dc0cacd4ef6fa0` and Docs
accessibility `04d12bc16e2f8b48663350052ca2103aca2567f4`, integrated at
the proposal tip.

## Why this proposal advances

The former head `deeded9fd19d2df644c0252e1ef637e165de7b4d` finished CI.
Build and Test run **36897420485**, Frontend job **110488099386**, fails
copy lint on two semicolons in Agent Doctor/private-file guidance.
Audit, formatting and ESLint passed; all other reported checks succeeded
except the expected skipped provider-pair job. This is a deterministic
source defect, not grounds for retrying unchanged source. The reviewed
copy repair fixes both violations. Since a changed head is necessary,
this batch includes the independently reviewed, sufficiently proved
additions. Old-head checks are not new-head passes.

## Validation

Retain sufficient affected-source evidence rather than replaying full
suites merely for batching:
- Original range: full installer/configapi/agenttokens and affected API
races, server/telemetry/settings races, vet/build/platform targets,
executable docs and real handlers, full
frontend/type-check/build/budgets, inspected Chromium/WebKit UI
evidence, broadcast differential/fuzz/race and complete-path benchmark
samples. Recorded receipts include `source-6cv9mmfa`, `source-nyxxjp5o`,
`source-e3ijjtvg`, `source-lmrlrgjr`, `source-ta46f06x`,
`source-lg3jcno_`, `source-ybni7b9r`, `source-hzqs2s0r`,
`source-dxhj1_cc` and `source-v2u1in9h`.
- Demo readiness: `source-un1o0e8h`, 20 synthetic cases; subsequent
complete installtests/vet and helper syntax proof. This is not installed
demo connectivity evidence.
- Docker lifecycle: `source-h02hte90` reproduces eight parent failures
and passes all eight final durable/JSON × 24/48-hour ×
acknowledged/unacknowledged cases, complete alerts correctness/races and
vet. Overall exit 1 is retained because the subsequent root build lacked
generated embed assets. Same-tip `source-7abp064o` builds real frontend
assets, checks embed synchronization and passes `go build ./...` (exit
0); no alert-suite replay or stub assets.
- Request-log help: exact `b04d8926` receipts `source-hniado6f` (26
documentation/recipe cases) and `source-bgvi_vds` (51 Docs/renderer/link
cases), including JSON/console/reader-failure negative controls.
- Docs/copy: exact `04d12bc1` `source-xjj4cat3` passes **21,657 tests,
three skips**, whole-tree formatting, full lint/header/duplication
pipeline, type-check, production build and budgets. `source-7pu96n5j`
passes complete installtests. Two failing parent controls become 28
passing Docs cases. Reviewed Chromium/light and phone WebKit/dark
evidence covers all eight columnheaders, table scrolling/containment and
actual copied private-file/removal commands; eight screenshots inspected
by the source owner.

At the publication gate: provenance, clean-tree, whitespace and ancestry
checks pass. All **24 non-merge unpublished commits** pass canonical
completion guards using only their recorded Contract-Neutral reasons
where applicable. The final-content browser range guard covers all seven
changed frontend source files. Byte comparison confirms Docs/copy
runtime, alert runtime/tests, request-log mirrors and demo helper/tests
exactly match their reviewed/proved candidates; additions do not replace
one another's runtime source. GitHub main remains the recorded base, so
no upstream merge is required.

Retained limits: older full-API offline timeout/route and
proof-reporting limits are not erased. Actual local Go compiler is
1.26.7 versus declared 1.26.8. PI's optional Markdown browser attempt
was unavailable, not passed; Web's separate actual Docs/copy browser
proof remains valid. Native Windows/appliance acceptance, natural daily
registry/recipient delivery, fleet CPU relief, installed recovery and
Tailscale Serve/browser/SSE update acceptance remain separate owned
outcomes.

Required exact-head CI and independent source review govern landing.
This proposal does not establish release qualification or customer
resolution and does not enlarge the separately owned v6.4.6 quartet.


[How Pulse handles
triage](https://github.com/rcourtman/Pulse/blob/main/docs/AI_TRANSPARENCY.md)
2026-10-01 19:24:38 +00:00
pulse-triage[bot] 86c707da35 Preserve audit evidence in verification and recovery guidance
Distinguish failed verification from a tampering diagnosis, unsigned history, query errors and runtime gates. Remove live-key replacement and regeneration advice, correct default store paths, and preserve matching keys and history for isolated recovery. Bind the shipped guides to regression checks and exercise recovery distinctions with the real signer and encryption manager on synthetic temporary data.

Contract-Neutral: Audit documentation and synthetic regression controls only; no signing, storage, entitlement, API or frontend runtime behaviour changes.
Change-source: pulse-maintainer
2026-10-01 20:08:53 +01:00
pulse-triage[bot] f99803f46d Integrate reviewed Docs accessibility and guidance repair
Change-source: pulse-maintainer
2026-10-01 20:00:13 +01:00
pulse-triage[bot] 14d3dc3b6c Fix MD RAID spare counts without hiding member failures
Retain configured RAID members separately from source-native totals through collection, reports and canonical read views. Correct the healthy legacy mdadm tuple from #2369 without subtracting spares from mdstat requirements or suppressing real deficits, failures and recovery warnings. Preserve observed zero-active counts through fallback, and verify collector, wire, ingestion, health and canonical activation/resolution boundaries.

Change-source: pulse-maintainer
2026-10-01 19:56:47 +01:00
pulse-triage[bot] 9a1c063f6d Integrate reviewed request-log troubleshooting repair
Preserve the exact specialist commit and existing Docker alert lifecycle repair; improve bounded JSON/console log correlation and safe evidence guidance.

Change-source: pulse-maintainer
2026-10-01 19:52:09 +01:00
pulse-triage[bot] 04d12bc16e Restore semantic column headers in shipped documentation tables
Extract the Windows-independent Docs repair from candidate 136d039de4a1f8f7debfb1f82d4fffd8bf610083. Add trusted scope after sanitization without expanding document-controlled attributes. Preserve table-local scrolling and verify the current eight-header plans table in desktop Chromium and phone WebKit; native Windows work remains separate.

Change-source: pulse-maintainer
2026-10-01 19:27:17 +01:00
pulse-triage[bot] 1a0cd7c9d5 Keep private-file and uninstall guidance clear through copy lint
Split two existing instructions into plain sentences without changing private-token handling, host-local removal or file ownership requirements. Verify the actual installer and removed-agent guidance and clipboard outputs in desktop Chromium and phone WebKit.

Contract-Neutral: Copy-only sentence changes preserve credential transport, installation and removal contracts.
Change-source: pulse-maintainer
2026-10-01 19:25:52 +01:00
pulse-triage[bot] b04d892670 Make request-log troubleshooting work with service JSON
Search the literal response request ID across JSON and console output, limit log collection, retain reader failures and distinguish missing logs from HTTP success. Explain safe browser evidence and default-level coverage without asking users to repeat a state-changing request. Execute the copied journal and Docker commands against bounded synthetic readers, including stderr, failures, no match and a console-only negative control.

Contract-Neutral: Documentation and executable recipe checks for existing request logging only; no API, authentication, runtime, schema or frontend behaviour changes.
Change-source: pulse-maintainer
2026-10-01 19:12:00 +01:00
pulse-triage[bot] 2ae06bb2f3 Compose retained Docker update restart repair for exact proof
Preserve assigned main maintenance while completing the retained alert lifecycle validation.

Change-source: pulse-maintainer
2026-10-01 18:26:13 +01:00
pulse-triage[bot] 53e69c06fe Integrate reviewed topology-free demo readiness diagnostics
Change-source: pulse-maintainer
2026-10-01 18:14:16 +01:00
pulse-triage[bot] deeded9fd1 Keep Unix credential-entry assertions formatted for CI
PR #2368 exact head ee2fb78d05 failed Frontend formatting in Build and Test run 36890020802. Apply Prettier line wrapping only; the assertion and reviewed runtime source are unchanged.

Contract-Neutral: Formatting-only test reconciliation; no runtime, documentation or contract change.
Change-source: pulse-maintainer
2026-10-01 18:05:15 +01:00
pulse-triage[bot] bb1903e48d Stop demo diagnostics at failed tailnet readiness
Failed setup now yields local-only, topology-free diagnostics. Require recognised Running state and successful tailnet ping before TCP, retain probe exits without raw private output or fallback probes, and exercise twenty synthetic readiness/privacy cases. Parent controls expose false success and private output on both channels. Keep workflow identities, secrets, action pins, mutation gates and release scope unchanged.

Change-source: pulse-maintainer
2026-10-01 17:36:26 +01:00
pulse-triage[bot] 1f4f3a0957 Establish initial delivery in restart lifecycle proof
Register the initial real dispatch callback before creating the occurrence, so retained LastNotified is an observed delivery identity rather than an unset fixture field.

Contract-Neutral: Test fixture correction only; establishes the initial delivery callback without changing runtime behaviour or the alert contract.
Change-source: pulse-maintainer
2026-10-01 17:04:22 +01:00