Found while implementing #4282 (deleting the same limb from useConsoleActionRuntime). Observation-class: dormant, nothing a user hits today. Filed rather than fixed — that card's file fence was packages/app-shell/src/hooks/**, and another PR in the same round was touching packages/app-shell/src/views/.
The read
packages/app-shell/src/views/RecordDetailView.tsx:539, titling the param-collection dialog:
setParamState({open: true,params: localized,// Title the dialog as the action rather than the generic "Action parameters".title: action?.label||action?.title,description: actionDescription(objForI18n,action?.name,action?.description),
resolve,});This is a near-identical second paramCollectionHandler — same shape, same action?: any parameter (:500), same dead right-hand side — living alongside the one #4282 fixed. RecordDetailView builds its own runtime rather than routing through useConsoleActionRuntime, so the two handlers have drifted as a pair for a while; #4282's comment about the localization mirroring says as much ("mirrors useConsoleActionRuntime").
The reachability argument, re-measured for this site
Identical to #4282's, because it is the same key on the same surface. Re-verified on origin/main @ 7a28e1e3f, every zero paired with a control probe:
- not in
@objectstack/spec's ActionSchema — walked live against the installed @objectstack/spec@17.0.0 with the pin test's own zod-internals walk: 44 keys, title absent, controls description and label both present; - not in
@object-ui/core's ACTION_DEF_KEYS / SPEC_ACTION_KEYS (0 entries; controls description 2, label 2) nor as a field on the ActionDef interface; - not on
@object-ui/types' ui-action.ts (1 hit, prose only — titleFormat in a doc comment at :273); - not on
crud.ts's ActionSchema (2 hits, both non-action: retired-confirm prose at :136, and the nested dialog.title at :163) nor inherited from BaseSchema — base.ts's only title field at :599 belongs to HTMLAttributes; - forwarded by none of the four action renderers —
action:button, action:icon, action:group, action:menu each carry exactly one or two title hits and all of them are prose in comments.
A repo-wide sweep for reads of the key found exactly two live ones, this and the one #4282 removed:
packages/app-shell/src/hooks/useConsoleActionRuntime.tsx:259 (removed by #4282)
packages/app-shell/src/views/RecordDetailView.tsx:539 (this one)
packages/components/src/renderers/action/action-menu.tsx:223 prose
packages/components/src/renderers/action/__tests__/action-forward-parity.test.tsx:21 prose
Suggested disposition
Mirror #4282 exactly: delete || action?.title, leaving title: action?.label, and extend the pin. useConsoleActionRuntime.paramDialogTitle.test.tsx (added by #4282) is the template — it pins the reader rather than the deletion, because the action parameter here is any too, so nothing in the compiler stops the alias coming back.
Once this lands, the two prose mentions above go stale and can be refreshed in the same PR — action-forward-parity.test.tsx's header quotes the expression verbatim and cites useConsoleActionRuntime.tsx:205-207 (already stale line numbers today).
Second half, blocked
Narrowing this handler's action?: any to ActionDef hits the same wall #4282 measured — overrideNotice is read off the action but declared nowhere. That is filed separately; this issue's first half does not depend on it.
Refs #4282, #4046, #4192.
Found while implementing #4282 (deleting the same limb from
useConsoleActionRuntime). Observation-class: dormant, nothing a user hits today. Filed rather than fixed — that card's file fence waspackages/app-shell/src/hooks/**, and another PR in the same round was touchingpackages/app-shell/src/views/.The read
packages/app-shell/src/views/RecordDetailView.tsx:539, titling the param-collection dialog:This is a near-identical second
paramCollectionHandler— same shape, sameaction?: anyparameter (:500), same dead right-hand side — living alongside the one #4282 fixed.RecordDetailViewbuilds its own runtime rather than routing throughuseConsoleActionRuntime, so the two handlers have drifted as a pair for a while; #4282's comment about the localization mirroring says as much ("mirrors useConsoleActionRuntime").The reachability argument, re-measured for this site
Identical to #4282's, because it is the same key on the same surface. Re-verified on
origin/main@7a28e1e3f, every zero paired with a control probe:@objectstack/spec'sActionSchema— walked live against the installed@objectstack/spec@17.0.0with the pin test's own zod-internals walk: 44 keys,titleabsent, controlsdescriptionandlabelboth present;@object-ui/core'sACTION_DEF_KEYS/SPEC_ACTION_KEYS(0 entries; controlsdescription2,label2) nor as a field on theActionDefinterface;@object-ui/types'ui-action.ts(1 hit, prose only —titleFormatin a doc comment at:273);crud.ts'sActionSchema(2 hits, both non-action: retired-confirmprose at:136, and the nesteddialog.titleat:163) nor inherited fromBaseSchema—base.ts's onlytitlefield at:599belongs toHTMLAttributes;action:button,action:icon,action:group,action:menueach carry exactly one or twotitlehits and all of them are prose in comments.A repo-wide sweep for reads of the key found exactly two live ones, this and the one #4282 removed:
Suggested disposition
Mirror #4282 exactly: delete
|| action?.title, leavingtitle: action?.label, and extend the pin.useConsoleActionRuntime.paramDialogTitle.test.tsx(added by #4282) is the template — it pins the reader rather than the deletion, because theactionparameter here isanytoo, so nothing in the compiler stops the alias coming back.Once this lands, the two prose mentions above go stale and can be refreshed in the same PR —
action-forward-parity.test.tsx's header quotes the expression verbatim and citesuseConsoleActionRuntime.tsx:205-207(already stale line numbers today).Second half, blocked
Narrowing this handler's
action?: anytoActionDefhits the same wall #4282 measured —overrideNoticeis read off the action but declared nowhere. That is filed separately; this issue's first half does not depend on it.Refs #4282, #4046, #4192.