For the complete documentation index, see llms.txt. This page is also available as Markdown.

Выпуски образов

С 27.09.2026 канал один: beta-образы от 27.09.2026 опубликованы под тегами latest, light и arm64 (раздел «27.09.2026: beta-образы стали stable» ниже). Таблицы серверов — журнал выпусков: до 27.09.2026 — beta-сборки, после — выпуски под тегами без суффикса.

Что вошло в beta-сборки CodeMetadataSearchServer, Graph Metadata Search, SyntaxCheckServer, HelpSearchServer, SSLSearchServer и TemplatesSearchServer, опубликованные с 9 сентября 2026 года (SSLSearchServer и TemplatesSearchServer — с 24 сентября) (сборки перечислены по дате публикации; между ними теги не двигались). Теги latest-beta, light-beta и arm64-beta одного выпуска собираются из одного и того же кода; отличаются они только составом зависимостей (см. Теги и ключи образов). Сборка опознаётся по digest образа: первые 12 символов sha256 показывает docker images --digests, а полный digest — docker image inspect <образ> --format '{{index .RepoDigests 0}}'.

Правила, общие для всех выпусков ниже:

  • Индексы и графы открываются как есть. Кроме HelpSearchServer от 23.09.2026 и выпусков 24.09.2026, которые один раз пересобирают индексы с префиксом документов, а также выпусков, которые один раз перестраивают часть данных: HelpSearchServer от 25.09.2026 (поздний вечер) полностью переиндексирует справку, Graph от 25.09.2026 (вечер) пересобирает граф вызовов, Graph от 25.09.2026 (поздний вечер) перезагружает метаданные и права ролей, Graph от 26.09.2026 перечитывает права ролей, Graph от 26.09.2026 (поздний вечер) создаёт индексы слоя, Code от 26.09.2026 перестраивает структурные индексы, Code от 01.10.2026 перестраивает два индекса имён, Graph от 01.10.2026 пересобирает граф вызовов, Code от 01.10.2026 (вечер) перестраивает структурный индекс, граф зависимостей и индекс форм, Graph от 01.10.2026 (вечер) один раз перечитывает метаданные и модули с процедурами Асинх, SSLSearchServer от 01.10.2026 один раз перестраивает индекс (см. их строки), ни один сентябрьский выпуск не меняет формат хранилища zvec, отпечаток индекса или схему графа так, чтобы потребовалась полная переиндексация. Если сборка перечитывает что-то один раз (например, формы графа), это сказано в её строке.

  • Порядок обновления серверов не важен. Code и Graph не зависят друг от друга: у каждого свои данные и свой лицензионный ключ; обновляйте их по одному в любом порядке.

  • Переменные окружения только добавляются. Исключение — переменные префиксов эмбеддингов EMBEDDING_QUERY_PREFIX, EMBEDDING_DOCUMENT_PREFIX и EMBEDDING_PASSAGE_PREFIX: с 24.09.2026 они не применяются (заданная переменная выводит предупреждение в журнал). Остальные не переименованы и не удалены; новые перечислены в строке выпуска и на странице конфигурации сервера.

27.09.2026: beta-образы стали stable

Beta-канал закрыт. Теги light, latest и arm64 переведены на beta-образы от 27.09.2026: дайджесты совпадают с light-beta, latest-beta и arm64-beta, код и ключи те же. Дальше выпуски выходят только под тегами без суффикса, теги *-beta не поддерживаются. Образы принимают только ключ, выпущенный 27.09.2026 (LICENSE_KEY_<СЕРВЕР> в дистрибутиве); ключ stable, выданный раньше, отклоняется с Invalid LICENSE_KEY. С бывшего beta переиндексация не нужна; со stable до 27.09.2026 переходите с новыми каталогами данных, индексы строятся заново. Порядок перехода — в Тегах и ключах образов.

Сервер
light
latest
arm64
Какая сборка

CodeMetadataSearchServer

dd84456b31d1

09f6fe5ec3c6

5aad3ce0630d

Выпуск 27.09.2026 (утро)

Graph Metadata Search

7df42796176b

34373b1954b7

db99e7c1a81b

Выпуск 27.09.2026 (вечер)

SyntaxCheckServer

—

5460f567e29a

baa7dbc3c407

Выпуск 27.09.2026 (утро)

HelpSearchServer

84293ac3a409

f9dda49f0199

deb0555c4f83

Выпуск 27.09.2026 (утро)

SSLSearchServer

b883312a8aa0

dcfb86e58161

245abe4c7d35

Пересборка 27.09.2026 (вечер): служебные изменения сборки, код сервера и ключ те же, что у утреннего выпуска

TemplatesSearchServer

fd271b6815c9

882c8fee3706

a5665d8b9594

Выпуск 27.09.2026 (утро)

1CCodeChecker

122a0c8ed98e

f5e18bd41855

825387c4be44

Beta-образ от 27.09.2026

CodeMetadataSearchServer (comol/1c_code_metadata_mcp)

Дата
light-beta
Что изменилось

17.10.2026

c430268f33fe (тег light; latest 047fd87355b6, arm64 4bed17957f88)

Новое поколение индекса больше не переносит из опубликованного файл extensions.json: пока поколение собирается, записи о расширениях в его каталоге нет, а при запечатывании пишется только его собственная. Раньше вместе с хранилищами неизменённых файлов копировалась запись предыдущего поколения (с его generation_id и прежним набором), и до конца сборки в каталоге нового поколения было видно старый набор расширений — например, без расширения, только что добавленного в EXTENSION_PATHS. Опубликованное поколение и раньше записывало набор, по которому собиралось. Переиндексации нет.

16.10.2026

633a517db236 (тег light; latest 4ab00dfdb3f0, arm64 2625cc03d632)

get_method_call_hierarchy обходит граф по уровням (в ширину): исчерпанный бюджет max_nodes/max_edges обрезает самый глубокий уровень, а не прямых вызывающих — раньше первый вызывающий с одноимёнными обработчиками тысяч форм (ПриЧтенииНаСервере) выбирал бюджет, и при depth=3 пропадала часть вызывающих первого уровня. graph_dependencies, search_forms, inspect_form_layout, bsl_scope_members и get_metadata_details отвечают из опубликованного поколения и во время сборки нового; фаза, последняя полоса которой продолжена с контрольной точки, больше не остаётся в состоянии running после прогона (из-за этого формы, bsl_scope_members и граф зависимостей отвечали «still building» при готовом индексе). get_metadata_details: предопределённые элементы справочников, планов видов характеристик, видов расчёта, счетов и значения перечислений (predefined) читаются из выгрузки (Ext/Predefined.xml). Директива &НаСервереБезКонтекста (&НаКлиентеНаСервереБезКонтекста) больше не сокращается до НаСервере (НаКлиенте) в search_function, get_module_structure, compact_symbol и метаданных фрагментов codesearch; там же is_export учитывает Экспорт после многострочного списка параметров. get_role_artifact: права на конфигурацию — на Конфигурация.<Имя>, входят в rights_total. effective_definition: одноимённые обработчики форм без аннотаций — effective, а не intercepting. Связи default_object_form/default_list_form живого прохода graph_dependencies ведут к форме, а не к объекту. search_function и codesearch при limit результатах возвращают items_total: null с items_total_reason: candidate_cap_reached. Отпечаток индекса не меняется, переиндексации при обновлении нет: директива и признак экспорта старых записей дочитываются из исходников при запросе.

14.10.2026

83db0ccfad3a (тег light; latest 31f4edf3e753, arm64 0df16f5b93ef)

Экспортный метод, у которого список параметров перенесён на несколько строк (Процедура РассчитатьСостояние( … = Ложь) Экспорт), отмечается is_export=true в search_function, get_module_structure (и учитывается в stats.total_exports), compact_symbol и при чтении по item_id: Экспорт ищется после скобки, закрывающей список параметров, а не только в первой строке объявления. signature (include_body=false, сжатый вид detail_level=outline) — всё объявление одной строкой без комментариев, а не только его первая строка; у однострочных объявлений сигнатура прежняя. Индекс не перестраивается: для методов, записанных прежней версией с is_export=false, признак и сигнатура читаются из сохранённого текста метода.

13.10.2026 (второй выпуск)

4934e44fbfea (тег light; latest 087b839fcb91, arm64 d7a9df3f8248)

Общие формы попадают в индекс форм: CommonForms/<Имя>/Ext/Form.xml выгрузки Конфигуратора и src/CommonForms/<Имя>/Form.form проекта EDT хранятся как объект ОбщиеФормы.<Имя> с формой <Имя>. inspect_form_layout находит такую форму по ОбщаяФорма.<Имя>, ОбщиеФормы.<Имя> или краткому имени, search_forms тоже её видит. Раньше индекс форм хранил только формы объектов. Индекс, построенный прежними образами, при первом старте один раз собирает поколение: все файлы переносятся как есть, читаются только общие формы, эмбеддинги считаются только для их описаний (у ЗУП 239 общих форм). Прогрев векторного индекса: после старта и после переключения на новое поколение сервер в фоне делает по одному дешёвому векторному запросу на каждую включённую полосу. Первый поиск пользователя больше не платит за загрузку слитого индекса: на стенде первый запрос шёл 9,4 с против 6 с у следующих, на большом проекте мог упираться в таймаут клиента. Прогрев идёт тем же путём, что обычный поиск, готовность сервера не ждёт, полосу с неслитыми документами не трогает; выключается VECTOR_WARMUP_ENABLED=false (см. конфигурацию). Проверка «намеренно пустого» структурного индекса (весь код исключён STRUCTURAL_EXCLUDE) на старте не могла прочитать список файлов опубликованного поколения и всегда отвечала «нет»; исправлено. Отпечаток индекса не меняется, переиндексации при обновлении нет.

13.10.2026

6889b9b1e3da (тег light; latest 2135e066158a, arm64 f799eb465cdd)

Периодический проход по неизменной выгрузке больше не публикует новое поколение каждый час, когда у включённой полосы нет ни одного файла (выгрузка без справки .html при INDEX_HELP=true: пустая коллекция справки считалась недостроенным индексом). Общая форма (CommonForms/<Имя>/Ext/Form.xml), которую индекс форм не хранит, отмечается в трекере и больше не считается новой в каждой сборке. Если в опубликованном поколении есть документы, не слитые в векторный индекс (индекс собирался с VECTOR_OPTIMIZE_ENABLED=false, слияние прерывалось), а слияние включено, первый прогон после старта один раз собирает поколение без обращений к эмбеддингам и сливает их — раньше слияние шло только после изменения выгрузки, и векторный и полнотекстовый поиск по таким документам шёл перебором; при VECTOR_OPTIMIZE_ENABLED=false старт пишет об этом предупреждение. Полнотекстовая часть поиска: and/or/not (в том числе Not из расширения запроса с «НЕ»), скобки, кавычки и двоеточие больше не ломают разбор запроса, полнотекстовые результаты по таким запросам возвращаются. Отпечаток индекса не меняется, переиндексации при обновлении нет; однократная сборка со слиянием — только там, где есть неслитые документы, на большом индексе это часы работы процессора.

10.10.2026

6425198ff17c (тег light; latest ab305e5ae1cf, arm64 4e8a47ab3f42)

Восстановление полосы code после остановки контейнера во время слияния векторного хранилища: копия сохранённых документов в новый каталог читает старый одним потоковым проходом через снимок только для чтения, а не фильтрованными запросами по диапазонам (на 322 тыс. документов они отменялись движком досрочно — Cancelled: Plan was cancelled early — и роняли контейнер с SIGSEGV через 9–16 минут); во время копии фоновые слияния не запускаются, слияние одно — после неё. Поиск по коду: один модуль занимает на странице не больше CODE_SEARCH_MAX_PER_MODULE результатов (по умолчанию 3, 0 снимает ограничение), первый результат такого модуля несёт module_results_withheld. search_function: одноимённые процедуры разных объектов не конкурируют — при нескольких объектах effective_definition возвращает rule: object_not_specified и вердикт на каждый объект в objects; module_path с каталогом объекта даёт один вердикт. metadatasearch(names_only=true): имя реквизита отвечает объектом, который его объявляет, со списком matched_attributes. Включает выпуски 06.10.2026. Отпечаток индекса не меняется, переиндексации при обновлении нет; полоса, ожидавшая перестройки после прерванного слияния, копируется один раз при первом старте без обращений к эмбеддингам. Новая переменная EMBEDDING_API_BASE_NO_V1: при значении 1, true или yes адрес из EMBEDDING_API_BASE (или устаревшего OPENAI_API_BASE) уходит в API эмбеддингов и переранжирования как написан, без автодобавления /v1 — для корпоративных шлюзов без этого суффикса; без переменной поведение прежнее.

06.10.2026 (второй выпуск)

dda324dd8e5f (тег light; latest 2aeda4d7c06d, arm64 df0973a67653)

Объект выгрузки Конфигуратора, который не прочитался с первого раза, читается ещё до двух раз, а не выпадает: на томе с диска Windows под нагрузкой чтение файла иногда срывается и через мгновение проходит. Раньше такой объект пропускался с предупреждением Lane metadata: N unit(s) skipped by the xml source и не появлялся в листинге compact_metadata, пока не изменится его файл или не пройдёт полная пересборка: сведения о метаданных пишутся целиком только при первой сборке. На выгрузке ERP одно полное чтение под нагрузкой пропустило 10 отчётов, повторное — ни одного. Повтор чтения записывается в журнал (read on attempt N of 3). Включает выпуск 06.10.2026 (объекты расширений). Отпечаток индекса не меняется, переиндексации нет; объект, уже пропущенный в собранном индексе, вернёт reindex(force=true) или изменение его файла.

06.10.2026

03dd7c7064e9 (тег light; latest 4acc8244cdfb, arm64 25e315fe6f1c)

В листинге compact_metadata (хранилище сведений о метаданных) появились объекты расширений тех видов, которые раньше пропускались: общие картинки, подсистемы, пакеты XDTO, а также языки, элементы стиля, общие реквизиты, группы команд и сервисы интеграции (выгрузка Конфигуратора); называются они так же, как объекты основной конфигурации (ОбщиеКартинки.<Имя>, Подсистемы.<Имя>, ПакетыXDTO.<Имя>). Формы и макеты собственных объектов расширения больше не попадают в листинг как отдельные объекты вида Справочники.<ИмяФормы>. Заимствованные объекты по-прежнему описывает основная конфигурация. Отпечаток индекса не меняется, переиндексации при обновлении нет; в уже собранном индексе недостающие объекты запишет следующая полная сборка (reindex(force=true) или чистый каталог данных).

04.10.2026

0858107b18a7 (тег light; latest c85d3b242236, arm64 1034a157f206)

Тот же код, что в выпуске 03.10.2026 (вечер); модуль лицензии побайтно тот же. Изменилась только сборка: слой с весами модели (около 1 ГБ) теперь общий у latest и arm64 и не пересобирается при смене зависимостей, поэтому при этом обновлении latest и arm64 один раз скачивают его заново, а дальше обновления приносят только слой приложения; light скачивает только слой приложения. В репозитории образа остались только теги latest, light и arm64. Переиндексации нет.

03.10.2026 (вечер)

aff37e07a220 (тег light; latest 6e10b330236d, arm64 f3326b962f03)

Первая сборка структурного индекса, индекса форм и сведений о метаданных идёт одной транзакцией, а не фиксацией на каждый модуль: режим массовой загрузки внешнюю транзакцию не открывал, и на томе с диска Windows каждый модуль стоил ~0,5 с фиксации (стенд ЗУП, 10 185 модулей — 80 минут; теперь ~8 минут, 150 модулей — 3,6 с вместо 105 с). Healthcheck образа даёт на запуск 30 минут (--start-period=1800s): однократная перестройка индексов имён при открытии хранилищ больше не делает работающий контейнер unhealthy, обычный старт не замедляется. arm64 ставит PyTorch из CPU-индекса (torch 2.13.0+cpu) без CUDA-колёс nvidia-* и triton — у Apple Silicon, Graviton и Raspberry Pi нет NVIDIA GPU; образ arm64 — 1,45 ГБ в сжатом виде вместо 4,16 ГБ, остальные версии библиотек те же, latest (amd64) по-прежнему с CUDA. Формат хранилищ не меняется, переиндексации нет.

03.10.2026 (ночь, второй выпуск)

cb5f5bbe9d91 (тег light; latest 7e5b1e7fe20c, arm64 f79f8cc44e17)

ВНИМАНИЕ: ПЕРЕИНДЕКСАЦИЯ ОПИСАНИЙ ФОРМ — ДЛИННЫЕ ОПИСАНИЯ (БОЛЬШЕ 4 000 СИМВОЛОВ) ПРИ СЛЕДУЮЩЕЙ ИНДЕКСАЦИИ ФОРМ ВЕКТОРИЗУЮТСЯ ЗАНОВО ЧЕРЕЗ ПРОВАЙДЕРА ЭМБЕДДИНГОВ. Описание формы длиннее 4 000 символов эмбеддится частями: текст режется по концам строк без потерь, каждая следующая часть начинается с имени формы, заголовка и номера фрагмента; search_forms возвращает форму один раз. Раньше описание уходило одним запросом любой длины, и у крупной формы документа (30 тыс. символов, около 8 900 токенов) модель с лимитом 8 192 токена отвечала 400 ContextWindowExceededError — форма не эмбеддилась, поколение не публиковалось. Ответ провайдера о превышении контекста модели больше не повторяется: слишком длинный фрагмент пропускается с предупреждением и не мешает публикации. Описания короче 4 000 символов не меняются и заново не эмбеддятся; длинные формы, сохранённые раньше целиком, пересчитываются частями при следующей индексации форм. См. Конфигурация

03.10.2026 (ночь)

8c095c14ddd0 (тег light; latest 23c1b669a2b7, arm64 60d7e87e51ce)

ETA в строке code progress считается по объёму оставшихся файлов, а не по их числу: код индексируется от меньших файлов к большим, и на корпусе в 30 573 файла (1 680 МБ) последние 5 % файлов занимали 52 % объёма — строка показывала «ETA 694 min» при ~25 часах работы. Файл в работе засчитывается долей готовых чанков; строка называет остаток: ETA 1500 min by size, 869.0 of 1680.0 MiB left. Только строка журнала: индексы, поиск и отпечаток индекса не меняются, переиндексации нет.

01.10.2026 (поздний вечер)

4daf508ab69b (тег light; latest e7e93a774aa7, arm64 aaf7904b7623)

Провайдер эмбеддингов, который принял запрос и не отвечает, больше не останавливает индексацию на часы: новый EMBEDDING_API_TIMEOUT (по умолчанию 600 с) ограничивает один запрос, повторов внутри клиента нет (повторяет сервер по BATCH_MAX_RETRIES), а пакет без ответа после всех попыток не повторяется по одному чанку — прогон перестаёт обращаться к провайдеру и завершается возобновляемой ошибкой provider_failure, следующий старт продолжает с оставшихся файлов. Потребитель эмбеддинга, упавший на ошибке, останавливает фазу. Строки прогресса называют полный путь долгого файла и число его готовых чанков. Включает выпуск того же вечера (формы, Асинх); новой перестройки индекса нет — настройка не входит в отпечаток.

01.10.2026 (вечер)

159007895bd4 (тег light; latest e9cb2b95f43f, arm64 50c8b18c59d2)

ВНИМАНИЕ: ПРИ ПЕРВОМ СТАРТЕ — ПЕРЕИНДЕКСАЦИЯ: ЗАНОВО СОБИРАЮТСЯ СТРУКТУРНЫЙ ИНДЕКС, ГРАФ ЗАВИСИМОСТЕЙ И ИНДЕКС ФОРМ, ВСЕ ОПИСАНИЯ ФОРМ ВЕКТОРИЗУЮТСЯ ЗАНОВО ЧЕРЕЗ ПРОВАЙДЕРА ЭМБЕДДИНГОВ. На ЗУП (10 185 модулей, 3 506 форм) на томе с диска Windows это около полутора часов; поиск всё это время отвечает по прежнему индексу. Реквизиты и команды форм из выгрузки Конфигуратора индексируются (раньше у каждой формы Designer их было ноль); inspect_form_layout и get_form_artifact отдают реквизиты, команды и обработчики раньше дерева элементов — на первой странице большой формы они больше не пустые. Процедуры и функции с модификатором Асинх/Async видны search_function, get_module_structure, get_method_call_hierarchy и поиску определений. Версии разбора структуры и форм 3 → 4: при первом старте один раз перестраиваются структурный индекс, граф зависимостей и индекс форм; эмбеддинги кода, справки и метаданных не пересчитываются, описания форм векторизуются заново.

01.10.2026

cc2d9c52f8d5 (тег light; latest 743e8a506888, arm64 82be9796f742)

Точный search_function и поиск вызывающих в get_method_call_hierarchy идут по индексу имён: индексы idx_symbols_name и idx_calls_callee объявлены COLLATE NOCASE, как и сравнение в запросах (раньше SQLite перебирал всю таблицу — десятки секунд на большой базе на томе с диска Windows). При первом старте сервер один раз перестраивает эти два индекса на месте (на большой базе — минуты, сервер в это время не отвечает; эмбеддинги не трогаются, переиндексация не нужна). Проверка готовности перед вызовом читает одну строку вместо подсчёта четырёх таблиц; timeout_ms больше не отбрасывает уже найденных вызывающих (partial=true). Описания форм читают обработчики и реквизиты по индексу form_id (раньше полный просмотр таблицы на каждую форму, около часа на 10 тыс. форм); порядок обработчиков в описании задан явно и не зависит от индексов в базе. Этап форм пишет прогресс (forms progress: …) и при docker stop останавливается на следующей форме или пачке. Расширение, достижимое и через CODE_PATH, и через EXTENSION_PATHS, обходится один раз. Процедура, записанная в одну строку (Функция … КонецФункции), заканчивается на этой строке: модули с такими процедурами получат новые границы при следующем изменении файла, остальные модули не перестраиваются.

28.09.2026 (вечер)

1d8fc83a81f5 (тег light; latest 6c0dd6c9d221, arm64 819d6d49fccb)

Когда очистка сессий освобождает простаивающую MCP-сессию, начатый ответ (обычно держащийся SSE-поток GET /mcp) завершается штатно. Раньше Uvicorn писал ERROR: ASGI callable returned without completing response, а клиент получал оборванный поток. Если ответ ещё не начинался, клиент получает JSON с причиной: 404 для именованной сессии, 503 для запроса без сессии. Настройки сессий не менялись, переиндексация не нужна

27.09.2026 (утро)

dd84456b31d1 (latest 09f6fe5ec3c6, arm64 5aad3ce0630d)

Сменился лицензионный ключ beta-канала: образ принимает только новый LICENSE_KEY_CODEMETADATA_BETA из дистрибутива от 27.09.2026, прежний отклоняется (Invalid LICENSE_KEY). Код сервера не менялся, переиндексация не нужна

27.09.2026 (ночь)

3c7990f663ad (latest adb5fb97033e, arm64 58f87123cc99)

Во время переиндексации codesearch, metadatasearch и helpsearch отвечают из опубликованного поколения; в grep они уходят только до первой публикации индекса или при пустой коллекции (раньше идущая сборка переводила их на grep). VECTOR_OPTIMIZE_EVERY=0 снова отключает промежуточные слияния (значение молча игнорировалось). Новая VECTOR_OPTIMIZE_FINAL_MIN_DOCS (по умолчанию 0 — как раньше): финальное слияние пропускается, пока его ждут меньше N документов. Переиндексация не нужна

26.09.2026 (вечер)

e7a95e02d59d (latest d8c1cc0e528f, arm64 561391715e27)

Описания инструментов в tools/list короче: из них убраны номера тикетов, история и обоснования для разработчиков; параметры, коды отказа, подсказки выбора инструмента и примеры не менялись. stats называет статус фазы incomplete (причина lane_incomplete:<lane>), а абзац о бюджете ответа ссылается на семантику конверта compact_search. Схемы, имена инструментов и параметров не изменились; переиндексация не нужна.

26.09.2026

7daf290b6e6a (latest 4885214105af, arm64 100fb2974421)

Дорожка, которую прерванное слияние оставило неслиянной (fts_index_incompatible / rebuild_required), восстанавливается следующим обычным прогоном из сохранённых в ней документов — без разбора исходников и эмбеддингов, даже на неизменной выгрузке; reindex(force=true) нужен, только если это не удалось. Обычный прогон больше не пересобирает повреждённую дорожку из исходников. В ту же сборку вошло всё из 25.09: бюджет ответа по умолчанию, права ролей с RLS, виртуальные таблицы и стандартные реквизиты, XDTO Package.bin, вызовы обработчиков по имени.

26.09.2026

7a5403b45ceb (latest 40e22b76b0ef, arm64 5d06dcf65cfc)

Ответ без max_chars ограничен 32768 символами (RESPONSE_MAX_CHARS, 0 снимает предел): большой ответ приходит первой страницей с truncated: true и next_cursor; get_form_artifact, get_report_artifact и get_role_artifact листаются тем же курсором (max_chars, max_items, detail_level, cursor). get_metadata_details: карточка справочника, документа и регистра содержит standard_attributes — стандартные поля, которые у объекта действительно есть, выведенные из его свойств; карточка регистра — virtual_tables: таблицы запроса (Остатки, Обороты, СрезПоследних, ОборотыДтКт, База<Регистр>…) с параметрами и именами полей (КоличествоОстаток, СуммаОборотДт, Субконто1); таблиц, которых у регистра нет, в ответе нет. get_role_artifact: право на реквизит или табличную часть сохраняет свой путь (Справочники.X.Реквизиты.Y, owner_path) и не выдаётся за право на объект; выданное право несёт conditional и restriction_ref, тексты условий RLS и шаблоны ограничений роли — `restrictions=conditions

25.09.2026

103a439043ef (latest d042f8792aef, arm64 2c0074bbee81)

Объекты, которые добавляет расширение (отчёты, справочники, документы; выгрузка конфигуратора и EDT), попадают в коллекцию метаданных: metadatasearch(origin="extension"), в том числе с names_only=true, их находит. Заимствованные объекты по-прежнему описывает основная конфигурация. В режиме names_only строка больше не теряет путь файла, из-за чего фильтр origin считал любое имя базовым. На следующем прогоне индексируются только новые дескрипторы расширений.

24.09.2026

cbd907ff06d9 (latest 5297d7bb2b57, arm64 5de9bacc0a2e)

Текст эмбеддится без префиксов: из профилей моделей убраны query: /passage: семейства e5, document: у qwen/qwen3-embedding-8b и промпты EmbeddingGemma, EMBEDDING_QUERY_PREFIX и EMBEDDING_DOCUMENT_PREFIX не применяются. Запрос к Qwen3-Embedding по-прежнему идёт с инструкцией из карточки модели. Индекс, документы которого записаны с префиксом (модели e5, EmbeddingGemma, qwen/qwen3-embedding-8b или заданный EMBEDDING_DOCUMENT_PREFIX), при первом запуске один раз пересобирается целиком в новом поколении; прежнее отвечает до публикации нового. Остальные индексы не пересчитываются.

23.09.2026 (поздний вечер)

f4a4497f2c18 (latest 4633b478dabd, arm64 00fd13e99ea9)

Запросы к модели Ollama qwen3-embedding:<размер> (:8b, :4b, :0.6b, :latest) идут с инструкцией задачи Qwen3, как у остальных имён Qwen3-Embedding; раньше они шли без неё. Документы эмбеддятся как раньше, переиндексация не нужна. Текст инструкции остался из карточки модели: формулировки под 1С на тестовом корпусе оказались хуже (см. конфигурацию).

23.09.2026 (вечер)

01ad979b70ce (latest 1b337233579d, arm64 43e7e34b46d9)

Смена EMBEDDING_MODEL (или профиля векторного хранилища) больше не останавливает сервер при запуске ошибкой zvec store signature mismatch. Сервер стартует, векторы старой модели в поиске не участвуют (поиск по коду в это время идёт по файлам, журнал называет каждую дорожку и отличающуюся настройку), полный индекс новой модели собирается в новом поколении и включается после публикации; RESET_DATABASE не нужен. Индекс, построенный той же моделью, открывается как есть, переиндексация не нужна.

23.09.2026

fcd16e372f45 (latest 246705024ebe, arm64 889c4a18865a)

Описание инструмента search_forms называет фактический поиск — гибридный (вектор + полнотекстовый, RRF, переранжирование) по коллекции forms индекса zvec — вместо ChromaDB, и точное условие перехода на поиск по файлам. Поведение и индекс не менялись, переиндексация не нужна.

22.09.2026

4e2dcc1208f9 (latest 53013da95150, arm64 2d17730f8223)

Запросы к Qwen3-Embedding (0.6B, 4B, 8B) идут с инструкцией задачи из карточки модели вместо query: ; на тестовом корпусе у 8B MRR 0,855 → 0,941. Префиксы документов прежние, переиндексация не нужна. Добавлен профиль EmbeddingGemma (task: search result | query: / title: none | text: ); индекс, построенный на ней раньше, пересоберите.

19.09.2026

747b60e559cf (latest 357eabfeeaab, arm64 1b9e97fd6848)

Глубина поиска HNSW ef ограничена пределом zvec 2048: поиск с фильтром по области, расширяющий окно кандидатов, больше не теряет векторную полосу молча (ошибка backend теперь пишется в журнал как WARNING). build_ordinary_form пишет записи Form.bin открытым текстом, что бы ни говорил флаг deflated (платформа 8.3.27 не открывает сжатые потоки). Индексация, формат журнала эмбеддингов и слияния не затронуты; переиндексация не нужна.

18.09.2026 (вечер)

aeae0e0eaee5 (latest 24bd2d4f21aa, arm64 8e9956a7bb04)

Журнал эмбеддингов (embedding-journal/) пишет float32 вместо float64 — вдвое меньше на запись; старые записи читаются и заменяются по мере изменения файлов. Новая переменная EMBEDDING_JOURNAL=false выключает журнал. Раздел «Место на диске» в документации: ориентиры по поколениям и журналу.

18.09.2026

57b5f05214e7 (latest 27f30817ce2c, arm64 5354fcf2c6aa)

zvec 0.7.0 на всех платформах: запись в хранилище идёт во время фонового слияния, хвост фазы кода больше не стоит часами на последних файлах. Журнал говорит, чего ждёт фаза (waiting for optimize), и ведёт темп по последним минутам. Старые хранилища открываются без пересборки.

16.09.2026

6e372b5b13f1 (latest e31f5108df36, arm64 1d50828023bf)

Отпечаток embedding_model не зависит от прогрева процесса: перезапуск контейнера с той же удалённой моделью больше не запускает полную пересборку. XML расширений в подындексном проходе стоит одного поиска, а не сканирования хранилища.

11.09.2026

d8f4300f04ed (latest 0a3eb69d5a35, arm64 14fe74abefb2)

Полнотекстовый индекс не пересобирается после каждого XML-описания объекта расширения (отложенная сборка FTS).

11.09.2026

40853885bda9 (latest 89ecc66a9184, arm64 822e39833462)

Обход SIGSEGV во втором нативном FTS-запросе zvec по одному хранилищу: гибридный поиск идёт лексикой, затем вектором, в одном потоке. Полностью причина (AVX2 в собственной сборке zvec) устранена 14.09 в следующей сборке.

09.09.2026

c46dd0e4a420 (latest 3d1359788fc2, arm64 5b4f50315201)

Хенг фазы кода на 98 %: периодический flush zvec больше не вызывается во время фонового optimize (все потоки засыпали на блокировке записи).

09.09.2026

480e7cfb699c (latest 6cd611301b16, arm64 53a2aa1a202a)

fts_index_incompatible на инкрементальных прогонах: поколение копируется и публикуется только после финализации записи и FTS (с проверкой числа документов); перестраиваемый индекс не удаляется сборщиком мусора.

Graph Metadata Search (comol/1c_graph_metadata)

Дата
light-beta
Что изменилось

17.10.2026

a328e8577f08 (тег light; latest feb0831a4e69, arm64 520db706ab74)

ВНИМАНИЕ: ВЫПУСК ВКЛЮЧАЕТ ПРЕДЫДУЩИЙ ВЫПУСК 17.10.2026 (eea6d9906617). ПРИ ОБНОВЛЕНИИ С ОБРАЗА ДО НЕГО ГРАФ ИЗ XML-ВЫГРУЗКИ КОНФИГУРАТОРА ПРИ ПЕРВОМ СТАРТЕ ОДИН РАЗ ПЕРЕСИНТЕЗИРУЕТ ОТЧЁТ И ПЕРЕЧИТЫВАЕТ МЕТАДАННЫЕ, КАК ОПИСАНО В ЕГО СТРОКЕ НИЖЕ. С ОБРАЗА eea6d9906617 ОБНОВЛЕНИЕ НИЧЕГО НЕ ПЕРЕСТРАИВАЕТ: ЭТОТ ВЫПУСК МЕНЯЕТ ТОЛЬКО ЧТЕНИЕ. get_object_dossier без project_name находит объект, который объявлен только в слое расширения каталога (собственный общий модуль, подсистема, общая картинка): досье строится по этому слою, как с project_name=<слой>, и в начале об этом сказано. Раньше такой объект отвечал «не найден». Текстовый запрос search_metadata (и search_metadata_by_description): слово, оканчивающееся на _, ищется как префикс имени — КПД_ находит объекты, имена которых начинаются с КПД_. Раньше запрос совпадал только с целым словом кпд_ и не находил ничего. На имя слоя расширения вместо имени объекта search_metadata и get_object_dossier отвечают, что это слой, и называют вызовы для его объектов (list_objects_by_name с project_name=<слой>) — раньше текстовый поиск отдавал нерелевантные объекты по описаниям. Ключ и настройки прежние

17.10.2026

eea6d9906617 (тег light; latest b74e663e6e4b, arm64 1465eb796d45)

ВНИМАНИЕ: ПРИ ПЕРВОМ СТАРТЕ ГРАФ, ПОСТРОЕННЫЙ ИЗ XML-ВЫГРУЗКИ КОНФИГУРАТОРА, ОДИН РАЗ ЗАНОВО СИНТЕЗИРУЕТ ОТЧЁТ ПО КОНФИГУРАЦИИ И ПЕРЕЧИТЫВАЕТ ИЗ НЕГО МЕТАДАННЫЕ (ОБЪЕКТЫ, РЕКВИЗИТЫ, ТАБЛИЧНЫЕ ЧАСТИ И ДРУГИЕ УЗЛЫ ОТЧЁТА) ПОВЕРХ ГРАФА. ЗУП 3.1 (9 342 ОБЪЕКТА, 27,6 ТЫС. XML-ФАЙЛОВ) — ОКОЛО 6 МИНУТ С ЛОКАЛЬНОГО ДИСКА: СИНТЕЗ 5,2 МИНУТЫ, ЧТЕНИЕ И ЗАПИСЬ ОКОЛО МИНУТЫ. ЕСЛИ ВЫГРУЗКА СМОНТИРОВАНА В DOCKER DESKTOP С ДИСКА WINDOWS — В РАЗЫ ДОЛЬШЕ, ДЕСЯТКИ МИНУТ И БОЛЬШЕ: НА НАШЕМ СТЕНДЕ ОДИН ТОЛЬКО ОБХОД ТАКОЙ ВЫГРУЗКИ ЗАНЯЛ 35 МИНУТ. ГРАФ НЕ ОЧИЩАЕТСЯ; ЭМБЕДДИНГИ, БИЗНЕС-ОПИСАНИЯ, BSL-МОДУЛИ И ГРАФ ВЫЗОВОВ, СТРУКТУРА ФОРМ, ПРАВА РОЛЕЙ И ДРУГИЕ XML-ПОДИСТОЧНИКИ НЕ ПЕРЕСТРАИВАЮТСЯ. ГРАФЫ ИЗ ОТЧЁТА КОНФИГУРАТОРА (.txt) И ИЗ ПРОЕКТА 1C:EDT НЕ ПЕРЕЧИТЫВАЮТСЯ; СЛОЙ КАТАЛОГА РАСШИРЕНИЙ — ПРИ СЛЕДУЮЩЕМ ОБНОВЛЕНИИ СЛОЯ. find_by_guid находит объект метаданных по uuid его файла <Папка>/<Имя>.xml: отчёт, синтезированный из XML-выгрузки, теперь несёт для каждого объекта свойство Идентификатор (у реквизитов, табличных частей, форм и макетов GUID по-прежнему нет). Раньше в графе из XML-выгрузки GUID объектов не было вовсе. Включает выпуск 16.10.2026. Ключ и настройки прежние

16.10.2026

3082a8e8f3be (тег light; latest 7b4f73da1eb5, arm64 e3ec1c8927d7)

find_object_referrers с object_name больше не отвечает total=0 на графе без GRAPH_SCOPE_ENFORCED (по умолчанию он выключен): объект находился, а его рёбра искались ещё и по project_id и mcp_namespace, которых у узлов такого графа нет. Права роли на саму конфигурацию (Configuration.<Имя> в Rights.xml: режимы основного окна, клиент системы аналитики) больше не записываются как права на одноимённые объекты (константу, функциональную опцию). Такие ошибочные рёбра GRANTS_ACCESS_TO удаляет один запрос при старте, роли не перечитываются. Права на конфигурацию рёбрами графа не хранятся. get_form_structure: вся структура формы — один постраничный список items (max_items, cursor): элементы, затем реквизиты формы, команды, события и пункты меню, у каждого поле section. В data — форма и counts по разделам. Раньше при любом max_items в data целиком повторялись все элементы, реквизиты, команды и события. Клиент, читавший разделы из data, берёт их теперь из items. find_test_artifacts у проиндексированного проекта без манифеста источников (обычный режим сервера) берёт тестовые артефакты из модулей графа (data.source: graph). Раньше он обходил каталог выгрузки и через bind mount Docker Desktop не укладывался в таймаут. find_by_guid при «не найдено» сообщает, если у объектов метаданных графа нет GUID: в отчёте по конфигурации, выгруженном или синтезированном из XML-выгрузки, их нет. LOAD_DCS_TEMPLATES=true без других XML-подисточников теперь запускает их фазу (раньше она не планировалась). Схемы СКД выгрузки Конфигуратора читаются из Templates/<Макет>/Ext/Template.xml. Граф не перестраивается, переиндексация не нужна. Ключ и настройки прежние

13.10.2026

c5b23a7a5c91 (тег light; latest 5c601b80c7d3, arm64 9709e100bab2)

На Neo4j 2026.01 и новее векторный поиск читает индексы предложением Cypher SEARCH, а не процедурой db.index.vector.queryNodes, которую Neo4j с 2026.04 считает устаревшей. Поэтому Neo4j больше не пишет на каждый поиск предупреждение 01N01 (DEPRECATION). Это касается всех векторных поисков: по бизнес-описаниям и описаниям, по их фрагментам, по процедурам и по коду. Выдача не изменилась: те же top-k, оценки сходства и фильтры по проекту, категории и конфигурации. Совпадение проверено на Neo4j 2026.04.0 и 2026.09.0. На Neo4j 5.x индекс по-прежнему читается процедурой. С VECTOR_RETRIEVAL_STRATEGY=bounded_overfetch (откат) процедура используется на любой версии. Версия Neo4j определяется при подключении и заново после переподключения. В режиме запуска по умолчанию POST /mcp больше не получает 307 Temporary Redirect на /mcp/: /mcp и /mcp/ обслуживаются напрямую, и клиент, который не следует перенаправлениям, подключается по адресу из mcp.json (http://localhost:8006/mcp). Граф и индексы не перестраиваются, переиндексация не нужна. Ключ и настройки прежние

12.10.2026

0d67741ed4b2 (тег light; latest 9eaf027fb5bf, arm64 0b274c9bc1d8)

ВНИМАНИЕ: ПРИ ПЕРВОМ СТАРТЕ МЕТАДАННЫЕ ОДИН РАЗ ПЕРЕЧИТЫВАЮТСЯ (ОТЧЁТ, ВЫГРУЗКА ИЛИ .mdo ПРОЕКТА EDT) И СВЯЗИ USED_IN И DO_MOVEMENTS_IN СТРОЯТСЯ ЗАНОВО: ЗУП 3 ИЗ EDT — 42 С С ЛОКАЛЬНОГО ДИСКА, ОКОЛО 11,5 МИНУТЫ, ЕСЛИ ПРОЕКТ СМОНТИРОВАН В DOCKER DESKTOP С ДИСКА WINDOWS; ГРАФ НЕ ОЧИЩАЕТСЯ, МОДУЛИ, ФОРМЫ И ВЕКТОРЫ НЕ ПЕРЕСОБИРАЮТСЯ. В проекте 1C:EDT появились связи «документ делает движения по регистру» (DO_MOVEMENTS_IN, из registerRecords в .mdo) и «объект используется в реквизите» (USED_IN, из типов CatalogRef.…, DocumentRef.… и других в написании дескриптора; составной тип даёт связь с каждым объектом). Раньше этих связей не было вовсе, поэтому find_register_movement_docs, get_register_writers, trace_impact, find_objects_using_object и find_usages_of_object отвечали пусто или неполно. ЗУП 3 (EDT): 1928 связей движений и 15 159 USED_IN, было 0 и 0. Во всех проектах, в том числе построенных из отчёта, обе связи теперь ведут только к объекту нужной категории. Раньше связь цеплялась ещё к одноимённой подсистеме, общему модулю или отчёту (в графе ЗУП из отчёта — 1906 ложных USED_IN от общих модулей). Версии пакетов Python в образах закреплены и совпадают с выпуском 10.10 (у arm64 восемь пакетов поднялись до версий amd64, например openai 3.22.1 → 3.24.0).

10.10.2026

9ce2b7c4b76c (тег light; latest a2350d168d95, arm64 05efc94726d1)

ВНИМАНИЕ: ПРИ ПЕРВОМ СТАРТЕ ПРАВА ВСЕХ РОЛЕЙ, ПОДПИСКИ НА СОБЫТИЯ, ПРЕДОПРЕДЕЛЁННЫЕ ЭЛЕМЕНТЫ И СПРАВКА ОДИН РАЗ ПЕРЕЧИТЫВАЮТСЯ ЦЕЛИКОМ (включённые LOAD_ROLE_RIGHTS, LOAD_EVENT_SUBSCRIPTIONS, LOAD_PREDEFINED_VALUES, LOAD_HELP_FROM_HTML; граф не очищается, остальные этапы идут с resume). Дальше эти подисточники сверяются с выгрузкой по hash документа при каждом старте и плановом обновлении: изменённые права роли перечитываются (старые права снимаются), новые подписки загружаются, удалённые роли, подписки, предопределённые элементы и справка удаляются из графа; нечитаемый документ за удалённый не принимается, пустой результат по виду документов ничего не удаляет. Каталог расширений: объект, присутствующий в нескольких слоях, в инструментах связей (get_event_subscriptions, get_access_rights, find_predefined_values, get_register_writers, get_data_links, get_report_dcs_lineage) разрешается в базовый слой с перечислением копий в notes вместо ответа ambiguous; find_usages_of_object не повторяет реквизит по слоям; resolve_effective_entity отдаёт order_source каждого слоя и предупреждает, если порядок слоёв взят из имён выгрузок (манифеста порядка нет). search_code: полнотекстовый канал требует все слова запроса (РеализацияТоваровУслуг.Склад — оба слова), слово с * на конце ищется как префикс (Kaspi*), операторы Lucene — обычный текст. Ответы структурных инструментов при GRAPH_ONLY=true (и вообще без векторной дорожки) больше не помечаются degraded: true: флаг означает неполный ответ самого инструмента, режим установки виден в list_graph_capabilities, health_graph и get_indexing_status().service_mode. База OpenAI-совместимого API без суффикса /v1 при EMBEDDING_API_BASE_NO_V1=1 передаётся дословно (см. переменные окружения).

07.10.2026

2afb2f6e403a (тег light; latest ef1c134c5888, arm64 bc72cbfb549e)

Под координатором загрузки (INGESTION_COORDINATOR_ENABLED=true) прогон, в котором упала основная задача (например, bsl_code_graph), отпускает лиз: ingestion_promote дожидается всех основных задач, не публикует поколение и завершается ошибкой с перечнем упавших задач и их причин, staging-поколение сохраняется, следующий прогон берёт лиз и продолжает его. Раньше ingestion_promote в таком прогоне не запускался, и heartbeat продлевал лиз, пока жив процесс: встроенная сверка GRAPH_REFRESH_INTERVAL_SEC повторяла прогон своим же лизом, а остальные писатели проекта получали отказ до перезапуска. Перечисление каталогов выгрузки при сканировании BSL повторяется до трёх раз при EAGAIN/EINTR (BlockingIOError: [Errno 11]), в журнале — listing it again, attempt N of 3. Включает выпуск 06.10.2026 (переиндексация CALLS при первом старте — см. строку ниже). Сверх выпуска 06.10.2026 переиндексации нет

06.10.2026

8b0e3a4983e8 (тег light; latest 3b925d79da24, arm64 053cecd3b745)

ВНИМАНИЕ: ПРИ ПЕРВОМ СТАРТЕ НОВЫЕ МОДУЛИ ДОЧИТЫВАЮТСЯ, А СВЯЗИ ВЫЗОВОВ (CALLS) И ПРЯМЫЕ ОБРАЩЕНИЯ К РЕГИСТРАМ ОДИН РАЗ ПЕРЕСОБИРАЮТСЯ ПО ВСЕМ МОДУЛЯМ ОСНОВНОЙ КОНФИГУРАЦИИ (НА ЗУП — 11 МИНУТ НА ВЕСЬ ЭТАП КОДА); МЕТАДАННЫЕ, ФОРМЫ И EMBEDDINGS НЕ ПЕРЕСТРАИВАЮТСЯ. ПРОЕКТЫ ИЗ register_graph_project ПОЛУЧАТ ЭТИ ИЗМЕНЕНИЯ ПРИ СЛЕДУЮЩЕМ refresh_graph_project (mode=full). Модули приложения, сеанса, внешнего соединения, сервисов интеграции и менеджеров критериев отбора загружаются в граф. Подписка на событие связана с процедурой своего общего модуля из handler, ошибочные связи старого графа исправляются при старте. explain_graph_evidence находит узел по ключу (регистр filename не важен, неполный ключ — ambiguous, нет узла — not_found). USED_IN и find_usages_of_object — только собственные реквизиты, измерения и ресурсы владельца, без строк ролей. Индексы Attribute под запись обоснований; обоснования вызовов пишутся порциями (на ЗУП пик памяти 2,15 ГБ вместо 4,6 ГБ); фрагменты описаний находятся по chunk_id после аварийной остановки; первая сборка векторов процедур строит индекс после записи векторов. При GRAPH_SCOPE_ENFORCED=true JSON-операции search_metadata, get_object_dossier и resolve_qualified_name находят объекты проекта по project_id, без project_name; project_name, равный project_id, больше не опустошает текстовый поиск. total текстового ответа не считает строки пояснения («No results found» — total: 0). Векторы описаний объектов строятся после загрузки каталога расширений; недостающие досчитываются при первом старте. Проекты из register_graph_project при выключенном координаторе переживают перезапуск, delete_graph_project удаляет и данные проекта, заново зарегистрированного поверх своих данных; проекты прежних образов — один раз register_graph_project после обновления, без пересборки. Ключ и настройки прежние

04.10.2026 (вечер)

0438e3728917 (тег light; latest 8a38a98b0901, arm64 76fe46991655)

ВНИМАНИЕ: ПРИ ПЕРВОМ СТАРТЕ, ЕСЛИ XML-ВЫГРУЗКА МЕНЯЛАСЬ ПОСЛЕ ПОСЛЕДНЕГО ЧТЕНИЯ МЕТАДАННЫХ, МЕТАДАННЫЕ БАЗЫ ОДИН РАЗ ПЕРЕЧИТЫВАЮТСЯ (НА ЗУП ОКОЛО 3 МИНУТ), А ОБЪЕКТЫ, УДАЛЁННЫЕ ИЗ ВЫГРУЗКИ, УДАЛЯЮТСЯ ИЗ ГРАФА. ВЕКТОРЫ, БИЗНЕС-ОПИСАНИЯ И ГРАФ BSL НЕ ПЕРЕСЧИТЫВАЮТСЯ. Изменения метаданных XML-выгрузки применяются при перезапуске и сверкой GRAPH_REFRESH_INTERVAL_SEC: метаданные перечитываются и сливаются поверх, объекты, реквизиты, табличные части, формы, команды и макеты, которых в выгрузке больше нет, удаляются. Формы, изменённые при остановленном сервере, перечитываются после старта по сохранённому снимку выгрузки; первый старт образа снимок только сохраняет и формы не перечитывает. Каждый тёплый старт дополнительно сверяет время изменения *.xml выгрузки (на ЗУП 10–20 с). Каталог расширений: слой с незавершённой прошлой загрузкой (например, связи упали по таймауту транзакции) при следующем старте обрабатывается заново, раньше он считался актуальным и оставался без связей. Связи слоя с основной конфигурацией строятся за время, зависящее от размера слоя: на модели ЗУП 75 с → сотые доли секунды. refresh_extension_layers отвечает accepted сразу и выполняется на сервере, а также удаляет из графа то, чего нет в выгрузке слоя. Новых индексов нет. Ключ и настройки прежние, при обновлении скачивается только слой приложения

04.10.2026

1c96e12e3bbc (тег light; latest 4854d23f1305, arm64 6f2bf815b48e)

Каталог расширений: если имя расширения совпадало с PROJECT_NAME, при старте на существующих данных код основной конфигурации и расширения удалял модули друг друга. Теперь модуль принадлежит слою по имени и виду слоя. Удаление такого расширения из каталога не удаляет проект основной конфигурации, при совпадении имён пишется предупреждение. Импорт и генерация бизнес-описаний при EXTENSION_CATALOG_ENABLED=true начинаются после загрузки расширений. Собственные объекты расширений описываются по выгрузке своего расширения, раньше они пропускались с no XML source. Сгенерированное описание записывается в граф и без словаря токенизатора: раньше без доступа к его загрузке каждое описание терялось после вызова LLM. Если у построенного проекта сменился файл-источник метаданных (переход с отчёта на выгрузку, переименование отчёта), узлы переносятся на новый файл, а не дублируются. При BACKGROUND_POST_INDEXING=false в журнал пишется предупреждение, что порт откроется после всех фоновых задач. Лейн процедур заканчивается строкой Routine embedding finished: …. Граф и индексы не перестраиваются. При первом старте в план описаний попадут только ещё не описанные собственные объекты расширений — это вызовы LLM. Слой зависимостей пересобран: при обновлении latest скачивается заново около 430 МБ, light — около 70 МБ. Ключ и настройки прежние

03.10.2026

987526a912f1 (тег light; latest 2472f9802cd5, arm64 f88ebb50537f)

Поведение не изменилось: тот же код, что в выпуске ниже, собран заново по новой схеме сборки. Скомпилированные модули в latest, light и arm64 побайтно те же, что в выпуске ниже. Слои базы и зависимостей не изменились, поэтому при обновлении скачивается только слой приложения. Граф и индексы не перестраиваются. Ключ и настройки прежние

01.10.2026 (поздний вечер)

bf5bc28bb0fc (тег light; latest 354620f0a887, arm64 d3d157ae08e6)

Число попыток одного запроса к API эмбеддингов задаётся переменной EMBEDDING_MAX_ATTEMPTS (1–10, по умолчанию 3 — как раньше) для индексации и для эмбеддинга поискового запроса; раньше клиент сам повторял каждый запрос дважды без настройки. Пакет индексации отправляет к провайдеру не больше EMBEDDING_MAX_ATTEMPTS × (BATCH_MAX_RETRIES + 2) запросов. Индекс не перестраивается.

01.10.2026 (вечер)

59ba62fd51e7 (тег light; latest cfab205249bf, arm64 8d0d95a628c0)

Процедуры и функции с модификатором Асинх/Async загружаются в граф (раньше не распознавались); при первом старте один раз перезагружаются только модули с такими процедурами, эмбеддинги считаются только для новых. REFERENCE_EVIDENCE_ENABLED=true: обоснования читаются по индексам ReferenceEvidence(subject_ref) и (source_unit_id), которые создаются при старте — explain_graph_evidence и explain_graph_entity больше не упираются в таймаут на больших графах; проход вызовов больше не закрывает обоснования declared тех же файлов (полный набор — после сборки графа заново). list_graph_indexes считает покрытие по выборке до 20 000 узлов на метку (data.coverage_sample). Методы HTTP-сервисов (UrlMethod) снова записываются: с 10.09 они не писались, а ремонт дублей утреннего выпуска 01.10 удалял оставшиеся от старых сборок; при первом старте метаданные один раз перечитываются, удалённые методы возвращаются.

01.10.2026

285cea102212 (тег light; latest 4c172d96c522, arm64 0b537cbefc65)

explain_graph_entity и fetch_graph_nodes принимают node_id процедуры из resolve_graph_entity (раньше not_found/missing). У процедур-перехватчиков расширения в attributes есть extension_mode и extension_target; шаблоны extension_interceptor_counts и extension_interceptors дают инвентаризацию аннотаций по слоям. Модули общих форм, общих команд и планов видов расчёта загружаются в граф (раньше пропускались и в конфигурации, и в расширениях): при первом старте граф вызовов один раз пересобирается, embeddings строятся только для новых процедур; слой расширения, загруженный раньше, обновляется вызовом refresh_extension_layers. .bsl рядом с Form.bin в папке формы — модуль обычной формы. REFERENCE_EVIDENCE_ENABLED=true больше не роняет bsl_code_graph («Expected list, got tuple» в собранном образе). Векторизация процедур не останавливается из-за одной нечитаемой записи в Neo4j: запасное чтение идёт пакетами, нечитаемое свойство восстанавливается из исходного файла. Модуль, записанный в граф без хэша содержимого, перезагружается как изменённый — сдвиг строк больше не даёт дублей процедур.

30.09.2026

044896f5aa42 (тег light; latest 085fd1452d77, arm64 21011f7e56c2)

Обновление образа поверх графа, построенного образами по 09.09.2026, больше не удваивает вложенные элементы: реквизиты, табличные части, формы с их структурой, команды, макеты и др. Раньше образы с 10.09 не узнавали такие элементы (у них не было имени конфигурации) и при перезагрузке метаданных писали вторую копию. Первый старт проставляет старым элементам имя конфигурации их объекта. В уже удвоенном графе он удаляет старые копии пачками, а их права на поля переносит на оставшиеся. Пересоздавать Neo4j не нужно. get_object_dossier в проекте каталога расширений: project_name фильтрует слой во всех секциях. Без него собственные элементы расширения помечены слоем, заимствованные показаны один раз, у перехватчиков в секции code указана аннотация. compare_base_and_extension группирует переопределения по аннотации (&Вместо, &ИзменениеИКонтроль, &Перед, &После) и называет базовую процедуру. Перехваченная базовая процедура больше не попадает в «Из базы без изменений». Если провайдер эмбеддингов недоступен, а локальной модели в образе нет (light), дорожки эмбеддингов завершаются ошибкой с этой причиной, а не «No module named 'sentence_transformers'». Выгрузка, смонтированная и в /app/code, и в /app/extensions (compose дистрибутива при пустом PATH_EXTENSIONS), больше не считается расширением самой себя, а проверка изменений обходит её один раз (source_refresh.baseline_files больше не удваивается). Ключ тот же, что у выпуска 27.09.2026, переиндексация не нужна

29.09.2026 (день)

25aac3207039 (тег light; latest ca34696ce6a6, arm64 c355f51aeb71)

При GRAPH_SCOPE_ENFORCED=true и закрытом окне миграции проект установки (PROJECT_NAME) виден в list_graph_projects и get_graph_project_status и при трекере загрузки по умолчанию: с включённым координатором — по его документу в INGESTION_STATE_DIRECTORY (с active_generation), с выключенным — по данным в своём scope, с configuration_root выгрузки. Раньше в обоих случаях список был пуст, а статус отвечал project_not_registered — и в загружающем процессе, и после рестарта. Переиндексация не нужна

29.09.2026

5944be4f3310 (тег light; latest 6b4bce882d61, arm64 deb3a1248ea8)

search_code берёт из одного модуля до трёх процедур вместо одной: CODE_SEARCH_MAX_PER_MODULE по умолчанию теперь 3. Раньше дедупликация оставляла от модуля одну процедуру, и нужная процедура найденного модуля иногда отсекалась, если выше неё стояла соседняя. На тестовом наборе из 42 вопросов нужная процедура попала в первую пятёрку в 41 случае вместо 36. Прежнее поведение возвращает CODE_SEARCH_MAX_PER_MODULE=1. Переиндексация не нужна

28.09.2026 (вечер)

97ba24e19e40 (тег light; latest 6095b118de89, arm64 0ea37029a267)

При GRAPH_SCOPE_ENFORCED=true проект установки (PROJECT_NAME) после рестарта сохраняет configuration_root выгрузки, из которой его загружает старт (METADATA_DIRECTORY, иначе CODE_EXPORT_PATH). Раньше при закрытом окне миграции он восстанавливался из записей загрузки с configuration_root = <unconfigured> и configuration_root_valid = false, а register_graph_project помогал только до следующего пересоздания контейнера. Корень другого проекта, заданный через register_graph_project, по-прежнему живёт до рестарта. Ключ тот же, что у выпуска 27.09.2026, переиндексация не нужна

28.09.2026 (утро)

0ff5708582e7 (тег light; latest d619eb2e5dc3, arm64 0c84ae65b0de)

trace_call_chain строит цепочку от одной процедуры. object_name сравнивается с полным именем объекта, префикс типа задаёт категорию (Документ.Отпуск); часть имени используется, только если объекта с таким именем нет и под неё подходит одна процедура. Раньше сравнение шло по подстроке, и цепочки одноимённых процедур нескольких объектов сливались под одним заголовком. Если процедур несколько, ответ ambiguous перечисляет их в data.candidates с node_id; новый параметр node_id выбирает одну. В режиме каталога слой расширения читает схемы компоновки своих отчётов (при LOAD_DCS_TEMPLATES=true): get_report_dcs_lineage отвечает по отчёту, который добавляет расширение; схема заимствованного отчёта остаётся базовой. Уже загруженный слой перечитывается вызовом refresh_extension_layers. Ключ тот же, что у выпуска 27.09.2026, переиндексация не нужна

28.09.2026

878c2d93825d (тег light; latest 3204b0f9f460, arm64 1978575d18e8)

Упавшие фазы индексации повторяются без перезапуска. Если прошлый прогон оставил их failed (например, Neo4j перезапустился во время bsl_code_graph, и зависимые фазы не запустились), очередная проверка GRAPH_REFRESH_INTERVAL_SEC запускает прогон заново, даже когда выгрузка не менялась. Прогон с resume: завершённое не повторяется. Защита от цикла перезапусков больше не считает крашем фазы, которые не начались из-за упавшей предпосылки. Раньше такой прогон на следующем старте или повторе записывался как OOM и увеличивал счётчик. Запись о прерванном прогоне не утверждает OOM: она перечисляет возможные причины и подсказывает, где видно OOM-kill. Ключ тот же, что у выпуска 27.09.2026, переиндексация не нужна

27.09.2026 (вечер)

7df42796176b (latest 34373b1954b7, arm64 db99e7c1a81b)

compare_graph_scope(extension_ref=…) отправляет в Neo4j в несколько раз меньше запросов. Связи одного вида узлов читаются двумя запросами: сначала число связей каждого типа, затем все типы сразу. Раньше на каждый тип связи шёл отдельный запрос. Узлы слоя расширения читаются только тех видов, которые в слое есть. Каждый новый текст запроса Neo4j после старта компилирует заново, и на пустом кэше планов эта компиляция занимала большую часть вызова. На копии графа ЗУП со слоем из 257 объектов, сразу после старта: с node_kinds=["MetadataObject"] 26 → 7 запросов и 4,6 → 2,6 с, без node_kinds 80 → 23 запроса и 9,6 → 5,5 с. Стабильные идентификаторы строятся быстрее. Результат сравнения не изменился. Ключ тот же, что у выпуска 27.09.2026 (утро), переиндексация не нужна

27.09.2026 (утро)

68df7c648a7e (latest 115be4a200b1, arm64 baf79322fadd)

Сменился лицензионный ключ beta-канала: образ принимает только новый LICENSE_KEY_GRAPH_BETA из дистрибутива от 27.09.2026, прежний отклоняется (Invalid LICENSE_KEY). Код сервера не менялся, переиндексация не нужна

26.09.2026 (поздний вечер)

01c72f1c71cb (latest 5036d754e2c2, arm64 a997708fe1e6)

Роль, у которой часть строк прав не записалась (например, из-за NEO4J_WRITE_TRANSACTION_TIMEOUT_S) или прогон которой прервался, больше не считается загруженной: объектные права роли пишутся последними, а у роли с неудавшимися строками сбрасывается отметка загрузки, и следующий старт перечитывает её. Роли перечисляются в журнале (WARNING). Очистка «осиротевших» элементов управляемых форм (остатки сборок 10–16.09) удаляет найденное порциями по 1000 в отдельных транзакциях: раньше всё удалялось одной транзакцией и на большой базе падало с MemoryPoolOutOfMemoryError. compare_graph_scope(extension_ref=…) читает сущности слоя по индексам layer_name и extension_name, а не перебором всех узлов вида: на проекте масштаба ЗУП чтения слоя обходятся примерно в 200 раз дешевле для Neo4j. Первый старт после обновления создаёт эти индексы (по два на вид узлов); Neo4j заполняет их в фоне, данные не пересобираются.

26.09.2026 (вечер)

dbc70a107389 (latest cb2c5190ded7, arm64 171507d5b9bf)

Описания трёх инструментов исправлены по коду: refresh_graph_project — отказ из-за эмбеддингов снимается настройкой провайдера эмбеддингов или GRAPH_ONLY, а не mode=full, названы отказы ingestion_busy и refresh_in_progress; refresh_extension_layers — второй проход при резервации писателя получает ingestion_busy; get_indexing_status — extension_catalog выполняется вместо extension_relationships, названы поля any_running, service_mode, metadata_source и признак защиты от цикла рестартов. Код и схемы не менялись; переиндексация не нужна.

26.09.2026

354841988880 (latest 87a3411527b1, arm64 05ef35814862)

Права ролей на реквизиты (LOAD_ROLE_RIGHTS=true) снова загружаются за секунды. Реквизит ищется от объекта-владельца, а не среди всех реквизитов проекта. На выпуске 25.09.2026 (поздний вечер) явные запреты увеличили число таких строк примерно до 8 600 на ЗУП, батчи упирались в NEO4J_WRITE_TRANSACTION_TIMEOUT_S, и первичная индексация не завершалась. Первый старт после обновления один раз перечитывает права всех ролей: на ЗУП это секунды. Остальные данные не пересобираются. compare_graph_scope(extension_ref=…): концы связей передаются списком значений, поэтому ответ Neo4j вдвое меньше; каждый конец связи разбирается один раз за вызов. На проекте масштаба ЗУП процессорное время вызова меньше на 40–50%. Каждый вызов compare_graph_scope пишет в журнал строку INFO с временем по этапам (read, evidence, pairs, base, compare, rest) и числом запросов к Neo4j, строк и секунд чтения. Описания инструментов в tools/list сокращены (≈21,5 тыс. → 20,3 тыс. токенов); сигнатуры не менялись.

25.09.2026 (поздний вечер)

3ce5b127e6fd (latest 807d3cf970ec, arm64 868d6251296f)

get_object_dossier: стандартные реквизиты, которые у объекта действительно есть (выводятся из его свойств: Код/Наименование по длине, Владелец по владельцам, Период только у периодического регистра сведений и т. д.), и виртуальные таблицы регистров (.Остатки, .Обороты, .СрезПоследних, ОборотыДтКт, ДанныеГрафика, База…) с параметрами; поля таблиц с производными именами (КоличествоОстаток, СуммаОборотДт, Субконто1) — sections=["virtual_tables"]. Имена по справке платформы 8.3.27.2130; таблиц, которых у регистра нет, в ответе нет, причина названа. get_access_rights отвечает объявленными правами ролей: rights — выдано, denied_rights — явно запрещено (раньше блок одних запретов терялся), conditional_rights — выдано с ограничением RLS (restriction_ref); тексты условий и шаблоны ограничений роли — `restrictions='conditions'

25.09.2026 (вечер)

47ccc4324204 (latest f01c810bd0b2, arm64 a2b202f9b227)

compare_graph_scope(extension_ref=…) в режиме каталога: связи читаются с квотой на каждый тип связи, а не на все связи метки сразу, и неполным считается обрезанный тип связи — раньше заимствованные объекты с более чем 10 000 связей выбрасывали из сравнения все узлы MetadataObject (incomplete_kinds=["MetadataObject"]); концы связей передаются только ключами, именем и слоем — на проекте масштаба ЗУП сравнение без node_kinds около 10 с вместо 35–41. Обработчики, названные строкой (ОписаниеОповещения("Имя", …), ПодключитьОбработчикОжидания("Имя")), дают рёбра CALLS; версия лейна bsl_call_graph 4→5, поэтому первый старт после обновления один раз пересобирает граф вызовов (на ЗУП около 20–25 мин). Остальные данные не пересобираются.

25.09.2026

a9cee2a57e5c (latest 61f7499d1da6, arm64 79e3ad948643)

Статусы не выдают заполненный граф за пустой. get_graph_stats, get_graph_schema и list_graph_indexes больше не ставят degraded и не несут предупреждение о GRAPH_SCOPE_ENFORCED (факт установки остаётся в installation_notices у list_graph_capabilities и health_graph, текст переписан: это штатное хранение, а не остатки данных); get_graph_stats отвечает полями data.scope_confined и data.evidence_recorded (нулевые evidence при REFERENCE_EVIDENCE_ENABLED=false — норма). list_graph_projects показывает inherited с первого вызова, а не после детального; вложенный ingestion.state совпадает с ingestion_state; без координатора причина так и названа. В режиме graph-only degraded по-прежнему ставится на любой ответ. Данные и индексы открываются как есть.

24.09.2026 (вечер)

3f71e8391a89 (latest 52549a70e707, arm64 80d4690d25f7)

Формы и модули одноимённых объектов разных видов больше не сливаются. Ключ формы и всех её элементов (у управляемых и обычных форм) включает вид владельца, а модуль привязывается (HAS_MODULE) только к объекту вида своей папки выгрузки. find_form_links и get_form_structure понимают вид в object_name (Документ.РеестрДокументов); на голое имя, которое носят объекты разных видов с этой формой, они отвечают ambiguous со списком candidates. compare_base_and_extension принимает вид и называет сравниваемый вид в заголовке. Первый старт на существующих данных дольше обычного: конфигурация перечитывается один раз, склеенные формы разделяются, структура всех форм перезаписывается (FORM_XML_IDENTITY_VERSION=6), лишние HAS_MODULE удаляются. Пересобирать базу не нужно. NEO4J_READ_TRANSACTION_TIMEOUT_S теперь ограничивает только запросы инструментов и веб-поиска, а фоновые дорожки читают без предела: на графе из ~200 тыс. процедур выборка для эмбеддингов обрывалась через 30 с. refresh_graph_project(mode=full) без манифеста исходных единиц отвечает accepted со staging_generation и продолжает пересборку на сервере. Ход и итог показывает get_graph_project_status(operation_id=...), неудачу — ingestion_state=failed с last_error.

24.09.2026 (день)

45be453fbe4b (latest efc5352ddd87, arm64 71e9f0e5c9c6)

Готовность векторной полосы в /readyz, get_graph_project_status и health_graph считается по индексам тех семантических полос, которые включены: бизнес-поиск — business_info_vector_index или business_chunk_vector_index, поиск по коду — routine_vector_index или code_vector_index, описания метаданных — description_vector_index или description_chunk_vector_index, эмбеддинги процедур — routine_vector_index. Раньше проверялся только business_info_vector_index, поэтому установка с выключенным бизнес-поиском оставалась в ready_structural (vector=false, hybrid=false) при готовом routine_vector_index. Если не включена ни одна семантическая полоса, vector=false. Индекс, которого не было при первой проверке, больше не считается отсутствующим до перезапуска: /readyz и поиск видят его, как только индексация его построила. Индексы и граф открываются как есть, переиндексация не нужна.

24.09.2026 (утро)

7bf3681fd371 (latest 54d4b4b27a93, arm64 69fd9a007e61)

Только сборка: скомпилированные модули те же, что в выпуске 23.09 (вечер). Из образов убраны оставшиеся от компиляции пакеты Debian, из light — пакет Cython; в latest обновились незакреплённые зависимости (openai 3.19.2, cyclopts 5.0.0 и др.). Поведение сервера не менялось.

23.09.2026 (вечер)

524f0b4adc27 (latest ea786061ae98, arm64 7d391975b8b0)

Запрос к модели Qwen3-Embedding (qwen/qwen3-embedding-8b по умолчанию, qwen3-embedding:8b в Ollama) идёт с инструкцией задачи, сформулированной под объекты метаданных и код 1С (см. Инструкция к запросу у Qwen3); у других моделей запрос не меняется. Узлы графа эмбеддятся как раньше: отпечатки и версии лейнов не меняются, переэмбеддинга нет.

23.09.2026

06cfffd5cc9f (latest 015b749e811c, arm64 0707c4e57a64)

Чтение из Neo4j ограничено NEO4J_READ_TRANSACTION_TIMEOUT_S (новая переменная, 30 с): брошенный после таймаута инструмента запрос прерывается сервером Neo4j и не держит соединение. Переподключение к Neo4j выполняется под блокировкой и один раз на сбой, по типу ошибки (ServiceUnavailable/SessionExpired), а не по тексту. Префикс категории в object_name/register_name (Справочник.X, Catalog.X, РегистрНакопления.X) у find_objects_using_object, find_usages_of_object, find_register_movement_docs и trace_impact фильтрует по категории — одноимённые объекты разных категорий больше не смешиваются. find_by_guid ищет по индексам GUID вместо сканирования всех узлов и не выводит эмбеддинги. find_usages_of_object и find_objects_using_object пагинируются только контрактными max_items/cursor (чтение ограничено 25 × GRAPH_MAX_ITEMS, обрезка — в warnings); limit/offset у find_usages_of_object приняты, но не применяются и помечены в deprecated. compare_graph_scope(extension_ref) в режиме каталога больше не упирается в таймаут: связи базы читаются по узлам пар, а не сканированием метки на каждый ключ (40 с → ~4 с на 197 тыс. процедур). Новые связи BSL-кода (запись движений, READS_TABLE, вызовы глобальных модулей, динамические вызовы, EXECUTES регламентных заданий, read_status = protected) — см. страницу сервера, раздел «Связи BSL-кода»; при первом старте лейны bsl_call_graph (3 → 4) и bsl_register_access (1 → 2) один раз пересобираются на месте, узлы и эмбеддинги не трогаются, переиндексация не нужна.

22.09.2026

df01dc527859 (latest 053f042e8d0e, arm64 08812242f2ce)

Чтение во время публикации поколения (refresh_graph_project(mode=full), промоушен под координатором): публикация идёт пачками, и раньше чтение в этом окне могло вернуть пустой или частичный проект как достоверный; теперь публикация объявляет о себе, чтение ждёт её окончания (GRAPH_GENERATION_FENCE_WAIT_S, 120 с) или отвечает generation_fence_exhausted; брошенная публикация старше GRAPH_GENERATION_FENCE_STALE_S (900 с) читается как есть. Проект, у которого вручную удалили строки трекера индексации, снова берёт лизу (раньше — «Another ingestion writer keeps taking the lease» на каждом старте). Переиндексация не нужна.

21.09.2026

fda12ebf500b (latest 79fbff279338, arm64 99c800b0d4e1)

Режим каталога расширений: лейн эмбеддингов процедур стартует после загрузки слоёв и добирает появившееся за время работы; маркеры resume графа вызовов — на слой (первый рестарт после холодного прогона больше не перестраивает граф вызовов базы; если маркер на момент обновления хранит штамп слоя — перестроится один раз); ремонт старого ключа объектов не срабатывает на одноимённых объектах двух слоёв; find_form_links отдаёт обработчики команд и ищет обработчики событий только в модуле своей формы (FORM_XML_IDENTITY_VERSION=5, формы перечитываются один раз на первом старте); прогон каталога читает права ролей слоя; compare_graph_scope(extension_ref=…) сравнивает слой с базой того же проекта без EXTENSION_BASE_PROJECT. Граф следует за выгрузкой без перезапуска: GRAPH_REFRESH_INTERVAL_SEC (3600; 0 выключает) / GRAPH_REFRESH_APPLY; статус в get_indexing_status().source_refresh.

19.09.2026

ba1a7ac29ac6 (latest dfe3cad3e79b, arm64 db13733704ac)

build_ordinary_form пишет записи Form.bin открытым текстом (тот же кодек, что в Code). Граф не затронут.

18.09.2026 (вечер)

3b0894511039 (latest d93d25c8e85e, arm64 c2345fcf2598)

При GRAPH_SCOPE_ENFORCED=true создаются индексы (mcp_namespace, project_id) на каждую метку проекта — чтения, ограниченные только scope (в том числе compare_graph_scope), перестают сканировать всю базу; команда управляемой формы ключуется формой и её владельцем (FORM_XML_IDENTITY_VERSION=4, формы перечитываются один раз); настройки загружаемого слоя каталога — окно потока каталога, лейн форм базы читает базовую выгрузку.

18.09.2026

d1fb1a9b2b65 (latest 6c0a6d04993e, arm64 8a853f60c7a5)

Связи EXTENDS/OVERRIDES строятся до удаления рёбер прошлого прогона — пересоздание контейнера не оставляет граф без связей слоя; каждая транзакция записи ограничена NEO4J_WRITE_TRANSACTION_TIMEOUT_S (1800 с), затянувшаяся запись видна в журнале (NEO4J_WRITE_STALL_WARNING_S).

17.09.2026 (вечер)

4eadac271dce (latest 125f4a15a8e7, arm64 0c2f188f4fc0)

list_graph_projects показывает тот же ingestion_state, что и get_graph_project_status (running/idle/failed живого загрузчика; idle вместо never_run при известном поколении).

17.09.2026

84e7006c2570 (latest cff3fdfdbd42, arm64 098c3cf0b2c3)

compare_graph_scope(extension_ref=…) находит базу по данным в Neo4j, а не только по реестру процесса, и читает с базовой стороны только объекты, связанные с расширением рёбрами EXTENDS/OVERRIDES. Бизнес-описания строятся и для объектов, у которых в выгрузке нет собственной папки (один <Имя>.xml).

16.09.2026 (вечер)

3a0d876e4bb1 (latest 51a04a029ede, arm64 762ac706af21)

Структура управляемых форм ключуется конфигурацией-владельцем: реквизиты, команды и события форм снова создаются в scoped-режиме; формы перечитываются один раз.

16.09.2026

4eb8a89ec158 (latest 97d4f0591426, arm64 c751a06b9708)

generate_business_info начинает работу за секунды, а не часы (формат выгрузки определяется один раз за прогон) и не блокирует vector_indexing; временные ошибки провайдера эмбеддингов повторяются с нарастающей паузой; ход перечисления виден в журнале.

11.09.2026

7c77133e7267 (latest 83116c57d1da, arm64 5fd04281f267)

Одновременный CREATE CONSTRAINT IngestionLease базы и расширения на пустой Neo4j: транзиентный DeadlockDetected повторяется с той же паузой, что и остальные записи, а не роняет первичную индексацию.

09.09.2026

49eff4b0b762 (latest db3eaebcc726, arm64 01a7fd10302d)

Объекты базы и расширений с одинаковым именем (Report.txt) больше не сливаются в один узел: ключ объектов и их детей включает config_name.

09.09.2026

b04395335d41 (latest 174be4b87723, arm64 2a1e9c08772a)

CALCULATE_BUSINESS_INFO работает на выгрузках 1C:EDT (пути Designer XML больше не обязательны).

SyntaxCheckServer (comol/1c_syntaxcheck_mcp)

Дата
latest-beta
Что изменилось

17.10.2026

5141561815c3 (arm64 02328d8dc45b)

Теги latest и arm64, версия 1.1.21-20261017. Основная конфигурация и её расширения индексируются вместе в режиме FULLINDEX, если лежат под FILES_DIR как src/cf/ + src/cfe/<Имя>/ (или cf/ + cfe/<Имя>/) либо перечислены в bsl-analyzer.toml в корне FILES_DIR ([source] root, extensions): файлы расширения проверяются в контексте основной конфигурации. syntaxcheck_file отдаёт из индекса проверки перехватчиков WeavingAnnotationNotApplicable и WeavingSignatureMismatch. Новое поле provenance.cross_module_checks (ran, not_in_index, not_run) говорит, ответил ли индекс по файлу: раньше файл вне индекса и неответивший индекс выглядели как provenance.index: ready без межмодульных находок. Аргументы индексного процесса не менялись, готовый индекс открывается как есть, переиндексация не нужна. Конфигурация и её расширения

14.10.2026

49c6a14144bd (arm64 7aab5d337f66)

Теги latest и arm64, версия 1.1.20-20261014. Простаивающий контейнер нагружает процессор заметно меньше. Готовый индекс в режиме FULLINDEX переспрашивается раз в шесть часов вместо раза в час: FULLINDEX_REINDEX_INTERVAL_SEC по умолчанию 21600, каждый опрос стоил анализатору около 11 с процессорного времени на конфигурации 1.7 ГБ. Прежний ритм: -e FULLINDEX_REINDEX_INTERVAL_SEC=3600. Healthcheck образа больше не запускает Python и не импортирует сервер (около 12 мс на проверку вместо 200 мс) и выполняется раз в минуту вместо раза в 30 с; при старте проверка идёт каждые 2 с, так что healthy появляется через несколько секунд (Docker Engine 25 и новее; более старый движок игнорирует стартовый интервал, и healthy появляется после первой проверки через 60 с). Индекс открывается как есть, переиндексация не нужна

13.10.2026

5dea3ba11bfd (arm64 98cd8e781ff3)

Теги latest и arm64, версия 1.1.19-20261013. Запрос с Mcp-Session-Id закрытой сессии (простой, время жизни, перезапуск контейнера) получает 404 с обычным телом Session not found, как у остальных серверов; раньше к нему добавлялась диагностика unknown_path «Nothing is bound at '/mcp'», хотя адрес верный. Клиенту нужно заново выполнить initialize, см. Сессии MCP и ответ 404. Переменные сессий описаны в README образа; значения по умолчанию прежние. Индекс открывается как есть

06.10.2026

4e0f25d66721 (arm64 70ace1ffc52e)

Теги latest и arm64, версия 1.1.18-20261006. syntaxcheck и syntaxcheck_file принимают необязательный min_severity (Error — только ошибки, Warning — ещё Major и Warning): в ответе остаются диагностики не ниже порога, а summary.by_severity и событие severity_filter считают по важности всё найденное. Без параметра ответ прежний. Если каталог индекса недоступен для записи (каталог хоста или том с nocopy с владельцем root), запись о старте называет владельца, права и пользователя сервера (uid 1000) — каталог нужно отдать chown 1000:1000, см. Хранение индекса. Индекс открывается как есть, переиндексация не нужна

04.10.2026

ad03a31a4307 (arm64 9df0fe5c3d99)

Теги latest и arm64, версия 1.1.17-20261004. Поведение не изменилось: код проверки синтаксиса и ключ те же, переиндексация не нужна. Новая схема сборки: базовые образы закреплены по digest, слои идут от зависимостей к анализатору и приложению, файлы в /app принадлежат mcpuser с момента копирования (владельцы и права те же, что раньше). Следующее обновление кода скачивает только слои приложения — раньше каждый выпуск заново приносил слой зависимостей и слой /app около 90 МБ. В arm64 трансляция Cython идёт без эмуляции, модуль скомпилирован с -O1 -g0 вместо -O3

27.09.2026 (утро)

5460f567e29a (arm64 baa7dbc3c407)

Сменился лицензионный ключ beta-канала: образ принимает только новый LICENSE_KEY_SYNTAX_BETA из дистрибутива от 27.09.2026, прежний отклоняется (Invalid LICENSE_KEY). Код сервера не менялся, переиндексация не нужна. Версия 1.1.16-beta.20260927

25.09.2026

a109f82dae79 (arm64 81be2b17d168)

Проверка имён платформы. Раньше без индекса конфигурации проходили без замечаний Массив.ДобавитьЭлемент(), Структура.Ключи(), ВидДвиженияНакопления.Поступление и Новый НесуществующийТип. Теперь сервер читает модель платформы у своего же анализатора (в фоне при старте, около 10 с; под эмуляцией arm64 — до 2 мин) и сообщает UnknownPlatformMethod, UnknownPlatformProperty, UnknownSystemEnumValue и UnknownPlatformType (Critical). Для syntaxcheck добавлен ещё PlatformApiUnavailableOnClient (Major): серверный тип или функция в методе &НаКлиенте. Готовность модели показывает provenance.platform_names. Вызовы без объекта (КонецТранзакции()) не проверяются. Размер ответа syntaxcheck / syntaxcheck_file ограничен RESPONSE_MAX_CHARS (по умолчанию 32768 байт, 0 снимает предел). Если находки не помещаются, остаются самые серьёзные, а summary.truncated равен true. Индекс открывается как есть.

22.09.2026

286625bee89b (arm64 a8fd3aabe478)

syntaxcheck_file в режиме FULLINDEX ждёт индекс не дольше 20 секунд: при зависшем построении графа (например, выгрузка на bind-mount с диска Windows) проверка отвечает без межмодульных находок вместо ожидания до отмены клиентом. Состояния индекса failed/disabled больше не считаются готовым индексом. Самообновление анализатора сверяет загрузку с размером и SHA-256 релиза и переустанавливает повреждённый бинарник.

HelpSearchServer (comol/1c_help_mcp)

Дата
light-beta
Что изменилось

14.10.2026

2bfa68d71491 (тег light; latest 842be0cc318a, arm64 d48679200219)

ВНИМАНИЕ: ПРИ ПЕРВОМ СТАРТЕ — ПОЛНАЯ ПЕРЕИНДЕКСАЦИЯ СПРАВКИ ЧЕРЕЗ ПРОВАЙДЕРА ЭМБЕДДИНГОВ (около 45,7 тыс. фрагментов — столько же запросов к API эмбеддингов, сколько при первой установке): изменились тексты встроенных стандартов, а индекс перестраивается целиком при любой правке встроенного документа. Поиск всё это время отвечает по прежнему индексу, новые тексты стандартов выдаются после её завершения. Стандарты logging-strategy, locks-and-transactions, dcs-design, dev-standards-architecture, systematic-debugging (standards): ЗаписьЖурналаРегистрации в примерах получала структуру шестым параметром (это РежимТранзакции), а logging-strategy требовал структуру в параметре Данные, который принимает только ссылку или примитивное значение. Теперь в Данные — ссылка, контекст события — в Комментарий строками Имя=значение, РежимТранзакции по умолчанию. Запрет ЗаписьЖурналаРегистрации без явной задачи (dev-standards-code-style) и шаблон транзакции больше не расходятся: обязательны ОтменитьТранзакцию() и ВызватьИсключение, запись в журнал добавляется, только когда задача просит логирование. Заголовки разделов не менялись, набор правил обновлять не нужно. Поведение сервера и ключ не менялись

10.10.2026

0d8d37108d05 (тег light; latest 5726d62cda8b, arm64 3e2cb04f000d)

Новая переменная EMBEDDING_API_BASE_NO_V1: при значении 1, true или yes адрес из EMBEDDING_API_BASE (или устаревшего OPENAI_API_BASE) уходит в API эмбеддингов как написан, без автодобавления /v1 — для корпоративных шлюзов, отдающих OpenAI-совместимый API без этого суффикса. Без переменной поведение прежнее. Корпус справки и индекс не менялись: с выпуска 08.10.2026 переиндексация не нужна (с более ранних — см. строку 08.10.2026).

08.10.2026

e56c2815640a (тег light; latest 0a3ece50a186, arm64 532e727f6aa7)

ВНИМАНИЕ: ПРИ ПЕРВОМ СТАРТЕ — ПОЛНАЯ ПЕРЕИНДЕКСАЦИЯ СПРАВКИ ЧЕРЕЗ ПРОВАЙДЕРА ЭМБЕДДИНГОВ (около 45,7 тыс. фрагментов): изменился встроенный корпус спецификаций форматов, а версия корпуса меняется при любой правке документа. Поиск всё это время отвечает по прежнему индексу. Спецификации 1c-erf-spec и 1c-epf-spec (formatspec): внешний отчёт и внешняя обработка могут ссылаться на общие формы конфигурации — DefaultForm, DefaultSettingsForm, DefaultVariantForm = CommonForm.<Имя> (для отчётов на БСП — CommonForm.ФормаОтчета, ФормаНастроекОтчета, ФормаВариантаОтчета); ссылка хранится по имени, поэтому собирать такой отчёт нужно в базе, где эти общие формы есть. Раньше спецификация утверждала, что у внешнего отчёта формы только собственные. Код сервера и ключ не менялись

03.10.2026 (вечер)

ded4afbbf8bc (тег light; latest 32c02fb4660a, arm64 276409080536)

/ready отвечает 200 и ready, пока запросы обслуживает полное поколение индекса, — в том числе во время пересборки и после её сбоя; что делает пересборка (indexing с прогрессом или degraded с причиной), показывает поле rebuild. Healthcheck больше не помечает такой контейнер unhealthy; 503 остаётся, когда отвечать нечем или поколение потеряло документы. При обновлении с образов 26–27.09 индекс справки больше не перестраивается из-за переводов строк. Образы собраны по новой схеме: слои базы, зависимостей, модели и корпуса лежат ниже приложения, поэтому со следующего выпуска при обновлении скачивается только слой приложения (около 3 МБ); в этом выпуске слой зависимостей скачивается один раз заново. Скомпилированные модули amd64 собираются как раньше, arm64 — с -O1. Ключ тот же, переиндексация не нужна

03.10.2026

eb4ad257e61c (тег light; latest 7736a78a2d74, arm64 36f5e241ee67)

ВНИМАНИЕ: ПРИ ОБНОВЛЕНИИ С ОБРАЗА ОТ 27.09 (ИЛИ 26.09) — ПОЛНАЯ ПЕРЕИНДЕКСАЦИЯ СПРАВКИ ЧЕРЕЗ ПРОВАЙДЕРА ЭМБЕДДИНГОВ (та же причина, что в выпуске 30.09; с 30.09 переиндексации нет). Число запросов к API эмбеддингов настраивается: EMBEDDING_MAX_ATTEMPTS — попытки одного запроса (по умолчанию 6), BATCH_MAX_RETRIES — попытки пакета индексации (по умолчанию 5). Клиент OpenAI больше не повторяет запросы сам, поэтому пакет отправляет к провайдеру не больше их произведения (раньше — до 90 запросов без настройки). Для провайдера с оплатой за запрос уменьшите оба значения, например EMBEDDING_MAX_ATTEMPTS=1 и BATCH_MAX_RETRIES=2. Индекс не перестраивается.

30.09.2026

61e91cbf69fa (тег light; latest ef91b98eadf6, arm64 17bd8c2f5b38)

ВНИМАНИЕ: ПРИ ОБНОВЛЕНИИ С ОБРАЗА ОТ 27.09 (ИЛИ 26.09) — ПОЛНАЯ ПЕРЕИНДЕКСАЦИЯ СПРАВКИ ЧЕРЕЗ ПРОВАЙДЕРА ЭМБЕДДИНГОВ (около 25 тыс. документов): встроенные материалы в тех образах были собраны с переводами строк CRLF, и сервер принимал их за другой корпус. Поиск всё это время отвечает по прежнему индексу. Если плагин в on_request изменил query у docsearch, в эмбеддинг уходит ровно текст хука: сервер больше не вырезает из него пунктуацию, поэтому префикс модели сохраняет двоеточие и |; on_query получает этот текст в normalized. Хук получает запрос таким, каким его прислал клиент; запрос, который хук не менял, обрабатывается как раньше. Если том смонтирован в старый путь /app/chroma_db, а /app/index не смонтирован (установка по инструкции до 27.09.2026), сервер пишет при старте WARNING: индекс в этом случае строится внутри контейнера и пропадает при его пересоздании; монтируйте каталог индекса в /app/index. start-docker.sh монтирует том в /app/index. Переиндексация не нужна

28.09.2026

539806da281a (тег light; latest e6463013d8a3, arm64 ce5d93465805)

Из меток образа убрана org.opencontainers.image.version=beta, описание образа больше не называет его beta-сборкой. Код сервера не менялся. Ключ тот же, что у выпуска 27.09.2026, переиндексация не нужна

27.09.2026 (утро)

84293ac3a409 (latest f9dda49f0199, arm64 deb0555c4f83)

Сменился лицензионный ключ beta-канала: образ принимает только новый LICENSE_KEY_HELP_BETA из дистрибутива от 27.09.2026, прежний отклоняется (Invalid LICENSE_KEY). Код сервера не менялся, переиндексация не нужна

27.09.2026 (ночь)

75112442f3b0 (latest 061f73d355d6, arm64 b7f26b328fcd)

Если EMBEDDING_API_BASE задан, а API не отвечает при старте, сервер не переходит на встроенную модель, а ждёт API (5 с, удваивая до 60 с); ошибки 400/401/403/404 переводят его в degraded, индекс не трогается. Переход разрешает EMBEDDING_ALLOW_OFFLINE_FALLBACK=true; без заданного API поведение прежнее. /ready показывает активный бэкенд, модель и размерность (поле embedding). Переиндексация не нужна

26.09.2026

292fdff0624a (latest c051979b4973, arm64 b51e4c0b8d71)

Описания инструментов в tools/list короче (около 2,5 → 1,9 тыс. токенов): у параметров, которые полностью описаны в схеме, убран дубль в тексте описания, сокращены пояснения к сериализации ответа; правило склейки сниппетов, семантика outcome, курсора, fallback, since/availability и выбор между инструментами сохранены. Схемы, имена инструментов и параметров не изменились; переиндексация не нужна.

25.09.2026 (поздний вечер)

5b1c11fbee26 (latest d89f20b0cec5, arm64 4984a7e67cbf)

В корпус синтакс-помощника вошёл раздел таблиц языка запросов (tables/ архива), который отсекал фильтр путей: терялась 721 страница из 725. 59 таблиц (Остатки, Обороты, ОстаткиИОбороты, СрезПервых, СрезПоследних, ДвиженияССубконто, таблицы Изменения и др.) индексируются по одному документу с разделами «Поля» и «Параметры»: docsearch("РегистрНакопления Остатки") находит страницу таблицы. Цитата страницы синтакс-помощника несёт since (версия из «Использование в версии») и availability (окружения из «Доступность») в compact и detailed; контракт ответа schema_version: "4.1", ключи только добавлены. docinfo с неоднозначным именем в режиме compact больше не падает с внутренней ошибкой. В стандартах anti-patterns, registers-design, async-methods дополнены разделы о параметре условия виртуальной таблицы, виртуальных таблицах по видам регистров и условном требовании асинхронных файловых вызовов. Первый старт на существующем индексе один раз полностью переиндексирует справку в staging-поколении; до конца сборки отвечает прежнее поколение.

24.09.2026

17df95a1d6af (latest 09dcd79ce4e6, arm64 fe63b129d853)

Запрос к модели Qwen3-Embedding идёт с инструкцией задачи, сформулированной под справку 1С (см. Инструкция к запросу у Qwen3); у других моделей запрос не меняется. Из таблицы моделей убраны префиксы, которые сервер и раньше не применял, а только печатал в журнал при старте. Индекс не меняется, переиндексация не нужна.

23.09.2026 (вечер)

a976aff97dab (latest 2fc57143e24e, arm64 dfb92b7e182d)

Новая переменная EMBEDDING_API_TIMEOUT — сколько секунд один запрос к embedding API ждёт ответа (по умолчанию 600, как раньше). Раньше предел был зашит в клиенте OpenAI, и модель на CPU, которая считает INDEXING_WORKERS батчей по очереди, не укладывалась в него: батч падал после трёх попыток по 600 с. Индекс не меняется, переиндексация не нужна; кто обновляется со сборки раньше 23.09 (утро), получит однократную переиндексацию из строки ниже.

23.09.2026

77bf1efeb754 (latest 84d71392304c, arm64 ba16e68df231)

В корпус синтакс-помощника вернулись около 626 страниц, которые отсекал фильтр служебных файлов архива (ОписаниеТипов, ЦветаСтиля, ШрифтыСтиля, WebЦвета.Серебряный, МенеджерПолученияЛицензии и др.): 23 897 → 24 523 страниц. При первом старте на существующем индексе справка один раз полностью переиндексируется в staging-поколении; до конца сборки отвечает прежнее поколение. Если embedding-модель не загрузилась (нет доступного API в light, нет модели в HF_HOME), сборка индекса завершается штатным отказом — /ready отвечает degraded с причиной в failure — вместо бесконечного starting; контейнер при этом не останавливается.

SSLSearchServer (comol/mcp_ssl_server)

Дата
light-beta
Что изменилось

14.10.2026

83ac0385f67c (тег light; latest b471f183c2dd, arm64 255ff66210df)

Если после сборки в индексе нет ни одного документа (например, провайдер эмбеддингов отклонил все пакеты и они ушли в карантин), сервер больше не объявляет готовность: процесс завершается с сообщением FATAL: The index of … holds no documents after the build, манифест индекса не пишется, следующий старт повторяет записи из карантина. Раньше /ready в этом случае отвечал 200. При частичном карантине сервер работает без недостающих записей, пишет предупреждение, а /ready отвечает {"state": "ready", "quarantined": N}. ssl_search возвращает как ошибку инструмента (isError: true, текст прежний) поиск, не уложившийся в EMBEDDING_SEARCH_DEADLINE, отменённый поиск и сбои с кодом и Reference; not_found остаётся обычным ответом. Для внешнего API через агрегатор рекомендуемое значение EMBEDDING_SEARCH_DEADLINE — 30 секунд. Индекс при обновлении не перестраивается.

10.10.2026

546b16752988 (тег light; latest 870fb58f9d6c, arm64 9dd929a1fb31)

Новая переменная EMBEDDING_API_BASE_NO_V1: при значении 1, true или yes адрес из EMBEDDING_API_BASE (или устаревшего OPENAI_API_BASE) уходит в API эмбеддингов как написан, без автодобавления /v1 — для корпоративных шлюзов, отдающих OpenAI-совместимый API без этого суффикса. Без переменной поведение прежнее. Индекс не менялся, переиндексация не нужна.

03.10.2026

c3b7571d7eca (тег light; latest 8ae884e3e161, arm64 9d5296c3b524)

Поведение не изменилось: тот же код, что в выпуске ниже, собран заново по новой схеме сборки. Скомпилированный модуль, файлы сервера и поставляемые базы в light побайтно те же, что в выпуске ниже. Переиндексация не нужна. Образы теперь меняются слоями: при обновлении на следующие выпуски скачиваются только слои приложения, а не зависимости

02.10.2026

b404e9873020 (тег light; latest d137c5a325d7, arm64 176232acf9bd)

Число попыток одного пакета индексации задаётся переменной EMBEDDING_BATCH_MAX_ATTEMPTS (1–10, по умолчанию 5 — как раньше): пакет отправляет к провайдеру эмбеддингов не больше EMBEDDING_BATCH_MAX_ATTEMPTS × EMBEDDING_MAX_ATTEMPTS запросов и укладывается в EMBEDDING_BATCH_DEADLINE. Чтобы на пакет уходил один оплачиваемый запрос, задайте обе переменные равными 1. Индекс не перестраивается.

01.10.2026

f4987079a92c (тег light; latest aeec5dc75234, arm64 27bcbe59ba2d)

ВНИМАНИЕ: ПРИ ПЕРВОМ СТАРТЕ — ПОЛНАЯ ПЕРЕИНДЕКСАЦИЯ SSL ЧЕРЕЗ ПРОВАЙДЕРА ЭМБЕДДИНГОВ; НА ВРЕМЯ ПЕРЕСТРОЕНИЯ ПОИСК НЕДОСТУПЕН (2 596 записей БСП — около минуты с внешним API). Точный поиск по имени метода (lane=exact) работает на поставляемых базах БСП: каноническое имя (ОбщегоНазначения.ЗначениеРеквизитаОбъекта) читается из строки объявления под заголовком-путём записи — раньше правило не извлекало ни одного имени из реальных записей, и запросы по имени уходили в гибридный поиск. Имя метода без модуля находит его в любом модуле; если модулей несколько — ответ ambiguous_name со списком кандидатов. Карточка точного поиска называет раздел библиотеки вместо unknown. При первом запуске индекс один раз перестраивается автоматически (сменился отпечаток правила извлечения); на время перестроения поиск недоступен.

30.09.2026

5d28b48c167c (тег light; latest 2411fc503652, arm64 1fc64f7dadc5)

Если плагин в on_request изменил query у ssl_search, в эмбеддинг уходит ровно текст хука: сервер больше не нормализует его, поэтому префикс модели сохраняет двоеточие и | (QUERY_ALIASES применяются по-прежнему). Хук получает запрос таким, каким его прислал клиент; запрос, который хук не менял, обрабатывается как раньше. Переиндексация не нужна

27.09.2026 (утро)

9af69d45adca (latest 6c1e6d147f67, arm64 3ab4ed7c18f4)

Сменился лицензионный ключ beta-канала: образ принимает только новый LICENSE_KEY_SSL_BETA из дистрибутива от 27.09.2026, прежний отклоняется (Invalid LICENSE_KEY). Код сервера не менялся, переиндексация не нужна

27.09.2026 (ночь)

4bb75944594b (latest d886a93875c0, arm64 438b8ac4970d)

Полные варианты (latest, arm64) при заданном EMBEDDING_API_BASE больше не переходят на локальную модель, если API не отвечает на старте, а ждут его (5 с, удваивая до 60 с), как облегчённый; при 401/403/404 старт завершается. EMBEDDING_ALLOW_OFFLINE_FALLBACK=true разрешает переход, но коллекцию, построенную через API, он не удаляет и не пересобирает — даже при FORCE_REINDEX_ON_DIMENSION_MISMATCH=true. Инструмент embedding_state показывает активную модель, размерность и произошёл ли переход (блок active). Переиндексация не нужна

26.09.2026

c6658f07cff0 (latest 08bf8bc265c7, arm64 98c1e65d4af0)

Облегчённый вариант больше не завершается, если провайдер эмбеддингов временно недоступен при старте (сеть или DNS, ответ 5xx, 429): он повторяет проверку с паузой от 5 до 60 секунд, пока слушатель отвечает startup, а остановка во время ожидания завершает процесс с кодом 0. Отказ, который ожиданием не исправить (401/403, неизвестная модель), по-прежнему останавливает старт с трассировкой. Раньше 13-минутный сбой DNS давал 57 перезапусков контейнера подряд. Переиндексация не нужна.

24.09.2026

2dbfa8e8a1d1 (latest 6edd8aa0ed82, arm64 6a2777ea0a2d)

Текст эмбеддится без префиксов: локальная модель больше не получает query: /passage: (e5), search_query: /search_document: (nomic), инструкции bge/mxbai и встроенные prompts модели. Запрос к Qwen3-Embedding идёт с инструкцией задачи под БСП (см. Инструкция к запросу у Qwen3); EMBEDDING_INPUT_TYPE_ENABLED=false её выключает. Коллекция, построенная локальной моделью e5 (модель полного образа по умолчанию), nomic или моделью со встроенным prompt документа, при первом старте один раз пересобирается. Коллекции API-режима и остальных моделей не пересчитываются.

TemplatesSearchServer (comol/template-search-mcp)

Дата
light-beta
Что изменилось

10.10.2026

8699da805616 (тег light; latest 89cc4e65e7dc, arm64 2cdf6ecd014b)

Новая переменная EMBEDDING_API_BASE_NO_V1: при значении 1, true или yes адрес из EMBEDDING_API_BASE (или устаревшего OPENAI_API_BASE) уходит в API эмбеддингов как написан, без автодобавления /v1 — для корпоративных шлюзов, отдающих OpenAI-совместимый API без этого суффикса. Без переменной поведение прежнее. Индекс не менялся, переиндексация не нужна.

04.10.2026

ccf8e82cc61a (тег light; latest 0b422a9b9d68, arm64 3e3494a092c3)

Код сервера не менялся. Образ arm64 ставит PyTorch из CPU-индекса PyTorch (torch 2.14.1+cpu) вместо пакета PyPI с колёсами CUDA и triton, которые на arm64 не используются: сжатый образ arm64 — 479 МБ вместо 3,49 ГБ. Ни в одном образе больше нет пакета Cython: он нужен только при сборке. Остальные зависимости тех же версий, что в выпуске ниже. Слой зависимостей собран заново, поэтому при обновлении он скачивается целиком: light — около 120 МБ, latest — около 475 МБ, arm64 — около 430 МБ. Переиндексация не нужна.

03.10.2026 (вечер)

d3b5b5d60a04 (тег light; latest 321405876ec3, arm64 744f3f3a05c2)

Поведение не изменилось: тот же код, что в выпуске ниже, собран заново по новой схеме сборки. Файлы приложения, включая скомпилированные модули, в latest, light и arm64 побайтно те же, что в выпуске ниже. Слои базы и зависимостей не изменились, поэтому при обновлении скачивается только слой приложения (около 10 МБ). Переиндексация не нужна

03.10.2026

c0a97188405a (тег light; latest 0796199aba84, arm64 dca74a23c512)

Число запросов к API эмбеддингов на один вызов задаётся переменной EMBEDDING_MAX_ATTEMPTS (по умолчанию 3 — столько же, сколько клиент отправлял и раньше; 1 — без повторов). Раньше повторы задавал SDK, и изменить их было нельзя. Каждая попытка ограничена EMBEDDING_API_TIMEOUT. Индекс не перестраивается.

28.09.2026 (вечер)

57d5bd089151 (тег light; latest 2b3ff4328fed, arm64 ded0fbb342fa)

Если плагин в on_request изменил query у templatesearch или recall, в эмбеддинг уходит ровно текст хука: сервер больше не вырезает из него пунктуацию, поэтому префикс модели сохраняет двоеточие (QUERY_ALIASES применяются по-прежнему). Хук получает запрос таким, каким его прислал клиент; запрос, который хук не менял, обрабатывается как раньше. Переиндексация не нужна

27.09.2026 (утро)

fd271b6815c9 (latest 882c8fee3706, arm64 a5665d8b9594)

Сменился лицензионный ключ beta-канала: образ принимает только новый LICENSE_KEY_TEMPLATES_BETA из дистрибутива от 27.09.2026, прежний отклоняется (Invalid LICENSE_KEY). Код сервера не менялся, переиндексация не нужна

27.09.2026 (ночь)

fbe4dd87cf4d (latest 0869f7b5fa6c, arm64 6f2d436daf39)

Если EMBEDDING_API_BASE задан, а API не отвечает при старте, сервер не переходит на локальную модель: стадия повторяется (5, 15, 30 с), затем процесс завершается с кодом 70 до перезапуска контейнера; индекс не трогается. EMBEDDING_ALLOW_OFFLINE_FALLBACK=true разрешает локальную модель, но и тогда она не заменяет непустой индекс, построенный через API. /ready показывает признак fallback. Переиндексация не нужна

24.09.2026

f754a0de6eec (latest b6e7436ce58e, arm64 c4ca2beb29fb)

EMBEDDING_QUERY_PREFIX и EMBEDDING_PASSAGE_PREFIX больше не читаются: текст эмбеддится как есть. Запрос к Qwen3-Embedding идёт с инструкцией задачи: для templatesearch — под шаблоны кода, для recall — под заметки проекта. Поколение индекса, построенное при заданном префиксе, один раз пересобирается, прежнее отвечает до его публикации; если префиксы не задавались, индекс не меняется.

1CCodeChecker (comol/1c-code-checker)

Дата
light
Что изменилось

14.10.2026

cecc678e34e2 (тег light; latest 0aec56209902, arm64 8f6f4f3fe5ee)

Запись журнала Direct call condition пишется уровнем WARNING вместо ERROR. Её оставляет вызов, который модель 1С.ai повторила с изменёнными аргументами: сервер его не подтверждает, ответ даёт запасной промпт с fallback_reason, сервер при этом не сбоит. Для изменённого code в записи появилась строка code_difference: длины отправленного и полученного кода, место первого расхождения (символ и строка) и его характер — только пробелы и переводы строк, только регистр букв или больше. Сам код в журнал не пишется. Ответы инструментов не изменились. Ключ и настройки прежние, индекса у сервера нет. См. Конфигурация

08.10.2026

ecb85bc5f9db (тег light; latest b5e5535833fd, arm64 894e53ad7bf9)

Код длиннее ONEC_AI_INPUT_MAX_LENGTH в check_1c_code и review_1c_code обрезается после последнего целого метода (или целой строки); модели сообщается, что передана часть модуля, а первая строка ответа говорит, какие строки проверены. Если полезного ответа нет (истёк бюджет, сбой транспорта, пустой ответ 1С.ai), результат приходит с isError: true и кодом в новом поле error (operation_timeout, transport_failure, upstream_empty_answer, upstream_error, no_result); ответ запасного промпта остаётся успешным с fallback_reason. ONEC_AI_OPERATION_TIMEOUT ограничивает весь вызов: запасной промпт получает остаток бюджета и не стартует, если остатка мало. При переданном progressToken сервер каждые 10 секунд шлёт notifications/progress. Ключ и настройки прежние, индекса у сервера нет

03.10.2026 (второй выпуск)

3a19e0c71c36 (тег light; latest 217d2cf8dcfe, arm64 be001ec73b85)

Поведение не изменилось: тот же код, что в выпуске ниже, собран заново. Файлы приложения в latest и light, включая скомпилированные модули, побайтно те же, что в выпуске ниже. latest и light теперь один и тот же образ (у тегов различаются только аттестации сборки), поэтому второй тег скачивается без новых слоёв. Файлы приложения больше не повторяются отдельным слоем смены владельца: сжатый образ amd64 — 78,3 МБ вместо 81,1. В arm64 модули собраны с -O1 без отладочной информации (раньше -O3 -g): 76,6 МБ вместо 81,5. Ключ и настройки прежние

03.10.2026

efc051dce0cf (тег light; latest 2be087544a27, arm64 7cf880a93aca)

Если инструмент документации 1С.ai отработал, но не вернул ни одного документа (02.10.2026 так отвечала версия v8.3.27, так же отвечает несуществующая версия), search_1c_documentation, onec_help и diff_1c_documentation_versions возвращают fallback_reason с kind: upstream_returned_no_usable_result. Раньше fallback_reason был null, хотя текст ответа модель 1С.ai писала без данных документации. Текст по-прежнему возвращается, повторного запроса нет. Успешный поиск и сравнение версий причины не несут. См. Инструменты

01.10.2026 (поздний вечер)

eb923d399c95 (тег light; latest 3343be817a96, arm64 b879875ce022)

Если при старте список инструментов 1С.ai получить не удалось — сервис был недоступен или отвечал дольше ONEC_AI_TIMEOUT (на медленном канале загрузка занимала 31 с при пределе 30), — сервер повторяет попытку в фоне через 30, 60 и 120 секунд, затем каждые 300 секунд, каждая в пределах ONEC_AI_OPERATION_TIMEOUT. Раньше возможности оставались degraded, а прямые вызовы не работали до перезапуска контейнера; теперь они становятся available сами. Стартовая попытка по-прежнему ограничена ONEC_AI_TIMEOUT, новых настроек нет. Ключ и настройки прежние

01.10.2026 (вечер)

87a7515bf942 (тег light; latest b5749183ba22, arm64 5d8f32a167a0)

Прямые вызовы (check_1c_code, поиск по документации и ИТС, fetch_its, diff_1c_documentation_versions) реже уходят на промпт-путь: модель upstream чаще всего писала вызов инструмента текстом (fallback_reason «Upstream не вернул tool_calls…»), теперь её просят вызвать инструмент сразу и не писать вызов текстом. check_1c_code передаёт анализатору extended: false: модель upstream сама добавляла этот необязательный аргумент, и сервер не подтверждал изменённый вызов; с false анализатор находит то же, что без аргумента. На живом upstream check_1c_code дошёл до анализатора в 16 вызовах из 16 (утренняя сборка — в 10). Плагин в on_upstream_call видит в direct-пути только поля вызывающего; extended добавляется после хука. Если модель upstream при пересказе исказит код (бывает на длинных фрагментах), вызов по-прежнему не подтверждается и ответ приходит промпт-путём. Ключ и настройки прежние

01.10.2026

8e53a99b0292 (тег light; latest a055b4171f27, arm64 16c205a3e732)

check_1c_code в режиме direct доходит до анализатора и для кода с переводами строк Windows (CRLF), с переводом строки в конце или с BOM — например, для кода из files. Раньше upstream возвращал вызов анализатора с таким кодом в другом виде (LF, без завершающего перевода строки и BOM), сервер не подтверждал изменённый вызов, и ответ приходил промпт-путём с fallback_reason «расходятся: code». Теперь код уходит на проверку уже в этом виде; номера строк и синтаксис не меняются. Если upstream отвечает текстом вместо вызова инструмента, ответ по-прежнему приходит промпт-путём с fallback_reason. Ключ тот же, что у выпуска 27.09.2026, настройки не менялись

MCP QA (comol/qa_mcp)

Дата
latest
Что изменилось

04.10.2026

915fa654ec6c

Версия 0.7.16. ui_input, ui_set и ui_table(action="input_cell") больше не очищают поле перед вводом: введённый текст заменяет прежний, пустой текст с clear=True очищает поле. Раньше поле, не принимающее ввод текста (например, стандартный период в настройках отчёта), после ошибки оставалось пустым. Теперь значение сохраняется, а ответ подсказывает ввод через форму выбора. Действие над скрытой таблицей (свёрнутая панель настроек) отвечает «Таблица … сейчас скрыта», content — hidden: true. При обрыве связи сервер проверяет порт тест-клиента. Если клиент не отвечает, ответ говорит, что процесс, вероятно, завершился и его нужно перезапустить и вызвать qa_start. В ответе и в qa_command_status есть причина обрыва (cause) и test_client.listening. Ответ «already connected to another manager» объясняет, что делать без второго менеджера. Зависимости собраны заново: при обновлении скачиваются слой зависимостей и слой приложения

03.10.2026

d1299e9d1c01

Версия 0.7.15. Поведение не изменилось: код тот же, что в 0.7.14, скомпилированные модули побайтно те же, новый только номер версии. Образ собран по новой схеме: зависимости и приложение лежат отдельными слоями. При переходе на 0.7.15 слой зависимостей (около 31 МБ) скачивается ещё один раз, в следующих выпусках при обновлении скачивается только слой приложения (около 3 МБ). Ключ тот же

01.10.2026

ab7d89d1f2fc

Версия 0.7.14. Ошибка «Отсутствует подходящий клиент тестирования» (ответ платформы на команду подключения, исключение NO_APROPRIATE_CLIENT) теперь сопровождается обеими причинами: тест-клиент ещё не вошёл в базу (окно входа, лицензии или другой стартовый диалог; /N, /P, /DisableStartupDialogs) или не совпал идентификатор клиента (MCP_QA_TESTCLIENT_ID, TestClientID веб-клиента); текст платформы сохраняется. Ключ, порт 8020 и том /data прежние.

01.10.2026

cc10d8d65b46

Версия 0.7.13. qa_start(testclient="хост:порт") подключает сеанс к указанному тест-клиенту вместо MCP_QA_TESTCLIENT (формат тот же, IPv6 в скобках; port по-прежнему заменяет порт); без параметра — как раньше. Адрес остаётся за сеансом (qa_reconnect), ключ testclient допускается в профиле. Только для режима native. Сценарий «один удалённый MCP QA — несколько ПК с тест-клиентами» описан на странице сервера; адрес вызывающего компьютера сервер не подставляет сам (за NAT Docker Desktop виден адрес шлюза). Ключ, порт 8020 и том /data прежние.

01.10.2026

48504ef5f34c

Версия 0.7.12. Тест-клиент под Linux: если на билет вступления клиент отвечает самим билетом, подключение больше не обрывается — сервер продолжает проверку подлинности, клиента, принявшего соединение сразу, берёт без неё; при неудаче ошибка содержит ответ клиента целиком. Повтор по версии не возвращается к уже испробованной сборке. Описано, какой адрес указывать для веб-клиента (TestClientID): порт веб-сервера публикации, по умолчанию 1538.

01.10.2026

6fbec522698f

Версия 0.7.11 по повторным прогонам ЗУП. Таблица в lite — список видимых колонок columns вместо узлов (форма начисления зарплаты: 62 → 22 тысячи символов); command_bar находит панели внутри групп формы, остальные — в more_groups; ui_click по заголовку нажимает кнопку, а не одноимённое подменю; ui_dialog(optional=True) без нужной кнопки — clicked: false.

01.10.2026

469bc7fef441

Версия 0.7.10. Тест-клиент на другой машине, Docker Engine на Linux и WSL2 без Docker Desktop: сервер выполняет обмен ключом удалённого менеджера и подключается без моста. Старые платформы (8.3.13): методы новее сборки клиента не вызываются (раньше падал ui_inspect), поиск работает, даже если клиент не применяет фильтр. ui_assert(checked) проверяет поле-флажок; end_edit после input_cell без ошибки; menu_choice без меню подсказывает dropdown_select; снимок platform восстанавливает развёрнутое окно 8.5 на время снимка.

01.10.2026

f4248b7f1dde

Версия 0.7.9. Версию платформы тест-клиента указывать не нужно: клиент другой сборки (8.3.25, 8.3.27.2214, 8.5) называет её в отказе, и сервер подключается с ней (platform_version в qa_status); раньше без platform_version был отказ «expected a text message». Пустой ответ на вступление (Docker Engine на Linux, WSL2 без Docker Desktop, QA на другом хосте — по сообщению пользователя) теперь виден как «answered the intro with an empty message…». ui_table: select/edit/delete/copy с row переходят к строке, edit отвечает реальным editing, select/edit называют открывшуюся форму в window_after, чтение строк возвращает курсор и отдаёт current_row. ui_open: русские имена kind и полное имя в metadata_name. Описания qa_start/qa_stop/qa_status — про контейнер, desktop из статуса убран. По прогонам агентов на ЗУП: ui_window_tree по умолчанию lite, в lite только видимые элементы (форма документа ЗУП была 65–100 тысяч символов), observe и ui_window_changes без полного дерева; ui_open сразу сообщает окно ошибки с текстом и несовпавший target_title, подменённая форма — за ~3 с вместо 30; ui_errors читает ErrorWindow; ui_dialog(click) требует кнопку; select/select_row выбирают на колонке из row, колонки из групп колонок видны, поиск сначала в активном окне; ui_set сообщает dropdown_open, ui_get_text — причину вместо {}, пустой отчёт — state; command_bar на формах ЗУП.

30.09.2026

1593bd60ab0a

Версия 0.7.7 по разбору сеансов агента. ui_close_form(on_prompt=…) считает вопросом о сохранении только окно, появившееся при закрытии: форма, закрывшаяся без вопроса, больше не даёт ошибку «кнопка не нажата»; нажатая кнопка — в prompt_answered, closed показывает, закрылась ли форма на самом деле, заголовок оставшегося вопроса — в blocked_by. ui_open открывает основную форму списка сразу навигационной ссылкой, без расширения MCPQAClient; отказ ОткрытьФорму, после которого форма открыта по ссылке, не показывается в client_hook_log_tail. Если элемент найден не в активном окне, ответ инструмента содержит found_in (окно элемента и активное окно).

30.09.2026

f1ec050f6fe3

Версия 0.7.6. qa_status не ждёт в очереди за работающим инструментом: через 5 с отвечает busy: true и называет операцию; qa_stop в нативном режиме в этой ситуации сначала закрывает связь, чтобы зависшее ожидание завершилось (aborted). Объём одного обхода ограничен: max_nodes ≤ 5000, max_depth ≤ 20, max_rows/max_table_rows ≤ 1000, max_columns ≤ 200, ячеек ≤ 20000, номер строки ≤ 10000. Исключение RPC тест-клиента («Ошибка формата потока») закрывает связь с ответом «not executed» вместо «клиент не готов». Канал расширения принимает ответ только на выданную по poll команду, статус до 64 КБ, строка журнала до 2000 символов, тело до 4 МБ; команда без ответа остаётся барьером до получения исходного ответа. MCP_QA_COMMAND_TIMEOUT действует и в нативном режиме, qa_reconnect сохраняет версию платформы, некорректный MCP_QA_TESTCLIENT отклоняется до остановки сеанса. Строки длиннее 65 535 символов тест-клиент принимает (проверено до миллиона). Образ без pillow, psutil, исходников 1С и PowerShell-скриптов; HEALTHCHECK берёт порт из MCP_QA_HTTP_PORT. Ключ, порт 8020 и том /data прежние. Предыдущий latest (0.7.5, 1c3fcf627195) доступен по тегу 0.7.5

30.09.2026

1c3fcf627195

Версия 0.7.5 по итогам ревью. Таймаут инструмента (timeout, timeout_seconds; без него MCP_QA_COMMAND_TIMEOUT) стал сроком ожидания каждого ответа тест-клиента в операции (не более часа), раньше в нативном режиме он не доходил до соединения; ui_wait принимает timeout до 900 с. Ошибка в аргументе (число вне диапазона протокола) не закрывает соединение как потерянное; ожидание формы и диалога прекращается сразу после потери связи, а не по истечении таймаута; после qa_stop барьер «исход неизвестен» снимается; недействительные startup_timeout/port/connect_timeout отклоняются до остановки текущего сеанса. qa_doctor в нативном режиме проверяет порт тест-клиента из MCP_QA_TESTCLIENT и подсказывает запуск клиента вместо qa_setup; qa_start называет проигнорированные user, password, client_kind в ignored_arguments; qa_run_script и ui_screenshot отвечают executor_capability сразу; qa_run_scenario в нативном режиме не пытается снимать экран. Таймаут рукопожатия и ошибки разбора ответа получили понятные тексты. Ключ, порт 8020 и том /data прежние. Предыдущий latest (0.7.4, 895102794a92) доступен по тегу 0.7.4

29.09.2026

895102794a92

Версия 0.7.4: ui_open по kind+metadata_name при работающем расширении MCPQAClient открывает форму навигационной ссылкой, если ОткрытьФорму не знает вычисленного имени формы («Неизвестное имя формы»; ЗУП подменяет список Справочник.Сотрудники), текст отказа — в hook_refused; прочие отказы и потерянный ответ расширения навигацию по-прежнему не повторяют. Описание нативного режима в qa_playbook больше не называет сторонние продукты. Ключ, порт 8020 и том /data прежние. Предыдущий latest (0.7.3, b7fd15bc3e68) доступен по тегу 0.7.3

29.09.2026

b7fd15bc3e68

Версия 0.7.3: сервер, как и менеджер 1С, шлёт тест-клиенту сигнал простоя раз в 5 с — тест-клиент 8.3.27 разрывает соединение, молчащее 200 с, и на 0.7.2 связь терялась после паузы дольше трёх минут; потерянную связь qa_status показывает полем link. Действия, меняющие значение (ui_input, ui_set, ui_select, ui_field, ui_table с input_cell), возвращают value_before/value_after, verified (числа сравниваются как числа), applied, новые сообщения формы и открывшееся окно (window_after: вопрос, ошибка или форма); отказ дополняется сообщениями формы (Form messages: …). ui_messages отвечает panel_shown: false, если у окна нет панели сообщений. Ключ, порт 8020 и том /data прежние. Предыдущий latest (0.7.2, 0cb662af2a4d) доступен по тегу 0.7.2

29.09.2026

0cb662af2a4d

Версия 0.7.2: при открытии формы через расширение MCPQAClient 0.6.1 ui_open по kind+metadata_name ждёт форму, которую фактически открыл ОткрытьФорму, и отмечает подмену (substituted_for); расширение 0.6.0 работает как прежде. qa_playbook в нативном режиме: запуск тест-клиента, в том числе скрытый, снимки экрана и установку расширения агент делает по правилам проекта; данные базы — через 1c-data-mcp вместо ui_eval. Ключ, порт 8020 и том /data прежние. Предыдущий latest (0.7.1, f41a7c4648a1) доступен по тегу 0.7.1

29.09.2026

f41a7c4648a1

Версия 0.7.1: учётная запись Windows больше не нужна — тест-клиент 8.3.27 принимает проверку подлинности канала от любой учётной записи, контейнер без MCP_QA_TESTCLIENT_USER входит сам (проверено из Linux-контейнера). ui_open по kind+metadata_name распознаёт основную форму, заданную в конфигурации, и форму, которой конфигурация её подменяет (substituted_for; ЗУП: список сотрудников); ошибка открытия называет открывшиеся формы. ui_close_form не закрывает главное окно и ничего не закрывает, если форма не найдена. Обрыв связи с тест-клиентом во время действия — неизвестный исход: новые команды ждут qa_command_status, затем qa_reconnect(force=True). qa_setup и qa_install_client отвечают executor_capability; qa_playbook описывает нативный режим. Ключ, порт 8020 и том /data прежние. Предыдущий latest (0.7.0, 0a10b5d42bc9) доступен по тегу 0.7.0

29.09.2026

0a10b5d42bc9

Версия 0.7.0: нативный менеджер выполняет все операции инструментов qa_*/ui_* — таблицы и списки (поиск, состояние просмотра, стандартная настройка списка), поля всех видов, выбор ссылки, календарь, табличный документ, HTML и форматированный документ, диалоги, проверки, журнал действий, показатели; ui_eval и qa_run_script отвечают executor_capability. Расширение MCPQAClient 0.6.0 работает с контейнером по сети: /client-bus/v1, токен сеанса в указателе, MCP_QA_CLIENT_BUS_URL. Выгрузка табличного документа пишет файл на машине тест-клиента. Вход из Linux-контейнера по-прежнему требует учётной записи Windows. Ключ, порт 8020 и том /data прежние. Предыдущий latest (0.6.0, 37e093e0fcdd) доступен по тегу 0.6.0

29.09.2026

37e093e0fcdd

Версия 0.6.0: контейнер сам работает менеджером тестирования (MCP_QA_EXECUTOR=native) и подключается к тест-клиенту, который запустил человек (MCP_QA_TESTCLIENT, по умолчанию host.docker.internal:1538); отдельный 1С-процесс /TestManager не нужен. Проверка подлинности канала — NTLM через pyspnego, учётная запись Windows в MCP_QA_TESTCLIENT_USER/_PASSWORD/_DOMAIN. Инструменты прежние (qa_*/ui_*, 62); неперенесённые операции, снимок экрана и скрытый рабочий стол отвечают executor_capability. Вход из Linux-контейнера пока не проверен. Ключ LICENSE_KEY_QA прежний, порт 8020 и том /data прежние. Предыдущий latest (0.5.0, сквозной прокси к Windows-серверу, de8228f9d1c3) доступен по тегу 0.5.0

27.09.2026

db1a89815fa9

Версия 0.4.4, только Linux/amd64. Прикладные модули скомпилированы Cython. Сервер требует ключ LICENSE_KEY_QA из дистрибутива (контейнеру передаётся как LICENSE_KEY): пустой или неверный ключ завершает запуск с Invalid LICENSE_KEY. Образ 0.4.3 ключ не проверял и остаётся доступен по своему тегу; порт 8020 и том /data прежние.

Конвертация данных 2.0 (comol/1c_conversion_data_mcp)

Дата
latest
Что изменилось

16.10.2026

a273a83fcf46 (arm64 d6e481fb245d)

Версия 0.3.0. validate_ruleset проверяет, как правила исполняет обмен через план обмена БСП: второй ПВД на тот же тип не выполняется (W013); способ отбора «произвольный алгоритм», ВыборкаДанных и Отказ = Истина в «ПередОбработкойПравила» не исполняются (W014); формы поиска, которые дают дубли или сливают объекты (W015–W018); Объект.Записать() в «ПослеЗагрузки» (W019); объект уходит только ссылкой (I004, новый необязательный параметр registration_name учитывает режим выгрузки «при необходимости»). ПКС с «Обязательное» считается свойством поиска; код отключённых ПВД, ПОД и ПКС не проверяется; ошибки в алгоритме, который ничем не вызывается, — предупреждения; W004 учитывает, что по типу значения работает последнее ПКО источника; два алгоритма с одним именем в одном режиме — E002. Исправлено в validate_registration_rules: правила внутри отключённой группы проверяются, как их и загружает БСП; R007 — объект ПВД вне состава плана, новые R008 (нет правила регистрации — БСП регистрирует объект на всех узлах) и R009 (разрешена авторегистрация — отборы не действуют). trace_object показывает ПВД, вместо которого работает другой, реквизит режима выгрузки и попадание объекта в очередь узла. Исправлено в справке о граблях: обработчики загрузки исполняются из копии правил в приёмнике, объект по ссылке по умолчанию уходит только ссылкой. ВСТРОЕННЫЕ СПРАВОЧНИКИ В ПОИСКОВОМ ИНДЕКСЕ ОБНОВЛЯЮТСЯ ПРИ КАЖДОМ ЗАПУСКЕ (ЧЕТЫРЕ ФАЙЛА, ДОЛИ СЕКУНДЫ); ПРОИНДЕКСИРОВАННОЕ ЧЕРЕЗ index_kd20_path НЕ ТРОГАЕТСЯ. 47 инструментов, ключ тот же

03.10.2026

a8e382fc7890 (arm64 b995391b2812)

Версия 0.2.2. Поведение не изменилось: код тот же, что в 0.2.1, собран по новой схеме сборки. Скомпилированные модули latest побайтно те же, что в 0.2.1; в arm64 тот же набор модулей скомпилирован с -O1 вместо -O2. Слои базы и зависимостей не изменились, поэтому при обновлении скачивается только слой приложения (около 1,6 МБ). Ключ тот же

01.10.2026 (вечер)

e350c4699ab6 (arm64 3e6179f495f0)

Версия 0.2.1. Новый инструмент check_rules_in_1c (47 инструментов): правила обмена, корреспондента и регистрации загружаются штатным методом БСП ПравилаДляОбменаДанными.ЗагрузитьПравила в копии базы через её сервер данных (1c-data-mcp, KD20_SANDBOX_DATA_URL) — в запись в памяти, в транзакции с откатом; ответ называет причину отказа из сообщений БСП и журнала регистрации. Проверено на копии ЗУП КОРП 3.1.26: типовые правила ОбменЗарплата3Бухгалтерия3 после записи сервером и черновик с нуля загружаются. draft_ruleset создаёт выключенными ПКС, значение которых исполнитель не перенесёт (ссылка без ПКО в черновике, примитив в объектную ссылку), и перечисляет их с причиной в выключенные_ПКС. Ключ тот же, что у 0.2.0

01.10.2026

e8e5a0930026 (arm64 b3376adca370)

Первый выпуск, версия 0.2.0: правила обмена «Конвертации данных» 2.0/2.1 — подбор соответствий, черновик и правка правил, проверка по метаданным обеих конфигураций и по поведению исполнителя БСП, импорт макетов без потерь и запись в стиле КД 2.1, правила регистрации, черновик правил корреспондента, смысловой дифф, навигация по коду правил, выгрузка обработчиков для SyntaxCheckServer; 46 инструментов. Нужен ключ LICENSE_KEY_KD20 из дистрибутива от 01.10.2026. Модули сервера скомпилированы Cython. Страница сервера

Last updated