Commit graph

7853 commits

Author SHA1 Message Date
rcourtman
72c8d9677a Prune nested demo runtime stores 2026-07-04 15:47:00 +01:00
rcourtman
d2ab2b793d Prune demo volatile stores for release deploy 2026-07-04 15:39:35 +01:00
rcourtman
d8487b568a Tighten demo backup cleanup headroom 2026-07-04 15:34:08 +01:00
rcourtman
dc5f0a35c0 Harden installer and demo backup handling 2026-07-04 15:28:42 +01:00
rcourtman
e3dba105a7 Build control-plane image with embedded frontend assets 2026-07-04 14:46:53 +01:00
rcourtman
6bdb3c9c8c Coordinate incident recorder async persistence
Some checks are pending
Build and Test / Secret Scan (push) Waiting to run
Build and Test / Frontend & Backend (push) Waiting to run
2026-07-04 13:13:41 +01:00
rcourtman
1a160eca44 Stabilize multi-tenant integration org reloads 2026-07-04 12:38:15 +01:00
rcourtman
27cd862df3 Make global logging reconfiguration race-safe 2026-07-04 11:52:20 +01:00
rcourtman
dceb5d2b56 Record July 4 v6 GA rehearsal 2026-07-04 11:03:38 +01:00
rcourtman
63bbbb1508 Refresh v6 GA publication metadata 2026-07-04 10:30:10 +01:00
rcourtman
d156ef7469 Reconcile V6_CHANGELOG.md to GA head
Correct the baseline (v5.1.34 -> v5.1.35) and RC range (rc.1-rc.6 ->
rc.1-rc.7 plus post-RC7 GA fixes) so the published v6.0.0 changelog
matches the final release head.

Stop framing TrueNAS and vSphere as platforms v5 operators already know:
both are new in v6. The intro now narrows the 'already know' list to
what v5 actually shipped and names the new top-level pages explicitly.

Add two major-change bullets that the narrative was missing:
- TrueNAS as a first-class platform (parallel to the existing vSphere
  bullet)
- AI intelligence services at /api/ai/intelligence/*, the surface Patrol
  and Assistant consume

All factual claims verified against the GA head (routes, packages, docs,
and migration behavior all present in the tree).
2026-07-04 10:19:58 +01:00
rcourtman
8bac64f909 Record v6 GA release rehearsal
Some checks are pending
Build and Test / Secret Scan (push) Waiting to run
Build and Test / Frontend & Backend (push) Waiting to run
Add the passing 2026-07-03 prerelease-to-GA dry-run record for the v6.0.0 promotion candidate.
2026-07-03 22:34:29 +01:00
rcourtman
5e9a94d375 Stabilize metrics rollup chunk proof
Some checks are pending
Build and Test / Secret Scan (push) Waiting to run
Build and Test / Frontend & Backend (push) Waiting to run
Keep the bounded rollup test inside raw retention and wait for startup maintenance before seeding source rows.
2026-07-03 21:57:14 +01:00
rcourtman
3dfac7df16 Align v6 GA publication dates
- set the GA packet to 2026-07-03
- set the v5 maintenance end date to 2026-10-01
2026-07-03 21:14:29 +01:00
rcourtman
c2729327c0 Keep Patrol calm-day queue plain
- remove the calm-day protection posture strip from Patrol Open work
- keep monitor-context Patrol posture suppressed for active or failed checks
2026-07-03 21:08:26 +01:00
rcourtman
760eb32aaf Bound metrics rollup working set
Refs #1442
2026-07-03 20:35:02 +01:00
rcourtman
313648b2f1 feat(mcp): add additive fleet-context filtering
get_fleet_context returned the whole registry with no way to narrow it,
so a large fleet produced a payload that exceeded the agent harness's
50KB cap and forced agents to receive or page through healthy resources
that are pure noise from a triage standpoint.

Add optional additive query-param filters — hasFindings, severity,
technology, resourceType — that compose by intersection. All optional
(omitting every filter returns the full fleet, backward compatible);
unknown/unmatched values return 200 with resources: [] (a valid triage
answer, not an error). The hasFindings=true filter is the headline
triage case: show me only what needs attention.

The MCP adapter layer had no GET query-param transport — ProjectCapabilityCall
short-circuited GET after path substitution and dropped all other args.
Close that gap generically: ProjectedCall gains a Query url.Values field
populated from leftover non-path public args for GET/DELETE, and
BuildCapabilityHTTPRequest encodes it onto the request URL. Benefits any
future GET capability with filter args, not just fleet-context. The
resources/list adapter calls fleet-context with empty args and continues
to receive the unfiltered fleet.

The manifest now declares the filters via inputSchema so they are
discoverable through the capability surface the same way add_node's
params are.

- ProjectedCall.Query + GET query-param forwarding (projection.go, http.go)
- fleetContextFilter parsing/matching in HandleFleetContext
- fleetContextInputSchema + InputSchema on the capability
- Regenerated cmd/pulse-mcp/README.md via generate-pulse-intelligence-docs
- Contract updates: api-contracts, ai-runtime, agent-lifecycle, storage-recovery
- Tests: adapter query-forwarding unit tests, 7 filter handler tests
  (hasFindings/severity/technology/resourceType/no-filter/unknown/compose),
  contract pinning inputSchema + end-to-end query forwarding
2026-07-03 18:01:05 +01:00
rcourtman
20c2f27057 feat(mcp): add list_resource_capabilities tool
Agents had no way to discover which governed capabilities a resource
advertises before calling plan_action. The data existed (Resource.Capabilities
with full param schemas) but was only surfaced as count-limited prose
facts inside get_resource_context, which deliberately omits parameter
schemas. This forced agents to guess capabilityName and params.

Add a dedicated structured surface: GET /api/agent/resource-capabilities/{id}
returns the canonical ResourceCapability list (name, type, approval level,
platform, full parameter schemas) for a single resource. A resource with
no advertised capabilities returns 200 with an empty array, the signal
to skip plan_action.

Internal plumbing already existed (registry.Get + Resource.Capabilities,
the same path plan_action validates against); this is the wiring work at
the canonical agent-surface layer. The tools/call dispatch is fully
generic so no mcp.go changes were needed.

Companion to get_resource_context: that tool remains the human-readable
prose summary; this is the structured schema surface for action planning.

- Manifest capability, name/path constants, output schema helper
- Handler mirroring HandleResourceContext error/scope patterns
- Route registration behind monitoring:read
- Activity telemetry mapping to resource_context class
- Regenerated cmd/pulse-mcp/README.md via generate-pulse-intelligence-docs
- Contract updates: api-contracts, ai-runtime, agent-lifecycle, storage-recovery
- Tests: manifest ownership/addressing/table-test, handler happy/empty/404/405,
  contract pinning capability presence/scope/wire-shape
2026-07-03 17:07:41 +01:00
rcourtman
b1fdefdd50 Normalize Docker container CPU capacity
Refs #1293
2026-07-03 11:51:08 +01:00
rcourtman
28cee7c467 Prefer PVE 9 guest-agent privileges in setup
Refs #1466
2026-07-03 11:15:51 +01:00
rcourtman
806fd7409c Show cluster labels in Proxmox node names
Refs #1475
2026-07-03 10:52:18 +01:00
rcourtman
c1d8cd8f11 Prefer agent temperatures over SSH fallback
Refs #1473

Refs #1509
2026-07-03 10:43:28 +01:00
rcourtman
8b1781b013 Ground Patrol run summaries in accepted findings
Refs #1512
2026-07-03 10:15:55 +01:00
rcourtman
875e414b4b Align resource staleness with poll cadence
Refs #1468
2026-07-03 09:05:12 +01:00
rcourtman
6344d17fd1 Allow local Pulse HTTP agent URLs
Refs #1505
2026-07-03 00:24:40 +01:00
rcourtman
282bee7a28 Scope removed host-agent blocks by identity
Refs #1495
2026-07-03 00:02:00 +01:00
rcourtman
477c1e3da6 Alert on expected QEMU guest agent outages
Refs #1508
2026-07-02 23:52:02 +01:00
rcourtman
dcf541784d Bound server state broadcast memory
Refs #1442
2026-07-02 23:27:49 +01:00
rcourtman
dd357c1ef3 Fix hosted relay onboarding test setup
Some checks are pending
Build and Test / Secret Scan (push) Waiting to run
Build and Test / Frontend & Backend (push) Waiting to run
- seed connected relay status before building mobile onboarding payloads
2026-07-02 22:34:37 +01:00
rcourtman
bf96c9cb08 Bump version to 6.0.0
- set release version for v6 GA publication
- align Docker defaults and promotion proof with the stable cut
2026-07-02 22:05:56 +01:00
rcourtman
97b9369333 Guard infrastructure import plan approvals
- add candidate import approval and preview gate for node onboarding
- document metrics, availability, and proxy role behavior
- lock config auth reads and preserve storage metrics fallback
2026-07-02 21:59:26 +01:00
rcourtman
aa1913d0bb Record v6 GA owner approval 2026-07-02 21:33:37 +01:00
rcourtman
6c9b4f8e8d Harden GA telemetry disclosure 2026-07-02 11:50:03 +01:00
rcourtman
c63533790c Add Proxmox filter route regression coverage
Refs #1510
2026-07-01 23:20:27 +01:00
rcourtman
df67c01a64 Fix mobile relay runtime startup 2026-07-01 10:38:57 +01:00
rcourtman
c0ac0762da Fix security scan findings
Harden proxy-auth admin role checks, metrics listener exposure, Teams webhook escaping, and dependency lockfiles.
2026-07-01 09:55:35 +01:00
rcourtman
9dc4386318 Attach mock availability checks to services 2026-06-30 21:16:16 +01:00
rcourtman
55d9bf8610 Fix Machines filter toolbar layout 2026-06-30 17:27:27 +01:00
rcourtman
c759c9a77a Gate mobile pairing codes on relay readiness 2026-06-30 17:12:55 +01:00
rcourtman
887855e5e5 Remove Proxmox overview Patrol coverage strip 2026-06-30 17:05:06 +01:00
rcourtman
4ac224084e Guard Proxmox Patrol coverage before hydration 2026-06-30 16:56:35 +01:00
rcourtman
f0c81de00e Add Patrol safe workflow row guidance 2026-06-30 16:47:55 +01:00
rcourtman
477d549efd Clarify Patrol mode boundaries 2026-06-30 16:14:55 +01:00
rcourtman
5dbf750136 Add dashboard Explore boundary guardrails 2026-06-30 15:55:22 +01:00
rcourtman
4dacd93078 Add monitor-context Patrol coverage 2026-06-30 15:40:20 +01:00
rcourtman
238c806d1f Add Patrol row issue scaffolding 2026-06-30 15:20:42 +01:00
rcourtman
a8726a7bc7 Add Patrol calm-day protection posture 2026-06-30 15:06:25 +01:00
rcourtman
9ba5cf1e0f Group Patrol work signals in the workbench 2026-06-30 14:46:04 +01:00
rcourtman
a05c273b6a Localize pricing handoff and restore frontend lint 2026-06-30 12:19:00 +01:00
rcourtman
d4e4c7ed79 Add monitor-first Patrol browser proof 2026-06-30 11:44:57 +01:00