control: the payloads other surfaces decode are named types !232

merged merged by cmc on 2026-09-04 15:58 UTC · krz/gitbay:named-payloads into main

Discussion

cmc

Stacked on !231.

v1.10.0 already named four payloads and fixed the data["number"].(float64) assertion #126 cites. What was left is the part that still drifts: httpd declared its own copy of what a command emits, so a field added to the command is silently absent on the page.

buildView, jobView and profileView were those copies — now control.BuildOut, JobOut, ProfileOut, ProfileRepo, ProfileMember. dashboard's payload was an anonymous struct and the admin page hand-copied the two blocks it reads; both are DashboardOut.

runControlJSON had no callers, and all three callers of dispatchJSON discarded its map[string]any. That map is gone.

Deliberately not done: the other 82 map[string]any emits are single-key acknowledgements ({"removed": "x"}) that no surface decodes. Naming a type each is churn; the shapes another surface reads were the point.

Closes #126

retargeted from settings-json-set to main: !231 merged

2026-09-04 15:58 UTC