Summary
draft-saha-aadp-bound-permit-00, опубликованный 29 сентября, предлагает короткоживущий permit, который переносит зависящее от состояния решение AADP через границу доверия и связывает его с одним получателем, одним ключом предъявителя, одним HTTP-запросом и одним экземпляром действия.- Подпись решения не отменяет mandate и локальную политику. Получатель независимо проверяет делегирование, актуальность и собственное право отказать; ни один слой не расширяет другой.
(iss, jti)атомарно потребляется только после остальных проверок. Подписанное подтверждение получателя связывает попытку с результатом, но профиль не обещает внешний exactly once: неизвестный исход надо сверять, а не повторять с новым permit.
Решение, которое нельзя пересчитать на другом берегу
PDP разрешает агенту перечислить 40 евро. В расчёт вошли накопленный расход, живая резервация, срок согласования, прежние исполнения и kill switch. Эти данные остаются в домене отправителя. Платёжный сервис не имеет их и не может воспроизвести решение при получении запроса.
Идентичность отвечает, кто обращается. Mandate описывает делегированные полномочия. Ни одно не доказывает, что именно эта сумма была разрешена при текущем бюджете. Если запрос пришёл на 40,01 евро, правильная подпись JWT не решает проблему.
Первый проект Shamik Saha об action-bound permits заполняет только этот пробел. Это активный индивидуальный Internet-Draft; в заголовке заявлено намерение Standards Track. Документ не является RFC, консенсусом IETF, продуктом working group или свидетельством эксплуатации.
Permit переносит одно решение, которое удалённая сторона не может пересчитать. Он не создаёт универсальную междоменную власть.
Один получатель и одна конкретная просьба
Permit имеет форму compact JWS JWT с точным typ aadp-permit+jwt. aud содержит одного получателя; список из нескольких аудиторий отклоняется. cnf.jkt указывает proof-of-possession ключ предъявителя, и HTTP Message Signature должна проверяться этим ключом. Без этого объект становится bearer token, запрещённым через границу доверия.
Подпись покрывает как минимум method, authority, path, query, Content-Digest, Idempotency-Key и поле permit. Получатель пересчитывает digest по точным принятым байтам до разбора и повторной сериализации. JSON с тем же смыслом, но другим представлением может быть отклонён.
Смысл связывается отдельно. Зарегистрированный тип действия определяет, как получить объект A из path, query и body. Получатель канонизирует его по RFC 8785, добавляет domain separator и сравнивает action_digest. Одинаковые байты не спасают иное толкование суммы или адресата; одинаковый смысл не оправдывает изменённые байты.
Время образует ещё одну границу. exp не позже AADP execute_within. Без него срок от iat ограничен 120 секундами. Зафиксированный clock skew не превышает 60 секунд и не продлевает основной deadline.
Один адресат, один ключ, один запрос, одно действие и короткий интервал делают permit неудобным для повторного использования — именно так и задумано.
Проверенная чужая воля не заменяет свою
Получатель действует при одновременном выполнении трёх условий. Связанное решение и запрос прошли проверку. Указанный mandate, если он есть, независимо разрешил ту же транзакцию. Локальная политика получателя согласна.
Предлагаемый Agent Authorization Envelope говорит, что агенту делегировано. Bound permit говорит, что stateful PDP решил сейчас. Получатель сам проверяет AAE, сравнивает digest и учитывает субъект, срок, однократность, отзыв и делегацию. DENY, PENDING, mismatch или недоступный обязательный mandate ведут к отказу. Permit не превращает PENDING в PERMIT.
Локальное veto остаётся последним. Платёжный сервис может принять издателя и все криптографические связи, но отказать из-за счёта, мошенничества, санкций или собственных лимитов. Подпись доказывает решение другого домена, а не право командовать системой получателя.
Доверие к issuer также ограничено scope table: ключи, action types, лимиты полей, дата окончания и минимальный режим currentness. Доверие для небольших переводов не даёт полномочий закрывать счета или разрешать любую сумму.
Решение может устареть, не потеряв подпись
После подписания policy могла быть заменена, а mandate — отозван. Короткий срок лишь сужает это окно. Поэтому permit объявляет режим currentness.
time-bounded считает permit актуальным до exp и разрешён только для настроенных issuer/action, принимающих риск невидимого изменения. status-checked требует в момент проверки подтвердить, что permit, policy_version и mandate не отозваны и не заменены, через status list или свежий подписанный statement.
Недоступный endpoint, непонятный ответ или устаревшее заявление дают status-unavailable. Fail-open допустим только как локальная, явная, аудируемая политика для низкого риска и должен попасть в запись. Его нельзя спрятать в общий статус «токен действителен».
Разделение reality layers у Lu Heng здесь буквально. Permit представляет прошлое решение, status check — последующее наблюдение, эффект — ещё более поздний факт. Их нужно связать, но ни один документ не должен выдавать себя за следующий слой.
Состояние меняется последним
Порядок состоит из тринадцати шагов: структура, issuer и подпись, audience, время, тип действия, issuer scope, digest тела, подпись предъявителя, семантическое действие, currentness, mandate, локальная политика и только затем атомарное потребление (iss, jti). Эффект выполняется после него.
Иначе испорченный запрос мог бы сжечь законное одноразовое разрешение. Локальный отказ тоже не потребляет permit. При недоступности consume store результат — could-not-check, а не policy denial и не разрешение продолжить. Store должен быть долговечным, атомарным и общим для всех обслуживающих узлов.
jti не равен внутреннему AADP permit_id. Значения создаются независимо и не выводятся одно из другого; issuer хранит соответствие. Только jti пересекает границу и служит Idempotency-Key. Внутренний идентификатор жизненного цикла не должен случайно получить смысл внешнего credential.
Первая подача потребляет ключ, выполняет эффект и сохраняет результат. Та же пара с тем же content digest возвращает сохранённый результат и не создаёт второй эффект. Другой body с тем же ключом даёт idempotency-conflict. Пока первая попытка выполняется, повтор получает retryable ответ.
Это не exactly once. Если ответ потерян и отправитель не знает, был ли перевод, он не получает новый permit для повторной отправки. Он сообщает timeout, сверяет данные по jti или recipient_action_id и эскалирует неразрешённое расхождение. Idempotency удерживает повторы; она не уничтожает неизвестность.
Подтверждение без циклических ссылок
После потребления и попытки эффекта получатель подписывает confirmation. Она ссылается на permit, digest запроса, digest signature base, action digest, mandate verdict, outcome и локальный action ID. Предъявитель включает digest подтверждения в AADP report как discharge evidence для present_bound.
Направление ссылок не образует круг. Permit может ссылаться на более раннее доказательство отправителя. Confirmation ссылается на permit и запрос. Поздняя запись отправителя ссылается на permit и confirmation. Ни один объект не обещает ссылку на ещё не созданный документ.
Так появляются три независимые фразы: PDP — «я решил»; presenter — «я отправил этот запрос»; recipient — «я поступил с ним так». Подписанный отказ может обосновать failure и no_effect: true. Неподписанная ошибка этого не доказывает; без confirmation результат остаётся timeout.
Профиль рассчитан на один hop. Claim parent отклоняется как chained-permit-unsupported. Если B затем вызывает C, домен B принимает новое решение. Ссылка на предыдущий hop сохраняет provenance, но не авторизует C и не ослабляет его проверки.
Minimum Initial Specification здесь задаёт только минимальные связи и причины отказа, нужные обеим сторонам для одной попытки. Выбор доверия, риска и локального результата остаётся у участников. Общая запись делает разногласие проверяемым, а не назначает над ними центральную власть.
В эталонном коде остаются две пустые клетки
Draft фиксирует commit публичного onedoor. Manifest содержит 24 vector, а traceability map отмечает 22 как implemented. V17 — обнаружение заменённой policy при status-checked — и V22 — confirmation с другим request digest — названы gaps. Документ также сообщает о 92 прошедших permit-тестах.
Это воспроизводимое, но связанное с автором свидетельство. Сообщение указанного commit описывает другое обслуживание репозитория, не специальный выпуск permit; независимой интероперабельности и производственных результатов нет. Running-Code Primacy требует независимо прогнать векторы, особенно два пробела, и опубликовать расхождения. Snapshot не является голосованием за стандарт.
Источники и пределы
- https://api.github.com/repos/shamiksaharcciit-oss/onedoor/commits/38acd847372067d74fbc9ae99b8cab3843778406
- https://api.github.com/repos/shamiksaharcciit-oss/onedoor/git/blobs/0eca43ddda1d111c27d970d3719000ca6193fd09
- https://api.github.com/repos/shamiksaharcciit-oss/onedoor/git/blobs/b9171cc6808c6e1da85bf1f60d0c29dea1658cbd
- https://datatracker.ietf.org/doc/draft-saha-aadp-bound-permit/
- https://datatracker.ietf.org/doc/draft-saha-aadp-bound-permit/history/
- https://heng.lu/minimum-initial-specification-localized-future-decision-voluntary-adoption-internet-coordination-system/
- https://heng.lu/on-reality-layers-symbolic-power-and-why-clarity-feels-so-hostile/
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
- https://www.ietf.org/archive/id/draft-kroehl-agentic-trust-aae-02.html
- https://www.ietf.org/archive/id/draft-saha-aadp-04.html
- https://www.ietf.org/archive/id/draft-saha-aadp-bound-permit-00.html
- https://www.rfc-editor.org/rfc/rfc7800.html
- https://www.rfc-editor.org/rfc/rfc8785.html
- https://www.rfc-editor.org/rfc/rfc9396.html
- https://www.rfc-editor.org/rfc/rfc9421.html
- https://www.rfc-editor.org/rfc/rfc9530.html
Источники подтверждают активное индивидуальное предложение, его зависимости и связанный с автором snapshot реализации. Они не доказывают консенсус IETF, RFC, независимую интероперабельность, безопасное внедрение, верную политику, честного получателя или exactly-once effect. Статья владеет только тезисом revision 00: переносить одно stateful AADP decision как единственную попытку, связанную с получателем, предъявителем, запросом и действием, и замыкать её подписанным ответом получателя.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров

