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

53 lines
1.4 KiB
Markdown

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