diff --git a/AGENTS.md b/AGENTS.md index 44d9209..90e3a6a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -13,7 +13,7 @@ ## 기술 기준 - 언어 표준: C++20 -- 컴파일러: Visual Studio 2022 MSVC v143 +- 컴파일러: Visual Studio 2026 MSVC v145 - 대상 플랫폼: Windows x64 - 빌드 및 테스트: CMake, CMake Presets, CTest, GoogleTest/GoogleMock - 수치 연산 및 희소 직접해법: Intel oneAPI MKL diff --git a/docs/ADR.md b/docs/ADR.md index 80217e1..72ec937 100644 --- a/docs/ADR.md +++ b/docs/ADR.md @@ -6,7 +6,7 @@ ## ADR-001: C++20, MSVC v143, x64와 CMake Presets -**상태:** Accepted +**상태:** Superseded by ADR-016 **상황:** 첫 배포는 Windows 개발팀 내부 검증용이며 Intel oneAPI와 HDF5를 일관되게 연동하고 Harness에서 자동 검증해야 한다. @@ -275,3 +275,25 @@ flat `Domain`으로 정규화한다. 외부 entity는 `(instance name, part-loca - 요청한 파일이 없으면 실패하며 비요청 물리량을 통과로 오인하지 않는다. - 단일 Instance에서는 Instance 열을 생략할 수 있다. - tolerance와 검증 출처는 test registration과 `docs/VALIDATION.md`에서 관리한다. + +## ADR-016: Visual Studio 2026 MSVC v145로 툴체인 갱신 + +**상태:** Accepted + +**상황:** 개발 환경에 Visual Studio 2026 Community와 MSVC v145가 설치되어 있고, +CMake 4.4.0이 `Visual Studio 18 2026` 생성기를 지원한다. 반면 기존 ADR-001의 +Visual Studio 2022 MSVC v143은 설치되어 있지 않아 solver bootstrap을 진행할 수 +없다. + +**결정:** ADR-001의 컴파일러 선택을 대체해 C++20, Visual Studio 2026 MSVC v145, +Windows x64를 사용한다. CMake Preset은 `Visual Studio 18 2026` 생성기와 `v145` +toolset을 명시한다. CMake, CMake Presets, CTest 및 GoogleTest/GoogleMock 선택은 +유지한다. + +**결과와 트레이드오프:** + +- 현재 설치된 개발 환경에서 별도 v143 설치 없이 bootstrap을 진행할 수 있다. +- 빌드 계약이 Visual Studio 2026과 v145에 고정되므로 이전 MSVC toolset은 Phase 1 + 보장 대상이 아니다. +- 컴파일러 갱신에 따른 경고와 표준 라이브러리 동작은 전체 Debug/Release 검증에서 + 다시 확인해야 한다. diff --git a/docs/superpowers/plans/2026-07-29-fesa-phase-1.md b/docs/superpowers/plans/2026-07-29-fesa-phase-1.md index 09d372f..aaa32ca 100644 --- a/docs/superpowers/plans/2026-07-29-fesa-phase-1.md +++ b/docs/superpowers/plans/2026-07-29-fesa-phase-1.md @@ -6,7 +6,7 @@ **Architecture:** Implement one end-to-end vertical slice first, then complete the input, numerical, parallel, result, and reference-verification contracts behind the module boundaries in `docs/ARCHITECTURE.md`. Keep the semantic model independent of Abaqus syntax and isolate oneMKL, oneTBB, and HDF5 behind adapters. -**Tech Stack:** C++20, Visual Studio 2022 MSVC v143 x64, CMake/CMake Presets/CTest, GoogleTest/GoogleMock, Intel oneAPI MKL PARDISO, Intel oneAPI TBB, HDF5 C API, Python 3 Harness. +**Tech Stack:** C++20, Visual Studio 2026 MSVC v145 x64, CMake/CMake Presets/CTest, GoogleTest/GoogleMock, Intel oneAPI MKL PARDISO, Intel oneAPI TBB, HDF5 C API, Python 3 Harness. ## Global Constraints @@ -28,12 +28,16 @@ The planning environment currently has: - CMake 4.4.0 +- Visual Studio Community 2026 at `C:/Program Files/Microsoft Visual Studio/18/Community` +- MSVC v145 tools at `C:/Program Files/Microsoft Visual Studio/18/Community/VC/Tools/MSVC/14.51.36231` +- CMake generator `Visual Studio 18 2026` - oneMKL CMake package at `C:/Program Files (x86)/Intel/oneAPI/2026.1/lib/cmake/mkl` - oneTBB CMake package at `C:/Program Files (x86)/Intel/oneAPI/2026.1/lib/cmake/tbb` - no HDF5 or GoogleTest CMake package found in the standard Program Files trees -- `MSBuild.exe` not currently available on `PATH` +- `MSBuild.exe` at `C:/Program Files/Microsoft Visual Studio/18/Community/MSBuild/Current/Bin/MSBuild.exe` -Task 1 must stop as `blocked` rather than downloading packages if HDF5, GoogleTest, or the MSVC toolchain is still unavailable. +The solver bootstrap must stop as `blocked` rather than downloading packages if a dependency +required by its current step is unavailable. ## Required Research Record @@ -155,14 +159,20 @@ Run: ```powershell cmake --version -Get-Command MSBuild.exe +& "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" ` + -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ` + -property installationPath +Test-Path "C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Current\Bin\MSBuild.exe" +Get-ChildItem "C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC" -Directory Get-ChildItem "C:\Program Files (x86)\Intel\oneAPI" -Recurse -Filter MKLConfig.cmake Get-ChildItem "C:\Program Files (x86)\Intel\oneAPI" -Recurse -Filter TBBConfig.cmake Get-ChildItem "C:\Program Files" -Recurse -Filter hdf5-config.cmake Get-ChildItem "C:\Program Files" -Recurse -Filter GTestConfig.cmake ``` -Expected: MSVC, oneMKL, oneTBB, HDF5, and GoogleTest are all discoverable. If any are missing, mark the Harness step `blocked` and name the missing package; do not download it. +Expected: Visual Studio 2026/MSVC v145, oneMKL, oneTBB, HDF5, and GoogleTest +are all discoverable before the step that consumes each dependency. If a required item is +missing, mark that Harness step `blocked` and name it; do not download it. - [ ] **Step 2: Write the failing version test** diff --git a/phases/internal-release/step0.md b/phases/internal-release/step0.md index 2bc7662..f38d541 100644 --- a/phases/internal-release/step0.md +++ b/phases/internal-release/step0.md @@ -18,7 +18,7 @@ packaging 전에 `docs/BUILDING.md`, `docs/INPUT_FORMAT.md`, 체크리스트는 다음 증거 위치와 command를 포함해야 한다. -- MSVC v143 x64, C++20 및 dependency versions +- Visual Studio 2026 MSVC v145 x64, C++20 및 dependency versions - Debug/Release configure, build, zero-warning, nonzero CTest count - flat 및 단일 무변환 Instance example - HDF5 schema inspection diff --git a/phases/solver-bootstrap/index.json b/phases/solver-bootstrap/index.json index 36227da..e7d48a2 100644 --- a/phases/solver-bootstrap/index.json +++ b/phases/solver-bootstrap/index.json @@ -27,4 +27,4 @@ } ], "created_at": "2026-07-29T23:58:15+0900" -} \ No newline at end of file +} diff --git a/phases/solver-bootstrap/step1.md b/phases/solver-bootstrap/step1.md index 30e020d..be707bc 100644 --- a/phases/solver-bootstrap/step1.md +++ b/phases/solver-bootstrap/step1.md @@ -17,7 +17,8 @@ ## 작업 -C++20/MSVC x64 프로젝트의 최소 실행 가능한 build/test 뼈대를 만든다. +C++20/Visual Studio 2026 MSVC v145 x64 프로젝트의 최소 실행 가능한 build/test +뼈대를 만든다. - `CMakeLists.txt`, `CMakePresets.json`, `cmake/FesaDependencies.cmake`, `.harness/config.json`, `tests/CMakeLists.txt`를 만든다. @@ -34,8 +35,10 @@ namespace fesa { - CLI는 이 step에서 `fesa --version`만 처리한다. - 먼저 `VersionCommand` CTest를 등록해 실패를 확인한 뒤 최소 구현한다. - `windows-debug`, `windows-release` configure/build/test preset을 정의한다. +- configure preset은 `Visual Studio 18 2026` 생성기와 `v145` toolset, x64 + architecture를 명시한다. - build 산출물은 `out/build/` 아래에만 둔다. -- MSVC가 아니거나 x64가 아니면 configure 단계에서 명확히 실패시킨다. +- MSVC v145가 아니거나 x64가 아니면 configure 단계에서 명확히 실패시킨다. ## Acceptance Criteria @@ -54,7 +57,7 @@ CTest는 0개가 아니어야 한다. 1. 테스트가 구현 전 실패하는 것을 확인한다. 2. Acceptance Criteria 명령을 새로 실행한다. -3. MSVC/C++20/x64와 산출물 경로를 확인한다. +3. Visual Studio 2026/MSVC v145/C++20/x64와 산출물 경로를 확인한다. 4. 성공 시 index의 step을 `completed`로 바꾸고 생성 파일을 summary에 기록한다. 5. 도구가 없으면 자동 설치하지 말고 `blocked`와 정확한 누락 항목을 기록한다.