Справочник CLI¶
Запустите:
embraion help
чтобы увидеть каталог команд launcher, или:
embraion help <command>
для справки по конкретной команде.
Проект и setup¶
embraion init¶
Создать modular project configuration .embraion/.
embraion init
embraion init --name MyProject
embraion bootstrap¶
Необязательный deterministic discovery и консервативное применение для инициализированного проекта. Обычный entry point пользователя — ordinary-language skill Project Bootstrap.
embraion bootstrap plan --output .embraion/state/bootstrap-plan.json
embraion bootstrap apply --plan .embraion/state/bootstrap-plan.json
plan сообщает evidence, proposed knowledge/policy/validation changes и limitations. Перед применением прочитайте оригинальные источники: имя документа не доказывает authority, CI commands требуют проверки локального контекста и безопасности. --path выбирает инициализированный проект. Output должен находиться в локальном .embraion/state/ или вне репозитория.
apply принимает только неизменённый проверенный план, совпадающий с текущими discovery, source hashes, configuration и project root. Он заполняет unbound slots/empty profiles и консервативно пустые canonical sources; populated settings и более строгие ограничения сохраняются. Он не настраивает routing/agents, не создаёт docs, не устанавливает зависимости, не запускает команды и не заявляет validation pass. Семантическая коррекция выполняется bounded project edits с последующим новым планом. Lead отвечает за дальнейшую verification.
embraion install¶
Установить одну host projection.
embraion install --host codex --destination .
Hosts: codex, copilot, claude-code, portable.
Preview без записи:
embraion install --host codex --destination . --dry-run
Installed projections отслеживают generated-file hashes. Последующие installs отличают безопасные updates от local conflicts вместо слепой перезаписи файлов.
Существующие repos могут явно выбирать projection components:
embraion install --host codex --destination . --component skills
embraion install --host codex --destination . --component agents --component skills
Поддерживаемые components host-specific: Codex поддерживает config, agents и skills; GitHub Copilot — agents и skills; Claude Code — agents, skills и необязательные scoped-agents и hooks; Portable использует bundle. Невыбранные components остаются user-owned и исключаются из obsolete-file handling.
Для зрелого Codex repo, который уже владеет .codex/config.toml, используйте merge ownership только для required [agents] keys EmbrAIon:
embraion install --host codex --component config --config-mode merge
--config-mode replace остаётся default. Merge mode сохраняет project-owned [agents] keys и другие TOML tables и fail-closed, если файл нельзя безопасно merge.
Projection install и pruning отклоняют вложенные symlinks/junctions в managed paths, включая projection evidence под .embraion/state. Сам destination может быть alias каталога. Запись использует эксклюзивно созданный уникальный temporary file и заменяет directory entry: внешний hardlink inode и существующие .tmp aliases не изменяются. Pruning повторно проверяет ownership hash перед удалением и сохраняет более поздние пользовательские правки.
embraion projection¶
Preview ownership-aware изменений projection:
embraion projection diff --host codex --destination .
embraion projection diff --host codex --destination . --component skills
embraion projection diff --host codex --destination . --json
Проверить installed projection как strict CI gate:
embraion projection verify --host codex --destination .
embraion projection verify --host copilot --component agents --component skills
projection verify завершается с кодом 0 только когда каждый selected projection file уже canonical и нет create/update/conflict/obsolete managed output. Файлы с зарезервированным projection prefix (Claude Code scoped-agents: .claude/agents/embraion--*.md), которые текущая projection не создала бы, показываются как obsolete-modified даже без ownership ledger. При partial Codex config ownership передавайте --config-mode merge и в projection diff, и в projection verify.
Merge mode сохраняет пользовательское содержимое вне managed-блоков, поэтому verify дополнительно сообщает root-findings об этом содержимом: ключи верхнего уровня, которые переопределяют модель или effort пользователя либо routed-выбор субагентов (model, model_reasoning_effort, agents.default_subagent_*), ключи вне необязательного списка allowed-root-keys и текст корневых developer_instructions вне managed orchestration block. По умолчанию это предупреждения. --strict-root или projection.codex.strict-root: true в policy делают их ошибкой проверки:
embraion projection verify --host codex --component config --config-mode merge --strict-root --json
Компонент Claude Code hooks всегда работает в режиме слияния: он управляет только записями hooks EmbrAIon в .claude/settings.json и записывает их в журнал projection. projection verify --host claude-code --component hooks завершается с ошибкой, если управляемая запись отсутствует (update) или изменена (conflict); остальные настройки и hooks расхождением не считаются.
embraion policy¶
Посмотреть normalized source, validation, review, privacy и merge policy:
embraion policy show
embraion policy show --json
Завершиться с ошибкой, если deployments, execution bindings или routing расширяют policy ceilings проекта. embraion validate внутри проекта выполняет ту же проверку:
embraion policy check
embraion policy check --json
embraion report¶
Вывести или проверить контракт итогового отчёта проекта, объявленный в .embraion/report.yaml (см. Completion report):
embraion report template
embraion report validate report.md --pull-request
embraion report validate report.md --pull-request-not-created
embraion report validate update.md --kind intermediate
report validate завершается с ошибкой и перечнем findings с номерами строк, если отчёт нарушает контракт. - читает отчёт из stdin. --pull-request требует полный URL pull request, а --pull-request-not-created вместо него требует compare URL. Эти флаги взаимоисключающие.
embraion update¶
Безопасно нормализует project configuration и атомарно синхронизирует framework pin с точным lock опубликованного release artifact.
embraion update
embraion update --framework-version <published-version>
Проверить наличие новой опубликованной release, не меняя файлы:
embraion update --check
embraion update --check --json
--check читает последнюю stable GitHub Release, проверяет её tag и digest ожидаемого wheel и сообщает статус launcher и project pin (current, outdated, ahead или not-comparable), наличие artifact lock в проекте и следующие шаги. Код выхода 0 независимо от наличия обновления; ответ содержится в поле update-available JSON-отчёта. Недоступные или некорректные release metadata дают ненулевой код выхода. --check нельзя сочетать с --framework-version.
Безопасная нормализация конфигурации ориентируется только на установленную версию EmbrAIon launcher. Чтобы перевести проект на другую опубликованную версию, сначала установите или обновите/понизьте launcher до этой версии, затем запустите embraion update.
До изменения pin EmbrAIon разрешает canonical GitHub Release и требует ровно один ожидаемый wheel с именем embraion-<version>-py3-none-any.whl и валидным server-side GitHub digest формата sha256:. Команда проверяет release tag, identity asset, URL, формат digest и всю candidate canonical-конфигурацию .embraion/.
Project manifest записывается атомарно сразу с двумя частями:
framework.versionframework.artifact.{schema,source,release,asset,digest}
Отсутствующий release asset, некорректный digest, mismatch version/lock или несовместимая конфигурация приводят к fail-closed. Существующие проекты только с version обновляются автоматически; отсутствующие modular config files создаются из совместимых defaults без ручной миграции. Generated host projections и projection state не меняются.
embraion framework¶
Используйте framework-owned artifact lock вместо consumer-specific download/checksum logic.
Проверить точный locked release asset без установки:
embraion framework verify
embraion framework verify --json
Установить точный locked wheel в изолированный EmbrAIon runtime cache:
embraion framework install
embraion framework install --json
Обе команды читают .embraion/project.yaml, требуют валидный artifact lock, скачивают точный canonical GitHub Release asset и проверяют его SHA-256 до успешного завершения. framework install выполняет проверку до вызова pip и записывает identity lock в runtime cache marker. Cached runtimes с другой artifact identity или digest отклоняются.
Вывести точный pin для скриптов и CI без обращения к сети:
embraion framework pin
embraion framework pin --json
Вывод состоит из строк version=<x.y.z> и, если pin закреплён lock, digest=sha256:<hex>, поэтому его можно дописать в $GITHUB_OUTPUT. Команда завершается с ошибкой, если framework.version отсутствует или не является точной release MAJOR.MINOR.PATCH (например latest, >=1, 1.2 или лишний текст), если указан другой framework.repository, а также при некорректном или несовпадающем artifact lock. Сообщения об ошибке не повторяют отклонённое значение. Setup action использует тот же код чтения.
embraion sync¶
Создать disposable host projections без установки в проект.
embraion sync --host all --output build/generated --force
Health и runtime¶
embraion pricing¶
Концептуальная модель: Pricing и стоимость.
Посмотреть validated local pricing snapshot без network access:
embraion pricing status --json
embraion pricing status --fail-on-stale
Обновить только approved official sources, объявленные по ID в .embraion/pricing.yaml:
embraion pricing refresh --json
embraion pricing refresh --source openai
Refresh валидирует каждый выбранный source и атомарно заменяет snapshot. Failure сохраняет previous snapshot; execution может продолжать offline, а stale/missing rates дают unknown calculated cost. Provider-specific SKU patterns и source URLs остаются в project configuration. CLI не принимает arbitrary URLs.
embraion pricing calculate читает JSON request из stdin с deployment, nullable usage, usageSemantics и optional billing, providerExact, adapterCost, reportedCurrency, atUtc, batch, discount. Snapshot calculation требует explicit usage semantics: inclusive означает, что cached/reasoning counts входят в input/output totals; disjoint — что они дополнительные. Для разных input/output conventions можно передать {"input":"inclusive","output":"disjoint"}. Команда читает только validated local snapshot; reported exact costs имеют приоритет. Reported cost имеет unknown currency без reportedCurrency. Response различает unknown/stale и zero. Scheduled rate нельзя комбинировать с batch/discount rates в одной snapshot entry.
embraion pricing verify --fixtures <yaml> [--json] проверяет, что configured rows дают reviewed costs. Файл содержит schemaVersion: 1 и список fixtures; у каждого fixture уникальный id, deployment, nullable usage, optional usageSemantics, atUtc (в кавычках), billing, batch, discount и expect с state, amount (decimal string в кавычках или null) и optional currency. Каждый fixture считается offline тем же calculation, что и pricing calculate; amounts сравниваются как exact decimals ("3.750" равно "3.75"). При любом mismatch команда завершается с кодом 1.
embraion execute¶
Про execution ownership, bindings, aliases, fallback и handoff см. Execution и провайдеры.
Команда читает versioned execution request из stdin и выводит JSON result. Executable deployments требуют explicit bindings в .embraion/execution.yaml. Для adapter litellm-loopback установите optional extra embraion[litellm]. Он выполняет один bounded request в short-lived local child, используя только выбранный credential reference. Bindings объявляют exact upstream selector/provider, approved context boundary, source/trust/task ceilings и exact/anchored observed-model evidence. Request передаёт approved input в payload.inputsByDeployment для каждого candidate, привязанного к этому adapter на текущем execution host, включая fallback candidates. Cross-host и unbound handoff candidates не требуют adapter input. Отсутствующие required inputs и non-candidate input keys приводят к fail closed; selected input должен соответствовать provenance work item; worker text появляется только в result, но не в attempt evidence. Unbound host deployments возвращают handoff-required. Project acceptance остаётся отдельным от transport completion.
Snapshot cost из LiteLLM usage требует отдельно reviewed overlap evidence. Optional binding usageSemanticsEvidence содержит project-relative path .embraion/usage-evidence/*.json и SHA-256 digest. Checked-in sanitized JSON хранит schema version 1, transport: litellm-responses, exact LiteLLM adapterVersion, provider, selector, official sourceUrl, verification/validity timestamps, explicit input/output usageSemantics и representative sampleUsage. Adapter принимает evidence только если digest, running LiteLLM version (сейчас 1.88.6), provider, selector, dates и sample shape совпадают. Missing/expired/mismatched evidence оставляет usage semantics unknown, поэтому snapshot-derived cost остаётся unknown; execution при этом не блокируется. Provider-reported exact cost или LiteLLM normalized cost сохраняют собственный приоритет. Записывайте evidence только после review реального normalized Responses usage относительно official billing semantics provider; synthetic fixture не доказывает этот contract.
Без healthObservations в request health берётся из локального attempt ledger. Каждый validated attempt добавляется в .embraion/state/execution-attempts.jsonl (только redacted attempt fields; одна ротация при 1 MiB). Ошибка записи ledger выводит warning и сохраняет result.
embraion execute < request.json
embraion execution¶
Сборка context envelopes, проверка readiness и просмотр attempt health. Правила отказов — в Execution и провайдеры.
embraion execution envelope --path src/module.py --task-file task.md < request.json > ready.json
embraion execution preflight --path src/module.py --task-file task.md --json < request.json
embraion execution preflight --deployment analysis-api
embraion execution health --json
envelope читает request из stdin и печатает его с payload.inputsByDeployment для каждого adapter-bound candidate. Читается только committed content (--commit, по умолчанию HEAD); --path можно повторять, --task-file обязателен, --max-file-bytes, --max-total-bytes, --max-output-tokens и --payload-only опциональны. Refusal завершается с кодом 2 и называет path и причину. preflight выполняет проверки согласованности request из execute, затем проверяет полноту binding, request ceilings, наличие credential и adapter preflight без provider call и без вывода credential, и завершается с кодом 1, если что-то не готово. health сводит attempt ledger по deployments.
embraion doctor¶
Запустить framework/project diagnostics.
embraion doctor
embraion doctor --json
embraion status¶
Показать launcher version, project pin, resolved runtime, cache и host projections.
embraion status
embraion status --json
embraion validate¶
Валидировать framework schemas, catalogs, references, localization и другие deterministic contracts.
embraion validate
embraion validate --json
embraion validate --strict
Внутри проекта validate также предупреждает (projection-ignored), если Git игнорирует файл из журнала projection в .embraion/state/projections: новый файл projection по такому пути останется неотслеживаемым. Предупреждение не делает проверку неуспешной.
Внутри проекта validate также проверяет структуру .embraion/*.yaml и выдаёт предупреждения:
- ключи, которых нет в схеме из
schemas/, на верхнем уровне и на один уровень ниже (config-unknown-key); - slots и записи knowledge с отсутствующим путём или путём за пределами проекта, а также несуществующие
rootsв organization (config-path); rolesв knowledge, которые не совпадают ни с ролью Core, ни с агентом из.embraion/agents.yaml(config-role);- пустые файлы, пустые секции, где ожидается значение, и YAML-файлы в
.embraion, которые EmbrAIon не читает (config-inert), а также нечитаемый YAML (config-parse).
Если есть .embraion/sources.yaml, validate проверяет и его и сообщает каждую проблему как ошибку (sources-invalid) независимо от --strict. См. Реестр источников.
Предупреждения не меняют код выхода 0; --strict превращает их в ошибки. Без находок вывод остаётся PASS: no validation issues.. Полную проверку по схеме по-прежнему выполняют команды, которые загружают каждый файл; проверка policy ceilings остаётся ошибкой.
embraion check¶
Запустить все проверки, которые выбирает конфигурация проекта, из корня проекта, откуда бы ни была вызвана команда, чтобы CI потребителя обходился одним шагом:
embraion check
embraion check --base-ref origin/main --fail-on medium --all-files
embraion check --json
Всегда запускаются validate --strict, route --validate, route --audit-authority и security scan (--fail-on, по умолчанию high, и --all-files передаются ему). Добавляются projection verify для каждого host, чьи components объявлены в .embraion/policy.yaml в секции projection, claude-native status --require, когда объявлены Claude Code scoped-agents или hooks, organization check --require-config, когда есть .embraion/organization.yaml, и decisions check --require-config, когда есть .embraion/decisions.yaml и передан --base-ref; без --base-ref эта проверка отмечается как NOT RUN и не роняет команду. Без --base-ref organization check проверяет всю структуру; с ним проверка сравнивает с этим ref, поэтому падают только findings, которых нет в ref, а также перемещения и смена GUID. Секция check в .embraion/policy.yaml может вместо этого объявить, какие режимы organization check запускаются (full, compare или оба, под именами organization-full и organization-compare; без base ref compare отмечается как NOT RUN), а также значения по умолчанию для --fail-on и --all-files; эти флаги их переопределяют. validation-profiles в той же секции добавляет по одному шагу validation-<profile> на каждый указанный validation profile проекта после всех остальных проверок; профиль запускается так же, как validation run, его evidence сохраняется, а шаг падает, если результат не passed (пустой или неизвестный профиль тоже его проваливает). С --json у такого шага есть также validation-profile и evidence (profile, status, evidence-path). См. Параметры check. Ref должен быть получен, поэтому checkout в CI нужен с историей. Каждая проверка печатает PASS или FAIL, у упавшей печатается её вывод, а ошибка в одной проверке роняет только её. Команда завершается с кодом 1, если упала хотя бы одна проверка, и с кодом 2, если .embraion/policy.yaml не читается. См. Policy.
embraion validation¶
Показать или выполнить project validation profiles из .embraion/validation.yaml:
embraion validation list
embraion validation list --json
embraion validation run fast
embraion validation run affected --json
embraion validation run full --run-id task-001
validation run выполняет commands из project root, сохраняет redacted evidence в .embraion/state/validation/ и возвращает non-zero при fail profile. Empty profiles дают skipped. --fail-fast останавливает после первого failed command; --timeout SECONDS задаёт per-command timeout.
validation command выполняет один точный executable с массивом аргументов из JSON-объекта в stdin и выводит один JSON-объект жизненного цикла в stdout. Вывод дочернего процесса направляется только в необязательные logs; evidence профиля не создаётся. Пример запроса:
{"executable":"C:\\Python314\\python.exe","argv":["-c","print('ok')"],"cwd":"C:\\work\\project","timeout_seconds":30,"output_limit_bytes":1048576,"stdout_path":"C:\\work\\logs\\stdout.log","stderr_path":"C:\\work\\logs\\stderr.log"}
executable должен указывать на файл; относительные элементы PATH разрешаются до перехода в cwd. Windows batch-файлы (.bat и .cmd) отклоняются, поскольку без командной оболочки для них нельзя сохранить точный argv. argv — массив строк, cwd — существующий абсолютный каталог, а обязательный timeout_seconds — число больше нуля и не больше 86400. Необязательный env задаёт строки или null для удаления переменной. Пути logs должны быть абсолютными с существующим родительским каталогом; псевдонимы родительского каталога канонизируются перед созданием, а существующие файлы, ссылки в целевом пути и в канонической цепочке родителей, а также совпадение путей отклоняются. Каждый log, включая маркер обрезки, занимает не больше output_limit_bytes байт (по умолчанию 1 МиБ, максимум 16 МиБ), при этом весь вывод дочернего процесса считывается. Если поток превышает лимит, log содержит только маркер обрезки и число байт, когда лимит позволяет их поместить, чтобы не раскрыть часть секрета. В остальных logs редактируются все непустые значения унаследованной среды, значения env, значения executable и argv, а также известные чувствительные шаблоны; совпадающий безвредный текст тоже может быть скрыт. Запрос и значения среды не записываются в evidence. Код выхода CLI: 0 при успехе, 1 при подтверждённом сбое дочернего процесса, 2 при небезопасном продолжении, ошибке запроса или инфраструктуры. JSON содержит safe-to-continue, failure-kind, код выхода, timeout, containment, подтверждение завершения root/tree, считывание потоков, recovery, наличие потомков, размеры вывода и обрезку. Windows использует Job Object до запуска; POSIX использует process group, поэтому дочерние процессы не должны переходить в новую session.
Structured validation profiles могут объявлять runtime parameters. Передавайте их повторяемым --param NAME=VALUE:
embraion validation run affected --param base-ref=origin/main --param head-ref=HEAD
Команда profile может быть mapping с required: false и requires (executables, env, platforms). Команда с отсутствующим prerequisite не запускается и получает статус blocked с причиной. Blocked или failed обязательная команда проваливает profile; необязательная лишь увеличивает счётчик warnings записи. Если все команды необязательные и ни одна не прошла, profile получает skipped с skip-reason. Текстовый вывод показывает [BLOCKED], причину и строки Failure: и Warnings:. Обычные строковые commands работают как раньше. См. необязательные команды и prerequisites.
Вывод длиннее tail в 8000 символов добавляет stdout-head/stderr-head и объект output с общим числом байт и строк; output-limit-bytes ограничивает полный log головой и хвостом с маркером обрезки. См. output limit.
После timeout Windows Job Object или POSIX-группа завершается и проверяется; строка команды получает termination: confirmed или unconfirmed, а unconfirmed проваливает profile и останавливает следующие команды. Root, который завершился с живыми участниками container, также приводит к ошибке. См. Валидация и evidence.
Structured profile с clean-tree: true сравнивает git status перед первой и после последней команды. Новое различие или guard, который не может выполниться (нет Git work tree), проваливает profile с причиной в failure-reasons; см. clean-tree guard.
Unknown parameters и missing required parameters fail-closed. Parameters могут проецироваться в command-line argument или environment child validation process согласно .embraion/validation.yaml.
--run-id прикрепляет profile result к active structured execution record, поэтому validation evidence не нужно вводить вручную повторно, и передаёт ID run каждой command как EMBRAION_RUN_ID. Каждая command выполняется в Windows Job Object или POSIX process group; timeout или прерывание завершают этот container. POSIX-команды не должны выводить дочерние процессы в новую session. --timeout заменяет timeout-seconds profile. Полный redacted output каждой command хранится в .embraion/state/validation/<evidence-id>/command-<index>.log.
Plan options для проектов, которые объявляют areas в .embraion/validation.yaml (см. План validation):
embraion validation plan affected --base-ref origin/main [--head-ref REF] [--include-worktree] [--full-justification REASON] [--json] [--output FILE]
embraion validation explain affected --base-ref origin/main
embraion validation run affected --base-ref origin/main
embraion validation run affected --plan plan.json
plan пишет детерминированный plan.json (по умолчанию .embraion/state/validation/plan.json), explain печатает решение простым языком. Обоим нужен --base-ref или --include-worktree; --head-ref нельзя сочетать с --include-worktree. run использует plan только с --plan, --base-ref или --include-worktree; иначе выполняет весь profile. Plan, который ничего не выбрал, сообщает skipped. --full-justification вне full-reasons, неверная конфигурация, файл --plan, устаревший (изменились конфигурация или состояние Git) или для другого profile, и plan options в проекте без areas fail-closed с exit code 2. list также показывает areas.
embraion cache¶
Посмотреть или очистить isolated project runtimes.
embraion cache list
embraion cache list --json
embraion cache prune --older-than 90
embraion cache prune --older-than 90 --apply
Pruning работает как dry-run, пока не передан --apply.
AI execution¶
embraion deployment¶
Посмотреть registry .embraion/deployments.yaml consuming project:
embraion deployment list
embraion deployment list --json
embraion deployment show DEPLOYMENT_ID
embraion deployment show DEPLOYMENT_ID --json
Registry project-owned. EmbrAIon валидирует его, но не поставляет global model/provider catalog.
embraion route¶
Разрешить host-default или project-overridden routing. EmbrAIon не выбирает модель, если проект явно не переопределил route/role.
embraion route --host codex --route-class substantial --data PRIVATE
embraion route --host codex --route-class substantial --role reviewer --data PRIVATE
embraion route --task-class routine-review --access review
embraion route --task-class routine-review --escalation quality --justification "review evidence"
embraion route --validate
embraion route --audit-authority
Result сообщает resolution: host-default с model: null, когда host выбирает автоматически; resolution: project-override для direct project selector; resolution: project-deployment, когда routing ссылается на .embraion/deployments.yaml. Deployment routes также сообщают resolved provider, billing metadata и ordered fallback plan.
Task-class resolution собирает ordered effective candidates, отделяет availability fallback от explicit escalation и возвращает provenance. Authority audit ищет дубли concrete facts вне .embraion/**; проверенные generated projections исключаются.
embraion dispatch¶
Создать bounded privacy-aware execution plan.
Каждый выбранный маршрут critical требует --justification "конкретный риск" у route и dispatch. Прямой запрос execution также требует непустого justification при routeClass: critical.
dispatch --native-surface claude-agent готовит полное временное описание агента с явно выбранными model/effort, но не запускает его. --native-agent reviewer выбирает native specialist независимо от --role — роли маршрутизации проекта. Загрузку описания и проверку фактических настроек см. в Claude Code.
embraion dispatch --task "Implement feature" --role worker --host codex --route-class bounded-write --data PRIVATE --access write --owned-path "src/**"
embraion context¶
Выбрать project knowledge по task, role, privacy class и character budget:
embraion context build --task "Review architecture boundaries" --role architect --data PRIVATE --max-chars 20000
Canonical Project Contract Slots можно запросить явно:
embraion context slots
embraion context slots --json
embraion context build --task "Review persistence compatibility" --role reviewer --slot persistence --slot compatibility --data PRIVATE
--slot repeatable и принимает constitution, architecture, source-authority, compatibility, persistence, engineering-workflow, specification. Explicit slot request обходит default task-term trigger, но всё ещё соблюдает project-configured role/privacy restrictions.
Saved record хранит provenance metadata и hashes, а не duplicated knowledge contents.
embraion context show CONTEXT_ID
embraion run¶
Записать execution evidence:
Для run start --route-class critical передайте --justification "конкретный риск". Причина сохраняется в записи маршрута запуска с маскированием секретов.
embraion run start --run-id task-001 --task "Implement feature" --role worker --host codex --route-class substantial --data PRIVATE --access write --owned-path "src/**" --substantial
embraion run complete task-001 --changed-path src/example.py --validation fast=passed --review passed --outcome completed
Completed writable runs enforce owned scope, protected project paths и substantial-review policy.
embraion session¶
Управлять normalized task/session state.
embraion session start --session-id task-001 --task "Implement feature"
embraion session show
embraion session set --state review --validation passed
Engineering controls¶
embraion capabilities¶
Показать необязательные декларации .embraion/external-capabilities.yaml и доступные свидетельства для хоста:
embraion capabilities --path . --host codex --json
embraion capabilities --path . --host codex --observation host-observation.json --json
Запись в инвентаре не устанавливает и не загружает возможность хоста. Локально можно проверить файлы управляемого пакета; предоставленные наблюдения хоста остаются сообщениями самого источника и не доказывают выполнение. См. Внешние возможности.
embraion organization¶
Проверить изменённые файлы по инкрементальным правилам организации кода:
embraion organization check --path . --base-ref main --head-ref HEAD --include-worktree --json
embraion organization check --path . --config .embraion/organization.yaml --json
embraion organization check --path . --require-config --json
Базовая ссылка отделяет старый долг и не освобождает новый код от правил. Без конфигурации проверка возвращает skipped; с --require-config она завершается ошибкой. См. Организация кода.
embraion sources¶
Показать необязательный реестр источников и записать, где источник лежит на этой машине:
embraion sources list [--path .] [--json]
embraion sources status [--path .] [--json]
embraion sources set <id> <path> [--path .] [--json]
list показывает id, role, политику write и description каждого источника. status показывает id, role, write и availability: available, если записанный локальный путь существует, missing, если не существует, и unset, если путь не записан. set записывает абсолютный путь объявленного источника в игнорируемый .embraion/state/sources-local.yaml; путь должен существовать. Ни одна команда не печатает локальный путь. Команды завершаются с кодом 2, если .embraion/sources.yaml отсутствует или некорректен, а также если set получает неизвестный ID. См. Реестр источников.
embraion decisions¶
Проверить, что изменение, принимающее решение уровня архитектуры, содержит запись о решении:
embraion decisions check --base-ref origin/main
embraion decisions check --base-ref origin/main --waiver "vendored copy, no ownership change" --json
embraion decisions check --base-ref origin/main --require-config
Проверка сравнивает общего предка базового ref и head (по умолчанию HEAD) с head. Она падает с missing-record, когда срабатывает триггер из .embraion/decisions.yaml (по умолчанию добавленный или удалённый манифест пакета), а изменение не добавляет и не меняет запись в папке, связанной со slot decisions, если только trailer коммита Decision-Waiver: <причина> или --waiver не объясняет, почему запись не нужна. Без конфигурации проверка возвращает skipped; с --require-config она завершается ошибкой. См. Записи об архитектурных решениях.
embraion adr¶
Создать следующую по номеру запись об архитектурном решении:
embraion adr new "Move parsing into its own package"
embraion adr new "Move parsing into its own package" --locale ru --status Proposed --date 2026-10-07 --json
adr new пишет запись из шаблона проекта, добавляет строку в индекс, а с --locale <код> (можно повторять) пишет рядом локализованную копию. Если в проекте нет папки, шаблона и индекса, команда их создаёт. --slug задаёт имя файла, когда в заголовке нет ASCII-слов. См. Записи об архитектурных решениях.
embraion pr-template¶
Установите опциональный проектно-нейтральный шаблон pull request:
embraion pr-template
embraion pr-template --path ../service --json
Команда пишет .github/pull_request_template.md из templates/pull-request/pull-request-template.md. В шаблоне есть разделы: что изменилось, архитектура, совместимость (source и API отдельно от persisted data), validation, непроведённые проверки, риски, workers и независимое ревью с точным final head SHA. Команда никогда не перезаписывает: если в проекте уже есть шаблон pull request (в корне, docs/ или .github/, включая папку PULL_REQUEST_TEMPLATE/) или ссылка по этому пути, она сообщает об этом и ничего не меняет. embraion init её не запускает. --path задаёт каталог проекта, а --json выводит status (created или exists) и path.
embraion checkpoint¶
Сохранить локальные ссылки для продолжения задачи и позже проверить их актуальность:
embraion checkpoint create task-42-step-1 --task-id task-42 --phase implementing --acceptance-path docs/task-42.md --path .
embraion checkpoint resume task-42-step-1 --path .
create также принимает --decision-id, --next-action-id, --remaining-path, --context-id и --run-id. Обе команды возвращают JSON. При продолжении проверяются pin и хеши знаний проекта, свидетельства и снимок Git, включающий HEAD, индекс и видимые рабочие файлы. Статус valid, stale или missing не даёт одобрения review или разрешения пользователя. См. Продолжение задачи.
embraion knowledge¶
Явно создать базовый снимок связей документов и исходных файлов, затем проверить изменения без записи:
embraion knowledge snapshot --path .
embraion knowledge audit --path .
Обе команды возвращают JSON. snapshot сохраняет локальные хеши в игнорируемом каталоге; audit отмечает изменённые или отсутствующие источники для проверки и не переписывает документы. См. Поддержка знаний.
embraion enforcement¶
Посмотреть project enforcement:
embraion enforcement status
embraion enforcement status --json
Проверить enabled gate относительно Git base ref:
embraion enforcement check --base-ref origin/main
embraion enforcement check --base-ref origin/main --run-id task-001 --json
embraion enforcement check --base-ref origin/main --protected-sources base-tree
--protected-sources {name,base-tree} переопределяет enforcement.protected-sources из policy для этого запуска. Без флага решает более строгий режим из policy head и policy merge base, по умолчанию name. В режиме base-tree список protected читается на merge base, а защищённые пути сравниваются по ID объектов Git; если policy base или merge base недоступны, проверка не проходит (fail-closed). См. Enforcement.
С --run-id active runs получают validation evidence. Завершение run с passed review фиксирует HEAD, index и содержимое, modes и symlink targets tracked/nonignored untracked файлов. Gate требует совпадения снимка до и после validation; новый commit, staging или working edit требуют нового reviewed run. Legacy review без снимка не проходит gate. Нечитаемое состояние, submodules и неоднозначные directory aliases приводят к отказу. Завершённый run не изменяется и не завершается повторно. Все gates, включая external-review, отклоняют изменения Git-снимка во время validation; ignored runtime/build output в него не входит.
Check отклоняет mutations protected sources, требует real pass configured validation profile и проверяет review из execution evidence, когда require-review enabled.
Явно установить GitHub Actions CI surface:
embraion enforcement install --surface github-actions --validation-profile affected --require-review
Ни init, ни install, ни harness audit не устанавливают enforcement workflow/native hook молча. Generated workflow устанавливает EmbrAIon через переиспользуемый action GORYNED/EmbrAIon/actions/setup версии, которая создала workflow; action читает project pin во время запуска, поэтому обновление pin не требует правки workflow, см. Consumer CI. install отказывается работать с неточным pin до записи файлов. Generated workflow возвращает non-zero при policy/validation/review failures. Чтобы gate стал обязательным для merge, настройте EmbrAIon enforcement как required status check в branch rules/ruleset.
embraion security¶
Сканировать likely secrets и policy drift.
embraion security scan --path . --fail-on high
--all-files дополнительно проверяет исходники и другие текстовые файлы на private keys, access tokens и machine paths. Для путей, которые .embraion/policy.yaml проекта относит к external или generated (но никогда не canonical и protected), отключается только проверка machine-path, а число таких файлов выводится (machine-path-waived-files с --json); секреты там по-прежнему находятся; см. Security. Если существует .embraion/integrations.yaml, scan также сравнивает объявленные MCP servers с наблюдаемой host configuration и сообщает о drift как о high-severity findings integration-drift; см. Объявленные integrations.
Redact likely credentials из diagnostic text:
embraion security redact --text "token=..."
embraion harness¶
Аудит host agent/skill projection surfaces и metadata native hook capability:
embraion harness audit --host codex
embraion harness audit --host all
EmbrAIon сообщает hook availability, но не устанавливает executable project hooks молча.
embraion mcp¶
Создать privacy-safe MCP inventory.
embraion mcp inventory
embraion worktree¶
Управлять isolated Git worktrees.
embraion worktree list
embraion worktree create ai/my-task
embraion worktree lfs-preflight --path /path/to/worktree --expected-head <full-commit> --remote origin
embraion worktree gc
embraion worktree gc --apply
embraion worktree salvage /path/to/worktree
GC удаляет только worktrees, созданные через embraion worktree create, с соответствующей записью ownership в Git-каталоге worktree. Требуются завершённые локальные run/session evidence, чистый интегрированный checkout, отсутствие блокировок и незавершённых Git-операций. Отсутствующее, повреждённое, активное, blocked или иное недоказанное состояние сохраняется. Старые и созданные вручную worktrees не удаляются.
Hydration Git LFS по умолчанию выключена. При worktree.lfs: hydrate в .embraion/project.yaml команды worktree create (checkout и --detach) и worktree register загружают LFS-содержимое точного HEAD нового worktree из собственного LFS-remote репозитория, делают checkout и проверяют каждый LFS-файл по размеру и SHA-256. create печатает LFS hydrated: <n> of <n> files verified; register добавляет в JSON объект lfs (state, files, verified, missing, reason, а также modified, если LFS-файлы изменены локально). Локально изменённые LFS-файлы только отражаются в отчёте, не перезаписываются и не считаются ошибкой. Использование LFS определяется только по файлам .gitattributes, закоммиченным в HEAD; .git/info/attributes и глобальные атрибуты не читаются. Репозиторий без remote даёт понятную ошибку, а fetch и checkout прерываются по таймауту через 1800 секунд. Неудачная hydration, включая отсутствие git lfs при наличии LFS-файлов, завершает команду с кодом 1 и сохраняет worktree. prepare выполняется до появления checkout и не делает hydration. См. руководство по инструменту worktree.
worktree lfs-preflight — более строгая проверка перед зависимой валидацией. По умолчанию она требует одного активного отдельного worktree, зарегистрированного EmbrAIon и не заблокированного. --allow-unmanaged разрешает отдельный Git-зарегистрированный worktree без записи в реестре EmbrAIon и без осиротевшего маркера ресурса; результат содержит ownership: unmanaged и не даёт прав на lifecycle или cleanup в EmbrAIon. --primary-branch main требует ровно одну ветку main в единственном основном worktree как проектное ограничение. Во всех режимах проверяются точный полный HEAD, чистый индекс и дерево (до hydration допускаются только закоммиченные LFS pointers), установленные обязательные LFS filters и настроенный remote. Содержимое каждого LFS-файла проверяется по hash; если в HEAD нет LFS pointers, после остальных проверок LFS-результат равен not-applicable. После hydration повторно проверяются identity, HEAD и чистота. Команда выводит JSON и возвращает ненулевой код при неопределённом состоянии. --remote задаёт конкретный remote; без него используется tracking remote ветки или origin. Вызывайте команду непосредственно перед зависимой проверкой: результат не удерживает блокировку дерева.
embraion learning¶
Записать evidence и управлять gated learning candidates.
embraion learning observe --id repeated-review-gap --kind repeated-failure --target-type skill --target-id review --summary "Repeated review gap"
embraion learning propose repeated-review-gap
embraion learning approve repeated-review-gap
embraion learning promote repeated-review-gap
Learning evidence идентифицируется по run ID. Eval IDs сохраняют связи с runs: повтор eval без run не добавляет подтверждение, а последующая связь заменяет ранее учтённое eval-only подтверждение. Отдельные runs независимы даже при общей eval label. Непривязанные observations считаются один раз только при отсутствии идентифицированного evidence. Повторы идемпотентны; legacy associations консервативно восстанавливаются и сохраняются. Если новая корреляция опровергает независимость proposal/approval, состояние возвращается в observed/accumulating. Approval и promotion повторно проверяют пороги; promoted нельзя снова propose. Неуказанный target ID отсутствует; promotion-note включён в schema.
embraion eval¶
Запустить behavioral evals и сравнить baselines.
embraion eval run --case reviewer-readonly --record execution-record.json
embraion eval baseline --reports build/evals --output baseline.json
embraion eval compare --baseline baseline.json --reports build/evals
embraion eval skills run --suite evals/skills/code-organization.json --host codex --attempts 2 --output build/skill-evals.json --path . --route-class ordinary --data PRIVATE
eval run --record проверяет предоставленную запись выполнения и не запускает AI-хост. eval skills run создаёт новые сессии хоста (--host codex, claude-code или portable с --host-command) для базового и проверяемого вариантов навыка с учётом маршрутизации проекта и правил приватности. Необязательные --model и --effort должны совпадать с разрешёнными настройками проекта при явном маршруте. Отчёт отделяет наблюдаемое поведение от узкого свидетельства чтения файла навыка; ни одно из них само по себе не доказывает причину результата. См. Живые проверки навыков.
Help¶
embraion help¶
Показать launcher-owned catalog или nested command help.
embraion help
embraion help cache prune
embraion --help
Exit behavior¶
Commands используют non-zero exit codes при failed deterministic checks или invalid operations. Machine-readable output доступен там, где документирован --json.
embraion claude-native¶
Настроить защитные hooks и просмотреть справочные данные событий Claude Code:
embraion install --host claude-code --component scoped-agents
embraion claude-native install-hooks --dry-run
embraion claude-native install-hooks
embraion projection verify --host claude-code --component hooks
embraion claude-native status
embraion claude-native status --require installed,hooks
Компонент scoped-agents требует .embraion/claude-native.yaml; обычная установка Claude по-прежнему включает только agents и skills. Определения выводятся из проектной маршрутизации. Начните новый Thread после установки и вызывайте точное имя определения, полученное от dispatch. См. Claude Code.
install-hooks устанавливает компонент projection Claude Code hooks (то же делает embraion install --host claude-code --component hooks) после проверки projection scoped-agents. Команда сохраняет остальные настройки и hooks в .claude/settings.json и записывает управляемые записи в журнал projection. guard читает JSON события PreToolUse из stdin: проверяет выбранные определения, запрещает подмену настроек и, при включённом read-policy, ограничивает чтение выбранных агентов. Он не ограничивает родительскую сессию, произвольных агентов или Bash. observe принимает PostToolUse/SubagentStop и сохраняет только идентификаторы и сообщённый effort в игнорируемом локальном состоянии. Эти две команды предназначены для hooks.
status различает установку файлов, записанные события и справочное сравнение reported-effort. Источник ввода помечен evidence-origin: unverified-command-input; execution, фактические effort и model остаются unverified; callbacks: recorded означает принятую запись. Тесты с искусственным JSON и локальные записи не доказывают передачу поля приложением, загрузку инструкций, завершение запуска или применение настроек.
Без --require status возвращает 0 при любом состоянии установки. Для CI --require installed,hooks (через запятую или повтором флага) добавляет объект gate и возвращает 1, если какое-либо условие не выполнено: installed требует installation: verified, поэтому отсутствующая или устаревшая проекция не проходит; hooks требует все записи guard и observer в .claude/settings.json. Блокировать можно только эти факты о файлах, потому что status проверяет их сам. Model, effort, execution и callbacks зависят от поведения приложения или непроверенного ввода hooks, поэтому --require отклоняет их с кодом 2, а не превращает справочные данные в успешную проверку.