Reclaim space: stale snapshots, orphaned disks, and idle VMs

The Hygiene tab is the backlog an export makes visible. Four findings, each with the reason it was raised.

**Stale snapshots**

Snapshots older than your threshold, newest-first by age, with the space deleting them returns. The threshold defaults to 30 days and is set on import. If some snapshots reported no size, the tab says so -- the reclaimable figure is understated rather than silently incomplete.

A snapshot whose timestamp will not parse is counted separately and treated as neither stale nor recent, so a date format we cannot read never becomes a finding you chase or a finding you miss.

**Disks with no matching VM**

A vDisk row naming a VM that vInfo does not list is a VMDK with no owner -- usually left behind when a VM was removed from inventory rather than deleted from disk. The table gives the datastore path so you can verify before deleting anything.

This check stands down entirely when the VM list is empty, because with no VMs every disk would look orphaned and that is a failed import, not a finding.

**Powered-off VMs holding storage**

Powered-off and suspended VMs that are still consuming disk. These are the safest reclaim candidates in the report: confirm nobody is waiting on them, snapshot or export what matters, then delete.

A VM whose power state could not be read is never listed here. Guessing "off" from a column we failed to read would manufacture reclaimable storage that is actually in use.

**Rightsizing candidates**

An RVTools export carries configuration, not utilization, so nothing here claims a VM is idle. Each row says which structural rule it broke:

- **More vCPUs than the host has cores per CPU** -- the VM spans NUMA nodes, which usually costs performance rather than adding it.
- **Above the vCPU ceiling you set** -- a configuration limit you chose.
- **Memory per vCPU below the floor you set** -- CPU-heavy for its RAM.
- **Large provisioned capacity never written** -- thin-provisioned space the guest has not used.

Templates are excluded; they never run.