{
  "schema_version": 1,
  "observed_at": "2026-09-21T16:24:10.555339+00:00",
  "environment": {
    "os": "Linux",
    "python": "3.10.12"
  },
  "method": "본문의 validate_snapshot·publish_snapshot 함수로 임시 경로에서 정상 교체, 구조 오류, 직렬화 오류를 순서대로 확인했다. 오류 뒤 정상 파일 바이트와 남은 후보 수를 대조했다.",
  "limits": "단일 사용자·단일 writer. fsync·전원 장애·권한 전환·NFS·동시 writer·디스크 부족은 검증하지 않았다.",
  "observations": {
    "last_good_sha256": "9a0657653e4ddb55dfa17b93468819cae4736a6039e25261397fb12adb908d44",
    "published_mode": "0o600",
    "errors": [
      "ValueError",
      "TypeError"
    ]
  },
  "tables": {
    "publish": {
      "headers": [
        "입력",
        "결과",
        "유지된 버전",
        "항목 수",
        "남은 후보 파일"
      ],
      "rows": [
        [
          "정상 후보 교체",
          "성공",
          2,
          5,
          0
        ],
        [
          "구조 검사 실패",
          "ValueError",
          2,
          5,
          0
        ],
        [
          "직렬화 실패",
          "TypeError",
          2,
          5,
          0
        ]
      ]
    }
  }
}
