Commit Graph

2348 Commits

Author SHA1 Message Date
rcourtman 1cc20d5768 Author detection-time Impact for threshold alerts and propagate through stores
Extend Impact authoring to threshold alerts: convertAlertToFinding
calls a new generateImpact(alertType) that returns hand-authored
consequence-if-ignored copy keyed on alert type (cpu, memory, disk,
storage, temperature, offline, poweredOff, plus their aliases). Unknown
alert types return an empty string rather than synthesizing generic
text, matching the contract that impact must be authored, not invented.

Fix two propagation gaps in the unified store update paths:
- AddFromAlert update branch backfills Impact on existing findings that
  pre-date the Impact contract (description and recommendation
  intentionally remain non-refreshed so the addition does not change
  historical alert wording).
- AddFromAI update branch overwrites existing.Impact when the incoming
  finding has impact set, the same pattern already used for
  description and recommendation, so re-detected AI patrol findings
  carry freshly-classified impact text into the unified store.

Adds unit tests for generateImpact (one per alert type plus a
returns-empty-for-unknown case) and for the AddFromAI Impact
propagation path. Updates the ai-runtime contract to pin the threshold
alert impact catalog and the unified-store propagation rules.
2026-05-08 18:07:37 +01:00
rcourtman 10ff1c4dcf Surface Finding.Impact through UnifiedFinding to operators
Carry the Finding.Impact text added in the previous slice through the
Finding to UnifiedFinding boundary and onto the FindingsPanel surface
so the runtime-failure consequence-if-ignored copy is visible to the
operator. Add Impact to the UnifiedFinding struct, JSON snapshot, and
both Marshal/Unmarshal mirrors; copy f.Impact into both Finding to
UnifiedFinding conversion sites in router.go; mirror impact in the TS
UnifiedFindingRecord and Finding API types and the aiIntelligence
store normalizers; render an Impact line between Description and
Recommendation in FindingsPanel.

Also fix the FindingsStore.Add dedup-merge path so re-detected findings
overwrite existing.Impact alongside Description and Recommendation
rather than preserving the stale empty value left by an older binary.
Without this fix, a freshly-classified runtime failure with new Impact
text would be merged onto the persisted finding but the Impact field
would be silently dropped.

Verified end-to-end against the live runtime: triggered a Patrol run,
watched the runtime-failure finding regenerate, confirmed the
operator-visible card now renders "Impact: While Patrol cannot
analyze..." between Description and Recommendation. Updates the
api-contracts, ai-runtime, patrol-intelligence, and the dependent
agent-lifecycle, performance-and-scalability, and storage-recovery
contracts to pin the propagation rule and the dedup-merge invariant.
2026-05-08 17:31:19 +01:00
rcourtman 744b861614 Populate Patrol runtime-failure findings with Impact
Add Impact (consequence-if-ignored) to the Finding struct so
detection-time analysis can author operator-facing impact text alongside
the existing description and recommendation, and propagate that field
into the durable aicontracts.InvestigationRecord through
BuildFindingInvestigationRecord. Wire the Patrol runtime-failure
classification path (patrolRuntimeFailureFromError) to populate a
shared impact statement covering every failure cause: while Patrol
cannot analyze, alerts continue to fire without evidence or recommended
actions, and AI Intelligence summaries cannot refresh. The text is
constant across causes because the operational consequence of a
non-running Patrol does not change with the cause; only the
recommendation does. Updates the ai-runtime contract to pin the
detection-time impact authoring rule and forbid model-side
severity/category-derived impact synthesis.
2026-05-08 16:59:00 +01:00
rcourtman e7b5650233 Add impact and rollback to investigation records
Promote the seven-field investigation-record shape so Patrol findings
can carry consequence-if-ignored context and a record-level rollback
plan alongside the existing verification array. The shared
aicontracts.InvestigationRecord struct gains top-level Impact and
Rollback fields with matching TS mirrors, normalizes Rollback to an
empty slice, and the Patrol-owned investigation surface renders an
explicit "Impact not assessed" / "Rollback not specified" placeholder
so the operator-visible gap is conspicuous to both the operator and
Assistant when Patrol has not populated them. Backend default leaves
both empty rather than fabricating analysis from severity/category.
Also closes the existing Trigger.cause drift between Go and TS so
frontend handoff context preserves backend-attributed failure cause,
and updates the api-contracts, ai-runtime, frontend-primitives, and
patrol-intelligence subsystem contracts to pin the new shape.
2026-05-08 16:47:55 +01:00
rcourtman 4d5d77cf79 Deduplicate versioned infrastructure system badges 2026-05-08 15:42:18 +01:00
rcourtman 825f230dec Make Patrol recommendation prompts action-aware 2026-05-08 15:36:12 +01:00
rcourtman 797edfc6ab Preserve Patrol recommendation reasons in sessions 2026-05-08 15:33:14 +01:00
rcourtman aab3711765 Fix PVE version detection on agent hosts 2026-05-08 15:30:08 +01:00
rcourtman 3a6b07d56e Clarify Patrol Assistant briefing facts 2026-05-08 15:26:03 +01:00
rcourtman aa21e624aa Show platform versions in system badges 2026-05-08 15:07:09 +01:00
rcourtman 3e9cefafaf Structure Patrol Assistant next-step metadata 2026-05-08 15:01:09 +01:00
rcourtman cb772737e7 Fix platform identity source contracts 2026-05-08 14:54:08 +01:00
rcourtman 6d080a4810 Restore Patrol Assistant next-step links 2026-05-08 14:51:50 +01:00
rcourtman af99032d9b Link Patrol Assistant briefing next steps 2026-05-08 14:39:39 +01:00
rcourtman 861e73e128 Carry Patrol finding next steps into Assistant 2026-05-08 14:34:35 +01:00
rcourtman 2baa05c4e4 Fix platform identity source canonicalization 2026-05-08 12:51:39 +01:00
rcourtman a6ea15bfa9 Improve Patrol Assistant handoff approval boundary 2026-05-08 12:25:32 +01:00
rcourtman 31d07e74ce Fix Unraid storage health explanations 2026-05-08 12:18:09 +01:00
rcourtman 7f8db38aac Improve Patrol supporting context signal 2026-05-08 12:16:52 +01:00
rcourtman d5735a1b92 Keep direct DeepSeek Patrol models selectable 2026-05-08 11:57:04 +01:00
rcourtman f88f0fcf1a Align DeepSeek V4 Patrol readiness 2026-05-08 11:34:07 +01:00
rcourtman 8df57ba50d Detect Proxmox VE host agent OS identity 2026-05-08 11:19:56 +01:00
rcourtman e38332de86 Keep Patrol evidence aligned with live findings 2026-05-08 11:08:53 +01:00
rcourtman ac82a28521 Fix Unraid agent host profile detection 2026-05-08 11:05:14 +01:00
rcourtman 326196cbec Mark paid runtime build attribution gate passed 2026-05-08 10:34:33 +01:00
rcourtman 8225071492 Clarify infrastructure API detect modal 2026-05-08 10:14:03 +01:00
rcourtman 7da6a36901 Add community runtime Plans proof 2026-05-08 10:06:06 +01:00
rcourtman b56428e8cf Promote Pulse Intelligence governed lane 2026-05-08 02:54:48 +01:00
rcourtman f12efba419 Surface saved Patrol readiness issues 2026-05-08 02:37:56 +01:00
rcourtman 73d549f248 Clarify API platform onboarding flow 2026-05-08 02:24:08 +01:00
rcourtman d0940db33b Clamp Patrol monitor-only autonomy saves
Refs #1463
2026-05-08 02:21:31 +01:00
rcourtman 8176f2e8ca Align Patrol assessment handoff target 2026-05-08 01:58:19 +01:00
rcourtman f7155dace9 Carry Patrol action availability into handoff 2026-05-08 01:53:55 +01:00
rcourtman 475429def2 Preserve Patrol assessment action kind 2026-05-08 01:40:50 +01:00
rcourtman 94ae660035 Keep discovered sources in base group 2026-05-08 01:39:08 +01:00
rcourtman 77d0aec9a7 Group agent host profiles in source manager
Group reported agent-backed host profiles under their operator-facing source family and route profile add actions back into the typed onboarding flow.
2026-05-08 01:35:15 +01:00
rcourtman 92b2a6c7be Align DeepSeek provider surface 2026-05-08 01:32:58 +01:00
rcourtman aec60b6d63 Require current release gate runbooks
Add missing high-risk matrix sections for the paid-runtime and mobile product-purpose gates, guard status.json release gates against missing matrix runbooks, and refresh the GA-promotion blocked record for the current rc.4 line.
2026-05-08 01:26:06 +01:00
rcourtman f8047177ef Update DeepSeek Patrol defaults 2026-05-08 01:24:50 +01:00
rcourtman f0105e586e Compact infrastructure source manager 2026-05-08 01:16:21 +01:00
rcourtman a4cdd02c36 Show Patrol recommendations in Assistant sessions 2026-05-08 01:13:50 +01:00
rcourtman a5e8a1edb6 Restore Patrol recommendation in Assistant sessions 2026-05-08 01:08:53 +01:00
rcourtman bbefad27be Focus agent install flow by selected source 2026-05-08 01:06:07 +01:00
rcourtman 1450b442b0 Simplify infrastructure source onboarding 2026-05-08 00:57:19 +01:00
rcourtman fc6612c5ec Carry Patrol recommendation into Assistant handoffs 2026-05-08 00:55:59 +01:00
rcourtman 91a2904ed2 Make Patrol recommendation actions operational 2026-05-08 00:46:27 +01:00
rcourtman 4b1b7ea0d1 Add Patrol recommended next step 2026-05-08 00:38:32 +01:00
rcourtman dd15d23a35 Hydrate Patrol requester in Assistant handoffs
- hydrate approval requester identity into backend handoff actions
- include requester provenance in refreshed finding action context
- document the backend requester authority boundary
2026-05-08 00:26:04 +01:00
rcourtman ea3e1b216a Persist Patrol approval requester identity
- store requester provenance on approval records
- carry requester metadata through approval APIs and Assistant handoffs
- document the safe Patrol approval provenance boundary
2026-05-08 00:12:09 +01:00
rcourtman f65505ba04 Propagate agent host profiles to resources 2026-05-08 00:01:03 +01:00