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

2.1 KiB

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:

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:

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.