Контекст
Связано с:
Повторный анализ #24 и интеграционного сценария Unica показывает, что backup/target-scoped merge tracked-файла устраняет симптом, но сохраняет неверное владение состоянием.
ConfigDumpInfo.xml содержит внутренние id/configVersion платформы и является локальным состоянием синхронизации конкретной редактируемой конфигурации/ИБ. Методика 1С для Git исключает его из репозитория. Значения configVersion нельзя синтезировать или коллективно согласовывать.
Проблемы текущего контракта
1. Hash state не изолирован по информационной базе
ADR-0002 и ADR-0012 адресуют redb context через workPath и source-set (designer-<sourceSetName>/edt-<sourceSetName>), но не через identity ИБ.
Если тот же checkout и workPath переключить на другую infobase.connection через primary/local config, runner может повторно использовать snapshot первой ИБ и вернуть Skipped, хотя выбранная ИБ этот source ещё не получала.
2. Платформа изменяет CDFI в пользовательском source root
Designer build вызывает:
/LoadConfigFromFiles <source-root> -updateConfigDumpInfo
Платформа создаёт/перезаписывает <source-root>/ConfigDumpInfo.xml. В результате локальное состояние ИБ оказывается внутри пользовательских исходников; при двух ИБ они перетирают один файл, а при tracking через Git возникает бессодержательный churn и конфликты.
3. Build receipt не доказывает обработанные targets
Текущий BuildStep сообщает source_set, mode, ok и для partial только file_count. Точные requested/processed/skipped пути и их raw hashes отсутствуют. Интегратор не может корректно очистить target-level dirty state после partial build.
4. Incremental/partial dump пишет прямо в source
Full dump использует staging publication, но incremental и partial Designer dump направлены непосредственно в platform_target_path. Если source отличается от последнего успешно загруженного baseline, dump может молча перезаписать более новое содержимое версией из ИБ.
Дополнительно текущий Designer DSL передаёт -updateConfigDumpInfo для /DumpConfigToFiles, хотя документированный platform contract относит этот параметр к /LoadConfigFromFiles; это нужно отдельно проверить реальной platform acceptance.
Ожидаемая архитектура
Per-IB runtime identity
Ввести identity runtime-контекста как минимум из:
normalized/redacted infobase identity
+ source-set raw identity
+ canonical source root
+ source format/backend
Секреты не сохраняются: для пути/state используется стабильный fingerprint нормализованной identity.
Runtime state размещается только под workPath, например:
workPath/ib-state/<ib-fingerprint>/<source-set>/
ConfigDumpInfo.xml
hash-storage.redb
transactions/
Смена connection/local overlay выбирает другой state либо явно инвалидирует прежний; она никогда не должна приводить к Skipped по snapshot другой ИБ.
Private ConfigDumpInfo lifecycle
ConfigDumpInfo.xml не требуется в tracked source и не является source target.
- Full load выполняется через private staging source;
-updateConfigDumpInfo создаёт platform-generated CDFI, который сохраняется в per-IB state.
- Partial load получает private staging source, seeded соответствующим CDFI выбранной ИБ.
- Runner никогда не публикует CDFI в пользовательский source root.
- Никакие
id/configVersion не создаются и не merge-ятся вручную.
- Missing/corrupt/incompatible CDFI приводит к безопасному full bootstrap, а не к попытке partial операции.
Exact build receipt
Typed JSON result должен возвращать для каждого source set:
requested[]
processed[]
skipped[]
conflicted[]
Для каждого пути нужны raw pre/post hash и terminal status. Persisted hash state обновляется только для фактически успешно загруженных и применённых targets.
Safe incremental/partial dump
- Платформа всегда пишет в private shadow/staging.
- Runner сравнивает current source, last successfully loaded/dumped hash и shadow output.
- При divergence по умолчанию source не меняется и возвращается structured conflict.
- Явный force, если будет поддержан, публикует только полностью проверенный owner/target bundle.
- Обновлённый CDFI остаётся в per-IB state; в source публикуются только декларативные XML/BSL-файлы.
Критерии готовности
Отношение к #24
Эта задача уточняет root cause #24. Transactional rollback остаётся полезной защитой, но target-scoped merge tracked CDFI не должен становиться целевой моделью: CDFI должен быть полностью выведен из пользовательского source tree и изолирован по ИБ.
Контекст
Связано с:
mutation → build → partial dumpround-trip;ConfigDumpInfo.xml.Повторный анализ #24 и интеграционного сценария Unica показывает, что backup/target-scoped merge tracked-файла устраняет симптом, но сохраняет неверное владение состоянием.
ConfigDumpInfo.xmlсодержит внутренниеid/configVersionплатформы и является локальным состоянием синхронизации конкретной редактируемой конфигурации/ИБ. Методика 1С для Git исключает его из репозитория. ЗначенияconfigVersionнельзя синтезировать или коллективно согласовывать.Проблемы текущего контракта
1. Hash state не изолирован по информационной базе
ADR-0002 и ADR-0012 адресуют
redbcontext черезworkPathиsource-set(designer-<sourceSetName>/edt-<sourceSetName>), но не через identity ИБ.Если тот же checkout и
workPathпереключить на другуюinfobase.connectionчерез primary/local config, runner может повторно использовать snapshot первой ИБ и вернутьSkipped, хотя выбранная ИБ этот source ещё не получала.2. Платформа изменяет CDFI в пользовательском source root
Designer build вызывает:
Платформа создаёт/перезаписывает
<source-root>/ConfigDumpInfo.xml. В результате локальное состояние ИБ оказывается внутри пользовательских исходников; при двух ИБ они перетирают один файл, а при tracking через Git возникает бессодержательный churn и конфликты.3. Build receipt не доказывает обработанные targets
Текущий
BuildStepсообщаетsource_set,mode,okи для partial толькоfile_count. Точные requested/processed/skipped пути и их raw hashes отсутствуют. Интегратор не может корректно очистить target-level dirty state после partial build.4. Incremental/partial dump пишет прямо в source
Full dump использует staging publication, но incremental и partial Designer dump направлены непосредственно в
platform_target_path. Если source отличается от последнего успешно загруженного baseline, dump может молча перезаписать более новое содержимое версией из ИБ.Дополнительно текущий Designer DSL передаёт
-updateConfigDumpInfoдля/DumpConfigToFiles, хотя документированный platform contract относит этот параметр к/LoadConfigFromFiles; это нужно отдельно проверить реальной platform acceptance.Ожидаемая архитектура
Per-IB runtime identity
Ввести identity runtime-контекста как минимум из:
Секреты не сохраняются: для пути/state используется стабильный fingerprint нормализованной identity.
Runtime state размещается только под
workPath, например:Смена connection/local overlay выбирает другой state либо явно инвалидирует прежний; она никогда не должна приводить к
Skippedпо snapshot другой ИБ.Private ConfigDumpInfo lifecycle
ConfigDumpInfo.xmlне требуется в tracked source и не является source target.-updateConfigDumpInfoсоздаёт platform-generated CDFI, который сохраняется в per-IB state.id/configVersionне создаются и не merge-ятся вручную.Exact build receipt
Typed JSON result должен возвращать для каждого source set:
Для каждого пути нужны raw pre/post hash и terminal status. Persisted hash state обновляется только для фактически успешно загруженных и применённых targets.
Safe incremental/partial dump
Критерии готовности
ConfigDumpInfo.xmlуспешно проходит full build; после операции Git tree остаётся чистым по CDFI.infobase.connectionпри неизменных source не возвращаетSkippedдо синхронизации новой ИБ.Отношение к #24
Эта задача уточняет root cause #24. Transactional rollback остаётся полезной защитой, но target-scoped merge tracked CDFI не должен становиться целевой моделью: CDFI должен быть полностью выведен из пользовательского source tree и изолирован по ИБ.