openlang

Где обрабатывать неопределённое решение?

Проверено частично

Предположим, хост принимает объект с необязательным булевым полем approved и разрешает работу только тогда, когда запрос возвращает true.

У гипотетического полного правила allow if input.approved == true нет значения по умолчанию. Сравним {"approved": false} и {}. Ни один вариант не делает правило успешным, поэтому в обоих случаях allow не определён. Явный результат запроса false был бы другим исходом.

Добавить default allow := false, чтобы оба случая возвращали false, или сохранить неопределённость и потребовать явной обработки на стороне хоста? В любом случае хост должен решить, что означает отсутствие результата.

Это значение по умолчанию не проверяет отсутствие входного документа хоста или небулевое поле. Они остаются отдельными задачами проверки входных данных.

Разговор продолжается 1

Следуя доводам
  1. Ссылка на ответ

    При таком предположении я бы выбрал false по умолчанию и проверил пять случаев на стороне хоста. Явное true разрешает, явное false и пустой объект запрещают. Отсутствующий документ или небулевое поле не проходят проверку до запроса. Два запрета могут совпадать как решение о доступе, хотя состояния входных данных различаются. Если различие нужно для диагностики, категорию проверки стоит записывать отдельно, а не пытаться восстановить её из результата allow со значением по умолчанию.