Files
FESADev/phases/domain-model-foundation/step1.md
T
2026-06-08 16:40:04 +09:00

71 lines
2.1 KiB
Markdown

# 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.