Commit Graph

188 Commits

Author SHA1 Message Date
rcourtman e38332de86 Keep Patrol evidence aligned with live findings 2026-05-08 11:08:53 +01:00
rcourtman b56428e8cf Promote Pulse Intelligence governed lane 2026-05-08 02:54:48 +01:00
rcourtman d2625c4dfb Persist Patrol settings with readiness handoff
Refs #1463
2026-05-07 19:26:00 +01:00
rcourtman d7b17a6a2d Add paid runtime attribution release gate 2026-05-07 18:58:05 +01:00
rcourtman 9d1fabef03 Gate Patrol readiness across runtime entrypoints
Refs #1463
2026-05-07 18:24:47 +01:00
rcourtman 371ce99694 Add Patrol runtime readiness contract
Refs #1463
2026-05-07 17:51:40 +01:00
rcourtman 9cbd3dcbc6 Fail closed malformed approval expiry state 2026-05-07 16:56:47 +01:00
rcourtman 812c86692d Route Assistant handoffs through model context 2026-05-07 03:00:58 +01:00
rcourtman 990f9fbc21 Show live approval state in Assistant handoff 2026-05-07 00:23:27 +01:00
rcourtman 75e3cb76fd Add structured Patrol investigation records 2026-05-06 16:31:51 +01:00
rcourtman 2f5aa20122 Add mock availability endpoint fixtures
Refs #1460
2026-05-06 14:08:03 +01:00
rcourtman d6ca8b12e6 Add agentless availability targets
Refs #1460
2026-05-06 10:35:34 +01:00
rcourtman e3c1dad256 Hide public demo admin reads 2026-05-04 09:14:09 +01:00
rcourtman c436e1a2a2 Add CLI fleet connection reads 2026-05-04 08:40:34 +01:00
rcourtman 5fbe723ad9 Add CLI action planning adapter 2026-05-04 00:05:21 +01:00
rcourtman b11f57ed62 Add API-first action planning endpoint 2026-05-03 23:51:54 +01:00
rcourtman d994a7a60d Resolve agent-ready operations target scope 2026-05-03 23:27:49 +01:00
rcourtman 4e2b62e89b Retire legacy Storage and Workloads filter helpers after FilterBar migration
Deletes files that no runtime path imports after the migration to
chip-based FilterBar:

  Storage's three-layer filter indirection:
  - StorageFilter.tsx (legacy filter shell)
  - StorageControls.tsx (subtab + filter pass-through wrapper)
  - useStorageFilterToolbarModel.ts (legacy active-filter / reset hook)
  - useStoragePageControlsModel.ts (sortDisabled + groupBy gating)
  - useStorageControlsModel.ts (subtab + node-filter wiring)
  - their tests

  Workloads filter state hook:
  - useWorkloadsFilterState.ts (replaced by inline FilterBar wiring;
    countActiveWorkloadsFilters / hasActiveWorkloadsFilters stay in
    workloadsFilterModel.ts)
  - its test

The StorageStatusFilter and StorageGroupByFilter type aliases that
StorageFilter.tsx exported fold into the existing canonical types in
storagePageState.ts (StorageStatusFilterValue) and storageModelCore.ts
(StorageGroupKey), keeping useStorageFilterState.ts alive without the
deleted shell.

PageControls.tsx and its companion FilterToolbar primitives stay in
the tree because the alert-history filter card and the Kubernetes
deployments drawer still consume them. The canonical claim shifts:
FilterBar is the chip-based shell for catalog-driven page filters
(Infrastructure, Workloads, Storage, Recovery Protected items, Recovery
events). PageControls remains for non-migrated surfaces.

Subsystem contracts and registry updated:
- frontend-primitives.md: adds FilterBar files to Canonical Files;
  describes FilterBar as the canonical page-level filter shell for
  catalog-driven resource lists; PageControls described as the legacy
  fallback for non-migrated surfaces.
- performance-and-scalability.md: drops useWorkloadsFilterState
  references; describes Workloads' FilterBar / viewOptionsTrailing
  composition.
- storage-recovery.md: replaces "PageControls toolbar rail" prose with
  FilterBar / viewOptionsTrailing for both Storage and Recovery events;
  notes the legacy three-layer indirection retired.
- registry.json: drops deleted file paths from owned_files,
  verification.exact_files, and verification.path_policies entries.
- canonical_completion_guard_test.py + subsystem_lookup_test.py: drop
  deleted file paths from hard-coded fixtures so the governance helper
  tests track the registry.
- SharedPrimitives.guardrails.test.ts: adds regression assertions that
  StoragePageControls no longer imports the deleted shells.
2026-05-01 10:51:22 +01:00
rcourtman daf825dee6 Remove customer commercial analytics wrappers 2026-04-30 11:46:16 +01:00
rcourtman 0bbba3b818 Restrict commercial metrics reporting access 2026-04-30 10:00:35 +01:00
rcourtman 0714fec8af Guard diagnostics against internal analytics 2026-04-30 09:41:16 +01:00
rcourtman b413a56d85 Canonicalize Docker Podman infrastructure copy 2026-04-30 00:20:59 +01:00
rcourtman cbc34e7302 Canonicalize Docker and Podman token copy 2026-04-30 00:04:35 +01:00
rcourtman 72fe17a5d9 Extend paid claim proof boundary 2026-04-29 23:40:32 +01:00
rcourtman 65fe50ad5b Canonicalize remaining table shells 2026-04-29 23:15:12 +01:00
rcourtman f6bf4779be Canonicalize platform drawer table shells 2026-04-29 20:41:31 +01:00
rcourtman c743a231b8 Retire dashboard landing surface 2026-04-29 16:25:09 +01:00
rcourtman 535e623ad0 Surface resource action audit history 2026-04-29 14:48:02 +01:00
rcourtman 8fa84b7ad1 Polish dashboard problem resource wording 2026-04-26 13:15:30 +01:00
rcourtman a2c101379a Guard stable updater from prerelease tags
Refuse prerelease-shaped tags and explicit GitHub prerelease responses in the unattended stable updater before installer invocation.

Add installability tests and proof routing for the auto-update prerelease refusal guard.
2026-04-25 23:49:27 +01:00
rcourtman 9bd67fe2c1 Add fleet governance projection 2026-04-25 23:41:38 +01:00
rcourtman 97bf4af36d Add platform support floor projection 2026-04-25 23:01:01 +01:00
rcourtman acbed82d75 Add governed action audit preflight 2026-04-25 22:35:19 +01:00
rcourtman 175f8b4bf1 Add relationship-aware resource timelines 2026-04-25 22:07:57 +01:00
rcourtman c8d72cf06f Align AI data handling disclosures 2026-04-25 21:44:26 +01:00
rcourtman fc5325ab80 Add resource data handling settings surface 2026-04-25 20:23:40 +01:00
rcourtman d57987d48d Govern Pulse Cloud control plane ownership 2026-04-23 22:54:57 +01:00
rcourtman a5687cd22e Formalize v6 paid-surface classification 2026-04-23 14:53:41 +01:00
rcourtman 48e4ec818c Make self-hosted settings plan-owned 2026-04-22 19:49:50 +01:00
rcourtman dad0529a2f Domain-separate relay channel HKDF derivation 2026-04-22 15:04:09 +01:00
rcourtman c0ac251316 Require target-organization approval for org shares 2026-04-22 09:16:40 +01:00
rcourtman 70b91759d2 Harden secure local key file handling 2026-04-22 05:13:01 +01:00
rcourtman f7c1d9b629 Require accepted org invitations and stable runtime capabilities 2026-04-22 03:06:22 +01:00
rcourtman 669908acd4 Normalize workloads and recovery page headers 2026-04-21 17:51:33 +01:00
rcourtman 6db9aeadcf Prepare the v6 stable promotion candidate 2026-04-20 14:09:17 +01:00
rcourtman f62b6f5e6d Promote Pulse Account to a governed lane 2026-04-20 09:37:15 +01:00
rcourtman d75b10df57 phase 9 — retire stop-monitoring & legacy per-type shells
Delete the stop-monitoring dialog plus the retired per-type settings
shells now that the unified ConnectionEditor replaces them: remove
PlatformConnectionsWorkspace / ProxmoxSettingsPanel /
ProxmoxDirectWorkspace / NodeModal et al and the accompanying tests.
Strip the lingering reporting-state hook from
useInfrastructureOperationsState and the guardrail test reinforces the
removal. Reconcile registry.json, frontend-primitives.md,
api-contracts.md, agent-lifecycle.md, status.json, and the
release-control guard/test fixtures so governance audits stay clean.
2026-04-19 16:55:05 +01:00
rcourtman 9c3d96cab2 Add unified connections API (list + probe) with Disabled flag
Introduces GET /api/connections and POST /api/connections/probe as the
backend half of the one-ledger / one-editor connection redesign.

- GET /api/connections aggregates PVE/PBS/PMG/VMware/TrueNAS/agent rows
  into a unified Connection shape with derived state (active, paused,
  unauthorized, unreachable, stale, pending) computed from in-memory
  scheduler health plus agent Host.LastSeen. No new persisted state.
- POST /api/connections/probe fingerprints a host across the five
  supported products in parallel (2s dial + 1s read, 3s total, max 5
  concurrent). Admin-gated (RequireAdmin + ScopeSettingsWrite) to block
  unauthenticated SSRF against internal hosts.
- Disabled bool on PVEInstance/PBSInstance/PMGInstance (zero-value =
  enabled, preserves existing nodes.json); pollers skip disabled
  instances at client init, reconnect, and per-node iteration.
- NodeConfigRequest/Response gain Enabled; write path translates
  *bool -> Disabled so omitted field leaves state untouched.
- ConnectionsAPI frontend client (list/probe) typed off the Go shape.

Contracts updated: api-contracts, monitoring, agent-lifecycle,
performance-and-scalability, storage-recovery. Proofs added:
contract_test.go JSON snapshot for Connection and ProbeResponse,
monitoring guardrails for the Disabled-skip behavior, and a vitest
mock-client test for ConnectionsAPI.

Frontend editor / drawer / table rewrite lands in a separate block.
2026-04-19 11:42:53 +01:00
rcourtman 329f59eddb Add health-state indicators to Infrastructure, Storage, Workloads, and Recovery summaries
Summary cards now show degraded/alerting/failing counts rather than raw
online/offline splits, giving operators an at-a-glance health posture without
drilling into the full resource list.

- InfrastructureSummary/infrastructureSummaryModel: adds degraded and alerting
  counts derived from resource statuses and active alerts
- StorageSummary/StoragePageSummary/useStoragePageSummary: adds poolsDegraded
  and disksFailing indicators, shows "all healthy" when zero degradation
- WorkloadsSummary/useDashboardWorkloadDerivedState: adds alerting guest count
  from activeAlerts accessor, included in summary header counts
- RecoverySummary: adds aggregate health-state summary row
- useDashboardState: threads alertsEnabled through workload derived state
- Fix monitored-system cap test helper to use TierEnterprise so limits are
  honored (self-hosted tiers are now uncapped per the v6 product model)
- Update registry and governance test snapshots to include
  useStoragePageSummary.test.ts in the storage-product-surface proof set
2026-04-19 08:35:45 +01:00
rcourtman 295753be1a Move infrastructure IA split into settings shell 2026-04-18 20:45:30 +01:00