preregister-seal

실험이나 측정을 돌리기 전에 사양과 판정 규칙을 적어 봉인하고, 실행 중 이탈과 누설을 기록하고, 공개 자료 수집의 비용과 무결성을 관리할 때 사용. "사전 등록", "봉인", "사양 고정", "결과 보기 전에", "수집 계획", "자료 수집의 크레딧 장부" 같은 요청에 적용.

SKILL.md

GitHub

사전 등록과 봉인

결과를 보기 전에 무엇을 어떻게 재고 어떤 결과면 무엇으로 판정할지를 적고, 그 파일의 해시와 시각을 남긴다. 실행 중 바뀐 것은 이탈로, 봉인 전에 결과를 본 것은 누설로 기록한다. research-session의 공통 규칙을 따른다. 관문의 통과 기준을 정하는 일은 feasibility-gate가 맡고, 이 스킬은 착수 뒤의 실험과 측정을 맡는다.

0. 언제 쓰나

  • 한 번밖에 모을 수 없는 자료(시간 창이 지나면 다시 얻을 수 없는 체인 자료, 사람 응답)
  • 판정 결과가 원고의 주장을 정하는 실험
  • 비용이 큰 수집(쿼리 크레딧, 장시간 실행)

탐색적 분석은 사전 등록 없이 해도 된다. 대신 원고와 기록에 탐색적이라고 밝히고, 그 결과로 확인적 주장을 하지 않는다.

1. 사양에 담을 것

사양 파일(experiments/<이름>/사양.md 또는 저장소의 templates/사전등록.md 양식)에 적는다.

  1. 질문과 가설, 그리고 가설에 반하는 결과가 어떤 모양인지
  2. 자료: 출처, 구간, 표본 수, 포함과 제외 규칙. 공개되어 있고 검증할 수 있는 자료를 먼저 쓴다. 직접 만드는 자료는 재현 절차를 적는다.
  3. 측정의 정의와 분석 방법
  4. 대조군: 심사자가 고를 법한 강한 기준선. 허수아비 대조군을 쓰지 않는다
  5. 판정 규칙: 통과, 미통과, 접는 조건. 표본이 부족할 때의 처리(예: 표본이 정한 수 미만이면 접는다)
  6. 비용 상한과 멈춤 선
  7. 이탈 처리 규칙: 무엇이 바뀌면 새 판 사양이 필요한가
  8. 결과를 본 뒤 적용 범위를 바꾸면 새 표본으로 다시 확인한다는 규칙
  9. 판단 유보의 처리: 유보는 반증이 아니며, 유보로 보고한다

2. 쓰는 쪽과 확정

  • 사양은 규칙 작성 역할이 쓴다. 이 에이전트는 결과 파일과 평가 구간의 자료를 보지 않는다.
  • 사용자가 사양을 확정한다. 사용자가 없는 상태에서 정한 사양은 "사용자 미확정"으로 봉인하고, 그 결과는 잠정이다.

3. 봉인

  1. 봉인 도구(seal.py seal <파일> 등)가 있으면 쓰고, 없으면 sha256sum과 시계 시각을 봉인 목록(experiments/SPEC-HASHES.txt)에 한 줄로 더한다.
  2. 사양과 봉인 목록을 같은 커밋으로 남긴다. 커밋 해시를 승인기록에 적는다.
  3. 외부 시각 증명(공개 타임스탬프 서비스, 공개 저장소 커밋)은 원하면 더한다.

4. 누설

봉인 전에 누군가(사용자, 도구, 에이전트) 평가 구간의 자료나 결과를 봤으면 누설이다.

  • 누설 기록에 누가, 무엇을, 언제 봤는지와 사양에 미쳤을 수 있는 영향을 적는다.
  • 영향이 있을 수 있으면 새 표본(다른 구간, 다른 체인)으로 확인하거나, 그 분석을 탐색적으로 낮춘다. 어느 쪽인지는 사용자가 정한다.

5. 실행 중

  • 이탈 기록 표: 무엇이 달라졌나, 왜, 언제, 누가 정했나, 결과에 미칠 영향.
  • 결과를 본 뒤 쓴 사양이나 규칙은 그렇다고 사양 머리에 적는다.
  • 실행이 실패하면 실패했다고 적는다. 실패한 실행을 지우고 다시 돌린 것으로 갈음하지 않는다.

6. 자료 수집

항목 할 일
비용 장부 공유 자원(쿼리 크레딧, API 한도)의 단일 장부이며 research-batch도 이 장부를 쓴다. 시작 잔량, 쿼리별 어림, 실제 사용, 남은 양, 멈춤 선. 장부와 서비스 표시가 어긋나면 기록한다
쿼리 원문 쿼리, 매개변수, 실행 시각을 파일로 남긴다
무결성 결과 파일의 해시를 적고, 여러 환경(맥, 클라우드)의 사본을 해시로 대조한다
보관 원자료는 git 밖에 두고, 다시 받는 법을 data/README.md에 적는다
접근 장애 DNS 실패, 서비스 내부 오류, 접근 차단은 날짜와 함께 적고 재시도 횟수를 정해 둔다

7. 결과가 나온 뒤

  1. 봉인을 검증한다(seal.py verify 또는 해시 비교). 결과는 "봉인 유지" 또는 "봉인 뒤 변경"이다.
  2. 판정 규칙을 글자 그대로 적용한 문자 판정과 총괄의 종합 판정을 따로 적는다.
  3. 독립 검산을 한다(fact-check 2절).
  4. 결과 방향과 관계없이 보고한다. 원고에 싣지 않기로 하면 그 결정과 이유를 승인기록에 남긴다.

8. 원고와의 짝

원고에 "결과 전에 고정했다"고 쓰면, 그 사양에서 벗어난 이탈도 함께 써야 한다. 이탈을 빼고 싶으면 고정 주장 자체를 빼고 분석을 탐색적으로 서술한다(paper-condense 3절).

9. 보고

틀은 research-session 8절(시작 안내, 진행판, 마침 보고)을 따른다. 아래는 이 스킬의 보고에 들어갈 내용의 예다.

== 끝 | <프로젝트> | 실험 E 사전 등록과 실행 | HH:MM (걸린 시간 n분, 어림 n분) ==
결과   : 사양 v2 봉인(해시 3f9c…, 2026-10-01 14:05, 사용자 확정)
         문자 판정 미통과, 종합 판정 미통과
확인   : 봉인 유지(seal.py verify), 독립 검산 불일치 0
         이탈 1건(구간 끝 하루 단축, 장애), 누설 0건
         크레딧 [######------] 1,180/2,500, 멈춤 선 2,200
바뀐 것: 사양 1, 봉인 기록 1, 이탈 기록 1 (아래 링크)
남은 것: 결정 0건
다음   : 결과를 fact-check로 대조

만들거나 고친 파일은 답에서 바로 열 수 있게 보인다.