Purpose
사람이 공개할 근거를 선별하되 빌드가 원본과 공개 안전성을 검증할 수 있는 입력
계약이다. 입력은 content/evidence.json, 출력은
content/generated/evidence.public.json이다.
Input shape
{
"workspace": "5240lab",
"verifiedOn": "YYYY-MM-DD",
"items": [
{
"id": "stable-kebab-id",
"title": "공개 제목",
"layer": "verification",
"type": "execution",
"sourcePath": "relative/path.md",
"startLine": 1,
"endLine": 10,
"expectedExcerpt": "원문에 있는 짧은 문장",
"summary": "입증 범위"
}
]
}
Boundary rules
sourcePath는 절대 경로,.., 역슬래시, NUL을 포함할 수 없다.- 실제 경로와 실경로는 모두 5240lab 워크스페이스 안에 있어야 한다.
- 시작·종료 행은 양수이며 시작이 종료보다 클 수 없다.
- 발췌 범위는 40행 이하, 공개 발췌는 400자 이하로 제한한다.
- 안정 ID는 유일하고 계층·유형은 등록된 값이어야 한다.
- 기대 발췌는 지정 행 범위에 공백 정규화 후 정확히 존재해야 한다.
- 경로·발췌·요약에 공개 금지 패턴이 있으면 실패한다.
Output rules
출력은 절대 경로와 원본 전체 내용을 포함하지 않는다. 각 항목에는 검증된 상대 경로,
행 범위, 기대 발췌, 요약, 유형, 계층, 검증일과 status: verified만 포함한다.
Failure contract
검증기는 0이 아닌 종료 상태와 안정 ID가 포함된 오류를 반환하며 기존 공개 스냅샷을 부분 갱신하지 않는다. 모든 항목이 통과한 경우에만 임시 파일을 최종 출력으로 원자적으로 교체한다.