Skip to content

spec(ui): action:icon and action:group/menu members refuse confirmText beside an array params (ruling A) #30017

Open

Description

@objectstack-fleet

domain:spec#3 · os-support-ai · session_01WGufzfgvGexKn9vLHsy89K

Ruled: 6624208841 · letter A
Ruling-ref: 6624208841

Filing gate: ② a decision the maintainer made. In the project thread "Discuss pending spec rulings", the maintainer answered 「以上同意」 at 2026-11-04T06:22:07Z to an A (refuse) / B (keep) question that recommended A. The question came from the review of PR #29869 (#29844), record 6599507683, which found two more doors outside the #29844 ruling: action:icon and the action:group / action:menu member rows. The ruling text is recorded as this card's first comment. ⛔ Not a claim. Suggested-grade: p3 (the same family as #29844 and #29383).

Business reason. A page action that carries both confirmText and an array params shows the user a confirm dialog first and a param dialog second, two dialogs for one decision. ActionSchema, InlineActionSchema and, since PR #29869, action:button refuse that pair. action:icon and the members of action:group / action:menu still accept it. Reader: the domain:spec seat (packages/spec/src/ui/component.zod.ts).

What the code does (at origin/main eee41490)

  • ActionIconPropsSchema (packages/spec/src/ui/component.zod.ts ≈:4055) carries description, params: z.unknown() and confirmText, with no pair rule.
  • actionContainerMemberShape() (≈:4212), shared by the action:group member (≈:4328) and the action:menu member (≈:4349), carries params (an array is the inputs to collect; a non-array is refused except on a type: 'api' member, where it is the request payload) and confirmText, with no pair rule.
  • The shared predicate and message are declaresConfirmBesideParams / CONFIRM_BESIDE_PARAMS_REFUSAL in packages/spec/src/ui/action-confirm-beside-params.ts, already used by action:button (≈:4010).

Wanted (ruling A)

  • ActionIconPropsSchema and the action:group / action:menu member rows refuse confirmText beside a NON-EMPTY ARRAY params, at path ['confirmText'], with the same predicate and message family. On the members, refine once on the shared shape's consumers so both containers carry it, with the item index in the path.
  • Still accepted: confirmText with no params, beside params: [], and beside an object-form params (a type: 'api' member's payload).
  • Before building, census in-repo carriers with both keys: examples/, packages/**, ui/**, skills/**, templates, cloud fixtures. Zero shipped carriers were known at ruling time.
  • Declarations: Clause-②: no (narrowing), Metadata-protocol: narrowed, @objectstack/spec minor, and an ADR-0087 disposition (precedent: PR fix(spec)!: an action:button refuses confirmText beside a non-empty array params, as the two action doors do #29869).

Serial: after PR #29869 (merged). One S PR.

Cross-references: #29844 (the action:button door), #29383 (the inline door), PR #29869 review record 6599507683.

Dedupe: searched action:icon confirmText params and action:menu confirmText params. The only hits are #29844 and #29383. New.

Body updated by the seat with the ruling line: 2026-11-04T06:27Z

Activity

  1. objectstack-fleet commented on Nov 4, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#3 · os-support-ai · session_01WGufzfgvGexKn9vLHsy89K

    Ruling: decision thread "Discuss pending spec rulings" · letter A · maintainer 「以上同意」

    The maintainer was asked whether action:icon and the action:group / action:menu member rows should also refuse confirmText beside a non-empty array params (A, recommended) or keep accepting it (B). They answered 「以上同意」 at 2026-11-04T06:22Z, which covers this item among three, all taken as recommended. This card's letter is A.

    What the ruling binds (letter A):

    Recorded 2026-11-04T06:24Z.

  2. objectstack-fleet commented on Nov 4, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: first-touch audit · p3 kept · domain:spec kept · pm:queue kept · 2026-11-04T06:55Z

    ⛔ Not a claim.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions