You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
[P2] Action-param value-shape parity net: assert every FORM_FIELD_TYPES param round-trips to the endpoint contract #2714
Since #2700 / ADR-0059, ActionParamDialog routes every param through the shared form field-widget renderer (paramToField() → getLazyFieldWidget). That was the whole win — but it also means each param now emits its widget's own value shape, and those shapes differ:
file/image → an upload descriptor object {name, url, size, mime_type, …} (or an array) — not a fileId string
#2700's acceptance list explicitly called for value-shape parity coverage ("confirm each round-trips to what the action runner/endpoint expects; add coverage"), but no test net pins it today. Without one, a future widget swap can silently change a param's emitted shape and break an endpoint's input contract with no failing test.
Scope
A table/test net (mirroring the paramToField drift test's style) asserting, for each FORM_FIELD_TYPES type usable as a param, the shape the dialog emits on confirm (primitive vs. object vs. array; multiple → array).
Pin the known contracts that endpoints rely on: number→number, boolean→boolean, date→string, select→string, select+multiple→string[], lookup→id(s).
Document the emitted-shape table (README / ADR-0059 addendum) so param authors know what a type:'X' param will POST.
Activity
test(app-shell): value-shape parity net for action params (#2714) (#2720
fix(app-shell): keep the action-param datetime wire shape off the wid…
fix(fields): 编辑弹窗 datetime/date 字段回显存量值 (objectstack-ai#3565)