Changes in version 0.2.0 - Removed the incoming DESCRIPTION spelling NOTE by replacing "loadability" with "shared-library" and shortened the report examples to one scan each. - Reused command and native probe results within each report to avoid repeated PowerShell launches on Windows. A new report or memory sample observes fresh dynamic values, and temporary observations are discarded even after errors. - Preserved missing memory for malformed or partly unavailable CUDA process accounting, absent worker rows, and empty sample lists. - Prevented OS NVIDIA fallback rows from overriding an initialized CUDA driver that reports no visible devices when nvidia-smi is unavailable. - Corrected has_gpu() so physical-only CUDA devices hidden from the process are not reported as usable process-visible GPUs, while retaining operating- system fallback detection when CUDA provides no device observations. - Separated successful CUDA driver initialization from device-count query status and exposed driver_device_count_status in cuda_info(). - Made hardware_manifest() reuse one CUDA/device snapshot across its CUDA, NCCL, device, and optional memory sections. - Added gpu_memory_peak() to combine worker-process samples by GPU UUID and return the highest complete observed memory sum for every expected device. Missing observations remain explicitly unmeasured rather than becoming zero. - Added cuda_libraries(), a consolidated loadability table for the CUDA driver, CUDA runtime, cuBLAS, cuFFT, cuSOLVER, cuRAND, and NCCL. Optional libraries do not affect has_cuda(). - Added optional nccl_info() inspection that dynamically loads NCCL, queries its version, and reports process-visible CUDA devices without creating a communicator or making NCCL a requirement for CUDA use. - Added public cpu_info() with physical, logical, and process-available core counts, packages, threads per core, CPU features, and structured provenance. - Added system_memory_info() with host and effective container RAM, swap, and current-process resident-memory fields in bytes on Linux, macOS, and Windows. - Extended hardware_info() and hardware_manifest() with host memory and explicit visible/physical GPU counts. Multi-GPU visibility is not presented as evidence that a consuming package can execute across multiple GPUs. - Added gpu_memory_sample() for timestamped process-level GPU memory samples. CUDA samples are matched by process ID and GPU UUID; Metal samples use MTLDevice.currentAllocatedSize for the current R process. - Added hardware_manifest() for versioned, serializable benchmark provenance covering the host, devices, generic compute components, and memory. - Preserved gpu_memory_info() as the backward-compatible device-wide memory snapshot API. - Added explicit measurement status and reason codes when process memory is unavailable or unsupported, including Windows WDDM limitations. Changes in version 0.1.0 (2026-09-26) - Initial CRAN release with framework-independent CPU, GPU, CUDA, Metal, ROCm, and OpenCL discovery.