feat(linear-static-3d-euler-beam): step 15 - analysis-state
This commit is contained in:
@@ -459,3 +459,57 @@
|
||||
`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.
|
||||
|
||||
## Step 15 — analysis-state
|
||||
|
||||
- task_id: `TASK-15`
|
||||
- status: `completed`
|
||||
- changed_files: `include/fesa/results/result_records.hpp`,
|
||||
`include/fesa/analysis/analysis_state.hpp`,
|
||||
`src/fesa/analysis/analysis_state.cpp`,
|
||||
`tests/unit/results/result_records_test.cpp`,
|
||||
`tests/unit/analysis/analysis_state_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-15-report.md`
|
||||
- requirement_ids: `FESA-REQ-LS3DEB-003`, `FESA-REQ-LS3DEB-023`,
|
||||
`FESA-REQ-LS3DEB-031`, `FESA-REQ-LS3DEB-034`
|
||||
- test_ids: `T15-STATE-001`, `T15-STATE-002`, `T15-STATE-003`
|
||||
|
||||
| stage | exact command | exit_code | expected_or_observed_result | evidence_tail |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| RED-build | `cmake --build .harness/build --config Debug --target fesa_tests` | 1 | Exactly three planned tests were registered before production and the result-record/state API was absent | MSVC C1083 reported missing `fesa/analysis/analysis_state.hpp` from both new test translation units after successful CMake regeneration |
|
||||
| RED-test | `ctest --test-dir .harness/build -C Debug -R AnalysisState --output-on-failure` | 0 | No focused test was runnable because the unit test executable could not 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 records/state implementation and all three tests compile and link | `analysis_state.cpp`, both test files, `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 AnalysisState --output-on-failure` | 0 | Allocation, identity/order, and copy/move ownership tests pass | 3/3 exact `AnalysisState` 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 AnalysisState --output-on-failure` | 0 | Focused Step 15 suite remains green | 3/3 exact `AnalysisState` tests passed |
|
||||
| VERIFY-discovery | `ctest --test-dir .harness/build -C Debug --show-only=json-v1` | 0 | CTest discovers the accumulated suite and all three exact AnalysisState names | 29 tests discovered with feature/unit labels |
|
||||
| VERIFY-full | `ctest --test-dir .harness/build -C Debug --output-on-failure` | 0 | Full accumulated C++ suite has zero failures | 29/29 tests passed |
|
||||
| VERIFY-contract-scans | Backend public-header, forbidden V0 state/API, Domain/AnalysisModel ownership, result-record upward dependency, exact-test-count, and CMake-registration scans using fail-on-match `rg` wrappers | 0 | State and row records implement only the exact backend-free V0 ledger | backend leaks 0; forbidden state/API 0; Domain/AnalysisModel ownership 0; result upward dependencies 0; tests 3; registrations 1/1/1 |
|
||||
| VERIFY-diff | `git diff --check` plus trailing-whitespace scan over the five new files | 0 | Tracked and untracked Step 15 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: displacement, external force, internal force, residual, and
|
||||
reaction are five independently owned `Vector` values sized to
|
||||
`DofManager::fullDofCount()` and zero-initialized. Reaction remains in full
|
||||
DOF index space even when only a subset is constrained, leaving free
|
||||
components available for residual sanity checks. Mutable and const accessors
|
||||
return the same owned vector storage.
|
||||
- contract_checks: `StepFrameIdentity`, `EndpointResultRow`, `GaussResultRow`,
|
||||
and `StressS11Row` match the public ledger field order. Owned endpoint,
|
||||
Gauss, and stress vectors preserve append order and expose stable mutable and
|
||||
const collections. Default copy/move operations follow the ledger: copies
|
||||
deep-own vector/row storage, and moved-to state retains identity and values
|
||||
without aliasing another live state.
|
||||
- contract_checks: no velocity, acceleration, temperature, iteration history,
|
||||
nonlinear element state, Domain copy/reference, equation numbering, HDF5,
|
||||
MKL, or oneTBB API/storage was added.
|
||||
- generated_evidence: `.harness/build/src/fesa/Debug/fesa_solver.lib`,
|
||||
`.harness/build/tests/Debug/fesa_unit_tests.exe`
|
||||
- reference_diff: unchanged; `git diff --exit-code -- reference/` exit 0
|
||||
- handoff: the exact backend-free result records and `AnalysisState` ledger API
|
||||
provide full-space mutable solution vectors, step/frame identity, and stable
|
||||
recovery-row collections to Step 16 and later result recovery/output tasks.
|
||||
|
||||
Reference in New Issue
Block a user