Commit Graph

4343 Commits

Author SHA1 Message Date
pulse-triage[bot] 57598cbf3e Bound agent capability HTTP responses
Contract-Neutral: Enforces client-side response resource limits without changing the agent wire contract.
2026-08-31 22:30:17 +01:00
pulse-triage[bot] c6307b81c9 Merge remote-tracking branch 'origin/main' 2026-08-31 22:20:25 +01:00
rcourtman 2aece859a5 Harden safe rootless runtime recovery 2026-08-31 22:17:07 +01:00
pulse-triage[bot] 27ba576605 Merge remote-tracking branch 'origin/main' 2026-08-31 22:04:36 +01:00
rcourtman 6185cf3f88 Bound alert lifecycle replay with a durable projection watermark
Projection replay walked the entire alert event log on every boot, twice
(monitor start and the resource-store boundary), synchronously on the
serving path, and every replayed event queued a full incident-store JSON
rewrite. A 64k-event log made startup exceed the dev supervisor's
health-kill window, so the backend restarted forever and never served.

The event log now owns per-consumer projection watermarks in
alert_store_meta, WalkOldest takes an AfterID cursor, and the single
catch-up pass runs in the background at the canonical resource-store
boundary with periodic watermark checkpoints. The watermark only
advances when both the incident store and the canonical change recorder
are attached, so partial-surface passes repair without marking events
applied, and lowering the watermark forces a full repair replay.
Incident-store saves now coalesce: a burst of mutations queues one
whole-store serialization instead of one per event, live paths included.

Registers the alert-lifecycle-replay-startup-scalability coverage gap
and amends the alerts and monitoring subsystem contracts accordingly.
2026-08-31 21:57:58 +01:00
pulse-triage[bot] 39de104713 Enforce remote config response limits 2026-08-31 21:33:18 +01:00
pulse-triage[bot] 327682ad34 Bound Proxmox API success responses
Change-source: pulse-maintainer
2026-08-31 21:20:30 +01:00
pulse-triage[bot] 8475646358 Reject ambiguous Kubernetes host enrichment
Change-source: pulse-maintainer
2026-08-31 21:20:30 +01:00
pulse-triage[bot] f69ce1daae Use Kubernetes node identity for host linking
Change-source: pulse-maintainer
2026-08-31 21:20:29 +01:00
rcourtman 0c76b5d756 Stabilize API test log capture 2026-08-31 19:47:01 +01:00
pulse-triage[bot] f0e006d645 Keep managed integration tests checkout-independent
Change-source: pulse-maintainer
2026-08-31 18:21:45 +01:00
rcourtman 17a1c2096d Decouple WebSocket contract tests from monitor workload 2026-08-31 17:59:38 +01:00
pulse-triage[bot] 1bb23545b6 Require TrueNAS API key owner identity
Change-source: pulse-maintainer
2026-08-31 17:09:53 +01:00
rcourtman bbdc2d5413 Stabilize WebSocket contract tests under release load 2026-08-31 16:32:56 +01:00
rcourtman cf021bc9ce Surface typed helper container degradation 2026-08-31 15:53:50 +01:00
rcourtman d19398d82a Surface typed helper degradation in Agent Doctor 2026-08-31 13:06:28 +01:00
pulse-triage[bot] 7558d422ea Require qualified Proxmox pin endpoints
Fail closed when provider endpoints are IP addresses or repeated single-label names, since those values are commonly reused across independent private estates. Preserve the candidate's qualified-endpoint continuity and add coverage for the short-endpoint collision.

Refs #1753

Contract-Neutral: narrows internal durable identity recovery evidence
2026-08-31 12:09:28 +01:00
pulse-triage[bot] e00d0eee03 Keep same-name Proxmox estates distinct after restart
Scope durable Proxmox identity-pin recovery to exact provider endpoints or established cluster identity. Record full named endpoints in new host pins and fail closed on legacy short-hostname pins, preventing the first reporting agent from canonically absorbing another standalone estate during provider-first boot windows.\n\nRefs #1753\n\nContract-Neutral: narrows internal canonical identity recovery without changing API or extension shapes
2026-08-31 12:09:28 +01:00
pulse-triage[bot] d5945f824d Preserve Pulse severity in systemd journal 2026-08-31 11:46:51 +01:00
rcourtman f47ac1f020 Define beta and RC release maturity 2026-08-31 11:42:03 +01:00
pulse-triage[bot] 8c63984696 Clear stale PBS backup-running state 2026-08-31 07:03:43 +01:00
rcourtman a1336348cb Stop partial PBS sync copies pinning guests as backing up
A PBS-to-PBS sync that fails mid-snapshot leaves a manifest-less copy of an
already-completed backup on the target datastore. That copy has the same
signature as a snapshot being written right now (no size, no
index.json.blob), so the guest showed Backup Running indefinitely until the
sync was repaired.

An in-flight snapshot only reports the guest as backing up when it is newer
than the guest's last completed backup and within the same 24h cutoff that
already ages out stale running vzdump tasks. A genuine in-progress backup is
always newer than the last completed one; a partial sync copy never is.

Refs #1815
2026-08-31 06:33:09 +01:00
rcourtman 669cce6787 Restore main CI after guardrail and contract drift
Three consecutive main runs were red because landed features outran their
guardrails while change detection kept the affected shards out of their own
runs.

- Resync shipped copies of API.md, CODE_SIGNING_POLICY.md, and
  PRODUCTION_SECURITY.md from repo docs.
- Track the schema v16 telemetry disclosure (workload-history adoption
  counts) in the settings architecture guardrail.
- Track route-scoped TrueNAS hydration queries and the conditional Kind
  column class in the platform overview layout guardrails.
- Track the contained command-authority copy (legacy combined command
  profile) in the installer and setup guide tests.
- Match the sentence-split delivery retention copy in AlertDeliveryLogCard.
- Provide selectedAgentUrl, insecureMode, and customCaPath in the
  InfrastructureWorkspace operations mock for the safe-collector commands.
- Include the resource list facets block in the two API contract snapshots,
  normalizing the direct-marshal fixture the way every handler does.
- Require the fail-closed installer checksum wording in the
  AGENT_SUBSTRATE doc contract.
2026-08-31 06:26:53 +01:00
pulse-triage[bot] 445ebacf24 Restore delivery qualification trust
Harden release workflow input transport and make native lifecycle proof honor each platform security boundary. Refresh stale telemetry and delivery qualifications.

Contract-Neutral: Formatting-only catalog updates and browser-verified alert copy; release compiler and native lifecycle changes update their owning contracts.
2026-08-31 03:02:13 +01:00
pulse-triage[bot] 92b5f3a9e1 Bound security request decoding 2026-08-31 01:43:55 +01:00
pulse-triage[bot] eb0d17c282 Restore trustworthy governance signals 2026-08-31 00:55:44 +01:00
Richard Courtman 79967177ea Enforce explicit SSO administrator grants 2026-08-31 00:43:42 +01:00
pulse-triage[bot] 0f2d7ae055 Make notification delivery failures actionable 2026-08-31 00:39:53 +01:00
Richard Courtman 08f7c5f0d5 Harden secure agent runtime boundaries 2026-08-31 00:06:24 +01:00
Pulse Test caa2f77d23 Add infrastructure-aware incident synthesis 2026-08-30 22:32:21 +01:00
Pulse Test 1d9e66b24c fix(mock): keep provider fixtures fresh on slow demo ticks
The public demo runs PULSE_MOCK_UPDATE_INTERVAL=60s, which stretches the
10-cohort supplemental rotation to 600s while the unified registry still
marks TrueNAS/VMware/availability sources stale after 120s. Every row those
sources own spent ~80% of each rotation flagged as a degraded stale source,
so the TrueNAS Storage tab read Healthy 0 / Attention 21 (and the vSphere
page all-Attention) despite healthy fixture data.

Rebase provider-backed fixtures every tick once the rotation would outlive
the 120s freshness budget (at slow ticks that is cheaper per wall-clock
second than the default 2s config's once-per-20s cadence), and derive mock
supplemental stale thresholds from the actual refresh cadence the same way
PVE/PBS/PMG thresholds already derive from their polling intervals. Split
the supplemental uptime step so per-tick refreshes do not advance PBS
uptime by the rotation-scaled step.
2026-08-30 22:10:49 +01:00
Pulse Test 16a1574a18 Add multi-location service delivery evidence 2026-08-30 21:44:32 +01:00
pulse-triage[bot] e094a55b45 Integrate typed helper container summaries 2026-08-30 21:29:11 +01:00
Richard Courtman d9e9bf3679 Prove production action runner credential lifecycle 2026-08-30 21:03:37 +01:00
Richard Courtman 77afff4f60 Bind action runner to enrolled agent identity 2026-08-30 18:49:12 +01:00
Pulse Test 6ee3b7e24e Add discovery-led service assurance onboarding 2026-08-30 18:40:06 +01:00
Richard Courtman 770733fc92 Make action runner rotation activation-safe 2026-08-30 18:00:33 +01:00
Pulse Test c0b190bfa1 Add application response contracts to availability checks 2026-08-30 17:38:59 +01:00
Richard Courtman 34849268e5 Enforce collector credential scope allowlists 2026-08-30 17:18:38 +01:00
pulse-triage[bot] d732b5a9e8 Restore scoped governance audit signal 2026-08-30 17:01:44 +01:00
pulse-triage[bot] 323da54067 Support agent retargeting after server moves 2026-08-30 16:17:15 +01:00
Pulse Test 712f1a3bfe Add availability history and fleet view 2026-08-30 15:38:34 +01:00
pulse-triage[bot] 21007a8662 Isolate private governance from pull requests 2026-08-30 15:02:41 +01:00
Pulse Test 7e92ac8118 Harden secure runtime separation boundaries 2026-08-30 14:26:01 +01:00
Pulse Test 161e322ee0 Add workload history discovery lens 2026-08-30 13:49:58 +01:00
pulse-triage[bot] 68887f7114 Bound chart response cache retention 2026-08-30 12:55:50 +01:00
Richard Courtman 87fda2a235 Scope provider inventory hydration by route 2026-08-30 09:32:35 +01:00
pulse-triage[bot] 74cf2c1283 Require authority for infrastructure actions 2026-08-30 08:36:31 +01:00
pulse-triage[bot] 560c2de026 Automate dependency trust maintenance 2026-08-30 04:02:27 +01:00
pulse-triage[bot] 95a7191ca9 Enforce native private state permissions 2026-08-30 03:31:00 +01:00