Этот документ описывает поддержанный v8project.yaml: literal YAML keys, допустимые значения и
validation rules.
Каталог команд находится в CAPABILITIES.md, а runtime semantics и operational nuances вынесены в DEEP_DIVE.md.
- Как получить стартовый конфиг
- YAML Schema и VS Code
- Именование ключей
- Канонический пример
- Локальный overlay
- Обязательный контракт
- Опциональные секции
tools.platformtools.enterprisetools.edt_cli- Неподдержанные ключи
Базовый файл можно сгенерировать командой:
v8-runner config initЧто делает config init:
- создаёт
v8project.yamlв текущем каталоге или по--output <FILE>; - добавляет modeline
yaml-language-serverсо ссылкой на опубликованный schema artifact в веткеmaster; - создаёт рядом пустой
v8project.local.yamlс modeline наhttps://raw.githubusercontent.com/alkoleft/v8-runner-rust/master/docs/schemas/v8project.local.schema.json; - добавляет
v8project.local.yamlв.gitignore, если подходящий pattern еще не указан; - заполняет
source-setпо найденным исходникам; - не перезаписывает существующий файл без
--force; - не пишет synthetic
CONFIGURATION: если конфигурационныйsource-setне найден, завершается validation error; - для
--builder IBCMDотклоняет autodetected external roots как unsupported config combination.
Автообнаружение опирается на содержимое marker files, а не на имена каталогов:
- Designer ordinary sources находятся по
Configuration.xml, а их тип определяется по XML; - Designer external aggregate root создаётся как один
source-setтолько при однородных top-level XML descriptors; - EDT ordinary projects находятся по
.project,DT-INF/PROJECT.PMFи native markers подsrc; - EDT external root создаётся только если direct child projects однородно классифицируются как один external kind.
После загрузки конфига относительные пути резолвятся относительно каталога, где лежит
v8project.yaml.
Если рядом с основным конфигом есть v8project.local.yaml, он применяется автоматически после
v8project.yaml и до CLI overrides. Локальный файл предназначен для machine-local путей,
credentials и runtime настроек; его следует держать вне Git.
Начиная с a1db1f8f422ca1bf71a04c1b4793d27eb8c6d0b4, в репозитории есть
schema artifacts для редактирования v8project.yaml и v8project.local.yaml в IDE.
В репозитории публикуются две JSON Schema:
docs/schemas/v8project.schema.jsonдля основногоv8project.yaml;docs/schemas/v8project.local.schema.jsonдля локального overlayv8project.local.yaml.
v8-runner config init пишет в начало v8project.yaml modeline:
# yaml-language-server: $schema=https://raw.githubusercontent.com/alkoleft/v8-runner-rust/master/docs/schemas/v8project.schema.jsonВ VS Code установите расширение redhat.vscode-yaml. Оно использует эту строку
автоматически; отдельная настройка workspace для основного файла не нужна.
Для v8project.local.yaml config init пишет отдельную modeline:
# yaml-language-server: $schema=https://raw.githubusercontent.com/alkoleft/v8-runner-rust/master/docs/schemas/v8project.local.schema.jsonЕсли local overlay создаётся вручную, добавьте это в .vscode/settings.json проекта или в user
settings:
{
"yaml.schemas": {
"https://raw.githubusercontent.com/alkoleft/v8-runner-rust/master/docs/schemas/v8project.local.schema.json": "v8project.local.yaml"
}
}Schema URL всегда указывает на master, чтобы IDE подхватывала актуальный опубликованный schema
artifact без привязки к release tag.
v8project.yaml использует не один стиль на весь документ. Это текущий loader contract, и docs
ниже повторяют именно literal YAML keys.
- top-level app keys:
workPath,execution_timeout,format,builder,infobase,source-set,build,tools,mcp,tests; buildиспользуетpartialLoadThreshold;mcp.*иtests.*используютsnake_case;- canonical key для EDT tool section:
tools.edt_cli; - у
tools.edt_cliliteral child keys смешанные:interactive-modeauto-startstartup_timeout_mscommand_timeout_ms
Ниже фиксируются только поддержанные canonical keys.
workPath: build
execution_timeout: 300000
format: EDT
builder: DESIGNER
infobase:
connection: "File=build/ib"
user: Admin
password: secret
source-set:
- name: main
type: CONFIGURATION
path: main
- name: ext
type: EXTENSION
path: ext
build:
partialLoadThreshold: 20
tools:
client_mcp:
port: 9874
extension:
name: client_mcp
source:
path: /path/to/onec-client-mcp/exts/client-mcp
format: EDT
va:
epf_path: /path/to/vanessa.epf
platform:
path: /opt/1cv8/x86_64
strict: true
version: 8.3.27.1859
enterprise:
additional-launch-keys:
- /TESTMANAGER
edt_cli:
path: 2025.2.3
version: 2025.2.3
interactive-mode: false
auto-start: false
startup_timeout_ms: 300000
command_timeout_ms: 300000
mcp:
http:
bind_address: 127.0.0.1:3000
path: /mcp
stateful_sessions: true
max_sessions: 64
idle_ttl_secs: 900
execution:
max_concurrent_calls: 1
shutdown_grace_period_secs: 30
tests:
execution_timeout_seconds: 300
yaxunit:
timeouts:
total_ms: 300000
va:
params_path: /path/to/va-params.json
profile: smoke
fail_fast: false
timeouts:
total_ms: 300000
profiles:
smoke:
feature_path: /path/to/featuresv8project.local.yaml расположен рядом с выбранным primary config и применяется автоматически.
config init создаёт пустой local overlay как валидный YAML mapping ({}), добавляет schema
modeline и сохраняет существующие значения, если файл уже был создан вручную. Файл не является
самостоятельным config entrypoint: передавать его через --config нельзя.
Precedence:
v8project.yaml;v8project.local.yaml, если существует;- CLI overrides, например
--workdir.
Merge rules:
- object/map значения merge-ятся рекурсивно;
- scalar значения из local overlay заменяют project значения;
- list значения заменяются целиком;
nullработает как обычное YAML-значение и допустим только для optional typed fields;- относительные пути local overlay резолвятся относительно каталога primary config.
Local overlay может задавать machine-local секции:
workPath;infobase.*, включаяuser/password;tools.*;tests.*;mcp.*.
Другие top-level ключи в local overlay отклоняются.
Local overlay не может менять project identity:
source-set;format;builder.
Пример:
workPath: build-local
infobase:
connection: "File=local/ib"
user: Admin
password: secret
tools:
platform:
path: /opt/1cv8/x86_64
va:
epf_path: /home/user/tools/vanessa.epf
tests:
va:
params_path: /home/user/project/.local/va-params.json- Тип: путь
- Обязателен: да
Корень runtime state:
workPath/hash-storagesworkPath/logsworkPath/tempworkPath/edt-workspaceworkPath/designer
Если каталога нет, он создаётся автоматически.
- Тип: integer
- Обязателен: нет
- По умолчанию:
300000 - Диапазон:
1..=86400000 - Единица: миллисекунды
Общий public budget для CLI и MCP команд. Не заменяет EDT-specific timeout для interactive команд, а ограничивает весь command budget.
- Тип: enum
- Значения:
DESIGNER,EDT - По умолчанию:
DESIGNER
- Тип: enum
- Значения:
DESIGNER,IBCMD - По умолчанию:
DESIGNER
Ограничения:
builder=IBCMDподдерживаетinit,build,dump,extensions;- для server connection с
builder=IBCMDобязательныinfobase.dbms.kind,infobase.dbms.server,infobase.dbms.name; - для file connection секция
infobase.dbmsзапрещена.
Секция обязательна целиком.
- Тип: строка
- Обязателен: да
Строка подключения к ИБ. Для file-based ИБ относительный File=... резолвится относительно
каталога конфига.
- Тип: строка
- Обязательны: нет
Credentials самой информационной базы.
- Тип: объект
- Обязателен: нет
Используется только для builder=IBCMD + server connection.
Поддержанные поля:
kindservernameuserpassword
- Тип: список
- Обязателен: да
Каждый элемент содержит:
nametypepath
path задаётся относительно каталога primary v8project.yaml, если он не абсолютный.
type поддерживает только:
CONFIGURATIONEXTENSIONEXTERNAL_DATA_PROCESSORSEXTERNAL_REPORTS
Validation rules:
nameдолжен быть уникальным и безопасным path segment;EXTENSIONтребует хотя бы одинCONFIGURATION, но external-only config допустим;- для
format=DESIGNERordinary source-set должен указывать на корректный Designer root; - для
format=DESIGNERexternal source-set должен быть aggregate root с top-level XML descriptors matching declaredtype; - для
format=EDTordinaryCONFIGURATION/EXTENSIONpath должен быть valid EDT project root: каталог с.project, правильным nature,DT-INF/PROJECT.PMFи project-local native markers; - для
format=EDTexternal path должен быть каталогом direct child projects, и все найденные child projects должны совпадать с declared externaltype.
- Тип: integer
- По умолчанию:
20 - Минимум:
1
Порог между partial и full load.
CLI selector v8-runner build --source-set <name> использует source-set[].name как stable
runtime identity и не добавляет отдельное поле конфигурации. Если selector не задан, build
обрабатывает все source-set.
- Тип: integer
- По умолчанию:
300 - Диапазон:
1..=86400
- Тип: integer
Поддержанные поля:
params_pathprofilefail_fasttimeouts.total_msprofiles.<name>.feature_pathprofiles.<name>.features_to_runprofiles.<name>.filter_tagsprofiles.<name>.ignore_tagsprofiles.<name>.scenario_filter
v8-runner test va --feature, --filter-tag, --ignore-tag и --scenario-filter
переопределяют соответствующие списки выбранного профиля только для текущего CLI-запуска.
Для функциональных .feature-сценариев и приемки агенты должны использовать test va или MCP
run_all_tests с runner=vanessa; дефолтный MCP run_all_tests без runner=vanessa запускает
YaXUnit.
По умолчанию fail_fast: false.
Для СписокТеговОтбор и СписокТеговИсключение в runtime VAParams runner удаляет один
ведущий @, если он указан в profiles.<name>.filter_tags, profiles.<name>.ignore_tags,
--filter-tag или --ignore-tag.
При генерации runtime VAParams runner добавляет WorkspaceRoot со значением каталога primary
v8project.yaml, если это поле отсутствует или равно null в tests.va.params_path.
Для Vanessa Automation обязательны:
tools.va.epf_pathtests.va.params_pathtests.va.profiletests.va.profiles.<name>.feature_path
Поля startup_ms и run_ms внутри tests.*.timeouts зарезервированы и сейчас не влияют на
запуск.
Поддержанные поля:
bind_address, по умолчанию127.0.0.1:3000path, по умолчанию/mcpstateful_sessions, по умолчаниюtruemax_sessions, по умолчанию64idle_ttl_secs, по умолчанию900
Поддержанные поля:
max_concurrent_calls, по умолчанию1shutdown_grace_period_secs, по умолчанию30
Поддержанные поля:
port, опциональный порт клиентского MCP-сервера onec-client-mcp-devkit.wait_ready_timeout_ms, опциональный timeout дляlaunch mcp --wait-readyи MCPlaunch_app.waitReadyв миллисекундах; если не задан, используетсяexecution_timeout. Эффективное ожидание дополнительно ограничено общим command deadline, поэтому значение большеexecution_timeoutтребует увеличить и глобальныйexecution_timeout.extension, опциональное tool extension для клиентского MCP-сервера.
launch mcp передаёт это значение как mcpPort внутри /C"runMcp..."
если CLI не указал --mcp-port.
launch mcp --wait-ready и MCP launch_app с waitReady=true используют этот порт для
проверки http://127.0.0.1:<port>/mcp, если порт не передан явно.
Ожидание готовности ограничивается tools.client_mcp.wait_ready_timeout_ms; без этой настройки
используется общий execution_timeout. Общий command deadline остаётся верхней границей для
readiness probing.
Для Vanessa Automation MCP используйте launch mcp va --wait-ready или MCP launch_app с
utilityType=mcp, mcpScenario=va и waitReady=true; bare launch mcp проверяет только client
MCP endpoint и не гарантирует наличие Vanessa tools.
extension поддерживает:
name, обязательное безопасное имя расширения в ИБ;- ровно один источник:
source.pathи опциональныйsource.format(DESIGNERилиEDT, по умолчанию globalformat);artifact.pathна существующий.cfeфайл.
tools.client_mcp.extension не добавляется в source-set и не выбирается через --source-set.
init импортирует EDT source в workspace, build подготавливает расширение после project
source-set build, а launch mcp и launch mcp va расширение не устанавливают и не обновляют.
Для source build хранит отдельный snapshot под workPath/hash-storages: повторный запуск с
неизменёнными исходниками пропускает export/load, а build --full-rebuild принудительно
обновляет расширение.
v8-runner tools download client-mcp может заполнить этот блок в v8project.local.yaml:
с --sources он указывает source.path на
build/tools/onec-client-mcp-devkit/exts/client-mcp и source.format: EDT, без
--sources указывает artifact.path на скачанный client_mcp.cfe. Artifact-режим
доступен только для builder=DESIGNER; для builder=IBCMD используйте --sources.
Поддержанные поля:
epf_path, путь к внешней обработке Vanessa Automation.
v8-runner tools download vanessa заполняет tools.va.epf_path в v8project.local.yaml путём
build/tools/vanessa-automation-single.epf.
- Тип: путь
- Обязателен: нет
Может указывать:
- на конкретный бинарь
1cv8,1cv8cилиibcmd; - на каталог
bin; - на корень установки с версиями.
Относительный путь нормализуется относительно каталога primary v8project.yaml.
- Тип: boolean
- Обязателен: нет
- По умолчанию:
false
При strict: true поле tools.platform.path обязательно. Поиск ограничивается указанной
установкой: отсутствующая utility, неизвестная версия при заданном tools.platform.version или
несовпадение версии завершают команду ошибкой без fallback к default roots или PATH.
Первая найденная platform utility фиксирует один canonical installation root; последующие
1cv8, 1cv8c и ibcmd выбираются только из этого root. При strict: false сохранён legacy
порядок: explicit path, default roots, затем PATH.
- Тип: строка
- Обязателен: нет
- Формат:
major.minor,major.minor.patchилиmajor.minor.patch.build
Поведение:
8.3.27.1859: требуется точное совпадение;8.3.20: выбирается максимальная найденная сборка8.3.20.*;8.3: выбирается максимальная найденная версия8.3.*.*.
В strict mode version requirement не допускает неизвестную версию: такая установка отклоняется вместо fallback.
- Тип: список строк
- Обязателен: нет
Ключи добавляются к enterprise client launch.
- Тип: путь или version-like hint
- Обязателен: нет
Поддержанные варианты:
- абсолютный путь к
1cedtcli; - путь к каталогу установки EDT;
- version-like hint, например
2025.2.3.
- Тип: строка
- Обязателен: нет
Отдельная подсказка для автопоиска EDT.
- Тип: boolean
- По умолчанию:
false
Переключает EDT execution между one-shot и shared interactive model.
- Тип: boolean
- По умолчанию:
false
Имеет эффект только вместе с interactive-mode=true и только для long-lived host process. На
текущем этапе это MCP server. CLI не делает eager prewarm и стартует EDT лениво при первом
EDT-вызове.
- Тип: integer
- По умолчанию:
300000
- Тип: integer
- По умолчанию:
300000
Текущий статус:
- не входит в supported config contract;
- подсвечивается JSON Schema как unsupported key;
- runtime loader отклоняет unsupported keys на YAML boundary;
- рабочий каталог EDT session сейчас фиксирован:
workPath/edt-workspace.