feat: add property model foundation
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user