#pragma once #include "whetstone_rsa/probe_registry.h" namespace whetstone::rsa { class DiagnosisEngine { public: explicit DiagnosisEngine(ProbeRegistry probe_registry); [[nodiscard]] GateDiagnosis diagnose(const GateDefinition& gate_definition, const GateEvidence& evidence, const PolicyContext& policy_context) const; private: [[nodiscard]] static PolicyRecommendation recommend_policy(const GateDefinition& gate_definition, const GateEvidence& evidence, const PolicyContext& policy_context, FailureClass primary_failure_class, const std::vector& interventions); ProbeRegistry probe_registry_; }; } // namespace whetstone::rsa