Loading…
Reference in a new issue
No description provided.
Delete branch "2725"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes swamp-club #2725 and #2731.
Problem
@swamp/hetzner-cloud/imageslistwas unusable against a real project:typefilter, soGET /imagesreturned Hetzner's whole public catalog with no way to scope to snapshots/backups.image.namealone. Public images repeat a name across CPU architectures (x86 and armubuntu-24.04), so the run failed output validation withDuplicate data instance name.Adjacent (#2731): images has no
nameglobal argument, soupdateandchange_protectionlooked for state undercurrentwhileget/adoptwrote it under the image name —adoptthenupdatefailed with "No data found".Changes (all in the Hetzner codegen;
model/hetzner-cloudis regenerated)extractListFiltersreads each collection GET's query parameters from the spec, droppingpage/per_page/sort/label_selector. ANON_UNIQUE_NAME_RESOURCESallowlist (onlyimages) marks resources whose names repeat.listAll/requestsend array query params as repeated keys (type=snapshot&type=backup).listgains one typed optional argument per spec filter (e.g. imagestype,architecture,status; serversname,status). Images name state<name>-<id>(or<id>when unnamed) inget/adopt/list.idinupdate/change_protection/deleteand name state from the API response;deletereads first so its record lands on the same instance.codegen/designs/hetzner.md) and generated README updated.@swamp/hetzner-cloud→2026.09.29.2.⚠️ Behaviour change for images
Images
getandadoptnow store state under<name>-<id>(e.g.ubuntu-24.04-101) instead of the bare name. Image state written earlier under the bare name is left in place, not migrated, and anything referencing it by that name must be updated. Imagesupdate/change_protectionnow require anidargument (they never worked on adopted images before). No other model's naming changes.Testing
pipeline_test.ts(filter extraction), generator tests (images vs servers output),listAllrepeated-param test, and an images integration test on the mock Hetzner API (duplicate x86/arm names across pages + unnamed snapshot → three instances; repeatedtypeparams; adopt/update/change_protection/delete converge on one instance).Verification: verify-build 11/11, verify-reviews 2 passed + ci-security-review skipped (no trust-root changes); attestation posted for
a63840684.🤖 Generated with Claude Code