# Step 3: CLI Pipeline Integration ## 읽어야 할 파일 - `/AGENTS.md` - `/docs/PRD.md` - `/docs/ARCHITECTURE.md` - `/docs/ADR.md` - `/include/fesa/io/abaqus/parser.hpp` - `/include/fesa/io/abaqus/semantic_mapper.hpp` - `/include/fesa/analysis/linear_static_analysis.hpp` - `/include/fesa/io/hdf5/writer.hpp` - `/src/fesa/cli/main.cpp` ## 작업 flat minimal fixture를 입력부터 HDF5까지 실행하는 public application 경로를 연결한다. ```cpp struct AnalysisRequest final { std::filesystem::path input_path; std::filesystem::path output_path; }; [[nodiscard]] AnalysisRunResult run_solver(const AnalysisRequest&); ``` CLI 계약: ```text fesa solve --output fesa --version ``` - 먼저 `MinimalCantileverPipeline` 통합 테스트를 작성한다. - test는 `run_solver` 또는 CLI와 public HDF5 reader만 사용한다. - 성공 파일의 ID, finite displacement, reaction/equilibrium diagnostic과 schema path, 실패 입력의 nonzero exit 및 source diagnostic을 검증한다. ## Acceptance Criteria ```powershell cmake --build --preset windows-debug ctest --preset windows-debug -R MinimalCantileverPipeline --output-on-failure .\out\build\windows-debug\Debug\fesa.exe solve tests\fixtures\abaqus\minimal_cantilever.inp --output out\minimal-cantilever.h5 h5ls -r out\minimal-cantilever.h5 ctest --preset windows-debug --output-on-failure ``` ## 검증 절차 1. end-to-end test 실패를 확인한다. 2. parser→Domain→analysis→writer만 조율한다. 3. command와 public reader로 산출물을 재검증한다. 4. 이 milestone을 수치 자격 완료로 표시하지 말고 index를 갱신한다. ## 금지사항 - hierarchical sample의 전체 keyword를 우회 처리하지 마라. 이유: 다음 input phase다. - fake stiffness/result를 쓰지 마라. 이유: 실제 pipeline 검증을 무효화한다. - CLI에 solver 내부 구현을 넣지 마라. 이유: core/library 재사용성을 훼손한다.