Request options UI requirements
These requirements track the live implementation of the request options UI specification.
Stable IDs use the ROUI-NNN convention. Implementation values use
Not started, In progress, Implemented, Deferred, or Removed.
Verification values use Unverified, Automated, Human verified, or
Not applicable. Documentation values use Pending, Documented, or
Not applicable.
Existing contract
| ID | Requirement | Implementation | Verification | Documentation | Evidence |
|---|---|---|---|---|---|
| ROUI-001 | A non-empty string array leaf generates one ordinary fixed-choice select element whose string values and labels preserve declaration order. |
Implemented | Automated | Documented | array shorthand test, mixed-array filtering test, current package guide |
| ROUI-002 | "string", "number", "boolean", and "checkbox" leaves generate text, number, and checkbox controls with labels derived from their request-option paths. |
Implemented | Automated | Documented | string test, number test, boolean test, label test, current package guide |
| ROUI-003 | Nested mappings generate flat element keys, nested config_path values, and defaults copied from the corresponding nested request_options values. |
Implemented | Automated | Documented | nested label/default test, nested generation test, current package guide |
| ROUI-004 | Flat UI overrides are removed from top-level config, inflated into their nested paths, deep-merged without discarding sibling request fields, and injected into the provider request payload. | Implemented | Automated | Documented | flat merge test, flat-key removal test, nested deep-merge test, sibling-preservation test, flat end-to-end flow, nested end-to-end flow |
| ROUI-005 | Missing, empty, non-mapping, unknown, or partially invalid UI declarations do not prevent valid sibling elements from being generated. | Implemented | Automated | Documented | unknown leaf test, invalid nested subtree test, empty-list test, missing-config test, non-mapping test |
Rich fixed-choice descriptor target
| ID | Requirement | Implementation | Verification | Documentation | Evidence |
|---|---|---|---|---|---|
| ROUI-006 | A leaf object with type: "select" and a non-empty string options array is recognized as a fixed-choice descriptor rather than a nested request-options subtree. |
Implemented | Automated | Documented | descriptor parity test, rich descriptor test |
| ROUI-007 | A select descriptor without rich_ui: true generates the same ordinary element semantics as the existing string-array shorthand, including key, label, options, config_path, and nested default. |
Implemented | Automated | Documented | descriptor parity test, current package guide |
| ROUI-008 | A select descriptor with rich_ui: true keeps the ordinary element and adds a standard rich dropdown with the generated label and options, placements: ["composer"], default_pinned: true, show_label: false, and show_icon: false. |
Implemented | Automated | Documented | generated schema test, reference-provider rich normalization test, fixed-choice rich normalization test, default-config application integration |
| ROUI-009 | A rich select descriptor uses a static ordinary sliders fallback icon, text-only option labels equal to their values, no option tones or icons, and no custom-value declaration. |
Implemented | Automated | Documented | generated schema test, mobile rich-control test |
| ROUI-010 | Select descriptors work at supported nesting depths and preserve the existing flat-key inflation, sibling-preserving deep merge, and request-payload injection behavior. | Implemented | Automated | Documented | nested descriptor schema test, nested descriptor full-flow test |
| ROUI-011 | Existing shorthand declarations retain their current generated schemas and runtime behavior after descriptor support is added. | Implemented | Automated | Documented | Complete request-options feature regression suite |
| ROUI-012 | Mobile and desktop consume the generated reasoning-effort rich element through the standard config rich-UI contract and mutate the existing flat request-option override key without a request-options-specific renderer or action path. | Implemented | Automated | Documented | default-config application integration, fixed-choice rich normalization test, mobile rich-control test, desktop production ChatPane test |
| ROUI-013 | Current package-user documentation describes shorthand leaves, nested paths, select descriptors, rich_ui: true, generated defaults, and the unchanged flat-key/deep-merge behavior after implementation. |
Implemented | Automated | Documented | current package guide, generated schema test, nested full-flow test |
| ROUI-014 | Malformed or unsupported leaf descriptors are ignored without preventing valid sibling shorthand or descriptor elements from being generated. | Implemented | Automated | Documented | invalid descriptor isolation test |