docs(provenance): own issue #355 as a Unica defect - #502
Conversation
- name the first cause of the blocked first extension load: v8-runner's probe classifier returns Unknown for Designer's "Конфигурация 'Расширение конфигурации' недоступна" - record the two combining defects: to_ascii_lowercase leaves Cyrillic untouched, and the classifier has no vocabulary for "недоступна" - record why the Unica side is exhausted: argv pass-through only, the probe is unconditional, and the CLI has no flag to skip it - link the upstream fix and state the re-pin condition for tools.lock.json
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughДобавлен документ с разбором причины сбоя первичной загрузки ChangesРазбор первичной загрузки расширения
Estimated code review effort: 1 (Trivial) | ~5 minutes Merge Risk: ⚪ Minimal · up to This PR records the issue root cause without changing product behavior or runtime code. It is merge-ready after normal review; the remaining documentation clarifications are non-blocking. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
- state that Unica ships v8-runner, so a runner defect is a Unica defect for the user; the задача closes by shipping fixed bytes, not by waiting on a third-party maintainer - keep the mechanical finding: a Unica code change cannot unblock the load, which is why delivery goes through a patched build - record the delivery route: patch over the pinned commit in unica-toolchain, buildRevision 3, then re-pin tools.lock.json - record the AGPL-3.0-only obligation the patched bytes carry and where the modified source is published
Разбор первопричины #355 и маршрут поставки. Дефект принадлежит Unica.
Unica поставляет
v8-runnerв составе плагина, поэтому для пользователя нет «дефекта раннера» — есть Unica, которая падает на первичной загрузке расширения. Задача закрывается поставкой исправленных байтов, а не ожиданием стороннего мейнтейнера.Первопричина
v8-runner0.5.1, коммит7ce1b06— тот же, что закреплён вplugins/unica/third-party/tools.lock.json. Файлsrc/use_cases/load_artifact.rs.loadперед применением артефакта всегда выполняетprobe_compatibility. Для.cfeпроба сравниваетExtensionConfiguration <ИМЯ>сExtensionDBConfiguration <ИМЯ>. Когда<ИМЯ>в информационной базе ещё нет, Конфигуратор завершается ненулевым кодом и пишетКонфигурация 'Расширение конфигурации' недоступна;classify_probe_failureвозвращаетUnknown, иUnknownпревращается вAppError::Validation— отсюда код2иartifact_load_failed.Складываются два независимых дефекта, и для воспроизведения нужны оба:
to_ascii_lowercase()не понижает регистр кириллицы. Отображается толькоA-Z, поэтому"Расширение"не совпадает с литералом"расширен", и все русские ветки классификатора недостижимы, как только платформа пишет слово с заглавной буквы. Этот дефект шире задачи: он же гаситне поддержна ветке расширения иподдерж/поставщикна ветке конфигурации.не найденине поддержс английскими эквивалентами.Если классифицировать состояние как
NotSupported, тоvalidate_probe_mode_compatibility(LoadMode::Load, NotSupported)возвращаетNoneи загрузка идёт дальше — ровно ожидаемое поведение из задачи.Почему правка кода Unica сценарий не снимает
ibcmdу Unica нет: весь runtime идёт черезv8-runner.loadвinternal_adapters.rs— чистая трансляцияpath,mode,settings,extensionв argv.LoadRequestвv8-runnerне имеет флага, который её отключает.Это ограничение маршрута поставки, а не основание передать задачу наружу.
Маршрут поставки
unica-toolchainнесёт патч поверх закреплённого коммита и поднимаетbuildRevisionдо3; байты получают собственную идентичностьv8-runner-nightly-master-build.3.sourceCommitне двигается —validate-sourceпроверяет контрольную сумму патча и его применимость поверх него.assetTagи контрольные суммы вtools.lock.json, добавляет раскрытие модификации вNOTICE.mdи закрывает bug: первичная загрузка расширения блокируется проверкой совместимости #355.Границы этого PR
Здесь только запись происхождения; поведение не меняется. Перезакрепление
tools.lock.jsonи раскрытие модификации вNOTICE.mdотносятся к шагу 2 и лягут одним коммитом с ним: до публикацииbuild.3они описывали бы байты, которых ещё нет.Доказательство исправления
Тест написан до правки и падал на закреплённом коммите (
left: Unknown, right: NotSupported). Прогонcargo test --bin v8-runnerна7ce1b06: без правки 699 passed / 44 failed, с правкой 702 passed / 44 failed. Сорок четыре падения существовали до правки и относятся к окружению — на машине разбора нет платформы 1С; отсортированные списки имён упавших тестов до и после совпадают, регрессий нет.cargo fmt --checkпроходит,cargo clippyне добавляет предупреждений в изменённой области.Живой сценарий на платформе не выполнялся: рабочей установки 1С на машине разбора нет.
Проверка
python -m unittest discover -s tests/ci— 713 тестов, OK (3 skipped).Refs #355