I overlooked this comment
The source node's value corresponds to a key in the data array returned by the \Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface::getData method of your UI component.
From https://magento.stackexchange.com/a/219692/70343
Sure enough
/**
* Get data
* @return array
*/
public function getData()
{
if (isset($this->loadedData)) {
return $this->loadedData;
}
$items = $this->collection->getItems();
foreach ($items as $model) {
$this->loadedData[$model->getId()] = $model->getData();
$this->loadedData[$model->getId()]['general'] = $model->getData(); // key part
}
$data = $this->dataPersistor->get('xigen_announce_group');
if (!empty($data)) {
$model = $this->collection->getNewEmptyItem();
$model->setData($data);
$this->loadedData[$model->getId()] = $model->getData();
$this->loadedData[$model->getId()]['general'] = $model->getData(); // key part
$this->dataPersistor->clear('xigen_announce_group');
}
return $this->loadedData;
}
Helped to look at this https://github.com/magento/magento2/blob/2.3/app/code/Magento/Customer/Model/Customer/DataProvider.php#L214-L252
I hope this helps someone. Might save them an hour.