Files
FESADev/phases/property-model-foundation/step1.md
T
2026-06-09 11:56:42 +09:00

1.4 KiB

Step 1: property-base-interface

Read First

Read these files before editing:

  • /AGENTS.md
  • /docs/AGENT_RULES.md
  • /docs/implementation-plans/property-model-foundation-implementation-plan.md
  • /include/fesa/core/ModelTypes.hpp
  • /include/fesa/property/ShellProperty.hpp
  • /tests/property/shell_property_test.cpp
  • /CMakeLists.txt

Task

Add the runtime property base interface.

Required API:

  • File: /include/fesa/property/Property.hpp
  • Namespace: fesa::property
  • enum class PropertyKind { Shell };
  • class Property
    • virtual destructor;
    • virtual PropertyId id() const noexcept = 0;
    • virtual PropertyKind kind() const noexcept = 0;

Rules:

  • Use fesa::core::PropertyId.
  • Do not add section stiffness or material behavior.
  • Keep this header independent from HDF5, MKL, TBB, and parser headers.

Tests To Write First

  • Add /tests/property/property_base_test.cpp.
  • Test that a small derived class can be used through const Property&.
  • Test virtual deletion through std::unique_ptr<Property>.

Acceptance Criteria

ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R model-object
python scripts/validate_workspace.py

Verification Notes

  1. Run targeted CTest before implementation and confirm the expected compile failure.
  2. Keep all code C++17/MSVC-compatible.
  3. Update phases/property-model-foundation/index.json for this step result.