fix(form-validate): проверка 14 сверяет форму с её дескриптором, с выгрузкой — предупреждением

Тело формы сравнивалось с Configuration.xml, а платформа сверяет его с дескриптором формы
(Forms/<Имя>.xml, у общей формы CommonForms/<Имя>.xml): только эту пару она отвергает при
расхождении («Версия формата загружаемого файла … отличается от версии формата ранее загруженных
файлов»). Отсюда были ошибки в обе стороны: согласованная пара 2.18 в выгрузке 2.20 (грузится)
получала ERROR, а пара 2.20/2.18 при Configuration.xml 2.18 (не грузится) проходила. Кроме того,
при якоре без версии генераторный detect_format_version отдавал дефолт 2.17 — ложное расхождение.

Теперь: форма ≠ своему дескриптору — ошибка; иначе форма ≠ выгрузке — предупреждение (платформа
грузит, но выгрузка неоднородна). Контекст «конфигурация / EPF» берётся тем же поиском якоря
(find_dump_anchor). Новая общая функция ext_body_owner — семья в check-inline-drift.

Co-Authored-By: Sergei Pleshanov <2357qwr@gmail.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-09-26 22:05:28 +03:00
co-authored by Sergei Pleshanov Claude Opus 5.5
parent a90861800b
commit c943acefa2
57 changed files with 1702 additions and 128 deletions
+9 -3
View File
@@ -120,7 +120,7 @@ const FAMILIES = [
// если <каталог>.xml — корень ExternalDataProcessor/ExternalReport, чего в дереве
// конфигурации не бывает. Поэтому вариант один на всех, переключателя не нужно.
{ id: 'base', authority: 'form-compile',
consumers: ['cfe-borrow', 'cfe-patch-method', 'form-add', 'form-validate', 'help-add', 'interface-edit',
consumers: ['cfe-borrow', 'cfe-patch-method', 'form-add', 'help-add', 'interface-edit',
'meta-compile', 'mxl-compile', 'role-compile', 'role-edit', 'subsystem-compile', 'template-add', 'xdto-compile'] },
],
},
@@ -130,13 +130,19 @@ const FAMILIES = [
{
name: 'root_version', py: 'root_version', ps1: 'Get-RootVersion',
variants: [
{ id: 'base', authority: 'meta-validate', consumers: [] },
{ id: 'base', authority: 'meta-validate', consumers: ['form-validate'] },
],
},
{
name: 'find_dump_anchor', py: 'find_dump_anchor', ps1: 'Find-DumpAnchor',
variants: [
{ id: 'base', authority: 'meta-validate', consumers: [] },
{ id: 'base', authority: 'meta-validate', consumers: ['form-validate'] },
],
},
{
name: 'ext_body_owner', py: 'ext_body_owner', ps1: 'Get-ExtBodyOwner',
variants: [
{ id: 'base', authority: 'form-validate', consumers: [] },
],
},
{