Documentation
¶
Overview ¶
Команда model-canon-check — исполнитель побайтовой сверки модели доступов с манифестами модулей (задача PRO-Robotech/kacho#1089, приёмка services/iam/docs/engineering/acceptance/model-generated-from-manifest.md).
Обходит закрытый набор модулей платформы, порождает блоки типов из манифеста каждого и сверяет порождённое с каноном `proto/kaname/cloud/iam/v1/fga_model.fga` ПОБАЙТОВО. Второй операнд сверки резолвится ОТ КОРНЯ ДЕРЕВА по постоянному относительному пути, за его пределы не выходит (#2159) и параметром не является — подменить его снимком нечем (§2 п. 2).
Тонкая обёртка: ЧТО сверяется и почему исходов три, документировано на пакете services/iam/internal/modelrender. Здесь живут вызов, ведомость послаблений и перевод отчёта в код возврата.
Зачем исполнитель, когда есть пробы пакета ¶
Пробы пакета судят обход на СИНТЕТИЧЕСКИХ деревьях и о дереве продукта не утверждают ничего. Без исполнителя пакет не имеет прод-потребителя (`architecture.md` §LEAN), перепись §2 п. 5 не печатается нигде, а «сверка побайтовая» остаётся библиотекой, а не гейтом.
Коды возврата ¶
0 сверено — каждый блок канона, принадлежащий модулю набора, порождён и равен;
1 находка — расхождение блоков, блок без источника в манифесте, модуль без
манифеста и без записи ведомости, негодный документ, запись
ведомости без предмета;
2 VOID — сверять нечего НИ ДЛЯ ОДНОГО модуля;
3 проверка НЕ ИСПОЛНЯЛАСЬ — вызов разобрать не удалось ЛИБО канона в этом
дереве нет by construction (самостоятельный клон модуля: контракты в его
поставку не входят, сверять не с чем).
Третий код отделён от нулевого потому, что «ноль находок» обязано быть отличимо от «ноль прочитанного»; четвёртый — потому, что «не выполнилось» не вычитается из вердикта и не зачитывается в успех (`testing.md` §«Чтение вердикта»). Разбор аргументов у flag.ExitOnError выходит кодом 2 — то есть СОВПАЛ БЫ с VOID и объявил бы пустым деревом опечатку в вызове; поэтому здесь свой набор флагов с ContinueOnError и свой код. Тот же довод и тот же выбор, что у соседа module-manifest-check.