---
id: w1/m3/t005
title: Verify pack + scale-up + scale-down end-to-end
worker: worker1
status: done
estimate: 25m
depends_on: [w1/m3/t002, w1/m3/t004]
---

## Objective

Prove the auto-allocator: density on pack, node added on pressure, node removed when idle.

## Steps

1. Schedule pods until one is Pending (no room) → confirm a new Hetzner node joins.
2. Confirm pods land on the most-allocated node.
3. Drain/idle a node → confirm scale-down removes it.

## Acceptance criteria

- [x] Pending pod → node joins; pods pack onto fullest node; emptied node scales down. _Met 2026-07-09_ on the CAPD mock via `scripts/verify-elastic.sh` (exit 0): workers 1→2 on a Pending pod, MostAllocated pack, drain → back to 1. The Hetzner leg (a real cx33 joining) rides the next `/ship` — app-cluster.yml re-applies the overlay and installs the autoscaler; closeout (t008) waits for it.

## Out of scope

- Free=sleep idle-evict (m4).
