mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-15 07:49:01 +03:00
fix(db-load-git,db-update): ловить тихие отказы платформы, как db-load-xml
Платформа рапортует об успехе (exit 0) и одновременно пишет в /Out-лог, что часть метаданных отброшена. Детектор этого был только в db-load-xml, хотя db-load-git гоняет тот же /LoadConfigFromFiles (и дописывает /UpdateDBCfg в тот же вызов), а db-update — вторую половину той же цепочки. Оба лог печатали, но не разбирали. Детектор извлечён в Find-SilentRejections / find_silent_rejections и внесён в реестр семей check-inline-drift: инлайн-код гард сверять не умеет, а именно расхождение копий и было бы главным риском такого дублирования. Добавлен восьмой паттерн — «Для работы с конфигурацией необходима версия платформы не меньше». Замерено при работе над issue #63: конфигурация с режимом совместимости выше платформы грузится с кодом 0, db-update тоже отвечает 0, объекты в базу не попадают, а отказ приходит только в рантайме. Строка обрезана до инвариантной части — конкретная версия в сообщении меняется. Текст предупреждения переписан. Убрана подсказка «pass -StrictLog to treat as error»: ключ предназначен для регрессов (его передаёт verify-snapshots), а совет бессмысленный — операция уже выполнена, и повторять её ради того же текста незачем. Формулировка больше не утверждает «dropped properties/refs»: класс проблемы разный, а строки лога печатаются следом и говорят за себя. Две правки по дороге: - `return ,$found` в паре с `@()` у вызывающего давал массив из одного пустого массива, то есть предупреждение «1 problem(s)» на чистом логе. Возврат без запятой-обёртки. - py-порт писал предупреждение в stderr, PS1 — в stdout. В самом py-порте stderr занят исключительно фатальными «Error:» перед exit 1, так что не-фатальное предупреждение там было единственным исключением. Приведено к stdout — и к соглашению своего же файла, и к поведению PS1; verify-snapshots на падении читает `stderr || stdout`, поэтому диагностика не теряется. Тесты: фейковая платформа .cmd, которая вычитывает путь из /Out и кладёт туда готовый лог, — по четыре кейса на db-load-xml и db-update (отбраковка, она же под -StrictLog, новый паттерн, чистый лог без предупреждения). Раньше детектор не был покрыт вообще. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
06f21ab3d1
commit
a024b7da9c
@@ -214,6 +214,15 @@ const FAMILIES = [
|
||||
},
|
||||
|
||||
// ─── Обвязка вызова платформы 1С (db-* и потребители) ────────────────────
|
||||
// Детектор строк, о которых платформа сообщает, НЕ поднимая код возврата. Живёт во всех
|
||||
// навыках, читающих /Out-лог загрузки: разъехавшийся список паттернов означал бы, что один
|
||||
// навык ловит тихий отказ, а соседний по той же операции — нет.
|
||||
{
|
||||
name: 'platform: silent_rejections', py: 'find_silent_rejections', ps1: 'Find-SilentRejections',
|
||||
variants: [
|
||||
{ id: 'base', authority: 'db-load-xml', consumers: ['db-load-git', 'db-update'] },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'platform: resolve_extra_args', py: 'resolve_extra_args', ps1: 'Resolve-ExtraArgs',
|
||||
variants: [
|
||||
|
||||
Reference in New Issue
Block a user