#ifndef FESA_ANALYSIS_ANALYSIS_H_ #define FESA_ANALYSIS_ANALYSIS_H_ #include #include "fesa/core/status.h" namespace fesa { /// @brief Carries input and authoritative output paths for one analysis run. struct AnalysisRequest { std::filesystem::path input_path; std::filesystem::path output_path; }; /// @brief Defines the minimal execution contract shared by analysis procedures. class Analysis { public: virtual ~Analysis() = default; /// @brief Executes one procedure for the supplied input and output paths. /// @param request Input and authoritative output paths for this run. /// @return The concrete procedure result without changing its failure /// category. virtual Status Run(const AnalysisRequest& request) = 0; }; } // namespace fesa #endif // FESA_ANALYSIS_ANALYSIS_H_