Кратко

  • draft-ietf-netmod-yang-anydata-validation-00 связывал идентичность узла в кодировке с YANG Library по RFC 8525, чтобы найти схему для содержимого anydata.
  • anydata-complete должен был применить все правила соответствующей схемы; anydata-candidate не выполнял constraint checks. Ни один результат отдельно не подтверждает отправителя, полномочия, operational state, forwarding или бизнес-эффект.

В архиве есть payload и зелёный статус. Нет версии Library, списка features, deviations и build валидатора. Когда тот же payload на новой системе получает отказ, спорить о достоверности старого решения уже невозможно: стороны воспроизводят разные проверки под одним названием.

Редакция 00 Validating anydata in YANG Library context пыталась определить недостающее соединение. В YANG 1.1 anydata хранит узлы, которые можно моделировать YANG, хотя конкретная модель не была известна при проектировании родительского модуля. Такой контейнер удобен для фильтров, результатов datastore, операций редактирования, instance data и уведомлений. Но потребитель должен выбрать схему, способную проверить пришедшее содержимое.

Draft использовал идентичность из кодировки. В XML это local name и namespace модуля, в JSON — identifier с квалификацией модулем при необходимости, в CBOR — SID, SID delta, квалифицированное имя или instance-identifier. По этой информации валидатор искал бы соответствующий data node в YANG Library.

YANG Library при этом не является единственным глобальным словарём. RFC 8525 связывает datastore со schema, строит schema как объединение module-set и описывает модули через revision, submodule, feature и deviation. content-id меняется при изменении Library, но остаётся implementation-specific и не обязан быть детерминированным hash. Под schema mount добавляется отдельный контекст разрешения.

Candidate оставляет проверку незавершённой

anydata-complete должен был проверять subtree по всем validation rules соответствующей схемы. anydata-candidate не применял constraint checks. Названия отсылают к RFC 7950: для running и startup constraints выполняются после операции, а для candidate их можно отложить до commit или validate.

Поэтому candidate pass означает лишь, что candidate path принял структуру без полной проверки ограничений. Complete pass означает, что конкретная реализация при конкретном контексте не обнаружила нарушений среди выполненных правил. Фраза «оба прошли YANG validation» уничтожает полезную границу между ними.

Fail тоже отвечает на ограниченный вопрос. Он может указать неверный тип, диапазон, must, when, cardinality, неизвестный узел или несовпадение контекста. Но он не устанавливает виновника. Ошибка может появиться у источника, в промежуточном преобразовании, при выборе Library или в валидаторе. Такой результат поддерживает карантин и расследование, а не готовую атрибуцию.

В draft приведён отрицательный interface octet counter из дефектного узла в YANG-Push. Аналитика может посчитать неверный объём и повлиять на billing или capacity planning. Complete validation способна поймать этот класс ошибки. Положительное число всё равно не гарантирует свежесть, полноту, подлинность или правильную привязку к интерфейсу.

Результат становится доказательством только вместе с входами

Квитанция должна сохранить hash payload, время, encoding и декодированную идентичность узла. content-id связывается с замороженным снимком YANG Library; отдельно перечисляются datastore, schema, module-set, revision модулей и submodules, features, deviations и mount path. Затем записываются validator, build, flags, mode, diagnostics и disposition.

Эти поля нужны для replay. Feature способна убрать узел, deviation — изменить правило, mount — сменить пространство разрешения, upgrade — иначе разобрать граничный случай. Если одинаковые bytes получают разные результаты, сначала сравнивают контекст, а не объявляют изменение сообщения.

Draft оставлял реакцию потребителю: не соответствующее сообщение можно игнорировать, логировать или использовать для alert. Значит, политика не принадлежит самому валидатору. Владелец данных заранее решает, какой fail блокирует автоматизацию, какой допускает retry и какой отправляется человеку.

Это истёкшее предложение, а не действующий стандарт

Datatracker называет 2 декабря 2025 года датой последней revision и фиксирует публикацию WG version 00 в этот день. Текст истёк 3 июня 2026 года. Сейчас он отмечен как Expired Internet-Draft, Expired & archived, Dead WG Document и IESG Expired; Intended RFC status указан как None.

В masthead отдельно было Intended status: Standards Track. Это историческое намерение авторов, а не одобрение IETF. Анализ безопасности остался незавершённым, запроса к IANA нет, shepherd в Datatracker не указан.

Implementation Status ссылался на branch libyang для anydata-candidate и подлежал удалению перед возможной публикацией RFC. Branch доказывает максимум существование экспериментального code path. Он не подтверждает merge, независимые реализации, interoperability или production deployment.

Schema-valid не означает operationally true

RFC 8342 разделяет running, intended и operational: корректное значение не доказывает применение устройством. RFC 8341 отдельно определяет access control: структура не выдаёт NACM authorization. Subscription и YANG-Push регулируют выбор и доставку: valid subtree не исключает loss, replay, нарушение порядка или переписывание.

Identity отправителя, transport integrity и custody требуют собственных записей. Device counters, FIB, packet capture, удалённое наблюдение и финансовая сверка отвечают на другие вопросы. Машиночитаемый ответ валидатора не получает права говорить за эти слои.

Практическая ценность revision 00 — не новый универсальный badge. Это способ сделать непрозрачный subtree проверяемым в названном контексте и не смешивать две силы вывода. С сохранённым контекстом проверка сужает инцидент. Без него зелёный статус только откладывает неопределённость.

Источники

Документ: revision 00, текущий Datatracker и история.

Технические границы: RFC 7950, RFC 8525, RFC 8342, RFC 8341, RFC 8528, RFC 8639 и RFC 8641.

Аналитическая рамка: Minimum Initial Specification, On Reality Layers и Running Code Primary.