# Step 2: Install-tree Smoke Test

## 읽어야 할 파일

- `/AGENTS.md`
- `/docs/PRD.md`
- `/docs/ARCHITECTURE.md`
- `/docs/ADR.md`
- `/docs/BUILDING.md`
- `/docs/RELEASE_CHECKLIST.md`
- `/cmake/FESAConfig.cmake.in`
- `/cmake/install.cmake`

## 작업

source/build tree를 참조하지 않는 clean install consumer와 CLI smoke test를 만든다.

- `tests/install/consumer/CMakeLists.txt`, `tests/install/consumer/main.cpp`,
  `tests/install/install_tree_smoke.cmake`를 만든다.
- installed `FESAConfig.cmake`로 작은 consumer를 configure/link한다.
- installed CLI의 `--version`, example solve, 생성 HDF5 public inspection을 실행한다.
- source include path나 build library path를 숨긴 상태에서 먼저 실패를 확인한다.

## Acceptance Criteria

```powershell
cmake --preset windows-release
cmake --build --preset windows-release
ctest --preset windows-release -R InstallTreeSmoke --output-on-failure
ctest --preset windows-release --output-on-failure
```

## 검증 절차

1. 설치 전 smoke test 실패를 확인한다.
2. install tree만 사용하도록 test working directory와 environment를 격리한다.
3. consumer link, CLI solve, HDF5 open을 모두 확인한다.
4. 전체 Release test와 index를 갱신한다.

## 금지사항

- source directory include를 fallback으로 넣지 마라. 이유: packaging 결함을 숨긴다.
- PATH의 개발용 `fesa.exe`를 실행하지 마라. 이유: installed binary 검증이 아니다.
- external dependency installer를 만들지 마라. 이유: inventory만 제공한다.
