Files
FESADev/phases/cpp-object-oriented-modular-refactoring/step8.md
T
2026-08-16 02:49:35 +09:00

3.5 KiB

Step 8: Element and Geometry Vector3 Migration

담당 역할과 필수 스킬

  • 담당 역할: implementation-agent
  • 필수 스킬: harness, fesa-cpp-msvc-tdd
  • 이 Step만 RED -> observed failure -> minimal GREEN -> focused/full VERIFY로 수행한다.

읽어야 할 파일

  • /AGENTS.md
  • /docs/CODINGSTYLE.md
  • /docs/linear-static-3d-euler-beam/formulation.md
  • /docs/linear-static-mitc4-shell/formulation.md
  • /docs/cpp-object-oriented-modular-refactoring/implementation-plan.md
  • /include/fesa/math/vector3.h, /tests/unit/math/vector3_test.cpp
  • /include/fesa/elements/euler_beam_3d.h, /src/fesa/elements/euler_beam_3d.cpp
  • /include/fesa/elements/mitc4_shell.h, /src/fesa/elements/mitc4_shell.cpp
  • /include/fesa/model/shell_geometry.h, /src/fesa/model/shell_geometry.cpp
  • matching element/model unit tests
  • /phases/cpp-object-oriented-modular-refactoring/index.json
  • /phases/cpp-object-oriented-modular-refactoring/step8.md

작업

Requirement R-DUP-001의 element/model consumer migration을 구현한다.

  1. Existing element/model tests에 C-DUP-001 exact regression assertions를 먼저 추가한다. Rotated axes, warped shell geometry, stiffness, recovery and patch cases가 migration 전 captured results와 exact equality를 유지하도록 한다.
  2. New assertions가 현재 duplicated helper seam을 직접 대체할 수 없어 compile failure 또는 missing typed interface failure가 나는 RED를 기록한다.
  3. Euler beam, MITC4, shell geometry에서 local Add, Subtract, Scale, Dot, Cross, Norm, finite helper를 제거하고 Vector3를 사용한다.
  4. Weighted and derivative sums may remain formulation-specific expressions, but their primitive vector operations must use Vector3 and their evaluation order must remain unchanged.
  5. Caller가 기존 scale-aware geometry tolerance와 exact diagnostic category/message를 소유한다.
  6. B33 transform, MITC4 director/tangent frame, Jacobian and drilling/physical separation을 변경하지 않는다.

Acceptance Criteria

cmake --build .harness/build --config Debug --target fesa_unit_tests
ctest --test-dir .harness/build -C Debug `
  -R "Vector3|EulerBeam3D|Mitc4Shell|Mitc4Geometry" --output-on-failure
rg -n "(double|Vector3) (Dot|Cross|Norm|Add|Subtract|Scale)\(" `
  src/fesa/elements src/fesa/model
& "C:/Program Files/LLVM/bin/clang-format.exe" --dry-run --Werror `
  src/fesa/elements/euler_beam_3d.cpp src/fesa/elements/mitc4_shell.cpp `
  src/fesa/model/shell_geometry.cpp
cmake --build .harness/build --config Debug
ctest --test-dir .harness/build -C Debug --show-only=json-v1
ctest --test-dir .harness/build -C Debug --output-on-failure

The rg command must return no duplicate local primitive definition; member calls such as .Dot() are allowed.

검증 및 상태 갱신

  • RED seam failure, exact focused regressions, duplicate scan과 full CTest를 summary에 기록한다.
  • 수치 결과가 달라지면 commonization을 억지로 진행하지 말고 error로 기록한다.
  • 성공 시 현재 Step만 completed로 갱신한다.
  • timestamp, retry, commit, advancement는 Executor 소유다.

금지사항

  • Formulation-specific sign/weighted sum을 이름 유사성만으로 합치지 마라.
  • Runtime performance optimization 또는 loop reordering을 하지 마라.
  • ResultRecovery/mapper/HDF5를 수정하지 마라. 이유: Step 9 소유다.
  • 직접 commit하거나 hook script를 수동 실행하지 마라.