# Step 4: Release Evidence Gate

## 읽어야 할 파일

- `/AGENTS.md`
- `/docs/PRD.md`
- `/docs/ARCHITECTURE.md`
- `/docs/ADR.md`
- `/docs/VALIDATION.md`
- `/docs/BUILDING.md`
- `/docs/INPUT_FORMAT.md`
- `/docs/RELEASE_CHECKLIST.md`
- `/docs/HDF5_SCHEMA.md`

## 작업

새 실행 증거로 PRD section 8의 내부 배포 수용 조건을 모두 판정한다.

- Debug와 Release configure/build/test를 각각 실행한다.
- test count가 0이 아닌지 확인한다.
- Harness Python self-test를 실행한다.
- reference, determinism, install-tree, HDF5 inspection, scale benchmark 결과를
  checklist ID에 연결한다.
- 현재 검증 범위가 Abaqus displacement/reaction이며 내력/응력은 synthetic adapter
  coverage임을 release note에 명시한다.
- 하나라도 증거가 없거나 실패하면 release를 완료 처리하지 말고 `blocked` 또는
  `error`로 기록한다.

## Acceptance Criteria

```powershell
uv run --with pytest python -m pytest -v -rs
cmake --preset windows-debug
cmake --build --preset windows-debug
ctest --preset windows-debug --output-on-failure
cmake --preset windows-release
cmake --build --preset windows-release
ctest --preset windows-release --output-on-failure
.\out\build\windows-release\Release\fesa_phase1_scale_benchmark.exe
cmake --install out\build\windows-release --config Release --prefix out\package\fesa
```

모든 명령이 종료 코드 0이고 release checklist의 각 criterion이 해당 출력 또는
validation report 항목으로 추적되어야 한다.

## 검증 절차

1. 위 명령을 생략 없이 새로 실행한다.
2. warning, test count, reference maximum error, benchmark와 install manifest를 기록한다.
3. 성공한 경우에만 step/phase를 `completed`로 갱신한다.
4. 미제공 외부 데이터가 필요하면 범위를 확대하지 말고 정확한 blocker를 기록한다.

## 금지사항

- 실패 테스트를 disable하거나 제외하지 마라. 이유: release 증거를 조작한다.
- 구현되지 않은 Abaqus 내력/응력 qualification을 선언하지 마라. 이유: golden이 없다.
- 자동 push하지 마라. 이유: 사용자가 `--push`를 명시한 경우에만 허용된다.
