# Step 2: Self-contained HDF5

## 읽어야 할 파일

- `/AGENTS.md`
- `/docs/PRD.md`
- `/docs/ARCHITECTURE.md`
- `/docs/ADR.md`
- `/docs/HDF5_SCHEMA.md`
- `/include/fesa/results/result_database.hpp`
- `/include/fesa/io/hdf5/`

## 작업

HDF5 schema와 reader/writer를 완성해 파일 하나로 모델·설정·전체 Phase 1 결과를
재구성할 수 있게 한다.

- model: coordinates, connectivity, Part/Instance/local labels, sets, materials,
  sections, orientation, applied shear values와 input/default source
- analysis: single step, BC, load, solver settings
- results: nodal displacement/reaction, Beam local frame, 양 끝 section
  strain/force, centroid `Sxx`, recovery-point `Sxx`, diagnostics
- `docs/HDF5_SCHEMA.md`의 dataset rank/type/component/coordinate attribute를 먼저
  갱신한다.
- public reader만으로 모든 항목을 재구성하는 실패 통합 테스트를 작성한다.

## Acceptance Criteria

```powershell
cmake --build --preset windows-debug
ctest --preset windows-debug -R SelfContainedHdf5 --output-on-failure
h5ls -r .\out\build\windows-debug\Testing\Temporary\fesa-self-contained.h5
ctest --preset windows-debug --output-on-failure
```

## 검증 절차

1. complete schema round-trip test 실패를 확인한다.
2. schema version 호환성 규칙을 문서와 코드에 함께 반영한다.
3. public reader와 h5ls로 구조를 독립 확인한다.
4. 전체 테스트와 index를 갱신한다.

## 금지사항

- 원본 `.inp` 경로만 저장하고 모델 데이터를 생략하지 마라. 이유: 자기완결 계약이다.
- HDF5 object를 result model에 노출하지 마라. 이유: adapter 경계를 깨뜨린다.
- schema를 무버전 변경하지 마라. 이유: reader 호환성을 잃는다.
