Перейти к содержимому

ADR-0009: Каталоги и правила доступа как код

Статус: Принято — 2026-09-23. Владелец проекта утвердил это решение. Принятие фиксирует архитектурный контракт; оно не означает готовую реализацию или успешное прохождение невыполненных проверок.

Принятое уточнение — 2026-09-24: конфигурация владельца отдельно выбирает машинный доступ, выдачу полномочий задачи и требуемую границу исполнения. Простая конфигурация со статическим каталогом сохраняется; объявления расширения никогда не предоставляют эти права. Исходное принятие и невыполненные проверки сохранены.

English | Русский

Rukh должен подходить небольшим открытым командам и крупным организациям. Команде с несколькими расширениями не должны требоваться сервер входа, служба прав, база данных или язык настройки, исполняемый на клиенте. Организация должна подключать такие интеграции без изменения объявлений расширений и отдельной модели загрузки и доступа.

Каталоги, состав групп и правила доступа можно вести как код. Их подготовка и доставка отделены от подтверждения личности, проверки прав и установки файлов. Этот ADR уточняет принятые границы ADR-0005–0008; он не классифицирует расширения по наличию связи или частоте проверки прав.

  • Полезная основа из одного статического каталога и явно выбранных встроенных локальных правил.
  • Независимое добавление групп, подтверждённой личности и внешних служб.
  • Одинаковые поиск, идентичность команд и проверки доступа во всех конфигурациях.
  • Проверяемые изменения настроек с известным происхождением, без исполнения загруженного кода.
  • Явный владелец правил и доверия издателям; автор расширения не выдаёт права.
ВариантПреимуществоОграничение
Всегда требовать серверы входа и правОдна модель размещения службЛишнее сопровождение для небольших команд и открытых инструментов
Разделить простой и корпоративный CLIКаждый удобен для своей первой задачиРазные правила, контракты расширений и способы перехода
Локальные объявления и заменяемые поставщики за общими контрактамиПростая основа и независимые интеграцииНужны явные границы доверия, личности и версий конфигурации

Основной вариант — статический каталог и встроенная локальная проверка доступа. Вход, объявления групп, подготовка на KCL и внешние службы подключаются независимо. Загрузчик и ядро сохраняют общие контракты.

Владелец CLI может включить один проверенный каталог JSON в поставку или указать явно одобренный локальный файл. В нём записаны идентичности расширений, разрешённые ссылки на выпуски и расположение файлов. Явно выбранная владельцем встроенная политика публичного каталога разрешает поиск, установку и вызов одобренных записей без входа в организацию. Сохраняются проверки доверия издателю, совместимости, объявленных требований и команд. Защищаемые операции с ресурсами требуют собственных явных разрешений; включение в каталог не разрешает все операции, запрошенные расширением.

Встроенный набор public-catalog разрешает отдельные действия жизненного цикла discover, install, activate и execute для допущенных каталогом точных выпусков в локальной области доступа, назначенной владельцем, включая видимость встроенной базовой справки. Каждое действие сохраняет свои проверки доверия, совместимости и жизненного цикла. За пределами описанного ниже локального отображения набор не разрешает контекстный describe, защищаемые операции с ресурсами, установку сред, другую область доступа, отсутствующие выпуски или изменение настроек владельца. Для этого нужны явные правила либо одобренная владельцем политика подготовки. Диапазон версий каталога только выбирает среди независимо проверенных и допущенных выпусков; это не одобрение произвольных байтов с тем же именем. Удаление записи меняет разрешения этого набора при применении новой конфигурации, но не отменяет совершённые действия и не обещает принудительно остановить обычные процессы.

Доверенный встроенный набор также даёт обычные средства отображения: ограниченные вывод команды и диагностический журнал, объявленные и поддерживаемые стандартные диалоги либо управляемые представления в разрешённом терминале текущего вызова execute по ADR-0002. Небольшой команде не нужно отдельно писать правила прав, чтобы показать вывод, сообщить о ходе работы или задать вопрос. Сохраняются согласование поддержки, владение вводом, обработка секретов, выбранные владельцем получатели журнала, пределы, отмена и ошибки неинтерактивного запуска. Разрешены только зарегистрированные стандартные средства отображения этого вызова; это не право на произвольные операции ядра, регистрацию собственных компонентов, ввод других вызовов, получение учётных данных либо файловые/сетевые действия и назначения по выбору расширения. Подтверждение или ответ не разрешают описанное ими действие с ресурсом.

Для этого не нужны файлы групп, учётная запись, удалённый брокер, база данных, установка KCL или система CI. Владелец может проверить и опубликовать каталог вручную. Для доставки подходят Git или статические файлы по HTTPS; установка при этом не запускает сценарии репозитория. Отсутствующая или ошибочная политика означает ошибку, а не неявный выбор публичного каталога.

Без входа ядро записывает явный локальный контекст без подтверждённой личности и не выдумывает корпоративного пользователя. Правила, требующие подтверждённого субъекта, не могут совпасть с таким контекстом. Уже установленные среды используются через доверенного поставщика из ADR-0008; менеджер сред не является условием запуска нативного расширения.

Это примеры сочетаний, а не обязательные ступени развития или режимы исполнения расширений. Большая компания может использовать статические каталоги, а маленькая команда — вход в организацию.

КонфигурацияКаталогЛичность и доступ
Открытые инструментыВстроенный или одобренный статический каталогЯвная публичная/локальная политика; без входа в организацию
Правила команды в GitСтатический каталог и рассмотренные объявления групп/правилПодтверждённая личность, если нужны индивидуальные права; встроенная проверка правил
Существующие системы организацииСтатический каталог или служба каталогаСтандартный вход и локальные объявления, стандартный API прав либо собственный адаптер

Владелец выбирает ответственного поставщика для каждой области доступа. Локальные объявления — осознанная настройка, а не запасной путь при сбое обязательной удалённой службы. Смена правил не снимает привязанное владельцем требование брокера. Стандартные и собственные интеграции сохраняют правила личности и сбоев ADR-0005.

Схема показывает заменяемые источники за общими обязанностями. Используются только настроенные поставщики; несколько входящих вариантов не означают объединения их разрешений.

Предлагаемые простая конфигурация и подключение служб
Предлагаемые простая конфигурация и подключение службСтатические данные и внешние службы независимо предоставляют каталог и правила доступа. Личность подтверждается, когда этого требуют правила. Поиск и проверка прав используют общую границу ядра, а загрузчик отдельно проверяет выпуски.Проверенные каталог иправилаОбщая граница поиска идоступаСтандартные илисобственные службыПодтверждённая личностьпри необходимостиЗагрузчик и проверкавыпусковПроверки операций ядраЛокальные поставщикиданныхЗарегистрированныеадаптерыСвязанный субъектДопустимые ссылкиРешение о доступеПредлагаемые простая конфигурация и подключение службСтатические данные и внешние службы независимо предоставляют каталог и правила доступа. Личность подтверждается, когда этого требуют правила. Поиск и проверка прав используют общую границу ядра, а загрузчик отдельно проверяет выпуски.Проверенные каталог иправилаОбщая граница поиска идоступаСтандартные илисобственные службыПодтверждённая личностьпри необходимостиЗагрузчик и проверкавыпусковПроверки операций ядраЛокальные поставщикиданныхЗарегистрированныеадаптерыСвязанный субъектДопустимые ссылкиРешение о доступе
ДанныеОбязательный смысл и владелец
КаталогИдентичность расширения с ответственной стороной, разрешённый выбор версии или точная ссылка на выпуск, доверенная привязка источника и обязательная область доступа; допуском управляет владелец CLI
Объявления группID групп и участники через подтверждённые ссылки на источник личности/субъект либо явно настроенное соответствие доверенному каталогу пользователей; управляет владелец области доступа
Правила доступаСубъекты/группы, действия, области ресурсов и разрешение/запрет в пределах одной ответственной стороны; устойчивые ID правил для объяснения результата
Версия конфигурацииВерсии схем, ответственная сторона, точные версии и хеши каталога/групп/правил, их связи совместимости

Эти логические документы можно хранить одним файлом, раздельно в одном репозитории или независимо с явными ссылками на версии. Минимальный каталог использует встроенную политику без документа групп. Формат каталога, описание расширения и схема прав различаются: каталог допускает расширение, ADR-0006 описывает его, а правила определяют допустимые действия.

Клиент читает JSON. Небольшие каталоги и правила можно писать прямо в JSON; необязательные схемы KCL компилируются в те же проверяемые данные на стороне владельца/издателя. KCL удобен для повторного использования и структурных проверок, но не нужен для чтения каталога или проверки доступа. Клиент не исполняет загруженный KCL, обработчики Git или сценарии правил. Языки правил общего назначения при необходимости относятся к отдельно зарегистрированному доверенному поставщику, а не к исполняемым выражениям базового формата.

Предлагаемые форматы данных — rukh.catalog/1, rukh.groups/1 и rukh.policy/1. Суффикс выбирает основную версию схемы, а не выпущенную версию продукта. Это отдельные логические схемы, даже если один файл каталога включает локальную policy, необязательные groups и одобренные sources. Компактная форма явно содержит policy: { "preset": "public-catalog" } либо ссылается на политику, явно выбранную в доверенных настройках владельца; отсутствие не выбирает публичный доступ. Конфигурация с несколькими областями связывает отдельные политики через профиль владельца, а не объединяет их разрешения.

В компактном входном файле для одной области каталог объявляет defaultAccessDomain. Вложенные группы/правила и записи могут наследовать именно эту область; вложенные группы/правила наследуют ответственную сторону конфигурации каталога и свою закреплённую схему /1. Наследование — только это описанное сокращение: проверяющая программа раскрывает его до проверки полных записей. Явные противоречащие значения отклоняются. Отдельные документы содержат собственные заголовки, а записи нескольких областей указывают область явно. Документ групп может отсутствовать, явный выбор политики — нет.

Документ или полеОбязательное представление и проверка
Заголовок каталогаschema, catalogId, ответственная сторона конфигурации authority и entries. Сторона должна совпадать с одобренным владельцем издателем конфигурации; наличие имени в файле не делает его доверенным.
Запись каталогаextension: { authority, package } по правилам идентичности ADR-0006; accessDomain; непустой набор releases либо объявленное ограничение выбора выпуска, связанное с разрешённым источником. Повторяющиеся записи расширения и противоречащие связи стороны/области недопустимы.
Точная ссылка на выпускversion, releaseDigest, sourceId и адрес внутри источника по ADR-0007. Хеш выпуска — строчное sha256: и 64 шестнадцатеричных знака; он определяет точные байты оболочки выпуска. Ограничение выбора явно задаёт схему версий; до установки выбор закрепляет один точный выпуск.
Связь источникаsourceId, вид и одобренные репозиторий/реестр/источник адресов с ограниченными правилами выбора внутри него. Учётные данные — защищённые ссылки в настройках владельца, а не секреты в URL. Каталог может сужать разрешённый источник; новый источник требует явного одобрения этой связи владельцем.
Документ группschema, authority, accessDomain, groups. У каждой группы уникальный id и members с явными ссылками на подтверждённые субъекты. Объявленное соответствие доверенному каталогу пользователей — отдельный поставщик входных данных, а не список непроверенных имён.
Документ правилschema, authority, accessDomain и ровно одно из именованного preset или rules. У правил уникальные id, effect: allow / deny, непустые условия выбора субъектов, известные действия и явные условия выбора ресурсов. Смешивать набор и дополнительные правила нельзя; для изменения поведения выбирается явный документ правил.
Ссылка на документРазрешённый источник/путь, точный хеш целого документа и размер в байтах, необязательный JSON Pointer на вложенный логический документ. Хеш считается по точным байтам UTF-8 файла; клиент не пересохраняет JSON до проверки. Внешняя ссылка разрешается в неизменяемую запись, а не использует изменяемую ветку как версию.
Актуальность конфигурацииЯвный выбор pinned либо зарегистрированный владельцем контракт актуальности с обязательными настройками. Базовый вариант — pinned. Поставщик с более строгими требованиями актуальности не настраивается без поддерживаемого контракта; неизвестный контракт означает ошибку.

ID каталогов, источников, групп и правил используют грамматику локальных идентификаторов ADR-0006: строчный ASCII, не более 64 знаков, [a-z][a-z0-9]*(?:[.-][a-z0-9]+)*. Ссылки сохраняют ответственную сторону/область; совпадение локального ID группы не связывает разные стороны. Версии пакетов и пространства издателей подчиняются ADR-0006, а источники личности/субъекты — правилам зарегистрированного поставщика личности из ADR-0005. Читаемые названия необязательны, ограничены по размеру и не являются идентификаторами. ID действий разрешаются в доверенные зарегистрированные контракты; строка в файле не создаёт защищаемую операцию.

Проверка отклоняет неизвестные версии схем, неизвестные поля вне объявленной точки метаданных, повторяющиеся ключи JSON, неверный Unicode, неконечные или небезопасно представимые числа, повторяющиеся ID и ссылки без цели. Условия, влияющие на безопасность, нельзя скрыть в игнорируемых метаданных. По умолчанию на одну разрешённую конфигурацию допускаются не более 8 МиБ декодированного JSON, 32 файлов по ссылкам, глубина ссылок 8, глубина JSON 32, 10 000 записей каталога, 10 000 правил и 50 000 явных участников групп суммарно. Ссылки образуют граф без циклов. Каждое читаемое название ограничено 1 КиБ UTF-8. Большие конечные пределы требуют явной настройки владельца и поддержки реализации; издатель не может их запросить. Пределы проверяются до активации и неограниченного выделения памяти; слишком большая или неверная конфигурация не меняет активный профиль. Неизвестных обязательных субъектов/атрибуты нельзя при проверке превратить в null или пустую группу.

Записи каталога разрешаются через доверенные привязки источников в выпуски ADR-0007. Произвольный URL, неподтверждённое имя или ветка Git не доказывают полномочия издателя. Ветка или тег могут указывать, где искать обновления, но применённая конфигурация фиксирует точное содержимое и версию источника. Каталог может ссылаться на файлы в OCI, HTTPS или Git независимо от собственного места хранения.

Участие в группе — входные данные для проверки прав, а не подтверждение личности. Человека можно объявить через источник личности и устойчивый ID субъекта; для OIDC используются издатель и субъект по ADR-0005. Отображаемое имя, непроверенная почта, флаг CLI или переменная окружения не доказывают личность. Создание учётных записей, хранение паролей и выпуск токенов входа находятся вне этих объявлений. Можно явно сопоставить существующие группы каталога пользователей вместо копирования каждого человека в Git.

Базовая проверка использует явное участие субъектов в группах, известные действия и проверенные области ресурсов. Без подходящего разрешения доступ запрещён; подходящий явный запрет имеет приоритет над разрешениями этой политики. Неизвестные обязательные атрибуты и ошибочные правила не означают полный доступ. Отсутствие необходимой личности требует входа, а не выбора произвольного пользователя. Видимость каталога, установка, вызов и защищаемые операции ядра остаются разными действиями. Альтернативные имена команд сохраняют канонический ID и права.

Условия выбора субъектов имеют явный вид: any для любого контекста внутри области, local для явного локального контекста, точная пара источника/субъекта user или service, либо group для объявленной группы этой области. any не выдумывает подтверждённую личность: защищаемый ресурс может требовать её независимо. Базовая схема групп не поддерживает вложенные группы, вычисляемые выражения или предполагаемое участие. Неизвестная группа отклоняет конфигурацию; недоступные обязательные сведения каталога пользователей делают решение неустановленным, а не включают всех в группу и не позволяют пропустить возможный запрет.

Ресурсы сопоставляются по зарегистрированной схеме области выбранного действия: точные канонические ID, конечные наборы либо явно объявленное all внутри связанной области действия и ограничений владельца. Пропущенное условие не означает любые ресурсы. В базовом варианте нет произвольных сценариев, регулярных выражений для прав, неявного сравнения префиксов URI или выражений авторизации от пользователя. Отсутствующий обязательный атрибут ресурса не удовлетворяет правилу. Действительный ресурс определяется проверенными параметрами операции по ADR-0002; обозначение от расширения не заменяет его.

Проверка сначала подтверждает контекст, действие и ресурс, затем получает обязательные сведения о личности/группах, после чего применяет подходящие явные запреты и разрешения. Неопределённость, мешающая исключить запрет, не допускает разрешение. Полная проверка без подходящего разрешающего правила даёт deny; отсутствие обязательного подтверждения личности — authentication_required; недоступные обязательные сведения об участии — indeterminate. Подходящий запрет сохраняется, даже если подошло разрешение. Этот порядок не даёт неполным сведениям о группах скрыть ограничивающее правило.

Поставщик возвращает существующий результат проверки вместе с версией конфигурации и ID применённых правил для доверенной диагностики и аудита. Он не может выйти за ограничения владельца или подменить субъект/ресурс. Одни правила ограничивают поиск и отвечают на проверки операций; отфильтрованный каталог не является бессрочным разрешением. В каждой области доступа есть один ответственный поставщик решений, без неявного объединения локальных и удалённых прав.

Личные данные и состав закрытых групп не обязательно раздавать пользователям CLI. Служба может проверять те же рассмотренные объявления и возвращать только допустимые ссылки каталога и решения. Публикация открытого каталога не публикует автоматически участников групп и закрытые правила. Пароли, токены доступа и секреты служб не входят в конфигурацию.

Простой каталог проверяет и явно одобряет владелец. Репозиторий с несколькими связанными документами может выпускать одну неизменяемую версию конфигурации, связывающую их точные байты. Рассмотрение изменений в Git и CI полезны для публикации, но не обязательны и не заменяют проверку при чтении. Пакет конфигурации содержит данные и не регистрирует код адаптеров или собственного доверенного издателя.

Схема публикации относится к конфигурации из нескольких документов и общей границе применения ADR-0007. Для одного каталога документы групп/правил отсутствуют; вместо них фиксируется выбранная встроенная политика. Сохранённое поколение команд также проверяется против новых настроек владельца.

Предлагаемые публикация и применение объявлений
Предлагаемые публикация и применение объявленийПодготовленные владельцем JSON или KCL превращаются в проверенные данные каталога, групп и правил. Одобрение публикует точную версию конфигурации. Получатель проверяет полномочия, ссылки и сохранённое либо перестроенное поколение команд, затем фиксирует единый активный профиль. Неверный кандидат не меняет активный профиль и не продлевает его допустимость.JSON или KCL владельцаКаталог и необязательныегруппы/правилаТочная версияконфигурацииКандидат допустим?Сохранённое илиперестроенное поколениекомандАтомарно применитьактивный профильОтклонить кандидат исообщить ошибкуПроверка и экспортОдобрение владельцаПроверка полномочий, хешейи ссылокПовторная проверка связейвладельца и путейДаНетПредлагаемые публикация и применение объявленийПодготовленные владельцем JSON или KCL превращаются в проверенные данные каталога, групп и правил. Одобрение публикует точную версию конфигурации. Получатель проверяет полномочия, ссылки и сохранённое либо перестроенное поколение команд, затем фиксирует единый активный профиль. Неверный кандидат не меняет активный профиль и не продлевает его допустимость.JSON или KCL владельцаКаталог и необязательныегруппы/правилаТочная версияконфигурацииКандидат допустим?Сохранённое илиперестроенное поколениекомандАтомарно применитьактивный профильОтклонить кандидат исообщить ошибкуПроверка и экспортОдобрение владельцаПроверка полномочий, хешейи ссылокПовторная проверка связейвладельца и путейДаНет

Получатель независимо проверяет схему, пределы, целостность ссылок, настроенные полномочия и доверие источнику. Простой вариант доверия — каталог в поставке владельца либо явно одобренная контрольная сумма в доверенных настройках владельца. Сумма берётся из этих настроек, а не из той же неподтверждённой загрузки, которую должна проверять. Подписанные метаданные и централизованное доверие добавляются при необходимости; служба подписания или инфраструктура ключей не обязательны для базового варианта. Расширения и каталоги не заменяют корни доверия владельца самостоятельно.

ownerConfigRevision определяет одну неизменяемую запись с точными документами каталога/групп/правил, ограничениями владельца, доверием источникам и выбранными регистрациями/настройками поставщиков. configRevision в ADR-0005 — другое имя того же идентификатора. Активное состояние — единый activeProfileRevision из ADR-0007, включающий ownerConfigRevision и commandGeneration. Это не независимые активные указатели. Изменение только правил может повторно использовать поколение команд после проверки путей, допуска выпусков, полномочий и связей владельца; иначе оно строит совместимое поколение либо завершается ошибкой без частичного применения любой половины. Включение в каталог само по себе не устанавливает и не активирует команды.

Загрузчик фиксирует эту пару через транзакцию профиля и запись восстановления ADR-0007. Новый поиск команды читает один зафиксированный профиль и закрепляет команду/выпуск из него. Неверное обновление сохраняет активную пару и никогда не продлевает её допустимость. Параллельные изменения повторно проверяются относительно победившего профиля до фиксации; они не перезаписывают его правила или команды отдельно подготовленной устаревшей половиной.

Каждая последовательная выдача сохраняет один configRevision и связь личности. Поставщики локальных объявлений поддерживают режим snapshot ADR-0005: каждая страница использует те же точные каталог, группы и правила. Внешний поставщик может использовать явно разрешённый live, в котором неизменные настройки клиента не означают неизменные удалённые данные. Результат сообщает это ограничение; завершённая выдача live не представляется полным снимком. Смена конфигурации отменяет прежнее продолжение с context_invalidated. Вызывающая сторона может явно начать новый запрос чтения, не смешивая версии и не повторяя внешнее действие.

Уже запущенные вызовы сохраняют личность, выпуск, сторону, подтверждающую права, и зарегистрированные реализации служб. Каждое новое защищаемое действие использует применимую текущую версию правил в пределах исходной области вызова. Если новый профиль больше не допускает эти связи, последующие действия получают context_invalidated; они не получают другого субъекта/поставщика и не сохраняют отозванное разрешение. Уже совершённая работа не отменяется. Пригодность, срок действия и поддерживаемое хранение решений подчиняются выбранному контракту актуальности, а результат поиска или прежняя проверка не превращаются в бессрочное разрешение.

Для каждой конфигурации явно выбирается закреплённая версия либо правила актуальности/обновления. Закреплённый публичный каталог меняется явным обновлением настроек и не обещает автоматического обновления или мгновенного отзыва. Если нужны актуальный состав групп или ограниченный срок отзыва прав, выбираются поставщик и контракт актуальности, способные это обеспечить. Коммит или слияние в Git сами по себе не меняют действующие права у получателей. Интервалы обновления, работа без связи и механизмы немедленного отзыва остаются отдельными решениями; этот ADR не вводит для них классы расширений.

Локальная проверка управляет поиском и операциями через ядро этого CLI. Изменяемый пользователем файл не является границей защиты удалённого корпоративного ресурса. Защищаемые службы проверяют собственные права, а обычные процессы расширений сохраняют ограничения доступа к ОС из ADR-0001. Для централизованного управления организация выбирает поставщика с соответствующим контролем и не полагается на скрытый локальный файл правил.

ADR-0012 определяет контракты пригодности разрешений и правила наблюдённого отзыва. Его режим pinned-local проверяет активные локальные данные, но не превращает закреплённые настройки клиента в неизменяемую удалённую политику. Сроки сеанса входа и учётных данных описаны отдельным решением ADR-0011. Расписание доставки настроек и обновления доверия к артефактам не выводятся из этих контрактов.

Владелец может заменить статический каталог службой, подключить подтверждение личности к правилам групп или заменить локальную проверку поставщиком AuthZEN/собственным адаптером. Это явный переход конфигурации, а не восстановление после сбоя. Идентичности расширений и команд, смысл действий, полномочия источников и обязательные области доступа сохраняются либо явно переносятся и проверяются. Уже запущенные вызовы сохраняют исходный связанный контекст; смена поставщика не меняет его незаметно и не переносит старые разрешения в другую область полномочий.

Переход готовит профиль-кандидат. Он проверяет регистрации и соответствия личности, получает полный набор документов кандидата, проверяет доверие и все обязательные средства, повторно проверяет поколение команд и только затем фиксирует общий профиль. Издатель или каталог не могут сами начать смену полномочий. Перенос расширения в другую область доступа или к другому издателю требует явного одобрения владельца и собственных проверок допуска/доверия; одинаковые отображаемые имена или байты артефакта не делают его обновлением в той же области полномочий. Если новый поставщик не поддерживает выбранную согласованность или контракт актуальности, переход отклоняется без ослабления требований.

Операции конфигурации возвращают applied с зафиксированной версией профиля, unchanged для уже активного идентичного кандидата либо типизированную ошибку: invalid_configuration, untrusted_configuration, unsupported_configuration, limit_exceeded, revision_conflict, context_invalidated, unavailable, storage_corrupt, commit_unknown или cancelled. revision_conflict означает отсутствие фиксации кандидата; сверка может подготовить нового кандидата, но не повторяет защищаемые внешние действия. Неопределённый результат локальной фиксации проверяется по надёжной записи ADR-0007 в пределах ограниченного времени восстановления. Если результат установить нельзя, возвращается commit_unknown, сохраняется ID транзакции; нельзя утверждать, что прежний профиль остался активным, или автоматически повторять обновление. Подтверждённая фиксация остаётся applied, даже если после неё пришла отмена; отмена не означает откат. Это результаты операций конфигурации, а не дополнительные исходы команд ADR-0002.

Уточнение: профили владельца для машинного доступа — 2026-09-24

Заголовок раздела «Уточнение: профили владельца для машинного доступа — 2026-09-24»

Каноническая модель команд может предоставляться через CLI и явно включённый адаптер MCP. Допуск в каталог и существующий набор public-catalog не публикуют автоматически каждую команду как машинный инструмент. Владелец выбирает машинную точку входа и допустимые команды, утверждённый набор выдачи полномочий задачи, пределы и требуемую границу исполнения. Это независимые решения: открытие команд определяет, что клиент может запросить, полномочия задачи — что он может сделать, а изоляция — какие ограничения реально обеспечивает среда.

Минимальная конфигурация с машинным доступом по-прежнему может состоять из одного каталога, утверждённого локального набора правил и защищённого локального состояния общей координации. Вход, сервер политик, издатель JWT, установленный KCL или обязательная служба фоновых заданий не добавляются. Доверенное нативное расширение можно явно открыть в профиле host-trusted с пределами владельца; это не означает ограничения файлового и сетевого доступа вне служб ядра. Профиль с требованием более сильной изоляции отклоняется, если зарегистрированного подходящего исполнителя нет.

Профили владельца привязывают допустимую выдачу задач к её источнику и конечным пределам, включая общие квоты выдачи, когда они нужны. Агент передаёт проверяемые входы операции и может запросить более узкие полномочия; он не выбирает другого издателя, участника, субъекта, источник политики или более разрешительный набор. Текст цели не является правилом доступа. Манифесты расширений могут объявлять запрашиваемые действия, эффекты и средства исполнения, но не добавляют права, не регистрируют доверенный код, не переключают профили и не ослабляют обязательный контроль.

Эти решения используют поддерживаемые контракты конфигурации владельца с проверкой до активации. Уточнение не разрешает произвольные новые поля в существующих документах каталогов/групп/политик /1. Неизвестные обязательные контракты и необеспечиваемые ограничения остаются ошибками конфигурации. Точные поля и пределы задач определены в ADR-0014, предоставление команд — в ADR-0013, требования исполнения — в ADR-0015. Все соответствующие настройки входят в ownerConfigRevision и общую транзакцию профиля; отдельного активного указателя машинной политики не появляется.

Существующие задачи фиксируют верхний предел при выдаче, но каждое новое действие также подчиняется текущей политике. Более широкая конфигурация не расширяет старое полномочие; сужение или отзыв учитываются при окончательном допуске по ADR-0012/0014. Изменения политики не стирают резервы неопределённых эффектов по ADR-0016.

Дополнительные проверки реализации не выполнялись: включить ограниченный локальный машинный профиль без удалённых служб; отклонить необъявленное открытие команд и права, заявленные расширением; различить явный доверенный нативный доступ и обязательную изоляцию; состязать обновление профиля с выдачей задач, делегированными вызовами и сохранёнными резервами эффектов. Некорректные обновления должны сохранять действующий общий профиль, не продлевая полномочий.

  • Небольшой команде достаточно каталога и явной локальной политики; инфраструктура появляется под конкретную потребность.
  • Каталог и правила могут использовать общий процесс работы в Git, сохраняя разные полномочия и открытость публикации.
  • Крупная организация использует те же контракты расширений, поиска и доступа со своими службами.
  • Предлагаемые контракты полей, пределы и общая граница применения требуют исполняемых проверок схем и реализации хранилища/поставщиков. Простота размещения не делает проверки необязательными и не означает, что они уже реализованы.

Решение принято владельцем проекта 2026-09-23. Следующий перечень сохраняется как обязательная проверка реализации, а не условие, уже выполненное при принятии.

Для проверки реализации проверить исполняемые схемы и эталонную реализацию на соответствие принятым контрактам полей, пределам и правилам применения. Проверить:

  1. Один статический каталог и выбранная публичная политика работают без KCL, входа или удалённой службы; отсутствие политики не включает этот вариант неявно.
  2. Одно расширение работает с локальными правилами и внешними поставщиками без изменений объявления; смена поставщика сохраняет идентичность и обязательные области доступа.
  3. Объявленные люди/группы требуют подтверждённой личности там, где она нужна; подмена личности, конфликт правил и неизвестные действия не расширяют доступ. Поиск не выдаёт права исполнения или всех запрошенных операций ядра.
  4. Неверные, изменённые, смешанные или прерванные обновления не открывают частичный профиль; изменения правил и команд используют одну границу фиксации. Продолжение снимка не объединяет субъектов и версии, а явно выбранная выдача live не обещает полноты снимка. Истечение курсора, смена учётной записи и пределы выдачи сохраняют типизированные ошибки.
  5. Открытая публикация не включает закрытые группы и учётные данные; закреплённая конфигурация не обещает автоматического отзыва, а истёкшая/неверная обязательная политика не превращается в публичный/локальный доступ.

Эти функциональные проверки не запускались. Запись предлагает устройство системы, а не готовую реализацию средств каталога и правил.

Диаграмма

Перетаскивайте схему · + / − — масштаб · 0 — целиком · Esc — закрытьПеремещайте и увеличивайте схему двумя пальцами

100%