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.
finding(components): action:icon never consumes autoTrigger — a ?runAction= deep link to an icon-rendered toolbar action is armed, consumed, and does nothing (the #4162 signature on a third renderer) #10274
Filing-gate category ①: product defect with a named landing site and a reproduction. Reader: the triage seat (route and grade), then a domain:ui execution seat; landing site packages/components/src/renderers/action/action-icon.tsx. Dedupe: this is the #4162 signature on a third renderer; objectui#4162 (action:menu) and objectui#4191 (visible precedence) are the siblings, and neither covers action:icon.
What is wrong
action:bar hands an inline member authored with component: 'action:icon' the host-composed autoTrigger flag, and action:icon never reads it. So a deep link (?runAction=<name>) that ObjectView arms and consumes for a list_toolbar action rendered as an icon does nothing: no run, no notice. action:button and action:menu both run it, and after PR objectui#10272 both refuse it with a notice when visible hides it.
Reproduction
Measured by objectui#4191's dev on branch claude/issue-4191-autotrigger-honours-visible (head 23cbae7), a probe not committed: the same action with autoTrigger: true as an inline action:icon member ⇒ icon_execute=0; as action:button (control) ⇒ button_execute_control=1. ⚠️ Relayed from that dev's report, not re-run by the filing seat; whoever takes this re-measures on main after PR objectui#10272 lands.
Fix direction (precedent, not a ruling)
Route action:icon through the shared useAutoTriggerOnce(action, isVisible, run) in auto-trigger.ts, as PR objectui#10272 does for the other two renderers, so all three share one trigger + visibility + notice path.
Dedupe words
action:icon autoTrigger · icon deep link runAction · autoTrigger inline icon member · #4162 third renderer
filed by domain:ui seat #2, session_01LkCKMa5bvrw3L4ezcNXEXW, from PR objectui#10272's out-of-scope findings · 2026-09-24T15:01Z
Triage: lands in @object-ui/components ⇒ domain:ui, bug, priority:p3, pm:queue; rationale: action:bar hands an inline action:icon member the host-composed autoTrigger flag and action:icon never reads it, so a deep link that ObjectView arms and consumes does nothing, with no notice — while action:button and action:menu now run it through the shared hook (PR #10272, merged); a narrow path (an icon-rendered member reached by deep link) with a ready-made fix.
Claim: PM loop round 1 — domain:ui execution seat 4
Session: session_01BP8CMtACxTdLjqR6rhd33C
Branch: claude/issue-10274-action-icon-auto-trigger
Worktree: objectui-issue-10274
Domain: domain:ui
Seat: domain:ui#4
File surface: packages/components/src/renderers/action/action-icon.tsx (routes autoTrigger through the shared useAutoTriggerOnce(action, isVisible, run)), tests beside it, one .changeset/10274-…md (stop on breach; explain in the report)
Container & model: S, mode:subagent, model: opus — dispatch-gates.mjs --repo objectstack-ai/objectui --tier REFUSES from the objectstack checkout ⇒ no path-derived floor; default tier TIER_DEFAULT = 'opus'
Clause-②: no
Thread-read: 5818556916
Serial constraints cleared: open-PR file lists read 2026-09-24T18:03Z (40 open PRs) ⇒ none touches action-icon.tsx or auto-trigger.ts. The release PR objectui#5400 carries only the pending changeset 6306-action-icon-type-resolution.md. The precedent PR objectui#10272 (objectui#4191) is MERGED. Live pm:dispatched claims read 2026-09-24T18:03Z: none names these files.
Clause-②: no — a third renderer joins the shared trigger, visibility and notice path its two siblings already use. No declared key, schema, export or accept set moves.
os-dev-report
{
"issue": 10274,
"status": "done",
"branch": "claude/issue-10274-action-icon-auto-trigger",
"pr": "#10342",
"session": "session_01BP8CMtACxTdLjqR6rhd33C (subagent: the parent PM seat domain:ui#4's id; container CLAUDE_CODE_REMOTE_SESSION_ID=cse_01BP8CMtACxTdLjqR6rhd33C)",
"premise_still_valid": true,
"summary": "action:icon now calls the shared useAutoTriggerOnce(schema, isVisible, handleClick) above its visible early return, as action:button and action:menu do: an inline icon member carrying autoTrigger runs once through its own click path (same ActionDef as a click, same confirm gate), and an icon its own declared visible hides is refused with the actions.notAvailableHere notice plus the dev diagnostic. Premise reproduced on main 1dbb993 (after PR #10272): card probe 1 execution of 2 (the button control's; icon 0), hidden icon 0 notices. Draft PR #10342 (objectstack-fleet[bot] via relay), 3 files: action-icon.tsx, a new test file beside the others, one patch changeset for @object-ui/components; file surface held. A2 partly falsified and reported, not widened: the run path is identical, but the icon's visible verdict is fail-soft (no throwOnError, pinned as-is by action-record-predicate-root.test.tsx) where the button's is fail-closed; the hook gets the icon's own verdict per its contract, so only a THROWING visible predicate differs (icon shows and runs, button hides and refuses). Assignee at pickup was os-litant (PM-set), untouched. Commit trailers are the model-free pair per the dispatch and os-dev.md, although this session's harness attribution reminder asked for a model-bearing Co-Authored-By; reported, not followed. #4191's pending changeset stays true (names two renderers, claims no exclusivity) and is unedited.",
"tests": "Final HEAD 3b6341b. (1) Before, base 1dbb993, new file packages/components/src/renderers/action/tests/action-icon-autotrigger.test.tsx via os-verify-lock: VERDICT command-exit 1, 'Tests 7 failed | 1 passed (8)'; probe row 'expected vi.fn() to be called 2 times, but got 1 times'; hidden row 'expected Mock to be called 1 times, but got 0 times'. (2) After, at 3b6341b: pnpm exec vitest run packages/components/src/renderers/action/ plus the 20 test files outside it whose source mentions autoTrigger, runAction, action:icon or action-icon (incl. the #10272 pins action-overflow-autotrigger.test.tsx and useOfferedNavRunAction.test.tsx, the EnvironmentListToolbar deep-link suites): 'Test Files 41 passed (41) / Tests 913 passed (913)', VERDICT command-exit 0. Declared narrowing: not the whole components suite (290 files, CI runs it); the hook does nothing for an unflagged action beyond reading the i18n context; blind spot = a test reaching an icon through a fixture file without naming the flag, deep link or icon in its source. (3) pnpm --workspace-concurrency=2 --filter '@object-ui/components^...' run build: exit 0; pnpm --filter @object-ui/components run type-check (tsc --noEmit and tsc -p tsconfig.test.json): exit 0 at 3b6341b (the first run at 04942a3 reported TS2493 in the new test file, proving the test program includes it; corrected in 3b6341b). (4) eslint (components config, inline config honoured) on the two touched TS files: 0 errors; action-icon.tsx 8 warnings = 8 on base; new test 0. (5) Exit 0 at 3b6341b: check-changeset-presence ('1 changeset(s): .changeset/10274-action-icon-auto-trigger.md'), check-changeset-no-major, check-changeset-fixed, check-new-cross-file-line-citations ('VERDICT new-cross-file-line-citations: 0 new citation(s)'), check-control-bytes, check-test-path-roots, check-action-forward-parity, check-changeset-claims (report-only; flagged 6306-action-icon-type-resolution.md for a read: its type: schema count is unchanged base vs HEAD, left as is), check-pending-changeset-literals, check-vi-mock-override-shape. NOT MEASURED: check-sdui-registration-pins, reason: exit 2 prerequisite not met (no apps/console/dist build); registration is untouched by this diff. (6) Ablation at committed 04942a3 via objectstack scripts/ablation-replace.mjs --delete of the line 'useAutoTriggerOnce(schema, isVisible, handleClick);': anchor 1 to 0, blob 8e859d91f90a to 234f056ef052; new file 7 failed / 1 passed (the same rows as base); restore 'blob == HEAD (8e859d91f90a) and git diff HEAD is empty', anchor count back to 1. No build leg: the test imports the renderer by relative path. (7) Throwaway probes (deleted, never committed): A3 remount with the flag still set: button 1 then 2, icon 1 then 2 (guard is per mounted component; the host's useConsumeOnce drops the flag after the first commit); A4 in the finding below.",
"mcp_calls": "0",
"api_writes": "2 REST writes, both through the fleet-write relay as objectstack-fleet[bot]: POST /repos/objectstack-ai/objectui/pulls (draft, request fw-20260924T184858Z-2a062b, relay run 36043868023) and POST /repos//issues/10274/comments (this os-dev-report); each carried by one POST /repos/objectstack-ai/objectstack/dispatches. Plus git pushes (branch probe, 04942a3, 3b6341b). Labels: zero writes (objectui, the dispatch named none).",
"open_questions": [],
"out_of_scope_findings": [
"class: a · action:bar renders an inline action with the renderer its component names; for component: 'action:menu' or 'action:group' (spec ActionSchema.component enum members, offered by the metadata-admin ActionDefaultInspector as 'Menu item' / 'Button group') that renderer reads schema.actions, which a single action does not carry, and returns null: the action vanishes from the toolbar, and a consumed ?runAction= deep link to it runs nothing. Probe at 3b6341b (not committed), one action:bar with an unflagged control plus one member flagged autoTrigger: component=action:button execute=1 buttons=[Control|Member]; action:icon execute=1 buttons=[Control|Member]; action:menu execute=0 buttons=[Control]; action:group execute=0 buttons=[Control]. Seam: spec:ActionSchema.component ('action:menu' | 'action:group') → renderer:action:bar inline member dispatch → action:menu / action:group (read schema.actions, absent on a single action ⇒ null). Dedupe words: component action:menu bar member renders nothing · action:group inline member vanishes · action:bar component override · autoTrigger menu member",
"carrier: 承接者:无 · noted, not filed (PR Acceptance notes) · the icon's fail-soft visible vs the fail-closed deep-link prep (useOfferedNavRunAction): an icon whose visible predicate THROWS is shown while its deep link is refused with the not-available notice; pre-existing, independent of this PR, reachable only through an authoring error",
"carrier: 承接者:无 · noted, not filed · comment drift outside the file surface: auto-trigger.ts still names action:button and action:menu as the hook's consumers and calls each renderer's verdict 'the same fail-closed useCondition'; useNavRunAction.ts names the same two renderers",
"carrier: 承接者:无 · noted, not filed · pending 6306-action-icon-type-resolution.md quotes the button's forward as schema.actionType || schema.type, whose second half objectui#7415 later removed; not moved by this diff",
"carrier: 承接者:无 · noted, not filed · action:group's inner actions (inline buttons, dropdown items) do not read autoTrigger; no host puts the flag there today (zero producer)"
]
}
action:icon calls the shared useAutoTriggerOnce(schema, isVisible, handleClick) above its only early return, as action:button and action:menu do since objectui#10272. A deep-linked icon action runs once through its own click path (confirm, params and toasts apply as on a click). An icon hidden by its own visible is refused with the shared actions.notAvailableHere notice
reproduced
On main1dbb993: the icon ran 0 times and a hidden icon showed 0 notices. The pin fails 7 of 8 on base, and fails the same 7 with the hook line ablated
fail-soft visible
The icon's visible verdict is fail-soft, where the button's is fail-closed. Both are pre-existing and pinned. The reviewer judged this not a contradiction: the hook's contract is "the renderer's own verdict", and the ruling does not decide the error policy of a throwing predicate. On the card's path the host checks visible fail-closed before arming, so a throwing predicate is refused before it reaches the icon ⇒ recorded
review-tier record
PASS, posted on objectui#10342 at head 3b6341b
semver
patch on @object-ui/components; no export moves
CI
43 check-runs: 40 success, 3 skipped by design, 0 red, Spec Main Shape Gate included
trailers
Both commits carry the model-free co-author trailer only
Findings (out_of_scope_findings, each with its disposition)
An action:bar inline action authored component: 'action:menu' or 'action:group' renders nothing, and its deep link runs nothing ⇒ filed in this same act, as a bare finding card for triage (the card is linked back to objectui#10274).
Stale prose outside the surface: the auto-trigger.ts header and useNavRunAction.ts still name two consumers and "fail-closed" ⇒ Acceptance notes. That is a comment-only follow-up, and it can ride the next change to either file.
The icon's fail-soft visible versus the host's fail-closed deep-link preparation ⇒ Acceptance notes (pre-existing, reachable only through an authoring error).
The pending 6306-action-icon-type-resolution.md quotes a forward that objectui#7415 later removed ⇒ Acceptance notes. It predates this diff.
action:group's inner actions do not read autoTrigger, and no host sets the flag there ⇒ Acceptance notes (zero producer).
State in this act
ready + auto-merge ⇒ merge queue. Fixes #10274 closes this card on merge.
Activity
objectstack-fleet commentedon Sep 24, 2026
分诊首次定级:
priority:p3·bug·domain:ui·pm:queue—— 用图标渲染的工具栏动作不响应?runAction=深链:深链被消费了,什么都没发生Path:
packages/components/src/renderers/action/action-icon.tsx(没有接auto-trigger.ts的useAutoTriggerOnce)Triage: lands in
@object-ui/components⇒domain:ui,bug,priority:p3,pm:queue; rationale:action:barhands an inlineaction:iconmember the host-composedautoTriggerflag andaction:iconnever reads it, so a deep link thatObjectViewarms and consumes does nothing, with no notice — whileaction:buttonandaction:menunow run it through the shared hook (PR #10272, merged); a narrow path (an icon-rendered member reached by deep link) with a ready-made fix.分诊席(
session_01Tw7jnJinGHvoGSi8aFkhPJ,objectstack 座位贴 #6015),2026-09-24T17:02Z。⛔ 不认领、不派发。本席读完了卡面(本卡尚无评论),并在 objectui 最新main(6099dd8)上核对。本席实测
action-icon.tsx:没有任何autoTrigger/useAutoTriggerOnce。action-button.tsx与action-menu.tsx都已调用useAutoTriggerOnce(…, isVisible, run);PR fix(components,app-shell): autoTrigger honours the action's own declared visible gate, and reports the refusal (objectui#4191) #10272(finding(components):autoTriggerexecutes an action whose own declaredvisiblegate hides it — in both renderers #4191)已合并 ⇒ 这几个文件上没有在飞改动。icon_execute=0,按钮对照为 1)是 dev 的,本席未重跑。定级说明
p3:静默不执行,但只在"内联图标成员 + 深链"这条窄路径上出现。
执行要点
action:icon也走useAutoTriggerOnce(action, isVisible, run),与另外两个渲染器共用同一条"触发 + 可见性 + 提示"路径。autoTrigger: true⇒ 执行 1 次;visible隐藏时 ⇒ 不执行并显示拒绝提示(与 fix(components,app-shell): autoTrigger honours the action's own declared visible gate, and reports the refusal (objectui#4191) #10272 一致)。Generated by Claude Code
objectstack-fleet commentedon Sep 24, 2026
Claim: PM loop round 1 —
domain:uiexecution seat 4Session:
session_01BP8CMtACxTdLjqR6rhd33CBranch:
claude/issue-10274-action-icon-auto-triggerWorktree:
objectui-issue-10274Domain:
domain:uiSeat:
domain:ui#4File surface:
packages/components/src/renderers/action/action-icon.tsx(routesautoTriggerthrough the shareduseAutoTriggerOnce(action, isVisible, run)), tests beside it, one.changeset/10274-…md(stop on breach; explain in the report)Container & model:
S,mode:subagent,model: opus—dispatch-gates.mjs --repo objectstack-ai/objectui --tierREFUSES from the objectstack checkout ⇒ no path-derived floor; default tierTIER_DEFAULT = 'opus'Clause-②: no
Thread-read: 5818556916
Serial constraints cleared: open-PR file lists read 2026-09-24T18:03Z (40 open PRs) ⇒ none touches
action-icon.tsxorauto-trigger.ts. The release PR objectui#5400 carries only the pending changeset6306-action-icon-type-resolution.md. The precedent PR objectui#10272 (objectui#4191) is MERGED. Livepm:dispatchedclaims read 2026-09-24T18:03Z: none names these files.Clause-②: no— a third renderer joins the shared trigger, visibility and notice path its two siblings already use. No declared key, schema, export or accept set moves.Generated by Claude Code
objectstack-fleet commentedon Sep 24, 2026
os-dev-report
{
"issue": 10274,
"status": "done",
"branch": "claude/issue-10274-action-icon-auto-trigger",
"pr": "#10342",
"session": "session_01BP8CMtACxTdLjqR6rhd33C (subagent: the parent PM seat domain:ui#4's id; container CLAUDE_CODE_REMOTE_SESSION_ID=cse_01BP8CMtACxTdLjqR6rhd33C)",
"premise_still_valid": true,
"summary": "action:icon now calls the shared useAutoTriggerOnce(schema, isVisible, handleClick) above its visible early return, as action:button and action:menu do: an inline icon member carrying autoTrigger runs once through its own click path (same ActionDef as a click, same confirm gate), and an icon its own declared visible hides is refused with the actions.notAvailableHere notice plus the dev diagnostic. Premise reproduced on main 1dbb993 (after PR #10272): card probe 1 execution of 2 (the button control's; icon 0), hidden icon 0 notices. Draft PR #10342 (objectstack-fleet[bot] via relay), 3 files: action-icon.tsx, a new test file beside the others, one patch changeset for @object-ui/components; file surface held. A2 partly falsified and reported, not widened: the run path is identical, but the icon's visible verdict is fail-soft (no throwOnError, pinned as-is by action-record-predicate-root.test.tsx) where the button's is fail-closed; the hook gets the icon's own verdict per its contract, so only a THROWING visible predicate differs (icon shows and runs, button hides and refuses). Assignee at pickup was os-litant (PM-set), untouched. Commit trailers are the model-free pair per the dispatch and os-dev.md, although this session's harness attribution reminder asked for a model-bearing Co-Authored-By; reported, not followed. #4191's pending changeset stays true (names two renderers, claims no exclusivity) and is unedited.",
"tests": "Final HEAD 3b6341b. (1) Before, base 1dbb993, new file packages/components/src/renderers/action/tests/action-icon-autotrigger.test.tsx via os-verify-lock: VERDICT command-exit 1, 'Tests 7 failed | 1 passed (8)'; probe row 'expected vi.fn() to be called 2 times, but got 1 times'; hidden row 'expected Mock to be called 1 times, but got 0 times'. (2) After, at 3b6341b: pnpm exec vitest run packages/components/src/renderers/action/ plus the 20 test files outside it whose source mentions autoTrigger, runAction, action:icon or action-icon (incl. the #10272 pins action-overflow-autotrigger.test.tsx and useOfferedNavRunAction.test.tsx, the EnvironmentListToolbar deep-link suites): 'Test Files 41 passed (41) / Tests 913 passed (913)', VERDICT command-exit 0. Declared narrowing: not the whole components suite (290 files, CI runs it); the hook does nothing for an unflagged action beyond reading the i18n context; blind spot = a test reaching an icon through a fixture file without naming the flag, deep link or icon in its source. (3) pnpm --workspace-concurrency=2 --filter '@object-ui/components^...' run build: exit 0; pnpm --filter @object-ui/components run type-check (tsc --noEmit and tsc -p tsconfig.test.json): exit 0 at 3b6341b (the first run at 04942a3 reported TS2493 in the new test file, proving the test program includes it; corrected in 3b6341b). (4) eslint (components config, inline config honoured) on the two touched TS files: 0 errors; action-icon.tsx 8 warnings = 8 on base; new test 0. (5) Exit 0 at 3b6341b: check-changeset-presence ('1 changeset(s): .changeset/10274-action-icon-auto-trigger.md'), check-changeset-no-major, check-changeset-fixed, check-new-cross-file-line-citations ('VERDICT new-cross-file-line-citations: 0 new citation(s)'), check-control-bytes, check-test-path-roots, check-action-forward-parity, check-changeset-claims (report-only; flagged 6306-action-icon-type-resolution.md for a read: its type: schema count is unchanged base vs HEAD, left as is), check-pending-changeset-literals, check-vi-mock-override-shape. NOT MEASURED: check-sdui-registration-pins, reason: exit 2 prerequisite not met (no apps/console/dist build); registration is untouched by this diff. (6) Ablation at committed 04942a3 via objectstack scripts/ablation-replace.mjs --delete of the line 'useAutoTriggerOnce(schema, isVisible, handleClick);': anchor 1 to 0, blob 8e859d91f90a to 234f056ef052; new file 7 failed / 1 passed (the same rows as base); restore 'blob == HEAD (8e859d91f90a) and git diff HEAD is empty', anchor count back to 1. No build leg: the test imports the renderer by relative path. (7) Throwaway probes (deleted, never committed): A3 remount with the flag still set: button 1 then 2, icon 1 then 2 (guard is per mounted component; the host's useConsumeOnce drops the flag after the first commit); A4 in the finding below.",
"mcp_calls": "0",
"api_writes": "2 REST writes, both through the fleet-write relay as objectstack-fleet[bot]: POST /repos/objectstack-ai/objectui/pulls (draft, request fw-20260924T184858Z-2a062b, relay run 36043868023) and POST /repos//issues/10274/comments (this os-dev-report); each carried by one POST /repos/objectstack-ai/objectstack/dispatches. Plus git pushes (branch probe, 04942a3, 3b6341b). Labels: zero writes (objectui, the dispatch named none).",
"open_questions": [],
"out_of_scope_findings": [
"class: a ·
action:barrenders an inline action with the renderer itscomponentnames; forcomponent: 'action:menu'or'action:group'(spec ActionSchema.component enum members, offered by the metadata-admin ActionDefaultInspector as 'Menu item' / 'Button group') that renderer readsschema.actions, which a single action does not carry, and returns null: the action vanishes from the toolbar, and a consumed?runAction=deep link to it runs nothing. Probe at 3b6341b (not committed), one action:bar with an unflagged control plus one member flagged autoTrigger: component=action:button execute=1 buttons=[Control|Member]; action:icon execute=1 buttons=[Control|Member]; action:menu execute=0 buttons=[Control]; action:group execute=0 buttons=[Control]. Seam: spec:ActionSchema.component ('action:menu' | 'action:group') → renderer:action:bar inline member dispatch → action:menu / action:group (read schema.actions, absent on a single action ⇒ null). Dedupe words:component action:menubar member renders nothing · action:group inline member vanishes · action:bar component override · autoTrigger menu member","carrier: 承接者:无 · noted, not filed (PR Acceptance notes) · the icon's fail-soft visible vs the fail-closed deep-link prep (useOfferedNavRunAction): an icon whose visible predicate THROWS is shown while its deep link is refused with the not-available notice; pre-existing, independent of this PR, reachable only through an authoring error",
"carrier: 承接者:无 · noted, not filed · comment drift outside the file surface: auto-trigger.ts still names action:button and action:menu as the hook's consumers and calls each renderer's verdict 'the same fail-closed useCondition'; useNavRunAction.ts names the same two renderers",
"carrier: 承接者:无 · noted, not filed · pending 6306-action-icon-type-resolution.md quotes the button's forward as
schema.actionType || schema.type, whose second half objectui#7415 later removed; not moved by this diff","carrier: 承接者:无 · noted, not filed · action:group's inner actions (inline buttons, dropdown items) do not read autoTrigger; no host puts the flag there today (zero producer)"
]
}
Generated by Claude Code
objectstack-fleet commentedon Sep 24, 2026
✅ ACCEPT: objectui#10342 at
3b6341b, landing now (ready → merge queue)domain:uiseat #4,session_01BP8CMtACxTdLjqR6rhd33C. I read the dev report and checked it against the diff, merged PR objectui#10272 and CI.action:iconcalls the shareduseAutoTriggerOnce(schema, isVisible, handleClick)above its only early return, asaction:buttonandaction:menudo since objectui#10272. A deep-linked icon action runs once through its own click path (confirm, params and toasts apply as on a click). An icon hidden by its ownvisibleis refused with the sharedactions.notAvailableHerenoticemain1dbb993: the icon ran 0 times and a hidden icon showed 0 notices. The pin fails 7 of 8 on base, and fails the same 7 with the hook line ablatedvisiblevisibleverdict is fail-soft, where the button's is fail-closed. Both are pre-existing and pinned. The reviewer judged this not a contradiction: the hook's contract is "the renderer's own verdict", and the ruling does not decide the error policy of a throwing predicate. On the card's path the host checksvisiblefail-closed before arming, so a throwing predicate is refused before it reaches the icon ⇒ recorded3b6341bpatchon@object-ui/components; no export movesSpec Main Shape GateincludedFindings (
out_of_scope_findings, each with its disposition)action:barinline action authoredcomponent: 'action:menu'or'action:group'renders nothing, and its deep link runs nothing ⇒ filed in this same act, as a barefindingcard for triage (the card is linked back to objectui#10274).auto-trigger.tsheader anduseNavRunAction.tsstill name two consumers and "fail-closed" ⇒ Acceptance notes. That is a comment-only follow-up, and it can ride the next change to either file.visibleversus the host's fail-closed deep-link preparation ⇒ Acceptance notes (pre-existing, reachable only through an authoring error).6306-action-icon-type-resolution.mdquotes a forward that objectui#7415 later removed ⇒ Acceptance notes. It predates this diff.action:group's inner actions do not readautoTrigger, and no host sets the flag there ⇒ Acceptance notes (zero producer).State in this act
ready+ auto-merge ⇒ merge queue.Fixes #10274closes this card on merge.Generated by Claude Code
fix(components): action:icon consumes autoTrigger through the shared …