26 lines
1001 B
C
26 lines
1001 B
C
|
|
#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<Intervention>& interventions);
|
||
|
|
|
||
|
|
ProbeRegistry probe_registry_;
|
||
|
|
};
|
||
|
|
|
||
|
|
} // namespace whetstone::rsa
|