Files
FESADev/docs/cpp-object-oriented-modular-refactoring/verification.md
T
2026-10-04 03:32:59 +09:00

28 KiB

C++ 모듈화 구현·검증 결과

2026-08의 실제 구현·환경·검증 결과다. 현재 ownership은 ARCHITECTURE, 현재 naming/format 규칙은 CODINGSTYLE가 원본이다.

C++ Object-Oriented Modular Refactoring Implementation Report

Metadata

  • feature_id: cpp-object-oriented-modular-refactoring
  • final_step: 24 final-quality-reference-gate
  • source_plan: docs/cpp-object-oriented-modular-refactoring/README.md
  • phase_index: phases/cpp-object-oriented-modular-refactoring/index.json
  • evidence_date: 2026-08-16
  • head: f84ebb541f4717ab8300cf0d80497e1277d3bb48
  • reference_baseline: 1e5758f3e482fae4c3d58cac680abe0aac02e549
  • classification: pass-for-physics-evaluation

Prior Step RED/GREEN/VERIFY evidence

The final gate reviewed the Executor-recorded Step 0-23 summaries. Each prior step is already completed in the phase index and retains its Executor-owned timestamps.

Step Task Evidence summary
0 coding-style-agent-contract RED missing mandatory CODINGSTYLE.md; GREEN/VERIFY pytest 13/13, clean-env pytest 20/20, VS18 Debug build and CTest 144/144.
1 cpp-style-tooling RED missing style/Doxygen config; GREEN/VERIFY policy pytest, clean-env pytest 21/21, LLVM 22.1.8 config checks, VS18 Debug build, CTest 144/144.
2 architecture-boundaries Documentation-only architecture/ADR update; contract grep, diff check, MSVC Debug build, CTest discovery and 144/144 passed.
3 foundation-google-style RED missing .h header; GREEN/VERIFY focused build/CTest 22/22, format, full build, CTest 144/144.
4 model-element-google-style RED missing model .h; GREEN/VERIFY focused build/CTest 37/37, format 14 files, full build, CTest 144/144.
5 solver-workflow-google-style RED missing analysis model .h; GREEN/VERIFY focused build/CTest 57/57, format 31 files, full build, CTest 144/144.
6 io-application-google-style RED missing input reader .h; GREEN/VERIFY focused I/O/HDF5/app/reference CTest 36/36, format 23 files, full build, CTest 144/144.
7 vector3-value-type RED missing vector3.h; GREEN/VERIFY Vector3 tests 7/7, format/tidy, full build, CTest 151/151.
8 element-geometry-vector3 RED typed Vector3 seam compile failure; GREEN/VERIFY focused CTest 44/44, duplicate scan 0, format, full build, CTest 155/155.
9 result-io-vector3 RED duplicate helpers; GREEN/VERIFY ResultRecovery/InpDomainMapping/HDF5 33/33, duplicate scan 0, format, full build, CTest 156/156.
10 dense-blas-adapter RED missing dense BLAS internal header; GREEN/VERIFY focused CTest 4/4, public vendor scan 0, format, full build, CTest 158/158.
11 source-target-resolver RED missing ASCII/source-target modules and plus-label failure; GREEN/VERIFY targeted/focused tests 44/44, helper scan, format, full build, CTest 164/164.
12 material-property-hierarchy RED missing material/property bases; GREEN/VERIFY focused CTest 11/11, format, full build, CTest 170/170.
13 element-definition-domain RED missing element definition/ownership APIs; GREEN/VERIFY focused CTest 20/20, format, full build, CTest 172/172.
14 runtime-element-factory RED missing runtime element API; GREEN/VERIFY focused CTest 35/35, dynamic_cast scan 0, format, full build, CTest 176/176.
15 generic-dof-manager RED fake element/layout seam failures; GREEN/VERIFY focused CTest 21/21, concrete/helper branches 0, format, full build, CTest 178/178.
16 generic-sparse-assembler RED fake runtime contribution seam missing; GREEN/VERIFY SparseAssembly 9/9, concrete branch count 0, format, full build, CTest 179/179.
17 generic-result-recovery RED missing generic recovery seam; GREEN/VERIFY focused CTest 53/53, concrete branch count 0, format, full build, CTest 182/182.
18 load-hierarchy RED missing Load APIs; GREEN/VERIFY focused CTest 29/29, format, full build, CTest 186/186.
19 boundary-condition-policy RED missing BoundaryCondition APIs; GREEN/VERIFY focused CTest 29/29, format, full build, discovery/full CTest 191/191.
20 analysis-hierarchy RED missing analysis.h; GREEN/VERIFY focused CTest 12/12, scans, full build, discovery/full CTest 193/193.
21 domain-mapper-modules RED missing private mapper seam; GREEN/VERIFY focused CTest 17/17, format, full build, CTest 197/197.
22 result-recovery-modules RED missing recovery component seam; GREEN/VERIFY focused CTest 28/28, format, full build, CTest 203/203.
23 hdf5-writer-modules RED missing HDF5 component seam; GREEN/VERIFY focused schema/atomicity CTest 13/13, scans, format, full build, CTest 206/206.

Step 24 is a final verification gate and did not manufacture a new RED condition; it reused the approved B33 and MITC4 reference comparisons after style and full build/test verification.

Step 24 command evidence

Stage Command Exit Duration Result
Environment diagnostic uv run --with pytest python -m pytest -v -rs with inherited FESA_HARNESS_CODEX_SANDBOX=danger-full-access 1 2.700s Environment-specific failure: default-sandbox test observed the explicit override.
Policy verify Remove FESA_HARNESS_CODEX_SANDBOX in child process; uv run --with pytest python -m pytest -v -rs 0 0.751s 21/21 passed.
Tool verify & "C:/Program Files/LLVM/bin/clang-format.exe" --version 0 0.026s clang-format 22.1.8.
Tool verify & "C:/Program Files/LLVM/bin/clang-tidy.exe" --version 0 0.030s clang-tidy 22.1.8.
Tool verify & "C:/Program Files/LLVM/bin/clang-tidy.exe" --verify-config 0 0.028s No config errors.
Style RED clang-format --dry-run --Werror over 163 files 1 0.892s Four whitespace/line-ending format findings.
Style normalization clang-format -i on the four reported files 0 tool wall 0.5s No tracked content diff after formatting normalization.
Style verify clang-format --dry-run --Werror over 163 files 0 0.888s Passed.
Public-header policy clang-tidy --config-file=.clang-tidy <header> -- -x c++ -std=c++17 -Iinclude over 46 public headers 0 41.822s Passed. The 47 naming diagnostics were 45 required trailing-underscore header guards and two const parameter classifications; there were zero other naming diagnostics.
Doxygen/header-guard policy Read-only scan of production headers and test Doxygen tags 0 0.302s 63/63 production headers had guards and Doxygen contracts; 0 test files contained imposed Doxygen tags.
Header extension .hpp scan under include src tests 0 0.162s 0 legacy .hpp files.
Dependency precheck Test declared GoogleTest/MKL/TBB/HDF5 paths 0 0.165s All paths found.
Fresh configure cmake --fresh -S . -B .harness/build -G "Visual Studio 18 2026" -A x64 ... 0 6.204s MSVC 19.51, VS18, build files generated.
Build cmake --build .harness/build --config Debug --target fesa_tests 0 9.639s Debug aggregate test target built.
Discovery ctest --test-dir .harness/build -C Debug --show-only=json-v1 0 0.235s 206 tests discovered.
Full test ctest --test-dir .harness/build -C Debug --output-on-failure 0 9.908s 206/206 passed.
Artifact check Exact declared artifact existence, SHA-256, line/row inventory 0 0.218s Six declared files present.
Artifact no-change git diff --exit-code 1e5758f -- reference 0 0.165s No reference diff.
Artifact schema Read-only type/header/key/finite precheck 0 0.266s B33/S4 type present; CSV headers/keys/finite checks passed.
Compare `ctest --test-dir .harness/build -C Debug -R "B33ReferenceComparison Mitc4S4Reference" --output-on-failure` 0 1.260s
Generated result check Required results.h5 existence and hashes 0 0.218s B33 and MITC4 comparison results.h5 present.
Post no-change git diff --exit-code 1e5758f -- reference 0 0.179s No reference diff after compare.
Whitespace check git diff --check 0 0.199s No whitespace errors.

Requirement traceability

Requirement Final-gate evidence
R-PRESERVE-001 Full CTest 206/206, B33 comparison 176/176 rows passed, MITC4 S4 comparison 147/147 blocking U rows passed; no tolerance/comparator/reference diff.
R-STYLE-001 .h header scan passed with zero .hpp; clang-format passed over 163 files; clang-tidy selected public-header check passed over 46 headers.
R-DOC-001 Policy pytest passed; 63/63 production headers had header guards and Doxygen contracts, while 0 test files contained imposed Doxygen tags. Doxygen generation was intentionally not run.
R-DUP-001 Step 7-9 summaries record the shared Vector3, element/result/I/O preservation tests, and duplicate-definition scans with zero remaining local definition families; full CTest 206/206 passed.
R-DUP-002 Steps 10, 11, and 15 record the single dense-BLAS adapter, shared ASCII/source resolver, and DofManager-owned invariant logic with focused tests and helper/branch scans; full CTest 206/206 passed.
R-MODEL-001 Steps 12-13 record polymorphic Material/ElementProperty/ElementDefinition ownership and stable Domain views; focused ownership tests and full CTest passed.
R-ELEMENT-001 Step 14 records semantic/runtime separation, fail-closed factory compatibility checks, virtual destruction, owner-bounded views, and zero dynamic_cast uses; full CTest passed.
R-PIPELINE-001 Steps 15-17 record generic DofManager, SparseAssembler, and ResultRecovery seams with fake runtime elements, deterministic/atomic tests, and zero concrete B33/MITC4 consumer branches; full CTest passed.
R-LOAD-001 Step 18 records Domain-owned Load objects, ordered contributions, validation-before-candidate accumulation, and focused LoadAssembler tests; full CTest passed.
R-BC-001 Step 19 records BoundaryCondition definitions and stable essential-constraint partition/reconstruction, including nonzero and 0 x 0 Kff cases; full CTest passed.
R-ANALYSIS-001 Step 20 records minimal base Run() dispatch and procedure-owned lifecycle tests, including factorize-before-load, exactly-one factorization, all-constrained solve, and writer suppression on recovery failure; full CTest passed.
R-MODULE-001 Steps 21-23 record the approved Domain-mapper, result-recovery, and HDF5 private component splits with facade, diagnostic, identity, rollback, self-check, and atomic-finalization tests; full CTest passed.
R-AGENT-001 Step 0 records the mandatory docs/CODINGSTYLE.md implementation-agent contract; the final clean-environment policy suite passed 21/21.
R-SCOPE-001 No production behavior or future-feature changes in Step 24; reference tree diff against 1e5758f is empty.

All acceptance traceability rows from the approved implementation plan are listed above. Their owning task rows T00..T23 retain the recorded RED/GREEN/VERIFY summaries, and T24 supplies the final style, build, CTest, artifact, HDF5, comparison, and no-change evidence.

Handoff

Implementation gate verdict: pass-for-physics-evaluation.

Open issues: none blocking. The inherited FESA_HARNESS_CODEX_SANDBOX override is an environment note only; the clean child-process policy command passed without code changes.

C++ Object-Oriented Modular Refactoring Build/Test Report

Metadata

  • feature_id: cpp-object-oriented-modular-refactoring
  • report_status: passed
  • date: 2026-08-16
  • branch: feat-cpp-object-oriented-modular-refactoring
  • head: f84ebb541f4717ab8300cf0d80497e1277d3bb48
  • .harness/config.json: absent; Harness/CMake defaults and Step 24 explicit commands used
  • build generator: Visual Studio 18 2026
  • platform/configuration: x64 / Debug
  • compiler observed by configure: MSVC 19.51.36252.0
  • inherited environment note: FESA_HARNESS_CODEX_SANDBOX=danger-full-access

Execution environment

Required dependency paths all existed:

Path Status
C:/git/googletest found
C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/lib/cmake/mkl found
C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/lib/cmake/tbb found
C:/Program Files/HDF_Group/HDF5/2.1.1/cmake found

LLVM tools:

  • clang-format version 22.1.8
  • clang-tidy LLVM version 22.1.8
  • clang-tidy --verify-config: No config errors detected.

Command log summary

Command Exit Duration Output tail / result
uv run --with pytest python -m pytest -v -rs 1 2.700s 20 passed, 1 failed: test_invoke_codex_uses_utf8_for_unicode_prompt saw inherited sandbox override danger-full-access instead of default workspace-write. Classified as environment-specific diagnostic, not product failure.
Clean child process without FESA_HARNESS_CODEX_SANDBOX; uv run --with pytest python -m pytest -v -rs 0 0.751s 21 passed in 0.13s.
clang-format --dry-run --Werror over @(rg --files include src tests -g "*.h" -g "*.cpp") 1 0.892s Reported four formatting findings in src/fesa/math/sparse_matrix.cpp, tests/unit/math/sparse_matrix_test.cpp, tests/unit/solvers/linear/linear_solver_test.cpp, tests/unit/solvers/linear/mkl_pardiso_solver_test.cpp.
clang-format -i on the four reported files 0 tool wall 0.5s Normalized formatting/stat state; git diff --raw and git diff --numstat remained empty for those files.
clang-format --dry-run --Werror over 163 C++ files 0 0.888s CPP_FILE_COUNT: 163; no violations.
clang-tidy --config-file=.clang-tidy <publicHeader> -- -x c++ -std=c++17 -Iinclude 0 41.822s PUBLIC_HEADER_COUNT: 46; 45 diagnostics were required trailing-underscore header guards and two were const parameter classifications; zero other naming diagnostics.
Read-only production Doxygen/header-guard and test-tag scan 0 0.302s 63 production headers, 0 missing guards, 0 missing Doxygen-contract headers, and 0 test files with imposed Doxygen tags.
.hpp scan under include src tests 0 0.162s LEGACY_HPP_COUNT: 0; rg returned 1 for empty result but count-based AC passed.
Required dependency path check 0 0.165s All four declared dependency paths found.
cmake --fresh -S . -B .harness/build -G "Visual Studio 18 2026" -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 6.204s Configure/generate complete; MKL 2026.1.0 found; build files written to .harness/build.
cmake --build .harness/build --config Debug --target fesa_tests 0 9.639s fesa_solver.lib, fesa_integration_tests.exe, fesa_reference_tests.exe, and fesa_unit_tests.exe built.
ctest --test-dir .harness/build -C Debug --show-only=json-v1 0 0.235s DISCOVERED_TEST_COUNT: 206.
ctest --test-dir .harness/build -C Debug --output-on-failure 0 9.908s 100% tests passed out of 206; labels: unit 182, integration 11, reference 13.
`ctest --test-dir .harness/build -C Debug -R "B33ReferenceComparison Mitc4S4Reference" --output-on-failure` 0 1.260s
git diff --check 0 0.199s <no whitespace errors>.

Validation results

Validation Result
Harness Python/policy tests Pass in clean child process: 21/21.
LLVM tool availability/config Pass.
clang-format repository dry-run Pass: 163 files.
clang-tidy selected public-header check Pass: 46 headers, exit 0, zero naming diagnostics outside the two documented contract exceptions.
Production Doxygen/header-guard policy Pass: 63/63 headers; tests contain no imposed Doxygen boilerplate tags.
Header extension policy Pass: 0 .hpp under include, src, tests.
Fresh MSVC x64 Debug configure Pass.
MSVC x64 Debug build Pass: fesa_tests.
CTest discovery Pass: 206 tests.
Full CTest Pass: 206/206.
Approved reference suites Pass: 3/3.
Reference tree no-change Pass before and after compare: git diff --exit-code 1e5758f -- reference exit 0.

Failure classification and failed test inventory

Blocking classification: none.

Nonblocking diagnostics:

  • environment: inherited FESA_HARNESS_CODEX_SANDBOX=danger-full-access caused the raw pytest command to fail one default-sandbox test. The same pytest command passed 21/21 in a child process with only that override removed.
  • style: initial clang-format dry-run reported four whitespace/line-ending findings. Formatting normalization introduced no tracked source-content diff, and the rerun passed.
  • static-policy: clang-tidy reported header-guard trailing underscores and two const parameters because its generic macro/constant categories differ from the higher-priority FESA guard and parameter conventions. It reported no other naming diagnostics, and the required command exited 0.

Failed blocking tests after clean verification: none.

Handoff recommendation

Proceed to Physics Evaluation Agent. Build/test evidence is sufficient for the final Implementation-owned gate; no compile, link, test, reference-comparison, or environment blocker remains.

Open issues

None blocking.

C++ Object-Oriented Modular Refactoring Reference Comparison Report

Metadata

  • feature_id: cpp-object-oriented-modular-refactoring
  • report_status: passed
  • date: 2026-08-16
  • reference_baseline: 1e5758f3e482fae4c3d58cac680abe0aac02e549
  • command_order: ARTIFACT CHECK -> COMPARE -> CLASSIFY -> REPORT
  • authoritative FESA output: generated results.h5
  • reference artifacts: read-only existing files under reference/

ARTIFACT CHECK

Exact declared artifact inventory:

Artifact Bytes Lines Data rows SHA-256
reference/cantilever beam/cantilever beam.inp 2330 106 N/A E406EA9560321B791DBDB829E03BD24593B9875E0195D35B86BD931EDA122EF3
reference/cantilever beam/cantilever beam displacements.csv 1790 12 11 7B3312FBC8848E81D9A0FD4FF2B56BC1954636A2C14B5C1CBB269CB9477D3C31
reference/cantilever beam/cantilever beam elemental forces.csv 1396 12 11 E5E77FEC0FA9482AE018DBF296E74D396335C7C711BD2E9AA2315247A34290BA
reference/cantilever beam/cantilever beam reactions.csv 1780 12 11 BF30CDB0CD50106885DE14D63492737736C587426EBD787DE4F7EE6AA86DAA23
reference/shell/shell.inp 4770 164 N/A 4005851E1AB22FD3A16AC17A8D5DA3E051233F69F37419079F3553AD134ECFCF
reference/shell/shell displacements.csv 5592 50 49 C81D94E0B4A849F87AA0F79C83A79B94D5661AC79E44ED826919AB432C87746B

Read-only schema precheck:

Check Result
B33 input contains TYPE=B33 Pass
MITC4 S4 input contains TYPE=S4 Pass
B33 displacement CSV header/key/finite precheck Pass: 11 rows, 11 unique keys, 0 duplicate keys, 0 nonfinite values
B33 reaction CSV header/key/finite precheck Pass: 11 rows, 11 unique keys, 0 duplicate keys, 0 nonfinite values
B33 elemental-force CSV header/key/finite precheck Pass: 11 rows, 11 unique keys, 0 duplicate keys, 0 nonfinite values
MITC4 S4 displacement CSV header/key/finite precheck Pass: 49 rows, 49 unique keys, 0 duplicate keys, 0 nonfinite values
Reference tree diff before compare Pass: git diff --exit-code 1e5758f -- reference, exit 0

COMPARE

Command:

ctest --test-dir .harness/build -C Debug `
  -R "B33ReferenceComparison|Mitc4S4Reference" --output-on-failure

Result: exit 0 in 1.260s, 3/3 tests passed.

Generated artifacts:

Artifact Bytes SHA-256
.harness/build/reference/cantilever-beam-b33/results.h5 25336 58CD358F68D8094079E9E525C35EE88AE0575A2962D93472BF0678D78A785247
.harness/build/reference/cantilever-beam-b33/comparison.json 128118 258347AEA791D981AEA9B2BCAD85DE5344D4859ECA3692DC5E7AA01A848F8E0D
.harness/build/reference/mitc4-shell-s4-comparison/results.h5 95024 A8D2E12886E87BAA5D895B7E96278EA4B462718D13B985CA2688B505480F0195
.harness/build/reference/mitc4-shell-s4-comparison/comparison.json 94349 8E8DEA51B6F7C663BACC41FDA6103A4596DB26E02F1EAD6069D458F51E0102E6
.harness/build/reference/mitc4-shell-s4-metadata/results.h5 95024 8FD6609A2D3758365A2AC2E34692CC0EC982D8E67396BDFF03FAAF2539EF483C
.harness/build/reference/mitc4-shell-s4-metadata/comparison.json 94349 8E8DEA51B6F7C663BACC41FDA6103A4596DB26E02F1EAD6069D458F51E0102E6

The generated comparison.json files are the deterministic machine-readable per-row decision records. The summaries below preserve row counts, worst rows, precheck/tolerance decisions, and artifact hashes for audit.

HDF5-to-CSV projection and tolerance contracts

B33

  • Model: cantilever-beam-b33
  • HDF5 datasets:
    • /steps/Step-1/frames/0/nodal/displacement
    • /steps/Step-1/frames/0/nodal/reaction
    • /steps/Step-1/frames/0/element/section_resultant
  • Row identity: model, Step-1, frame 0, instance PART-1_1-1, source node label, quantity, component.
  • Components:
    • displacement UX/UY/UZ/URX/URY/URZ
    • reaction RF1/RF2/RF3/RM1/RM2/RM3
    • section resultant N/T/My/Mz
  • Tolerance: absolute_floor + 1.0e-6 * reference_scale, with reference scale from read-only Abaqus rows only; displacement/rotation floor 1.0e-9, force/moment floor 1.0e-3.
  • Pre-tolerance policy: missing, extra, duplicate, nonfinite, schema-mismatched, or identity-mismatched rows fail before tolerance.

MITC4 S4

  • Case: shell-s4
  • Source element type: S4
  • Internal formulation: FESA-MITC4
  • Integration rule: 2x2x2-gauss; mitc4-edge-midpoint-shear
  • HDF5 dataset: /steps/Step-1/frames/0/nodal/displacement
  • Row identity: case, instance, source node label, component.
  • Components: U1/U2/U3 blocking; UR1/UR2/UR3 warning-only.
  • Tolerance: fixed absolute 1.0e-5 for every U/UR row; no component scale, row denominator, zero clamp, omission, or averaging affects the decision.
  • Pre-tolerance policy: missing, extra, duplicate, nonfinite, header-mismatched, or identity-mismatched projected rows fail before tolerance.

CLASSIFY

Blocking classification: pass.

No missing, extra, duplicate, nonfinite, schema-mismatched, identity-mismatched, or tolerance-failed blocking row was reported by either generated comparison.

B33 row and metric decisions

Overall: passed=true; row decisions: 176/176 passed; failed rows: 0; nonfinite row metrics: 0; stress comparison applicable: false with N/A reason Abaqus beam stress comparison is N/A; analytical/unit and HDF5 schema tests provide stress evidence.

Physics evidence: endpoint consistency passed; free residual norm 9.356339321107032e-07.

Quantity Component Rows Reference scale Max abs error Max normalized error RMS error Norm error Worst row decision
displacement UX 11 0 0 0 0 0 node 1, FESA 0, reference 0, tol 1e-09, pass
displacement UY 11 0 0 0 0 0 node 1, FESA 0, reference 0, tol 1e-09, pass
displacement UZ 11 0.0190476272 5.33322917078971e-10 0.026602795021995 2.79095304685767e-10 9.25654406392607e-10 node 11, FESA -0.019047626666677083, reference -0.0190476272, tol 2.00476272e-08, pass
displacement URX 11 0 0 0 0 0 node 1, FESA 0, reference 0, tol 1e-09, pass
displacement URY 11 0.00285714399 1.00001394318094e-10 0.0259262798011579 5.80165854051178e-11 1.92419245406385e-10 node 9, FESA 0.002742858240001394, reference 0.00274285814, tol 3.85714399e-09, pass
displacement URZ 11 0 0 0 0 0 node 1, FESA 0, reference 0, tol 1e-09, pass
reaction RF1 11 0 0 0 0 0 node 1, FESA 0, reference 0, tol 0.001, pass
reaction RF2 11 0 0 0 0 0 node 1, FESA 0, reference 0, tol 0.001, pass
reaction RF3 11 1000000 8.19563865661621e-07 8.1874512054108e-07 3.62393833938394e-07 1.20192437351202e-06 node 1, FESA 1000000.0000008196, reference 1000000, tol 1.001, pass
reaction RM1 11 0 0 0 0 0 node 1, FESA 0, reference 0, tol 0.001, pass
reaction RM2 11 10000000 5.05149364471436e-06 5.05098854585977e-07 1.52613777609191e-06 5.06162638168429e-06 node 1, FESA -10000000.000005051, reference -10000000, tol 10.001, pass
reaction RM3 11 0 0 0 0 0 node 1, FESA 0, reference 0, tol 0.001, pass
section_resultant N 11 0 0 0 0 0 node 1, FESA 0, reference 0, tol 0.001, pass
section_resultant T 11 0 0 0 0 0 node 1, FESA 0, reference 0, tol 0.001, pass
section_resultant My 11 10000000 0.0156002428611895 0.00155986829928902 0.00470365086790684 0.0156002450736765 node 11, FESA 2.4286118949223834e-07, reference -0.0156, tol 10.001, pass
section_resultant Mz 11 0 0 0 0 0 node 1, FESA 0, reference 0, tol 0.001, pass

MITC4 S4 row and metric decisions

Overall: passed=true; rows: 294/294 within tolerance; blocking U rows: 147/147 passed; warning-only UR rows: 147/147 within tolerance; warning count: 0; vector metrics: 49.

Component Rows Blocking rows Reference scale Tolerance Max abs error Max normalized error RMS error Vector norm error Worst row decision
U1 49 49 3.11730945e-23 1e-05 3.11730945e-23 3.11730945e-18 1.13587076092006e-23 7.95109532644045e-23 node 12, FESA 0, reference 3.11730945e-23, pass
U2 49 49 3.11730945e-23 1e-05 3.11730945e-23 3.11730945e-18 1.13587076092006e-23 7.95109532644045e-23 node 11, FESA 0, reference 3.11730945e-23, pass
U3 49 49 2.37408203e-05 1e-05 1.90378534915144e-07 0.0190378534915144 4.24886125341252e-08 2.97420287738877e-07 node 2, FESA -2.3550441765084857e-05, reference -2.37408203e-05, pass
UR1 49 0 7.60725743e-06 1e-05 6.88285496274043e-08 0.00688285496274043 2.7737837921291e-08 1.94164865449037e-07 node 44, FESA 1.3985063203725957e-06, reference 1.46733487e-06, pass warning-only
UR2 49 0 7.60725743e-06 1e-05 6.8828549627399e-08 0.0068828549627399 2.77378379212909e-08 1.94164865449036e-07 node 34, FESA 1.398506320372601e-06, reference 1.46733487e-06, pass warning-only
UR3 49 0 5.27113701e-25 1e-05 5.27113701e-25 5.27113701e-20 2.12986098533393e-25 1.49090268973375e-24 node 34, FESA 0, reference -5.27113701e-25, pass warning-only

Overall worst MITC4 row: node 2, component U3, FESA -2.3550441765084857e-05, reference -2.37408203e-05, absolute error 1.903785349151439e-07, tolerance 1e-05, normalized error 0.01903785349151439, blocking pass.

Open issues

None blocking. Passing comparison is only an implementation handoff to physics evaluation; it is not release readiness or physics approval.