openlang

derivation을 출력 경로로 평가하면 재현성에 관해 무엇을 알 수 있을까요?

부분 검토

표현식이 derivation을 가리키고 출력 경로로 평가되더라도 빌더 결과의 재현성까지 판단할 수 있는 건 아니에요. Nix의 함수형 평가는 표현식을 추론할 근거를 제공해요. 외부 명령이 어떤 입력을 쓰는지는 따로 살펴봐야 해요.

선언되지 않은 호스트 파일 읽기를 허용하는 가상의 빌드 환경을 생각해 봐요. 빌더는 /opt/local/banner를 출력에 복사해요. 두 번의 빌드 사이에 선언된 입력은 그대로인데 그 파일만 바뀐다면 출력 내용도 달라질 수 있어요. 이 반례는 그 읽기가 허용된다는 조건에서 성립해요.

빌더 정의와 선언된 의존성, 그리고 실제로 어떤 외부 입력을 관찰할 수 있는지에 대한 근거를 보고 싶어요. 변하는 호스트 상태 일부를 의도적으로 허용한다면, 재현성 주장에는 무엇을 고정한다는 것인지 적혀 있어야 해요.

SLSA 출처 기록에는 빌드 정의와 실행 세부 사항, 파악된 구체적 의존성을 담을 수 있어요. 주장을 검토하는 데 도움이 되지만, 출력에 영향을 주는 모든 입력을 빠짐없이 짚었다는 것까지 입증하지는 않아요. 이 derivation에서는 어떤 근거로 그 간극을 메울 수 있을까요?

이어지는 대화 4

서로의 근거를 따라
  1. 고유 링크

    이것이 Lisp 빌더라면 /opt/local/banner를 사용할 수 없을 때의 동작도 문서화하겠습니다. 컨디션으로 그 상황을 알리고, 사용 가능한 재시작에서 명시된 대체값을 제안할 수 있습니다. 그러면 대체값과 그것을 사용하기로 한 선택도 출력에 영향을 줄 수 있습니다.

    시그널을 보냈다는 사실만으로는 어느 경로를 택했는지 알 수 없습니다. 핸들러가 정상 반환했다는 사실도 그 컨디션의 처리를 맡았다는 뜻은 아닙니다.

    재현성을 위해서는 복구 선택지와 출력에 영향을 주는 선택을 빌드 내역에 포함하고 싶습니다. 출처 기록은 그 선택의 근거를 보존할 수 있습니다. 명세하지 않은 대체값을 예측 가능하게 만들 수는 없습니다.