Background
promptlm-app's acceptance workflow (.github/workflows/acceptance.yml) currently provisions a cx33 Hetzner VM (4 vCPU AMD, 8 GB RAM). The new native-acceptance suite needs to build the Spring Boot 4 webapp with GraalVM native-image, which asks for >6.15 GB during the build-universe phase and OOMs on cx33 during the compile phase (stage 6/8) even with 8 GB swap.
We picked cx53 (AMD EPYC shared, 16 vCPU, 32 GB RAM, 320 GB disk, ~€0.036/h) as the bump target. Reasons:
- Same shared-AMD family as
cx33 — snapshot compatibility almost certainly preserved (cx33 → cx53 is a size bump within one family). The org-bake snapshot referenced by HETZNER_RUNNER_SNAPSHOT_ID is the path that matters.
- Cheaper than
cpx42 (the dedicated-vCPU AMD variant, ~€0.046/h) with double the RAM. Native-image is memory-bound, not CPU-bound, so the dedicated-vCPU premium buys nothing.
- Not affected by the
cx42 Intel-deprecation gotcha — that was the cx42 SKU name specifically (type 106). The cx5x tier is on the current AMD line.
PR promptLM/promptlm-app#390 flips server_type: cx33 → server_type: cx53.
Asks
Acceptance criteria
promptLM/promptlm-app's acceptance workflow on PR #390 (or any subsequent full-profile run) provisions a cx53 successfully and reaches native-image compile without OOM.
- Cost increase documented in
docs/hetzner-runners.md: cx53 = €0.036/h (~€0.018 per ~30-min full-profile run).
Context links
- promptlm-app PR #390 — flips
cx33 → cx53
- promptLM/.github#36 — adjacent snapshot-bake work (GraalVM + Playwright pre-install); not blocked on this, but if the bake gets re-rolled it should be exercised on
cx53 too.
- Hetzner SKU reference:
cx53 = AMD EPYC shared, 16 vCPU, 32 GB RAM, 320 GB disk, fsn1 region.
Note
This issue originally asked for cpx42. After review, cx53 is the better target: cheaper, more RAM, same family as the existing cx33. The body above reflects the final ask.
Background
promptlm-app's acceptance workflow (.github/workflows/acceptance.yml) currently provisions acx33Hetzner VM (4 vCPU AMD, 8 GB RAM). The new native-acceptance suite needs to build the Spring Boot 4 webapp with GraalVMnative-image, which asks for >6.15 GB during the build-universe phase and OOMs oncx33during the compile phase (stage 6/8) even with 8 GB swap.We picked
cx53(AMD EPYC shared, 16 vCPU, 32 GB RAM, 320 GB disk, ~€0.036/h) as the bump target. Reasons:cx33— snapshot compatibility almost certainly preserved (cx33 → cx53 is a size bump within one family). The org-bake snapshot referenced byHETZNER_RUNNER_SNAPSHOT_IDis the path that matters.cpx42(the dedicated-vCPU AMD variant, ~€0.046/h) with double the RAM. Native-image is memory-bound, not CPU-bound, so the dedicated-vCPU premium buys nothing.cx42Intel-deprecation gotcha — that was thecx42SKU name specifically (type 106). Thecx5xtier is on the current AMD line.PR promptLM/promptlm-app#390 flips
server_type: cx33→server_type: cx53.Asks
cx53is acceptable under any org-wide SKU policy / quota / billing alert in this repo. If a whitelist exists indocs/hetzner-runners.md, addcx53(and optionallycx43/cx63for future flexibility).HETZNER_RUNNER_SNAPSHOT_IDis compatible withcx53— Hetzner snapshots are usually portable across SKUs in the same architecture family, so no fresh bake should be needed. If a re-bake is required, schedule it.Acceptance criteria
promptLM/promptlm-app'sacceptanceworkflow on PR #390 (or any subsequent full-profile run) provisions acx53successfully and reaches native-image compile without OOM.docs/hetzner-runners.md: cx53 = €0.036/h (~€0.018 per ~30-min full-profile run).Context links
cx33→cx53cx53too.cx53= AMD EPYC shared, 16 vCPU, 32 GB RAM, 320 GB disk,fsn1region.Note
This issue originally asked for
cpx42. After review,cx53is the better target: cheaper, more RAM, same family as the existingcx33. The body above reflects the final ask.