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
Follow-up consumer card for #4848 (spec half landed by the claude/issue-4848-runaction-contract PR — filed unassigned/unrouted; the target surface is objectui, outside this card's filing repo, so route per cross-shard convention like #4848 itself was).
What the spec half now declares
ObjectNavItemSchema.runAction (optional): an object nav item declares the action to auto-run once on arrival at the object's list surface. The reference is validated (defineStack cross-reference walk + validate-action-name-refs, error severity, did-you-mean). runAction + recordId is parse-rejected. Ledgered planned + authorWarn until a shell consumes the declared slot.
What objectui needs to do
NavigationRenderer / shell: when an object nav item carries runAction, land on the list surface and auto-run the declared action once (same semantics EnvironmentListToolbar.tsx's useAutoRunCreate gives the raw ?runAction= query param today — consume-once, autoTrigger the matching toolbar action).
CloudOnboardingNext.tsx: stop hand-concatenating ${envsRoute}?runAction=create_environment; drive the deep link from declared metadata via the slot.
Decide whether the URL query param remains the wire encoding of the declared slot (likely yes — the slot then owns the param name in ONE place) and pin the param name pair-wise (the transitional hardening [决策] SDUI 深链「导航即运行动作」(?runAction=<actionName>)要不要升格为 spec 声明的正式契约 #4848's 2026-08-06 on-hold comment suggested: concatenation side and consumer side asserting the same constant).
After landing: flip the framework liveness ledger row app.json → apps.navigation.children.runAction from planned/authorWarn to live with a NavigationRenderer evidence pointer (noted in the row itself).
Transitional guard
cloud#1048's comment + pin test (cloud welcome.page.test.ts) keeps guarding the cloud-owned names (ENVIRONMENTS_ROUTE, create_environment) until this lands. Do not remove it before.
Blocked-by: #7253
Follow-up consumer card for #4848 (spec half landed by the
claude/issue-4848-runaction-contractPR — filed unassigned/unrouted; the target surface is objectui, outside this card's filing repo, so route per cross-shard convention like #4848 itself was).What the spec half now declares
ObjectNavItemSchema.runAction(optional): anobjectnav item declares the action to auto-run once on arrival at the object's list surface. The reference is validated (defineStack cross-reference walk +validate-action-name-refs, error severity, did-you-mean).runAction+recordIdis parse-rejected. Ledgeredplanned+authorWarnuntil a shell consumes the declared slot.What objectui needs to do
objectnav item carriesrunAction, land on the list surface and auto-run the declared action once (same semanticsEnvironmentListToolbar.tsx'suseAutoRunCreategives the raw?runAction=query param today — consume-once,autoTriggerthe matching toolbar action).CloudOnboardingNext.tsx: stop hand-concatenating${envsRoute}?runAction=create_environment; drive the deep link from declared metadata via the slot.?runAction=<actionName>)要不要升格为 spec 声明的正式契约 #4848's 2026-08-06 on-hold comment suggested: concatenation side and consumer side asserting the same constant).app.json→apps.navigation.children.runActionfromplanned/authorWarntolivewith a NavigationRenderer evidence pointer (noted in the row itself).Transitional guard
cloud#1048's comment + pin test (cloud
welcome.page.test.ts) keeps guarding the cloud-owned names (ENVIRONMENTS_ROUTE,create_environment) until this lands. Do not remove it before.Refs: #4848 (ruling comment 5203605940), cloud#844, cloud#1048.
Generated by Claude Code