using OTSSignsOrchestrator.Server.Data.Entities;
namespace OTSSignsOrchestrator.Server.Health;
///
/// Result of a single health check execution.
///
public record HealthCheckResult(HealthStatus Status, string Message, string? Detail = null);
///
/// Contract for an individual health check that runs against a specific .
///
public interface IHealthCheck
{
/// Human-readable name written to .
string CheckName { get; }
///
/// When true the engine will automatically call
/// if the check returns .
///
bool AutoRemediate { get; }
/// Execute the check for .
Task RunAsync(Instance instance, CancellationToken ct);
///
/// Attempt automatic remediation. Return true if the issue was fixed.
/// The default implementation does nothing and returns false.
///
Task RemediateAsync(Instance instance, CancellationToken ct) => Task.FromResult(false);
}