Commit Graph

10886 Commits

Author SHA1 Message Date
pulse-triage[bot] 203b50a46e Merge pull request #1967 from rcourtman/maintainer/20260907T222533Z
Keep recurring incidents distinct and clear withdrawn Proxmox memory
2026-09-07 23:17:43 +00:00
pulse-triage[bot] 0a464e21c8 Merge current upstream main before publication
Change-source: pulse-maintainer
2026-09-07 23:29:53 +01:00
pulse-triage[bot] 5e3a867198 Merge pull request #1959 from rcourtman/maintainer/20260907T150154Z
Protect alert credentials and preserve accurate recovery state
2026-09-07 22:19:47 +00:00
pulse-triage[bot] 6332fdce44 Merge reviewed Proxmox memory withdrawal repair
Change-source: pulse-maintainer
2026-09-07 23:10:22 +01:00
pulse-triage[bot] 7eec890025 fix(web): clear explicitly withdrawn Proxmox memory
A canonical snapshot can omit memory after the producer marks its Proxmox
facet unavailable. Retaining the previous display metric hides withdrawal
and leaves a stale percentage visible. Clear that explicit transition in
full and fast merges and emit the corresponding store operation, preserving
ordinary partial omission and trusted canonical metrics including zero.

Pin withdrawal and recovery with adapter tests and desktop/narrow Chromium
acceptance. Workload details remain canonical-only; do not invent raw totals
or Usage UI. Record inspected screenshots and matching subsystem contracts.

Change-source: pulse-maintainer
2026-09-07 23:03:54 +01:00
pulse-triage[bot] a41c60597b fix(ai): bound retained incident timelines to their occurrence
The real monitoring lifecycle dispatcher reproduces a closed incident reopening when its next occurrence fires: canonical projection selected all later events for the same alert. Bound retained-shell projections to their exact start and the next retained start, keeping subsecond recurrence and historical acknowledgement separate. Add in-memory callback coverage with both projections attached; twenty race repetitions pass along with focused incident tests. No retention migration, canonical-only fallback rewrite, notification-delivery claim or aggregate write-byte claim.

Change-source: pulse-maintainer
2026-09-07 22:58:51 +01:00
pulse-triage[bot] c857802df6 fix(ai): preserve incident occurrence identity during lifecycle replay
Issue #1966 reports distinct incident IDs for one occurrence. Deterministic lifecycle replay creates eleven shells for one resolved start, including after JSON restart; open-only matching also lets an old resolution close a newer occurrence. Match exact lifecycle starts and retain closed identity on replay, without changing legacy zero-start matching or retention. Add recurrence, restart and canonical-shell regression coverage; focused incident race tests pass for twenty repetitions. This does not establish total write savings or migrate existing duplicates.

Change-source: pulse-maintainer
2026-09-07 22:39:41 +01:00
pulse-triage[bot] 653a28192a 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:20:18 +01:00
pulse-triage[bot] c394f297c6 Merge candidate 20260907T204500Z-core-runtime
Change-source: pulse-maintainer
2026-09-07 22:08:55 +01:00
pulse-triage[bot] e41381681a fix(ai): skip unchanged incident JSON checkpoints
Repeated alert lifecycle evaluations retain one occurrence but still replace the whole incident file. Compare bounded existing bytes before replacement, preserving changed-state saves and retry after failure or file loss.

Focused regression reproduced 21 replacements for one initial save plus 20 unchanged evaluations before the fix. Repeated race-enabled incident tests cover unchanged checkpoints, metadata, restart, resolution, recurrence and failed-write retry. This does not establish the cause of all writes or duplicate incidents reported in #1966.

Change-source: pulse-maintainer
2026-09-07 21:56:02 +01:00
pulse-triage[bot] 1502a8506c Merge candidate 20260907T201522Z-web-product
Change-source: pulse-maintainer
2026-09-07 21:47:29 +01:00
pulse-triage[bot] 916de59433 Merge candidate 20260907T201519Z-core-runtime
Retain the exact reviewed automatic guest-link regression test on current canonical main.

Change-source: pulse-maintainer
2026-09-07 21:42:13 +01:00
pulse-triage[bot] 6feddfebee test(web): verify hybrid memory updates in Chromium
Exercise canonical REST and socket snapshots through the Proxmox table and guest drawer for issue #1962. Preserve platform fallback and measured-zero presentation without substituting nested agent memory; backend polling remains separately qualified.

Change-source: pulse-maintainer
2026-09-07 21:36:04 +01:00
pulse-triage[bot] a7484acca4 style(web): restore alert recovery formatting gate
Apply the repository formatter to the two alert recovery test files rejected by the protected frontend check. This is an additive formatting-only correction; reviewed commit identities and behavior remain unchanged.

Change-source: pulse-maintainer
2026-09-07 21:32:33 +01:00
pulse-triage[bot] f604b1db4a test(monitoring): distinguish automatic guest links from registry merges
Issue #1962 describes automatic correlation into a hybrid VM, while the retained-link regression only exercises a manual merge. Exercise the hostname link selector through source snapshot reconstruction and next-poll memory resolution, preserving standalone host identity, cross-instance VMID isolation and ambiguous-name refusal. This narrows the acceptance boundary without changing matching behaviour or claiming installed recovery.

Change-source: pulse-maintainer
2026-09-07 21:28:07 +01:00
pulse-triage[bot] db6edc9fcb Merge candidate 20260907T185505Z-core-runtime
Change-source: pulse-maintainer
2026-09-07 21:12:16 +01:00
pulse-triage[bot] d9f2637ee2 Merge current upstream source main into reviewed maintenance
Incorporate the protected release-snapshot workflow landing while preserving every reviewed maintenance commit and the additive governance correction in local history.

Change-source: pulse-maintainer

# Conflicts:
#	docs/release-control/v6/internal/subsystems/deployment-installability.md
2026-09-07 21:02:31 +01:00
rcourtman 1a822d164b Merge pull request #1965 from rcourtman/release-snapshot-workflow
Publish reviewed release snapshots independently of branch tips
2026-09-07 20:24:51 +01:00
pulse-triage[bot] 092405e33c fix(governance): validate reviewed split completions exactly
A reviewed notification correction and its required contracts and API proof were accepted as separate immutable commits, leaving the protected per-commit governance check unable to pass without rewriting reviewed history. Add a fail-closed exact-pair validator that reconstructs the completion commit in a detached worktree and runs the normal guard over the combined file set; all unregistered commits continue through the unchanged per-commit path.

Change-source: pulse-maintainer
2026-09-07 20:13:34 +01:00
pulse-triage[bot] 4120f22374 Test linked guest memory after registry reconstruction
Keep stale/offline/unavailable controls, diagnostic and alert agreement, and verify isolation with a simultaneous duplicate VMID in another instance. Test-only follow-through for issue #1962.

Change-source: pulse-maintainer
2026-09-07 19:58:58 +01:00
pulse-triage[bot] 238c9762ba style(web): format hybrid memory regression fixture
Apply the repository Prettier policy to the newly integrated issue #1962 reactive-boundary fixture. The exact reviewed candidate remains preserved as a merge parent, and the focused test behavior is unchanged.

Change-source: pulse-maintainer
2026-09-07 19:58:26 +01:00
pulse-triage[bot] 53042d55e1 Merge candidate 20260907T184501Z-web-product
Change-source: pulse-maintainer
2026-09-07 19:57:22 +01:00
pulse-triage[bot] 773881766a Merge candidate 20260907T183504Z-core-runtime
Change-source: pulse-maintainer
2026-09-07 19:49:30 +01:00
pulse-triage[bot] 5705f91e5c test(web): preserve canonical hybrid VM memory updates
Issue #1962 exposes disagreement between canonical and nested agent memory. Protect the reactive workload boundary against UI-only substitution, same-VMID instance mixing and confusion between missing telemetry and measured zero. Synthetic snapshots do not qualify the outstanding poller repair.

Change-source: pulse-maintainer
2026-09-07 19:48:14 +01:00
pulse-triage[bot] a4d5130ec6 Restore VM-correlated agent memory fallback
Read agent-owned memory and source freshness from VM views when correlation removes the standalone host row. Preserve preferred guest memory sources and reject stale, offline or unavailable agent evidence. Reproduce issue #1962 through registry merge, next-poll diagnostics, card projection and memory alerts.

Change-source: pulse-maintainer
2026-09-07 19:43:48 +01:00
pulse-triage[bot] ffcf83ad6d Merge candidate 20260907T181015Z-web-product
Change-source: pulse-maintainer
2026-09-07 19:39:45 +01:00
rcourtman ab562c82aa 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
2026-09-07 19:38:48 +01:00
pulse-triage[bot] d63aa56729 Merge candidate 20260907T175505Z-core-runtime
Integrate the reviewed bounded webhook diagnostic confidentiality repair and its exact candidate ancestry.

Change-source: pulse-maintainer
2026-09-07 19:32:10 +01:00
rcourtman b64709e7b7 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.
2026-09-07 19:30:27 +01:00
pulse-triage[bot] dd8945e942 Merge latest upstream qualification record into reviewed alert recovery
Incorporate the landed Patrol qualification record while preserving every reviewed alert recovery, credential-redaction and release-evidence commit and its ancestry.

Change-source: pulse-maintainer
2026-09-07 19:28:42 +01:00
rcourtman 3300649c12 Merge pull request #1963 from rcourtman/docs/patrol-qualification-delivery
Record verified Patrol and Assistant qualification delivery
2026-09-07 19:20:55 +01:00
pulse-triage[bot] 1f965e85b0 Merge current upstream main into reviewed alert recovery
Incorporate the landed Patrol planning work while preserving every reviewed alert recovery, credential-redaction and release-evidence commit and its ancestry.

Change-source: pulse-maintainer

# Conflicts:
#	docs/release-control/v6/internal/subsystems/agent-lifecycle.md
#	docs/release-control/v6/internal/subsystems/api-contracts.md
#	docs/release-control/v6/internal/subsystems/storage-recovery.md
#	frontend-modern/browser-verification.json
2026-09-07 19:16:44 +01:00
rcourtman 7d1fb7285e Record verified Patrol and Assistant qualification delivery
Reconcile the executable plan with the merged implementation and exact
qualification evidence. Keep the independent-environment rollout gate open
and preserve failed attempts, measurement limits and provider refusal.

Preserve the requested reservation for independent release snapshot work.

Refs #1782
2026-09-07 19:14:49 +01:00
pulse-triage[bot] de40ac2ef3 test(web): cover unavailable reads after accepted recovery
Accepted queue actions and failed follow-up reads are different outcomes. Extend actual-tab regression coverage so unavailable health and history cannot erase SMTP edits or misrepresent the accepted action as rejected.

Change-source: pulse-maintainer
2026-09-07 19:13:00 +01:00
rcourtman a42e3800d9 Merge pull request #1960 from rcourtman/fix/patrol-planning-outcomes
Preserve canonical Patrol planning and outcome continuity
2026-09-07 19:09:23 +01:00
pulse-triage[bot] 21ed7a8927 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
2026-09-07 19:07:52 +01:00
pulse-triage[bot] 5e0c3c4675 test(web): preserve recovery evidence on cancelled confirmation
Cancellation after a failed recovery must retain operator evidence and unfinished SMTP edits without triggering another API request. Cover this boundary in both actual destination-tab action scenarios.

Change-source: pulse-maintainer
2026-09-07 19:05:47 +01:00
pulse-triage[bot] 3078dc01b7 Merge candidate 20260907T174021Z-delivery-trust
Change-source: pulse-maintainer
2026-09-07 18:52:54 +01:00
pulse-triage[bot] a76bd1dcb2 Merge candidate 20260907T173016Z-core-runtime
Change-source: pulse-maintainer
2026-09-07 18:46:39 +01:00
pulse-triage[bot] f5d2c5d143 test(web): guard unsaved state during delivery recovery
Assert rejected and accepted retry/dismiss never clear the dirty flag after an SMTP edit; retained input value alone does not prove unsaved-state preservation.

Change-source: pulse-maintainer
2026-09-07 18:42:02 +01:00
pulse-triage[bot] f0369fd642 test(web): verify recovery preserves destination edits
Exercise the actual destinations tab, delivery hooks and SMTP editor across rejected and accepted Retry and Dismiss requests. Guard input identity, focus, dirty state, feedback and retained history rendering as health reconciles; standalone feedback tests did not cover this integration.

Change-source: pulse-maintainer
2026-09-07 18:33:30 +01:00
pulse-triage[bot] 5f99f5c13f test(notifications): prove delivery diagnostic API contract
Pin useful diagnostic context and credential masking at the HTTP boundary, and document the API, agent and retained-history boundaries omitted from a2dbb27. This supplement must be packaged with that source commit for per-commit governance; it does not clear the historical hosted failure.

Change-source: pulse-maintainer
2026-09-07 18:33:06 +01:00
pulse-triage[bot] d1c614f2eb Merge candidate 20260907T170500Z-web-product
Change-source: pulse-maintainer
2026-09-07 18:24:36 +01:00
pulse-triage[bot] e62f591ecb Merge candidate 20260907T170018Z-core-runtime
Change-source: pulse-maintainer
2026-09-07 18:24:35 +01:00
rcourtman 17aa972f35 Make investigation wiring checks ignore field alignment
Normalize whitespace in required wiring snippets so gofmt alignment changes
do not fail the model-only handoff contract. Preserve the same required
identifiers and forbidden adapter checks.

Refs #1782
2026-09-07 18:10:32 +01:00
pulse-triage[bot] a2dbb27a68 fix(notifications): retain context around redacted delivery URLs
PR #1959 exposed that the URL-only redactor was called with a complete delivery error, causing safe but unhelpful replacement of the whole diagnostic. Redact embedded webhook URLs separately so credentials stay masked and non-secret failure context remains available; malformed URLs continue to fail closed.

Change-source: pulse-maintainer
2026-09-07 18:07:09 +01:00
pulse-triage[bot] 800663fdf3 test(web): preserve editing focus during recovery feedback
Existing coverage checks focus after Clear but not when asynchronous failure feedback arrives. Guard input focus, unfinished text and mounted live-region identity without changing the interface or claiming screen-reader acceptance.

Change-source: pulse-maintainer
2026-09-07 18:06:54 +01:00
pulse-triage[bot] 192a72e05c fix(notifications): redact Telegram credentials from decoded paths
Raw URL matching missed encoded bot prefixes and mistook bot hostnames and query URLs for credential paths. Use the decoded path and clear RawPath so diagnostic errors and rate-limit logs cannot retain these synthetic bot tokens, while preserving local API server support and original destinations.

Change-source: pulse-maintainer
2026-09-07 18:02:25 +01:00
pulse-triage[bot] 3c77ecb338 fix(notifications): mask Discord webhook credentials in diagnostics
Discord webhook paths include tokens authorising webhook operations. Mask the credential suffix on exact Discord hosts without changing destinations or error causes, and cover helper output, transport errors and rate-limit logs with synthetic regressions.

Change-source: pulse-maintainer
2026-09-07 17:50:14 +01:00
rcourtman c501376843 Preserve canonical Patrol planning and outcome continuity
Return persisted planning acceptance or refusal inside the investigation turn.
Keep model judgment separate from action authority and preserve accepted action
identity across provider failures. Enforce actor/request idempotency atomically
and retain complete approval and independent verification context.

Preserve unknown disk evidence, stream whitespace and historical resolution
timestamps. Keep conversation scrolling inside its own panel. Record real-model,
disposable-lab and browser qualification with explicit population limits.

Refs #1782
2026-09-07 17:24:25 +01:00