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
Out-of-scope finding from #7278 (which is scoped to the two plugin-approvals actions). Filed per PD #10 — unassigned, ungraded.
Fact
The shared console action runner chains confirmation then param collection, both awaited (objectui packages/core/src/actions/ActionRunner.ts, the confirmText block immediately followed by the params block). Any action declaring both keys therefore opens two dialogs for one click, and nothing is sent until the second.
#7278 names two such actions in plugin-approvals. A precise scan of origin/main @ b51a09046 (brace-depth block parse over every non-test *.ts, requiring confirmText and params: [ at the same nesting level inside one action object) finds 20 actions in total — the two from #7278, plus 16 in packages/platform-objects and 4 in the showcase example:
These are live console surfaces, not dormant metadata: e.g. sys_user.ban_user is locations: ['list_item', 'record_header'] with a banReason param, and sys_oauth_application.rotate_client_secret pairs a long finality warning with a client_id param and a resultDialog, i.e. three dialogs in a row for one click.
#7278's claim scopes it to sys-approval-request.object.ts plus tests in that package, and its triage ruling is written for those two actions. The 16 platform-objects occurrences are a different package and a different file surface, so sweeping them inside #7278 would breach that scope. They are, however, the same defect and want the same ruling.
Blocker cleared 2026-08-11 — this card is READY
#7278 closed 2026-08-11T07:13Z via PR #7592 ("one decision, one dialog — carry reject/recall confirm questions on description"), so both conditions this card was waiting on are satisfied:
Returned to pm:queue by the domain:metadata seat's unlock sweep. (Housekeeping: this heading previously kept the literal blocker token in a struck-through form. That was a mistake — selection sweeps grep for the token, and strikethrough does not remove it, so the card still read as blocked to the exact mechanism that is supposed to pick it up. The token is now gone; the history is preserved in this section's prose and in the edit history.)
Note it still blocks #7428 (the authoring-time guard on the confirmText + params pair), which cannot ship until this card drives the in-repo census to zero. That gives this card a fan-out of 1 and makes it worth pulling forward rather than letting it sit.
The original measurement, kept for the record (superseded)
Measured on b51a09046, before description was authorable:
Whoever picks this up should re-run that probe on current main rather than trusting this paragraph — including the translation node, which is a separate strict schema from ActionSchema and had the same gap. If the translation side is still strict without description, the 16 sites cannot carry translated confirm questions and that is a fork to report, not to work around.
Dedup
Searched open issues for confirmText params dialog and for action description param dialog slot: only #7278 and the PM triage Routine. No twin.
Out-of-scope finding from #7278 (which is scoped to the two
plugin-approvalsactions). Filed per PD #10 — unassigned, ungraded.Fact
The shared console action runner chains confirmation then param collection, both awaited (objectui
packages/core/src/actions/ActionRunner.ts, theconfirmTextblock immediately followed by theparamsblock). Any action declaring both keys therefore opens two dialogs for one click, and nothing is sent until the second.#7278 names two such actions in
plugin-approvals. A precise scan oforigin/main@b51a09046(brace-depth block parse over every non-test*.ts, requiringconfirmTextandparams: [at the same nesting level inside one action object) finds 20 actions in total — the two from #7278, plus 16 inpackages/platform-objectsand 4 in the showcase example:packages/platform-objects/src/identity/sys-user.object.tsban_user,delete_my_account,disable_two_factor,generate_backup_codespackages/platform-objects/src/identity/sys-oauth-application.object.tsenable_oauth_application,disable_oauth_application,rotate_client_secret,delete_oauth_applicationpackages/platform-objects/src/identity/sys-two-factor.object.tsdisable_two_factor,regenerate_backup_codespackages/platform-objects/src/identity/sys-account.object.tsunlink_accountpackages/platform-objects/src/identity/sys-organization.object.tschange_slugpackages/platform-objects/src/identity/sys-sso-provider.object.tsdelete_sso_providerpackages/platform-objects/src/identity/sys-team-member.object.tsremove_team_memberexamples/app-showcase/src/ui/views/project.view.tsset_labels,assign_team,reassign_account,reschedulepackages/plugins/plugin-approvals/src/sys-approval-request.object.tsapproval_reject,approval_recall(already #7278)These are live console surfaces, not dormant metadata: e.g.
sys_user.ban_userislocations: ['list_item', 'record_header']with abanReasonparam, andsys_oauth_application.rotate_client_secretpairs a long finality warning with aclient_idparam and aresultDialog, i.e. three dialogs in a row for one click.Why this is filed separately from #7278
#7278's claim scopes it to
sys-approval-request.object.tsplus tests in that package, and its triage ruling is written for those two actions. The 16 platform-objects occurrences are a different package and a different file surface, so sweeping them inside #7278 would breach that scope. They are, however, the same defect and want the same ruling.Blocker cleared 2026-08-11 — this card is READY
#7278 closed 2026-08-11T07:13Z via PR #7592 ("one decision, one dialog — carry reject/recall confirm questions on
description"), so both conditions this card was waiting on are satisfied:sys_approval_request.approval_reject/approval_recalldeclare bothconfirmTextandparams, so one decision opens two sequential dialogs #7278 took option 1 — dropconfirmText, carry the question as the param dialog'sdescription. This card follows it.ActionSchemahad nodescriptionkey, so the ruling was unimplementable when this card was filed. Adddescriptionto the action contract (ActionSchema + actionTranslationSchema + i18n extractor) — the maintainer-ruled mechanism for #7278/#7309 #7367 madedescriptionauthorable and approvals:sys_approval_request.approval_reject/approval_recalldeclare bothconfirmTextandparams, so one decision opens two sequential dialogs #7278 shipped on it, which closes that gap.Returned to
pm:queueby thedomain:metadataseat's unlock sweep. (Housekeeping: this heading previously kept the literal blocker token in a struck-through form. That was a mistake — selection sweeps grep for the token, and strikethrough does not remove it, so the card still read as blocked to the exact mechanism that is supposed to pick it up. The token is now gone; the history is preserved in this section's prose and in the edit history.)Note it still blocks #7428 (the authoring-time guard on the
confirmText+paramspair), which cannot ship until this card drives the in-repo census to zero. That gives this card a fan-out of 1 and makes it worth pulling forward rather than letting it sit.The original measurement, kept for the record (superseded)
Measured on
b51a09046, beforedescriptionwas authorable:Whoever picks this up should re-run that probe on current
mainrather than trusting this paragraph — including the translation node, which is a separate strict schema fromActionSchemaand had the same gap. If the translation side is still strict withoutdescription, the 16 sites cannot carry translated confirm questions and that is a fork to report, not to work around.Dedup
Searched open issues for
confirmText params dialogand foraction description param dialog slot: only #7278 and the PM triage Routine. No twin.Generated by Claude Code