fix(load): unblock first load of an absent extension - #54
Conversation
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
WalkthroughКлассификатор ошибок пробирования теперь корректно обрабатывает Unicode-регистр и дополнительные английские и русские сообщения о недоступных расширениях. Тесты проверяют состояние ChangesКлассификация ошибок пробирования
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to The PR narrowly expands compatibility-error classification so the first load of an absent extension can proceed; no actionable merge-blocking risk remains after normal checks and review. Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 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 |
- classify Designer's "Конфигурация 'Расширение конфигурации' недоступна" as NotSupported, so `load --mode load` proceeds on the first load of an extension the infobase does not carry yet instead of failing the compatibility probe with `failed to determine infobase compatibility state` - switch the probe classifier to Unicode `to_lowercase`; `to_ascii_lowercase` leaves Cyrillic untouched, so every Russian branch silently never matched a capitalised platform diagnostic - cover the absent-extension wording in ru and en, and keep unrelated extension probe failures classified as Unknown
- distinguish absent extensions in the v0.6 JSON contract - require exact clean diagnostics before mutating an infobase - preserve unknown probe failures as platform errors - prevent stale Designer logs from authorizing a load - cover first install and conflicting evidence end to end
442cfc0 to
689988c
Compare
Problem
The first
loadof a CFE absent from the infobase is blocked by the compatibility probe. On platform 8.3.27.2130 Designer returns non-zero with the exact/Outline:The migrated patch originally widened substring matching to
unavailableand Unicode-lowercased every branch. Independent review found that this could combine unrelated extension and server/license diagnostics and authorize a mutating/LoadCfg.Downstream reproduction: IngvarConsulting/unica#355
Rebuilt contract
compatibility_state: "absent"for v0.6.load + absentfor the first installation.merge + absentwith an actionable first-installation hint./Outdiagnostic, with empty stdout/stderr, no interruption, no read error, and no extra lines./LoadCfgor/MergeCfg./Outcannot be removed, preventing stale evidence reuse.The public and safety contract is recorded in ADR-0023 and
spec/architecture/invariants.md.Verification
Passed locally:
cargo fmt --checkgit diff --checkcargo test --locked --bin v8-runner load_artifact— 22 passedcargo test --locked --test cli_load— 9 passedRegression coverage includes first install order
CompareCfg -> LoadCfg -> UpdateDBCfg,absentJSON serialization, merge hint, BOM/CRLF, mixed stdout/stderr/log evidence, access/auth/license/connection errors, unreadable/Out, stale/Out, and unverified English wording.The broad local contract suite still has the fork's pre-existing macOS environment failures (path canonicalization and process startup timeouts). GitHub CI is the merge gate for the rebuilt head.