# `upo_test` / `test2` saved-state experiment ## Scope - Test base: `upo_test` - Extension: `test2` - Extension GUID: `fb26cf42-7609-11f1-828f-005056b0d483` - Common form: `t_Форма` - Form GUID: `77494708-43ea-4956-ac3c-199cfb035ad2` - Independently manually edited form: `tt_Форма3` - Form GUID: `99590008-addf-49fa-9ada-24962756d0cf` These are experiment identifiers, not a universal hardcoded route. ## Follow-up cross-extension confirmation (2026-08-13) The same logical-file protocol was exercised on a different extension and object class: - Extension: `фс_Отчеты` - Extension GUID: `9b11f844-3d08-11f1-8287-005056b0d483` - Object: `Report._ПоступлениеТовара` - Object GUID: `c428f629-785a-4141-b038-f2192bb4580d` - Guarded change: `//Пример - 3` → `//Тест - 3` The active root was a hash-keyed `ConfigCAS` record, but decoding it exposed the logical `O` / `O.0` map and the SHA-1 of each active payload. The adapter created exactly `E__configinfo`, `E__O`, `E__O.0`, executed a public `code.write` replacement and reread it. A controlled `apply_and_rollback` passed before `apply_and_verify`. A human then confirmed `//Тест - 3` in the Configurator extension editor. This proves the canonical object-module overlay route for this observed extension-root family. The implementation must retain the suffix of the exact resolved BSL stream: a separately diagnosed production route for `Report.УОП_ПечатьЦенниковАссортимента` resolves its manager module as `.2`, not `.0`. This does not authorize a guessed suffix: the selected `O.S` entry and its SHA-1 must be present in the decoded root map. Forms or an unknown root that cannot be decoded into that exact logical map remain unproven. ## Outcomes 1. Writing a `.0` module alone made a comment visible after a reload but failed activation with a hash-version error. 2. Pairing the module write with the matching `__configinfo` map update made the comment activate into `ConfigCAS`; Configurator cleared `ConfigCASSave` after successful application. 3. Building a complete three-file initial overlay while Configurator was closed, then opening and applying it, succeeded for `change-10`. 4. A manual save in `tt_Форма3` produced a three-row pending overlay for that form plus `__configinfo`. Incrementally adding `t_Форма` descriptor/module while preserving the existing rows and map entries kept both edits. 5. A pending `__configinfo` map can point at a newer active module than an earlier inspection of `ConfigCAS`; selecting the source through the pending map avoids duplicate BSL comments. ## Failed paths retained as evidence - Raw module-only write: invalid collection hash. - Random service-atom bytes: licensing/crypto error. - Treating the active module as authoritative while a pending map exists: duplicate comment insertion. - Assuming UI text means SQL save: the editor buffer can differ from `ConfigCASSave`; verify SQL immediately after saving. ## Verification after every apply 1. `ConfigCASSave` for the extension becomes empty. 2. Extension root key in `_ExtensionsInfo`/`ConfigCAS` changes to the new `__configinfo` SHA-1. 3. Active `ConfigCAS` contains the requested BSL text. 4. The active map points to the SHA-1 of the active module bytes.