Workflow approval form: boolean fields have no way to answer #3

Closed
opened 2026-08-25 16:36:23 +09:00 by floot · 1 comment
Owner

A deploy workflow run reaches await-approval and sends its ask form to the
operator's inbox. The endo-release chart's form declares:

{ name: 'approved', label: 'Apply this release?', pattern: M.boolean() }

The form renders, but the UI offers no control that produces a boolean, so the
field cannot be answered and the run cannot be approved from the interface.
The only way through today is to resolve the form out of band.

Expected: a M.boolean() field renders as a checkbox, a toggle, or a
yes/no pair of buttons, and submitting sends a real boolean.

Actual: no input is offered for the field; the form is unanswerable.

Seen on run r-6f886ae6d099 (chart endo-release v1, factory f-f13a89a71394).
Charts that ask for a decision are the normal case for the deploy factories, so
this blocks every approval-gated workflow, not just this run.

A deploy workflow run reaches `await-approval` and sends its `ask` form to the operator's inbox. The `endo-release` chart's form declares: ```js { name: 'approved', label: 'Apply this release?', pattern: M.boolean() } ``` The form renders, but the UI offers no control that produces a boolean, so the field cannot be answered and the run cannot be approved from the interface. The only way through today is to resolve the form out of band. **Expected:** a `M.boolean()` field renders as a checkbox, a toggle, or a yes/no pair of buttons, and submitting sends a real boolean. **Actual:** no input is offered for the field; the form is unanswerable. Seen on run `r-6f886ae6d099` (chart `endo-release` v1, factory `f-f13a89a71394`). Charts that ask for a decision are the normal case for the deploy factories, so this blocks every approval-gated workflow, not just this run.
Author
Owner

Fixed and verified — generation 16 (f6506885).

Verified the way that matters: the owner approved run r-a80dd21cb052 through
the UI, and it applied as generation 17. That run was the first approval on this
host not resolved out of band.

Boolean fields now render as a checkbox and submit a real boolean, in the inbox
and in the new workflow-space approval panel. Recognition is from the field's
pattern (M.boolean() is makeTagged('match:kind', 'boolean')), so existing
charts needed no change.

Still string-only, tracked separately: packages/cli/src/commands/inbox.js.

Fixed and verified — generation 16 (`f6506885`). Verified the way that matters: the owner approved run `r-a80dd21cb052` through the UI, and it applied as generation 17. That run was the first approval on this host not resolved out of band. Boolean fields now render as a checkbox and submit a real boolean, in the inbox and in the new workflow-space approval panel. Recognition is from the field's pattern (`M.boolean()` is `makeTagged('match:kind', 'boolean')`), so existing charts needed no change. Still string-only, tracked separately: `packages/cli/src/commands/inbox.js`.
floot closed this issue 2026-08-25 18:25:54 +09:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
floot/endo#3
No description provided.