# Step 1: cmake-test-bootstrap ## Read First Read these files before editing: - `/AGENTS.md` - `/docs/AGENT_RULES.md` - `/docs/ADR.md` - `/docs/ARCHITECTURE.md` - `/docs/implementation-plans/domain-model-foundation-implementation-plan.md` - `/phases/domain-model-foundation/index.json` - `/phases/domain-model-foundation/step0.md` ## Task Create the minimum C++17/MSVC/CMake/CTest project structure needed to run Domain tests. Allowed files: - Create `/CMakeLists.txt` - Create `/include/fesa/core/.gitkeep` only if needed to preserve the directory before headers exist - Create `/src/core/.gitkeep` only if needed to preserve the directory before sources exist - Create `/tests/core/domain_bootstrap_test.cpp` CMake requirements: - `cmake_minimum_required(VERSION 3.20)` - Project name: `FESA` - Language: CXX - Set C++ standard to 17 and require it. - Create interface or library target `fesa_core`. - Add include directory `/include`. - Enable testing. - Create test executable `fesa_domain_tests`. - Register CTest name `domain.bootstrap`. - Apply CTest labels `domain;core`. ## Tests To Write First Write `/tests/core/domain_bootstrap_test.cpp` before adding any production C++ code. It should be a minimal self-contained executable with `main()` returning 0 only when the C++ test harness is running. Example intended behavior: ```cpp int main() { return 0; } ``` This step does not implement Domain behavior yet. The purpose is to prove the MSVC/CTest path exists. ## Acceptance Criteria Run: ```powershell cmake -S . -B build/msvc-debug -G "Visual Studio 17 2022" -A x64 cmake --build build/msvc-debug --config Debug ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R domain.bootstrap python -m unittest discover -s scripts -p "test_*.py" python scripts/validate_workspace.py ``` Update `/phases/domain-model-foundation/index.json` step 1 with `completed`, `error`, or `blocked`. ## Do Not - Do not add Domain, Node, Element, solver, parser, MKL, TBB, or HDF5 implementation in this step. - Do not add JavaScript, TypeScript, npm, or non-MSVC fallback tooling.