mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-21 02:29:42 +03:00
refactor(skills): регистрация в ChildObjects — именованная функция под анти-дрейфом
Три навыка делали одну работу тремя инлайновыми копиями в main(), и одна копия молча разъехалась: role-compile.py рапортовал об успехе, не тронув файл. Это ровно тот класс, от которого заведён check-inline-drift.mjs, но в реестр регистрацию было не записать — он работает по именованным функциям. Регистрация вынесена в Register-InChildObjects / register_in_childobjects с контрактом (родительский XML, тег родителя, тег потомка, имя) и исходом added | already | no-childobj | no-config. Печать сообщений осталась на вызывающей стороне: тексты у навыков разные, и сведение их меняло бы вывод. Эталон — meta-compile, форма функции задана на .ps1. role-compile берёт его тело копией, и гард это подтверждает. subsystem-compile идёт отдельным вариантом с обоснованием: родителем бывает вложенный Subsystem.xml произвольной глубины, поэтому отступ он берёт из документа, а запись дописывает в конец блока — фиксированные три табуляции там неверны, и группировать по типу нечего. Вынос поведенчески нейтрален: 837 кейсов зелёные на обоих рантаймах, снэпшоты не дрейфовали, матрица «навык × порт × изломанная форма Configuration.xml» даёт те же исходы, а порты — байт-в-байт одинаковый файл. Попутно из subsystem-compile.py убран мёртвый ET.SubElement перед pass: дерево мутировалось и выбрасывалось, правка идёт по сырому тексту. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
2b0ac3ea75
commit
1c63d9ddcc
@@ -383,6 +383,16 @@ const FAMILIES = [
|
||||
{ id: 'legacy', authority: 'meta-decompile', consumers: [],
|
||||
why: 'ранний вариант со своим Quote-Json и без inline-попытки; сведение меняет вывод meta-decompile' }],
|
||||
},
|
||||
// ─── Регистрация объекта в <ChildObjects> файла конфигурации ─────────────
|
||||
{
|
||||
name: 'ChildObjects: регистрация объекта в составе',
|
||||
py: 'register_in_childobjects', ps1: 'Register-InChildObjects',
|
||||
variants: [
|
||||
{ id: 'grouped', authority: 'meta-compile', consumers: ['role-compile'] },
|
||||
{ id: 'nested-parent', authority: 'subsystem-compile', consumers: [],
|
||||
why: 'родителем бывает вложенный Subsystem.xml произвольной глубины: отступ берётся из документа, а запись дописывается в конец блока — фиксированные три табуляции там неверны, и группировать по типу нечего' },
|
||||
],
|
||||
},
|
||||
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user