using Microsoft.Extensions.Configuration;
using StellaOps.Doctor.Plugins;
using StellaOps.Doctor.Plugins.Verification.Checks;
using StellaOps.Doctor.Plugins.Verification.Configuration;
namespace StellaOps.Doctor.Plugins.Verification;
///
/// Artifact verification pipeline diagnostic plugin providing SBOM, VEX, signature, and policy health checks.
///
public sealed class VerificationPlugin : IDoctorPlugin
{
///
public string PluginId => "stellaops.doctor.verification";
///
public string DisplayName => "Artifact Verification Pipeline";
///
public DoctorCategory Category => DoctorCategory.Security;
///
public Version Version => new(1, 0, 0);
///
public Version MinEngineVersion => new(1, 0, 0);
///
public bool IsAvailable(IServiceProvider services)
{
// Plugin is available if verification configuration exists
return true; // Checks will skip if not configured
}
///
public IReadOnlyList GetChecks(DoctorPluginContext context)
{
return
[
new TestArtifactPullCheck(),
new SignatureVerificationCheck(),
new SbomValidationCheck(),
new VexValidationCheck(),
new PolicyEngineCheck()
];
}
///
public Task InitializeAsync(DoctorPluginContext context, CancellationToken ct)
{
return Task.CompletedTask;
}
internal static VerificationPluginOptions GetOptions(DoctorPluginContext context)
{
var options = new VerificationPluginOptions();
context.PluginConfig.Bind(options);
return options;
}
}