Про 2.4+ пока не слышал, что ошибку исправили. Ты

Про 2.4+ пока не слышал, что ошибку исправили.

Ты про эту? Я пока не отписался с подробностями, но коротко: выяснил в чем проблема. Они давно уже вынесли расширяющие пакеты из системных настроек в отдельную таблицу, но с этим у них косяков куча (я про них им писал еще в 13-ом году), в итоге у них чтение этих записей есть, а создания нет (да, и такое бывает :)). При этом именно при обновлении MODX фигачит эти настройки в отдельную таблицу, но MODX при инициализации по разному обрабатывает данные расширяющих пакетов из системных настроек и отдельной таблицы. В общем, в большинстве случаев помогает просто очистка таблицы modx_extension_packages (только не забывает про бекапы).

Да и при обновлении мне несложно файлы обновить, всё равно ведь в ядро лезть надо :)

Если ты все правильно делаешь, то в ядро не придется лезть.

Единственно, что я сейчас исключил — это правку базы руками. Я просто в установочном пакете сразу данные про это поле прописываю в modx.mysql.schema.xml — и при установке всё уже есть.

Ты и это можешь исключить. Когда пакет устанавливается, ты можешь инициировать свой модуль и выполнить добавление колонки средствами самого MODX-а. Вот смотри пример:

<?php
$pkgName = 'modImporter';
$pkgNameLower = strtolower($pkgName);

if ($object->xpdo) {
  $modx =& $object->xpdo;
  $modelPath = $modx->getOption("{$pkgNameLower}.core_path",null,$modx->getOption('core_path')."components/{$pkgNameLower}/").'model/';

  switch ($options[xPDOTransport::PACKAGE_ACTION]) {
    case xPDOTransport::ACTION_INSTALL:
    case xPDOTransport::ACTION_UPGRADE:
      if ($modx instanceof modX) {
        $modx->addExtensionPackage($pkgNameLower, "[[++core_path]]components/{$pkgNameLower}/model/", array(
          // 'serviceName' => $pkgName,
          // 'serviceClass' => $pkgName,
        ));
        
        
        $modx->addPackage($pkgNameLower, MODX_CORE_PATH . "components/{$pkgNameLower}/model/", array(
          // 'serviceName' => $pkgName,
          // 'serviceClass' => $pkgName,
        ));
        
        $manager = $modx->getManager();

        $manager->addField('modResource', 'externalKey');
        $manager->addIndex('modResource', 'externalKey');
        
        
        $modx->log(xPDO::LOG_LEVEL_INFO, 'Adding ext package');
      } 
      break; 
        
    case xPDOTransport::ACTION_UNINSTALL:
      if ($modx instanceof modX) {
        $modx->removeExtensionPackage($pkgNameLower);
      }
      break;
  }
}
return true;

Это вот сюда фигачится: https://github.com/MODX-Club/MODX_SamplePackage/blob/master/_build/resolvers/resolver.register.php Только в транспортере надо подключить резолвер.