2.8 KiB
Checkpoint 18 — Admin UI placement hotfix
Validation date: 2026-09-08
Release scope
Checkpoint 18 is a production hotfix on top of checkpoint 17. It restores the complete Model Placement UI helper block that was accidentally removed during the runtime model-alias UI work introduced after checkpoint 13.
The regression manifested after successful admin authentication as a browser error such as:
renderPlacement is not defined
The missing block also contained the generic lines() helper used by alias, placement and tenant model-access forms, so leaving only renderPlacement patched would have exposed follow-on UI failures when saving those forms.
No gateway request, scheduler, routing, quota, persistence, batch, conversation, HA-sampling or worker-runtime behavior was intentionally changed by this hotfix. The gateway executables do change because the Admin UI JavaScript is embedded into the binary.
Fix
Restored these UI helpers:
placementRuleplacementRowsplacementCellplacementSourceLabelrenderPlacementplacementCellHTMLplacementWorkerCardloadPlacementopenPlacementDialoglinesinstalledForWorkersavePlacementRuleplacementExactAction
The existing placement matrix, worker-rule editor, exact allow/deny overrides, presets and reset controls now have their implementation functions again.
Regression protection
internal/webui/webui_test.go now verifies that every renderX() function called by the main render() dispatcher is actually defined in the embedded Admin UI bundle. A second test verifies the complete Placement UI helper set.
This specifically prevents the original renderPlacement is not defined class of regression from passing go test ./... again.
Required verification results
The final source tree passed:
go test ./...go vet ./...go test -race ./...node --check internal/webui/assets/app.js- release cross-builds for Linux amd64, Linux arm64, macOS arm64 and Windows amd64
dist/SHA256SUMSverification
Update guidance
For Docker/Compose deployments, rebuild or replace the gateway image/binary. Copying only the source app.js beside an already-built binary does not fix the problem because internal/webui/assets/app.js is embedded at build time.
The production configuration and persistent /data volume do not require a migration from checkpoint 17 to checkpoint 18.
Gateway binary SHA-256
| Target | SHA-256 |
|---|---|
| Linux amd64 | 550f481313e5869d884280dfc3248d70b6eabf51b4b3bb44083c36f622065cf2 |
| Linux arm64 | 27f4ab0b7a1dc9a2379e7e99471e177f9da9c715445b05b089d028011b8101aa |
| macOS arm64 | d72dd623844050b1b7396ae364e49a30ab76d2bee21a2ced22dad308c0e839bb |
| Windows amd64 | dedf06c3d42fdc8c2fe3de19cd9c00fcdb6eb6fab91442df3b18ac5e8a416072 |