# 0. pin the image to an ID, never a family aws ec2 describe-images --owners 136693071363 --filters "Name=name,Values=debian-13-amd64-*" \ --query 'sort_by(Images,&CreationDate)[-1].ImageId' gcloud compute images describe-from-family debian-13 --project debian-cloud --format="value(name)" az vm image list --publisher Debian --offer debian-13 --sku 13-gen2 --all \ --query "[?offer=='debian-13'] | sort_by(@,&version)[-1].urn" -o tsv # 1. confirm the SKU is actually offered to you before launching az vm list-skus -l eastus --size Standard_D2s_v7 --query "[].name" -o tsv # 2. scan BEFORE installing anything -- packages by dpkg, never by command -v dpkg-query -f '${db:Status-Status}\n' -W nvme-cli dmidecode smartmontools dpkg-query -f '.\n' -W | wc -l # 3. tools by an sbin-inclusive PATH, or you will invent false negatives PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin command -v nvme smartctl turbostat # 4. is the facility absent, or just unreadable? absent = no package will help ls /sys/class/hwmon /sys/class/powercap /sys/devices/system/edac 2>&1 lsmod | grep -c rapl # loaded modules + empty powercap = recoverable grep -m1 microcode /proc/cpuinfo # 0xffffffff = hypervisor is masking it # 5. the backup GPT header, on any volume you have ever grown sudo dmesg | grep -i 'GPT:' sudo sgdisk -e /dev/nvme0n1 # only if the mismatch persists after boot # 6. install Claude Code and let the machine read itself curl -fsSL https://claude.ai/install.sh | bash claude -p "$(cat brief.txt)" --allowedTools Bash