Commit Graph

10395 Commits

Author SHA1 Message Date
pulse-triage[bot] a97e67e0a1 Merge pull request #2010 from rcourtman/maintainer/20260909T160758Z-release-v6.4
Keep v6.4 energy sensor validation reliable
2026-09-09 16:50:03 +00:00
pulse-triage[bot] b01d30b8fa Merge published beta preparation into sensor fixture repair
Preserve the reviewed sensor synchronization backport while incorporating the protected beta.2 preparation merge now present upstream. This keeps the later test-only correction additive and outside the frozen candidate that already landed.\n\nChange-source: pulse-maintainer

Change-source: pulse-maintainer
2026-09-09 17:10:50 +01:00
pulse-triage[bot] 1a8fc08899 Merge pull request #2009 from rcourtman/release-candidate/20260909T133642Z-release
Prepare v6.4.4-beta.2 release
2026-09-09 15:48:24 +00:00
pulse-triage[bot] 9eafd31f62 test(sensors): synchronise energy counter snapshots
Sleeping fixture writers can expose only some updated domains to the second sample, producing false zero watts in CI. Run collection under synctest, wait for its sampling timer, update counters synchronously and join completion before assertions or cleanup.

Retain availability, routing and wraparound assertions, add exact delta checks, and apply the same ordering to AMD fallback and RAPL preference fixtures. Production collection and sampling semantics are unchanged.

Change-source: pulse-maintainer
(cherry picked from commit 2e3ff7494c)
2026-09-09 15:55:28 +01:00
pulse-triage[bot] 2dcf23b9d7 docs(release): disclose beta API isolation evidence
Add the reviewed cold-tenant isolation repair to the beta.2 tester scope and replace the superseded route-normalization benchmark note with the retained metrics-handler advisory result. Keep the unresolved relationship and pre-RC disposition explicit.

Contract-Neutral: release-note evidence only; no runtime behavior, public API, qualification threshold or selected product checkpoint changes.
Change-source: pulse-maintainer
v6.4.4-beta.2
2026-09-09 14:43:22 +01:00
pulse-triage[bot] 5833ec5da3 docs(release): keep beta.2 notes publishable
Shorten the retained-delivery outcome and split the reporter-specific risk so the repository release notes satisfy the customer-facing bullet limit without changing product scope or claims.

Contract-Neutral: release-note formatting only; version, runtime behavior, public APIs, and the selected product checkpoint are unchanged.
Change-source: pulse-maintainer
(cherry picked from commit 539eb2f7a9197427a9dc54e66c37e3c22d816b1c)
2026-09-09 14:41:55 +01:00
pulse-triage[bot] c8f19c1dbc chore(release): prepare repaired v6.4.4-beta.2
Freeze the protected notification recovery repair as the next beta checkpoint and align version pins, tester notes, rollback guidance, and the zero-capture visual plan.

Contract-Neutral: release preparation changes version and delivery metadata only; product runtime and public API behavior remain the reviewed release-line checkpoint.
Change-source: pulse-maintainer
(cherry picked from commit 9a1f44d7c8a3e7757f5f3f3a1f8016997f04fc72)
2026-09-09 14:41:55 +01:00
pulse-triage[bot] 65783a2ff3 Merge pull request #2006 from rcourtman/maintainer/20260909T125312Z-release-v6.4
Keep tenant API requests responsive during cold store startup
2026-09-09 13:35:25 +00:00
pulse-triage[bot] ac92490efb fix(release): mark store-history SLO measurement windows
The failed exact rehearsal buffered the store-history latency assertion, preventing resource telemetry from locating its actual test interval. Extend the existing exact API lifecycle allowlist and cover both targets with synthetic pass/fail fixtures without rerunning product qualification or changing thresholds. This is prospective observability, not clearance of the retained latency or crash evidence.

Change-source: pulse-maintainer
(cherry picked from commit f293d6fe33)
2026-09-09 13:41:38 +01:00
pulse-triage[bot] af471d176e test(api): distinguish stress setup and first-request latency
The failed qualification and isolated API samples used the same setup but lacked comparable phase and per-worker request evidence. Retain UTC setup/load boundaries, execution context and first-attempt versus subsequent successful resource latency without altering workloads, aggregate reports or verdicts. These are observational partitions, not cold-tenant or historical-cause claims.

Focused instrumented API stress passed; JSON assertions verify ordered phases and partition totals. Historical exact-candidate failure remains unresolved.

Change-source: pulse-maintainer
(cherry picked from commit 98efe62d7c)
2026-09-09 13:41:38 +01:00
pulse-triage[bot] 672a80fa31 fix(release): retain streamed stress-test timing evidence
Buffered package logs cannot map the API stress-test failure to resource telemetry. Stream Go events and retain a bounded target lifecycle with distinct event, receipt and resource collection times, while preserving readable output and pipeline failure status. Synthetic decoder and worker tests cover pass, skip, failure and unavailable telemetry; this does not clear historical qualification or authorise a replay.

Change-source: pulse-maintainer
(cherry picked from commit 4462e43288)
2026-09-09 13:41:38 +01:00
pulse-triage[bot] 5f14b44278 chore(release): retain bounded backend resource evidence
The held latency failure lacks contemporaneous resource context, and isolated passing samples do not explain it. Retain allowlisted backend boundary counters including cgroup ancestors in the existing durable log, preserving backend failures and unchanged qualification thresholds. Focused tests cover failure exits, unavailable telemetry, ancestor collection and environment filtering.

Change-source: pulse-maintainer
(cherry picked from commit b116f2defc)
2026-09-09 13:41:23 +01:00
pulse-triage[bot] 2845a013d4 fix(api): isolate tenant resource store construction
Cold resource store construction held the shared cache mutex and delayed unrelated tenants, including cache hits. A bounded API measurement found 480ms p95 cache-hit mutex wait, while a synthetic blocked constructor reproduced the coordination defect independently of storage internals.

Deduplicate construction per tenant outside the cache mutex, and coordinate eviction with in-flight opens. Add synthetic regressions for unrelated tenants, same-tenant deduplication, retry after failure and close ordering. The resource API race suite passes. This does not establish the cause of the historical release stress failure or qualify a release.

Change-source: pulse-maintainer
Contract-Neutral: Internal tenant-store lock scheduling repair only; routes, payloads, authorization, tenant keys, storage format and eviction semantics are unchanged. Existing race-tested API coordination regressions establish deduplication, retry and close ordering; no frontend surface changes.
(cherry picked from commit 3b91896371)
2026-09-09 13:41:06 +01:00
pulse-triage[bot] bc990284f1 Merge pull request #2000 from rcourtman/maintainer/20260909T050209Z-release-v6.4
Protect webhook credentials in release diagnostics
2026-09-09 05:43:04 +00:00
pulse-triage[bot] 95cda7d81e fix(notifications): redact mixed-case webhook credential keys
Diagnostic query masking recognised only lowercase credential names, leaving mixed-case and encoded variants visible in URL and transport-error diagnostics. Match decoded names without case while preserving query spelling, unrelated parameters and the original request URL. Add seven regression cases covering diagnostics and wrapped error identity.

Change-source: pulse-maintainer
(cherry picked from commit 0e61fa62c4)
2026-09-09 05:55:47 +01:00
pulse-triage[bot] 1fcbb13484 Merge pull request #1996 from rcourtman/maintainer/20260908T233430Z-release-v6.4
Resolve frontend test-tool security advisories on v6.4
2026-09-09 00:15:33 +00:00
pulse-triage[bot] 075a5625be fix(security): upgrade frontend test tooling past new advisories
Use patched Vitest/coverage 4.1.11 and js-yaml 4.3.2. Adapt constructor mocks, callable mock types and explicit call-history cleanup for Vitest 4 without weakening assertions or audit gates.

Change-source: pulse-maintainer
(cherry picked from commit 15000f0a67)
2026-09-09 00:05:38 +01:00
pulse-triage[bot] dc923c0b91 Merge pull request #1989 from rcourtman/maintainer/20260908T120153Z-release-v6.4
Keep notification recovery controls working after reloads
2026-09-08 13:01:46 +00:00
pulse-triage[bot] b84906eb1d fix(notifications): backport recovery owner refresh to release line
Backport Core 439c1a6195 API repair for the candidate recovery-control regression. Preserve registered handlers while refreshing their synchronised owner in both monitor replacement paths. Include stopped-owner, concurrency and scope tests and matching release-line contracts; exclude unrelated main changes.

Change-source: pulse-maintainer
2026-09-08 12:22:47 +01:00
pulse-triage[bot] ba9326a16d Merge pull request #1978 from rcourtman/maintainer/20260908T040452Z-release-v6.4
Preserve webhook backoff after zero retry hints
2026-09-08 04:59:09 +00:00
pulse-triage[bot] 4295d65c9f fix(notifications): preserve release-line backoff after zero Retry-After
A zero response override erased the exponential schedule and exhausted later retries immediately. Backport the notification repair and regression test from PR #1976, reproducing both subsequent 503 and headerless 429 failures on the release candidate. Focused race-enabled retry/parser tests pass after repair; this does not replace the selected beta or approve publication.

Change-source: pulse-maintainer
2026-09-08 04:19:10 +01:00
pulse-triage[bot] 9541af1620 Merge pull request #1971 from rcourtman/release-candidate/20260907T220645Z-release
Prepare v6.4.4-beta.1 release
2026-09-08 01:32:41 +00:00
pulse-triage[bot] 7aa8a273df Merge pull request #1970 from rcourtman/maintainer/20260907T231621Z-release-v6.4
Keep v6.4 alert history isolated and release checks reliable
2026-09-08 01:04:47 +00:00
pulse-triage[bot] 51b8b9da81 fix(ci): preserve required backend shard checks on release docs
Backport only the workflow hunk from 5f3b73955a. PR #1971 exposed the release-line job-level skip leaving required matrix check names absent. Expand shards and gate existing steps without changing test commands or security checks.

Contract-Neutral: CI reporting repair only; no product, policy, deployment or selected-candidate changes.
Change-source: pulse-maintainer
2026-09-08 00:39:08 +01:00
pulse-triage[bot] 966067a66b Merge landed v6.4 recurrence proposal before publication
Incorporate protected release/v6.4 merge afef6eaae0 while preserving the exact reviewed projection-bounds backport and its ancestry.

Change-source: pulse-maintainer
2026-09-08 00:25:08 +01:00
pulse-triage[bot] afef6eaae0 Merge pull request #1968 from rcourtman/maintainer/20260907T222533Z-release-v6.4
Keep recurring alert incidents distinct on v6.4
2026-09-07 23:21:14 +00:00
pulse-triage[bot] f26882a6d0 Merge candidate 20260907T221516Z-release-line
Preserve the reviewed retained-occurrence projection backport exactly atop the reconciled release/v6.4 history.

Change-source: pulse-maintainer
2026-09-07 23:38:23 +01:00
pulse-triage[bot] 8ffb790912 Merge current upstream release/v6.4 before publication
Change-source: pulse-maintainer
2026-09-07 23:29:53 +01:00
pulse-triage[bot] 1d25809a37 fix(ai): backport retained incident occurrence projection bounds
Backport of a41c60597b. Named candidate regression: resolved incident reads reopen after recurrence. Both 2m and 500ms dispatcher baselines fail on 601d061; focused incident and dispatcher tests pass with race count=20 after repair. No persistence optimisation, duplicate migration or release-readiness claim.

Change-source: pulse-maintainer
2026-09-07 23:24:45 +01:00
pulse-triage[bot] 6329b41c1e docs(release): refresh beta checkpoint disclosures
Name the landed notification-confidentiality and discovery repairs, add their
focused tester checks, and disclose the fresh installed persistence-write and
discoverability evidence. Keep the existing 6.4.4-beta.1 mapping and stable
rollback target unchanged.

Contract-Neutral: Align release notes, changelog, and the zero-capture rationale with already-reviewed source and fresh user evidence without changing runtime behavior, release gates, or publication authority
Change-source: pulse-maintainer
v6.4.4-beta.1 helm-chart-6.4.4-beta.1
2026-09-07 23:18:01 +01:00
rcourtman b060b706e3 Merge pull request #1964 from rcourtman/maintainer/20260907T181011Z-release-v6.4
Protect v6.4 alert credentials and prevent stale discovery rollback
2026-09-07 23:05:07 +01:00
pulse-triage[bot] 601d061dad fix(ai): backport lifecycle replay occurrence identity repair
Backport of c857802df6. Named regression: lifecycle replay introduced by b6babd0 revisits closed occurrences through open-only lookup, producing duplicate shells and merging genuine recurrence. Reproduced on release baseline d2f7bd0 with new tests; repaired incident-store race tests pass 20 repetitions. No unrelated unchanged-checkpoint optimisation included. Issue #1966 aggregate writes and existing duplicate migration remain unresolved.

Change-source: pulse-maintainer
2026-09-07 22:41:56 +01:00
pulse-triage[bot] d2f7bd0f25 fix(discovery): preserve current records during suggestion backfill
Backfill could save a stale List snapshot after manual discovery repaired a service, restoring unknown identity and dropping its URL and engine version. Derive and persist missing suggestions from the current record under the store lock instead, without holding it across monitor reads.

Add a deterministic SetReadState/manual-refresh interleaving and encrypted restart assertions, plus coverage for current identity, dismissed proposals, deletion and persistence failure. The discovery package passes twenty race-enabled repetitions.

Change-source: pulse-maintainer
2026-09-07 22:24:17 +01:00
rcourtman 49a0050054 Encode the release source branch through the shared output helper
The branch is validated by the snapshot guard, but its transfer between
workflow steps must also use the canonical GitHub command-file encoder.
Keep the source binding unchanged and satisfy the workflow trust audit.

Validation: all 41 workflow trust tests and five snapshot tests pass.
Contract-Neutral: Encode the already-validated release branch with the shared GitHub command-file helper without changing source identity or release authority
(cherry picked from commit ab562c82aa)
Change-source: pulse-maintainer
2026-09-07 21:26:02 +01:00
rcourtman bad8c4fc6b Publish reviewed release snapshots independently of branch tips
Continuous development must not change the source of an admitted release.
Allow the workflow to run at the qualified preparation PR head after its
normal merge, verifying exact source and workflow identity, canonical PR
provenance, and ancestry in the governed release line. Later branch commits
remain outside that release. Document the immutable-candidate contract and
verify source workflow compatibility before qualification.

Validation: snapshot identity and workflow contract tests passed, including
wrong-head, wrong-base, fork, unmerged and unbound dispatch rejection. The
existing release workflow promotion policy test also passed.

(cherry picked from commit b64709e7b7)
Change-source: pulse-maintainer
2026-09-07 21:26:02 +01:00
pulse-triage[bot] cda22c5738 Merge candidate 20260907T181017Z-release-line
Change-source: pulse-maintainer
2026-09-07 19:39:45 +01:00
pulse-triage[bot] 01f006d7cf Preserve the captured release-line reconciliation tip
Retain the exact gate-captured reconciliation commit in history while keeping its reviewed tree unchanged.

Change-source: pulse-maintainer
2026-09-07 19:25:49 +01:00
pulse-triage[bot] 59cf093c41 Merge current release/v6.4 into reviewed credential backports
Incorporate the protected landing of the preceding release-line batch while preserving the exact reviewed Discord and Telegram backport tips and their ancestry.

Change-source: pulse-maintainer
2026-09-07 19:18:12 +01:00
pulse-triage[bot] f35937cb04 Merge current release/v6.4 into reviewed credential backports\n\nIncorporate the protected landing of the preceding release-line batch while preserving the exact reviewed Discord and Telegram backport tips and their ancestry.\n\nChange-source: pulse-maintainer
Change-source: pulse-maintainer
2026-09-07 19:15:38 +01:00
pulse-triage[bot] e7a5b2c907 fix(notifications): contain encoded query and resolved ntfy diagnostics
Literal-only query matching and the separate resolved ntfy transport caller leaked recognised URL credentials. Decode each query name once and project ntfy transport errors before logging or returning them, without changing destinations or error causes. Add synthetic sink-matrix and HTTP projection regressions plus the bounded notification contract in this commit.

Change-source: pulse-maintainer
(cherry picked from commit 21ed7a8927)
2026-09-07 19:12:17 +01:00
pulse-triage[bot] fade311673 Merge pull request #1961 from rcourtman/maintainer/20260907T165726Z-release-v6.4
Protect webhook credentials in v6.4 diagnostics
2026-09-07 19:04:20 +01:00
pulse-triage[bot] 71c721ccee fix(notifications): backport Telegram decoded-path credential masking
Backport reviewed Core 192a72e05c with candidate-specific before/after evidence. Change-source: pulse-maintainer

Change-source: pulse-maintainer
2026-09-07 18:32:34 +01:00
pulse-triage[bot] dcf7e49961 Merge candidate 20260907T170524Z-release-line
Change-source: pulse-maintainer
2026-09-07 18:24:36 +01:00
pulse-triage[bot] f3366a34ab fix(notifications): backport Discord diagnostic credential masking
Backport-of: 3c77ecb338 (code and tests only)

Change-source: pulse-maintainer
2026-09-07 18:08:10 +01:00
pulse-triage[bot] 36e0af216d fix(notifications): retain context around redacted delivery URLs
The reviewed v6.4 userinfo backport made the existing delivery-log caller fail closed on a complete error sentence, which preserves secrecy but discards useful status context and fails the release-line regression. Redact embedded webhook URLs separately while retaining malformed-URL fail-closed behaviour.

Change-source: pulse-maintainer
2026-09-07 18:07:20 +01:00
pulse-triage[bot] acb841d3d6 fix(notifications): backport Slack diagnostic path redaction to v6.4
Backport 77a8e4ee35 for candidate credential confidentiality. Preserve transport causes and destinations; cover Slack/GovSlack, encoded and legacy paths, and rate-limit diagnostics.

Change-source: pulse-maintainer
2026-09-07 17:49:29 +01:00
pulse-triage[bot] 7dae9c3626 fix(notifications): backport webhook userinfo redaction to v6.4
Security backport of db0c72c367. Release base reproduces credential disclosure in transport diagnostics and rate-limit logs. Preserve exact helper/tests; relocate the confidentiality contract without importing unrelated SMTP work.

Validation: three focused notification tests fail before repair and pass with -race -count=20 on Go 1.26.7. Protected PR review and exact-candidate qualification remain required.

Change-source: pulse-maintainer
2026-09-07 17:07:12 +01:00
pulse-triage[bot] eacf14e674 Merge pull request #1956 from rcourtman/maintainer/20260907T121525Z-release-v6.4
Reject v6.4 release dispatches when source identity drifts
2026-09-07 14:15:10 +01:00
pulse-triage[bot] b03041cdb6 Test release dispatch identity guard against commit drift
The candidate publisher rejected its admitted SHA input. Execute the backported workflow guard in focused tests so accepting the input cannot silently permit source or workflow drift before checkout.

Change-source: pulse-maintainer
2026-09-07 12:50:23 +01:00
pulse-triage[bot] 8f516a014b Bind release dispatches to the admitted commit
A workflow dispatch by branch can resolve after that branch moves, allowing an unreviewed tip to enter the release pipeline. Require every publishing dispatch to name its expected source SHA and make the workflow reject a different source or workflow commit before checkout.

Change-source: pulse-maintainer
(cherry picked from commit a461fc9c0a)
(cherry picked from commit f503b13442)
2026-09-07 12:49:23 +01:00