diff --git a/docs/ADR.md b/docs/ADR.md index 9408512..f04328a 100644 --- a/docs/ADR.md +++ b/docs/ADR.md @@ -13,11 +13,19 @@ FESA의 architecture decision은 solver correctness, verification traceability, **트레이드오프**: Harness 문서의 비중은 낮아지지만, `docs/HARNESS_WORKFLOW.md`의 실행 계약과 `.codex/hooks.json`의 검증 정책은 계속 필수 운영 규칙으로 유지한다. ### ADR-002: C++17/MSVC/CMake/CTest를 기본 구현 환경으로 둔다 -**결정**: 기본 solver 구현과 validation은 C++17 이상, Visual Studio 17 2022 generator, x64 platform, Debug config, CMake, CTest로 수행한다. +**결정**: 기본 solver 구현과 validation은 C++17 이상, Visual Studio 17 2022 또는 +Visual Studio 18 2026 generator, x64 platform, Debug config, CMake, CTest로 수행한다. +`.harness/config.json`이 없으면 CMake가 설치된 두 승인 generator 중 하나를 자동 +선택할 수 있으며, build/test evidence에는 실제 generator와 compiler version을 기록한다. -**이유**: FESA의 목표 환경은 Windows/MSVC 기반 C++이다. CMake/CTest는 solver source tree가 추가되거나 확장될 때 가장 일관된 build/test entry point다. +**이유**: FESA의 목표 환경은 Windows/MSVC 기반 C++이다. CMake/CTest는 solver source tree가 추가되거나 확장될 때 가장 일관된 build/test entry point다. VS17과 VS18을 +승인하면 현재 지원되는 MSVC 개발 환경에서 같은 C++17/x64/Debug 계약을 검증할 수 있다. -**트레이드오프**: FESA solver source는 CMake/CTest를 기본으로 유지한다. Harness 자체는 `.harness/config.json`에 solution과 test command를 명시한 직접 MSBuild 프로젝트도 검증할 수 있지만, 이는 FESA 제품이 solution-only workflow를 지원한다는 의미가 아니다. +**트레이드오프**: FESA solver source는 CMake/CTest를 기본으로 유지한다. Generator별 +compiler 차이는 각 build/test report에 명시하고, 두 generator 중 하나에서만 관찰되는 +실패를 다른 generator의 성공으로 숨기지 않는다. Harness 자체는 `.harness/config.json`에 +solution과 test command를 명시한 직접 MSBuild 프로젝트도 검증할 수 있지만, 이는 FESA +제품이 solution-only workflow를 지원한다는 의미가 아니다. ### ADR-003: Abaqus `.inp` full compatibility가 아니라 기능별 keyword subset을 지원한다 **결정**: FESA parser는 Abaqus keyword/data/comment line 규칙을 따르되, 기능별로 승인된 keyword subset만 지원한다. 미지원 keyword는 명확한 diagnostic을 남긴다.