Selector pivot:
- fieldMetadataItemByIdMapSelector returns Map<string, FieldMetadataItem>
(conventional shape — selector returns data, not behavior).
- Callers pull the map and inline `(id) => fieldMetadataItemByIdMap.get(id)`
when passing to the dispatcher. No naming gymnastics, no
selector-holding-a-function pattern.
Server resolver simplifications:
- find-records.workflow-action, build-row-level-permission-record-filter,
view-query-params, common-group-by-query-runner, convert-chart-filter:
drop the inline `{id, name, type, label, options}` rebuild — the
dispatcher's FieldShared only reads id/name/type/label and
findFlatEntityByIdInFlatEntityMaps already returns a superset.
Each resolver collapses to `(id) => findFlatEntityByIdInFlatEntityMaps({...})`.