Build the shared row brain. Pure composition over the deps - no
injection context required, no state ownership: reads come from the
dep signals, writes go through the sink. Both shipped row components
consume this factory through CNGX_FILTER_ROW_CONTROLLER_FACTORY
so a consumer can swap the row policy (e.g. a different field-change
carry-over) without forking either skin.