Blocked-by: #11195 (meaningful only once the three keys exist on the view block; that card's PR #11458 is held for contract review — neither is closed by this issue).
Observation
packages/spec/src/data/object.zod.ts — the object-level userActions strictObject carries curated guidance entries for the high-traffic VIEW-vocabulary keys an author writes on the wrong layer: sort, search, filter, editInline each answer with a wrong-layer pointer ("…is a VIEW userActions key…"). Once #11195 lands, the view vocabulary gains group, hideFields, rowColor — three keys with the same wrong-layer trap (an author who learned them on the view writes them on the object) — but the object block has no guidance entries for them, so they get only the generic unknown-key rejection with an edit-distance suggestion (which, over the object block's create/import/edit/delete/exportCsv shape, has nothing useful to offer).
Measured on PR #11458's built dist: all three are refused by name on the object block (loud, correct), just without the curated pointer the four existing entries provide.
Remedy (small, mechanical, mirrors the existing convention)
Add three guidance entries to the object block's userActions options in object.zod.ts, following the existing sort/search/filter wording. Note the alias-integrity audit (#5013) will judge the new entries automatically (each key must be one the shape rejects — holds for all three).
Deliberately NOT folded into #11195's PR: it is a behavioural extension (error-message curation on a surface outside that card's pins), flagged in that card's report instead.
Found while implementing #11195 (session session_01T9cDbY2NBiVJWYx3BpWfH2).
Blocked-by: #11195 (meaningful only once the three keys exist on the view block; that card's PR #11458 is held for contract review — neither is closed by this issue).
Observation
packages/spec/src/data/object.zod.ts— the object-leveluserActionsstrictObject carries curatedguidanceentries for the high-traffic VIEW-vocabulary keys an author writes on the wrong layer:sort,search,filter,editInlineeach answer with a wrong-layer pointer ("…is a VIEWuserActionskey…"). Once #11195 lands, the view vocabulary gainsgroup,hideFields,rowColor— three keys with the same wrong-layer trap (an author who learned them on the view writes them on the object) — but the object block has no guidance entries for them, so they get only the generic unknown-key rejection with an edit-distance suggestion (which, over the object block'screate/import/edit/delete/exportCsvshape, has nothing useful to offer).Measured on PR #11458's built dist: all three are refused by name on the object block (loud, correct), just without the curated pointer the four existing entries provide.
Remedy (small, mechanical, mirrors the existing convention)
Add three
guidanceentries to the object block'suserActionsoptions inobject.zod.ts, following the existingsort/search/filterwording. Note the alias-integrity audit (#5013) will judge the new entries automatically (each key must be one the shape rejects — holds for all three).Deliberately NOT folded into #11195's PR: it is a behavioural extension (error-message curation on a surface outside that card's pins), flagged in that card's report instead.
Found while implementing #11195 (session
session_01T9cDbY2NBiVJWYx3BpWfH2).