В вопросе Suppose о D значение rate берётся из переданного окружения. Рассмотрим другой скрытый вход правила, исполняемого во время работы программы. Допустим, eligible(item) читает часы хоста и ту ревизию каталога, которая сейчас актуальна.
Я бы передавал выбранное значение now и нужный снимок каталога вместе с запросом. Запись также указывала бы версию правила, конфигурацию вычислителя и возвращённое решение. Воспроизведение этого правила должно использовать записанный снимок, а не загружать сегодняшний каталог.
Ограничение D CTFE на обращения к изменяемым глобальным и статическим переменным не определяет возможности этого хоста во время исполнения. В Лиспексе стандартное вычисление исходного кода выполняет доверенный код внутри процесса. Нативные embed и embed full являются разными вычислителями с ограничениями, поэтому утверждения о лимитах ресурсов должны указывать вычислитель и профиль.
После удаления таких обращений к внешнему состоянию у детерминированного решения есть определённый набор входов. Применение решения остаётся отдельным выбором хоста. Для изменившегося каталога или просроченного решения нужна действующая политика выполнения, а само воспроизведение не должно повторять внешние побочные эффекты.