Skip to content

bug(workspace): mutation tools не помечают metadata/BSL dirty и делают source↔IB round-trip небезопасным #76

Description

@korolevpavel

Проблема

После успешной source mutation через unica.meta.edit связанная запись ConfigDumpInfo.xml/workspace state может остаться прежней. Обычный runtime build полагается на устаревшее состояние и пропускает изменённый объект или модуль. Последующий partial dump без предупреждения возвращает старую версию из информационной базы и перезаписывает актуальный source.

Та же проблема возникает для ручного изменения BSL; будущий unica.code.patch должен закрыть её системно, а не требовать full rebuild после каждого patch.

Минимальное воспроизведение

  1. Выгрузить объект Catalog.SampleCatalog и его ConfigDumpInfo.xml из локальной базы.
  2. Изменить одно scalar property через unica.meta.edit.
  3. Выполнить обычный unica.runtime.execute(operation=build) без ручной правки CDFI.
  4. Выполнить partial dump того же объекта.
  5. Повторить сценарий для одного существующего Module.bsl после будущего unica.code.patch.

Фактическое поведение

Source mutation и runtime lifecycle не связаны единым affected-target/dirty contract. Build может не загрузить изменение, а dump не обнаруживает source/IB divergence.

Ожидаемое поведение

  • Каждый mutation tool возвращает нормализованные affected metadata/module targets и content hashes.
  • Workspace хранит локальный dirty state вне tracked 1C sources; platform configVersion не синтезируется вручную.
  • Runtime build использует dirty targets/content hashes и гарантированно загружает изменённый source.
  • Partial dump сравнивает текущий source с последним известным loaded/dumped hash.
  • При divergence dump по умолчанию останавливается с structured conflict; overwrite требует явного force.
  • После terminal build/dump dirty state обновляется только для фактически обработанных targets.

Критерии приёмки

  • meta.edit → normal build → partial dump сохраняет изменённое property.
  • code.patch → normal build → partial dump сохраняет тот же BSL text byte-for-byte.
  • Если IB содержит другую версию, dump возвращает conflict и не меняет source без explicit force.
  • Result build/dump содержит requested, processed, skipped и conflicted targets.
  • Перезапуск workspace service не теряет незавершённый dirty state.

Связанные задачи

Metadata

Metadata

Assignees

No one assigned

    Labels

    blockedblocked by dependent softwarefound-on:releaseВоспроизведено на опубликованной версии — дефект у пользователей

    Type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions