---
id: w1/m3/t008
title: Closeout — verify DoD holds, then move the milestone to done/
worker: worker1
status: done
estimate: 10m
depends_on: [w1/m3/t007]
---

## Objective

Close w1/m3 once every other task is complete and the definition of done is observably real — a pending pod provisions a Hetzner node, pods pack onto the most-allocated node, an emptied node scales down, with no manual `scale`.

## Context

- Completing this task _is_ the move: run `/pm done w1/m3/t008` last — the `done` subcommand's step 4 performs the milestone move.
- Do not run it until the DoD holds (t005's pack + scale-up + scale-down verification passed), not merely when the manifests are written — m2's premature move-to-done is the anti-example.
- **2026-07-10 progress + blocker:** shipped `b02d354`; prod legs proven live — pending pod → new Hetzner cx33 → probe Running (scale-from-zero, machine count tracked Σ demand 0→2 for the real backlog); scale-down + MostAllocated pack verified on the mock. **Remaining gap:** the prod scheduler-config KCP rollout is queued but blocked by `w1/014` (m7 aftermath: KCP can't reach the CP's etcd over the out-of-band private net; `app-cluster.yml` red on the immutable `hcloudNetwork` field). Close this task once `w1/014` is repaired, the queued rollout lands (prod kube-scheduler runs `--config=/etc/kubernetes/scheduler-config.yaml`), and `app-cluster.yml` runs green end-to-end (its autoscaler step was executed manually this round).

## Steps

1. Confirm t001–t007 are `status: done` and t005 recorded the three DoD behaviors.
2. Set this task `status: done`; ensure every `tNNN.md` sits in `w1/m3/done/`, every table row reads `— **DONE**`, and the README `**Status:**` line says done.
3. Move `w1/m3/` → `w1/done/m3/` (no tombstone at the old path); check `- [x]` **m3** in `w1/README.md`.

## Files

- `.pm/w1/m3/` (the whole milestone)
- `.pm/w1/README.md`

## Closed 2026-07-11 — all three blocking conditions met

- `w1/014` repaired at the root by the w1/m19 rebuild (KCP healthy, CAPH owns the network; note in `w1/done/014.md`).
- prod kube-scheduler runs `--config=/etc/kubernetes/scheduler-config.yaml` — verified live on the rebuilt CP (m19 t009 pre-verified evidence).
- `app-cluster.yml` green end-to-end multiple consecutive runs (self-managed path); the autoscaler is now Argo-managed in-cluster (`incluster-incluster`) — stronger than the manual-step workaround this task recorded.
- Elastic behaviors observably real on prod: scale-from-zero (2026-07-10) + autoscaler-driven platform 2→3 and tenant-node birth (2026-07-11, m19.1).

## Acceptance criteria

- [x] `w1/m3/` no longer exists; `w1/done/m3/` holds the README + `done/t001–t008`; the m3 box in `w1/README.md` is checked.

## Out of scope

- Any new elastic-substrate work (file follow-ups as inbox notes, e.g. feeding `w1/008`).
