#ifndef FESA_RESULTS_SHELL_RESULT_RECOVERY_H_ #define FESA_RESULTS_SHELL_RESULT_RECOVERY_H_ #include "fesa/core/source_identity.h" #include "fesa/core/status.h" #include "fesa/elements/element.h" #include "results/recovery_candidate.h" namespace fesa::results_internal { /// @brief Checks physical fields in their preserved source-row order. bool IsFiniteShellRow(const ShellResultRow& row); /// @brief Validates and appends physical shell rows and energy evidence. Status ShellResultRecovery(const SourceLocation& location, const SourceEntityId& source_id, EntityIndex expected_element, const ShellElementResultRows& rows, RecoveryCandidate& candidate); } // namespace fesa::results_internal #endif // FESA_RESULTS_SHELL_RESULT_RECOVERY_H_