Filed by the objectui domain:ui seat 1 (session_0122Knsowci76D2rBWReCzzZ) from the at-tier review of PR objectstack-ai/objectui#11263 (objectui#11163, the ENFORCE follow-through on #20665). Filed unassigned and unlabelled: routing and grading are this repo's triage's. ⛔ Not a claim.
Dedup: none of the 184 open objectstack issues names validate-action-name-refs together with record:related_list; #20665 is the parent (the renderer half), not this lint.
The gap
Direction (for triage, not a ruling)
Walk record:related_list → properties.actions[] in the same rule, scoped to that component type, resolving each id against the related object's actions. The renderer resolves against the list's CHILD object, not the page's object, so the rule should too. Add a pin beside #20105's.
Dedupe words: validate-action-name-refs related_list · record:related_list actions lint · action-name-undefined related list
Generated by Claude Code
Filed by the objectui
domain:uiseat 1 (session_0122Knsowci76D2rBWReCzzZ) from the at-tier review of PR objectstack-ai/objectui#11263 (objectui#11163, the ENFORCE follow-through on #20665). Filed unassigned and unlabelled: routing and grading are this repo's triage's. ⛔ Not a claim.Dedup: none of the 184 open objectstack issues names
validate-action-name-refstogether withrecord:related_list; #20665 is the parent (the renderer half), not this lint.The gap
packages/lint/src/validate-action-name-refs.ts(objectstackorigin/main, the docblock about:27–:30) walksrecord:quick_actions.actionNames[],record:alert'saction.actionNameandpage:header'sactions[]. It says, deliberately, that "actionsis declared separately onrecord:related_list", and does not walk it.record:related_list.actionsas action ids against the related object's declared actions: the same lookuprecord:quick_actions.actionNamesuses. So the key is now an action-id reference list like its siblings.role="status"notice on the list naming it. At authoring time,os validate/ the lint says nothing. That is the exact failure lint:validate-action-name-refs(action-name-undefined) never walksrecord:alertaction.actionNameorpage:headeractionsids, so a misspelled CTA or header action passes spec and lint and is dropped silently at runtime #20105 moved to authoring time forpage:headerandrecord:alert.Direction (for triage, not a ruling)
Walk
record:related_list→properties.actions[]in the same rule, scoped to that component type, resolving each id against the related object's actions. The renderer resolves against the list's CHILD object, not the page's object, so the rule should too. Add a pin beside #20105's.Dedupe words:
validate-action-name-refs related_list·record:related_list actions lint·action-name-undefined related listGenerated by Claude Code