Pulse/internal
rcourtman 294ac1da04 platforms: close remaining gaps — Swarm services, vSphere fixtures, TrueNAS systems, source-filter suppression
Four documented platform-page gaps from the prior round are closed:

1. **Docker Swarm services canonical projection.** The unified resource
   adapter requires `host.Swarm.ClusterID`/`ClusterName` for
   `dockerSwarmClusterKey` to produce a stable service source ID; the
   mock generator was leaving those fields empty so all generated
   services were dropped. Anchor every mock Swarm host to a single named
   cluster (`mock-swarm-cluster-1` / `edge-swarm`) so manager and worker
   hosts share Swarm identity and their services deduplicate correctly
   across managers. Live mock survey now exposes 15 docker-service rows
   (was 0).

2. **Docker Swarm services UI restored.** The `/docker/services`
   sub-tab is back. `DockerPageSurface` mounts a `PlatformResourceTable`
   with the canonical operator toolbar (search + status chips +
   counter); `dockerPageModel.ts` re-introduces the services bucket;
   the model test asserts the three-tab shape and the services bucket.

3. **TrueNAS Systems / Overview sub-tab restored.** Re-survey of the
   canonical adapter confirms `truenas.FixtureRecords` already emits
   the top-level TrueNAS appliance as a unified `agent` row tagged
   with the `truenas` platform (see `internal/truenas/provider.go::
   truenasRecordsFromSnapshot`). TrueNAS now defaults to
   `/truenas/overview` and the page model exposes a `systems` bucket.

4. **VMware fixture inventory scaled to a mature SMB lab.**
   `internal/vmware/fixtures.go::appendEdgeClusterFixtures`
   programmatically appends an Edge DC with 3 more ESXi hosts
   (esxi-05..07), 12 more VMs across Tier 1 / Stateful / Workstations /
   Observability / Archive tiers (mixed healthy/warning/powered-off,
   mixed Linux/Windows guest OS), and 4 more datastores (VMFS / NFS41 /
   vSAN / cold-iSCSI). Live mock survey now shows 43 VMs (was 31), 18
   agents (was 15), and 60 storage rows (was 55) across two datacenters.

5. **TrueNAS / vSphere Storage source filter chip suppression.**
   `StoragePageControls` gains a `suppressSourceFilter` prop and
   `Storage.tsx` automatically applies it whenever `forcedSourceFilter`
   is set, so platform-page embeds no longer render the now-locked
   Source filter chip alongside the operator toolbar.

Resource survey under the new mock baseline (live `/api/resources`):
- TOTAL 342 unique resources (was 307)
- app-container: 75, storage: 60, system-container: 44, vm: 43,
  pod: 40, physical_disk: 19, agent: 18, docker-service: 15,
  k8s-deployment: 14, docker-host: 5, network-endpoint: 5,
  pbs: 2, pmg: 1, k8s-cluster: 1

Browser verification (Playwright, chromium, live mock-mode dev runtime):
- 9 tests pass. Every populated sub-tab — Docker Hosts / Containers /
  Swarm services, Kubernetes Clusters / Nodes / Pods / Deployments,
  TrueNAS Systems / Storage / Apps, vSphere Hosts / VMs / Storage —
  asserts both populated canonical rows AND a visible operator search
  input.

Targeted vitest (77 files / 358 tests) + Go tests (./internal/vmware,
./internal/mock, ./internal/monitoring) all green.

Contracts updated:
- `storage-recovery.md` Shared Boundaries: TrueNAS defaults to the
  Systems overview now that the canonical adapter emits a TrueNAS-
  platform agent row; `suppressSourceFilter` auto-applies under
  `forcedSourceFilter`.
- `unified-resources.md` Extension Points: same; the canonical TrueNAS
  adapter emits the appliance as a unified resource so the builder
  default lands on a populated Systems sub-tab.
- `Storage.test.tsx` extended with the source-filter suppression
  contract assertion.
2026-05-16 08:35:44 +01:00
..
actionplanner
agentexec add verify_window to agentexec command policy 2026-05-12 21:53:49 +01:00
agenttls
agentupdate
ai Align discovery prompt governance 2026-05-15 23:11:59 +01:00
alerts Replay quiet-hours alert notifications 2026-05-13 11:54:56 +01:00
api Add settings discovery refresh action 2026-05-15 23:27:08 +01:00
bootstrap
cloudcp Ensure cloud emails use support reply-to 2026-05-13 12:10:02 +01:00
config persist remind_at and remind_count on will_fix_later findings 2026-05-13 01:13:38 +01:00
crypto
deploy
discovery
dockeragent
hostagent Clarify storage topology and recovery guards 2026-05-14 20:51:32 +01:00
hosted
hostmetrics
kubernetesagent
license
logging
maintenancesentinel Record maintenance evidence in resource timelines 2026-05-13 14:19:59 +01:00
metrics
mock platforms: close remaining gaps — Swarm services, vSphere fixtures, TrueNAS systems, source-filter suppression 2026-05-16 08:35:44 +01:00
mockmode
mockmodel
mockruntime
models Clarify storage topology and recovery guards 2026-05-14 20:51:32 +01:00
monitoring mock(fixtures): scale default fixture sizes to a mature SMB homelab 2026-05-16 08:16:00 +01:00
notifications Fix grouped notification cancellation 2026-05-13 13:00:43 +01:00
platformsupport Show platform versions in system badges 2026-05-08 15:07:09 +01:00
recovery add VerifyIntent rollup substrate 2026-05-12 22:23:55 +01:00
relay Aggregate simplify-review cleanups (no behavior change) 2026-05-12 17:32:11 +01:00
remoteconfig Fix default agent rollout status noise 2026-05-14 14:37:24 +01:00
repoctl Fix pre-commit sibling roots in worktrees 2026-05-13 15:56:19 +01:00
securityutil
sensors
servicediscovery Add settings discovery refresh action 2026-05-15 23:27:08 +01:00
ssh/knownhosts
storagehealth Fix Unraid storage health explanations 2026-05-08 12:18:09 +01:00
system
telemetry
testutil
truenas Fix TrueNAS system info buildtime decoding 2026-05-15 14:21:39 +01:00
unifiedresources Clarify storage topology and recovery guards 2026-05-14 20:51:32 +01:00
updates Verify SSHSIG on in-app update artifacts 2026-05-09 23:14:07 +01:00
updatesignature
utils
vmware platforms: close remaining gaps — Swarm services, vSphere fixtures, TrueNAS systems, source-filter suppression 2026-05-16 08:35:44 +01:00
websocket