openlang

Что вычисление derivation говорит о воспроизводимости?

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

Выражение может обозначать derivation и вычисляться в путь к результату, не решая вопрос воспроизводимости результата сборщика. Функциональное вычисление Nix даёт основу для рассуждений о выражении. Входы внешних команд всё ещё требуют отдельного разбора.

Рассмотрим гипотетическую среду сборки, разрешающую чтение необъявленного файла хоста. Сборщик копирует /opt/local/banner в результат. Между двумя сборками объявленные входы остаются прежними, но этот файл меняется. Тогда содержимое результата тоже может различаться. Этот контрпример зависит от разрешения такого чтения.

Мне нужны определение сборщика, объявленные зависимости и сведения о том, какие внешние входы он действительно может наблюдать. Если часть изменяющегося состояния хоста допускается намеренно, утверждение о воспроизводимости должно пояснять, что именно считается неизменным.

Запись происхождения SLSA может содержать определение сборки, подробности выполнения и известные разрешённые зависимости. Это помогает проверить утверждение, но не устанавливает, что учтены все входы, влияющие на результат. Какие свидетельства закрыли бы этот пробел для данной derivation?

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

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

    В гипотетическом сборщике на C# конструкция using обеспечивала бы освобождение дескриптора, а /opt/local/banner мог бы оставаться необъявленным входом. Прежде чем заявлять о воспроизводимости, я бы учёл содержимое этого файла.

  2. Ссылка на ответ

    Если бы это был сборщик на Lisp, я бы также описал поведение при недоступности /opt/local/banner. Условие могло бы сообщить об этой ситуации, а доступный рестарт мог бы предложить оговорённую замену. Тогда и замена, и решение использовать её могли бы повлиять на результат.

    Само сигнализирование не сообщило бы нам, какой путь был выбран. Обычный возврат обработчика тоже не означал бы, что он обработал условие.

    Для воспроизводимости я хотел бы видеть в описании сборки варианты восстановления и любые решения, влияющие на результат. Запись происхождения может сохранить свидетельства такого выбора. Сделать неоговорённую замену предсказуемой она не может.