feat(linear-static-3d-euler-beam): step 14 - dof-manager
This commit is contained in:
@@ -405,3 +405,57 @@
|
||||
- handoff: the exact AnalysisModel ledger API, sole-step reference, and stable
|
||||
active element/material/section/boundary/load IDs are available to Step 14
|
||||
`DofManager` without copying or mutating Domain entities.
|
||||
|
||||
## Step 14 — dof-manager
|
||||
|
||||
- task_id: `TASK-14`
|
||||
- status: `completed`
|
||||
- changed_files: `include/fesa/fem/dof_manager.hpp`,
|
||||
`src/fesa/fem/dof_manager.cpp`, `tests/unit/fem/dof_manager_test.cpp`,
|
||||
`src/fesa/CMakeLists.txt`, `tests/CMakeLists.txt`,
|
||||
`docs/implementation-plans/linear-static-3d-euler-beam-implementation-report.md`,
|
||||
`phases/linear-static-3d-euler-beam/index.json`,
|
||||
`.superpowers/sdd/linear-static-3d-euler-beam/task-14-report.md`
|
||||
- requirement_ids: `FESA-REQ-LS3DEB-003`, `FESA-REQ-LS3DEB-007`,
|
||||
`FESA-REQ-LS3DEB-011`, `FESA-REQ-LS3DEB-022`,
|
||||
`FESA-REQ-LS3DEB-034`
|
||||
- test_ids: `T14-DOF-001`, `T14-DOF-002`, `T14-DOF-003`,
|
||||
`T14-DOF-004`
|
||||
|
||||
| stage | exact command | exit_code | expected_or_observed_result | evidence_tail |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| RED-build | `cmake --build .harness/build --config Debug --target fesa_tests` | 1 | Exactly four planned tests are registered before production and fail for the missing DofManager API | MSVC C1083 reported missing `fesa/fem/dof_manager.hpp` from `dof_manager_test.cpp` after successful CMake regeneration |
|
||||
| RED-test | `ctest --test-dir .harness/build -C Debug -R DofManager --output-on-failure` | 0 | No focused test is runnable because the test executable cannot rebuild | CTest reported `No tests were found` after the implementation-owned compile RED |
|
||||
| GREEN-build | `cmake --build .harness/build --config Debug --target fesa_tests` | 0 | Minimal DofManager, its four tests, solver library, and unit executable compile and link | `dof_manager.cpp`, `dof_manager_test.cpp`, `fesa_solver.lib`, and `fesa_unit_tests.exe` built without a FESA warning under `/W4 /WX` |
|
||||
| GREEN-test | `ctest --test-dir .harness/build -C Debug -R DofManager --output-on-failure` | 0 | Numbering, constraints, scatter/pattern, and mapping-owned round-trip pass | 4/4 exact `DofManager` tests passed |
|
||||
| VERIFY-configure | `cmake -S . -B .harness/build -A x64 -DFESA_GTEST_SOURCE_DIR=C:/git/googletest "-DMKL_DIR=C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/lib/cmake/mkl" "-DTBB_DIR=C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/lib/cmake/tbb" "-DHDF5_DIR=C:/Program Files/HDF_Group/HDF5/2.1.1/cmake"` | 0 | Approved explicit-dependency MSVC x64 build tree generates | Windows SDK and oneMKL 2026.1 resolved; configure and generate completed |
|
||||
| VERIFY-build | `cmake --build .harness/build --config Debug` | 0 | Full Debug build passes without a new FESA warning | `fesa_solver.lib` and `fesa_unit_tests.exe` built under `/W4 /WX` |
|
||||
| VERIFY-targeted | `ctest --test-dir .harness/build -C Debug -R DofManager --output-on-failure` | 0 | Focused Step 14 suite remains green | 4/4 exact `DofManager` tests passed |
|
||||
| VERIFY-discovery | `ctest --test-dir .harness/build -C Debug --show-only=json-v1` | 0 | CTest discovers the accumulated suite and all four exact DofManager names | 26 tests discovered, including 4 `DofManager` tests, with feature/unit labels |
|
||||
| VERIFY-full | `ctest --test-dir .harness/build -C Debug --output-on-failure` | 0 | Full accumulated C++ suite has zero failures | 26/26 tests passed |
|
||||
| VERIFY-contract-scans | Backend public-header, upward-FEM dependency, model/analysis equation-state, out-of-scope feature, unledgered API, exact-test-count, and CMake-registration scans using fail-on-match `rg` wrappers | 0 | DofManager remains the sole equation/scatter/pattern owner and implements only the exact public ledger | backend leaks 0; upward dependencies 0; model/analysis equation state 0; penalty/MPC/RBE/numeric sparse storage 0; unledgered APIs 0; tests 4; registrations 1/1 |
|
||||
| VERIFY-diff | `git diff --check` plus trailing-whitespace scan over the three new files | 0 | Tracked and untracked Step 14 files have no whitespace errors | Diff check exit 0; new-file trailing whitespace matches 0 |
|
||||
| VERIFY-reference | `git diff --exit-code -- reference/`; `git status --short -- reference/` | 0 | Approved legacy reference artifacts remain read-only and unchanged | Reference diff exit 0 and reference status empty |
|
||||
|
||||
- contract_checks: full DOFs follow stable node index and exact component order
|
||||
`[UX,UY,UZ,URX,URY,URZ]`; free equations and constrained DOFs are ascending
|
||||
full-index mappings. Case-insensitive node-set and direct source-label targets
|
||||
expand deterministically; equal overlap is retained once, while different
|
||||
values return `conflicting-boundary-condition` at the conflicting row's
|
||||
source location. `prescribedValues()` has the same size/order as
|
||||
`constrainedDofs()` and preserves zero and nonzero values.
|
||||
- contract_checks: each active B33 definition has one 12-entry scatter in
|
||||
endpoint/component order. The full-space CSR pattern has 19 row offsets and
|
||||
252 sorted-unique structural columns for the two-element chain fixture.
|
||||
Stable free/constrained maps reconstruct the full vector without adding an
|
||||
API absent from the exact ledger. Node and element records remain unchanged
|
||||
and contain no equation IDs; no penalty, MPC, RBE, or sparse numeric storage
|
||||
was added.
|
||||
- generated_evidence: `.harness/build/src/fesa/Debug/fesa_solver.lib`,
|
||||
`.harness/build/tests/Debug/fesa_unit_tests.exe`,
|
||||
`.harness/build/step14-ctest-discovery.json`
|
||||
- reference_diff: unchanged; `git diff --exit-code -- reference/` exit 0
|
||||
- handoff: backend-free `DofComponent`, `SparsePattern`, and the exact
|
||||
`DofManager` ledger API provide deterministic full/free/constrained maps,
|
||||
prescribed `dc`, active-element scatter, and full structural CSR pattern to
|
||||
Step 15 and later assembly/constraint tasks.
|
||||
|
||||
Reference in New Issue
Block a user