Doctor plugin checks: implement health check classes and documentation

Implement remediation-aware health checks across all Doctor plugin modules
(Agent, Attestor, Auth, BinaryAnalysis, Compliance, Crypto, Environment,
EvidenceLocker, Notify, Observability, Operations, Policy, Postgres, Release,
Scanner, Storage, Vex) and their backing library counterparts (AI, Attestation,
Authority, Core, Cryptography, Database, Docker, Integration, Notify,
Observability, Security, ServiceGraph, Sources, Verification).

Each check now emits structured remediation metadata (severity, category,
runbook links, and fix suggestions) consumed by the Doctor dashboard
remediation panel.

Also adds:
- docs/doctor/articles/ knowledge base for check explanations
- Advisory AI search seed and allowlist updates for doctor content
- Sprint plan for doctor checks documentation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
master
2026-03-27 12:28:00 +02:00
parent fbd24e71de
commit c58a236d70
326 changed files with 18500 additions and 463 deletions

View File

@@ -155,7 +155,8 @@ public sealed class ClaudeProviderCheck : IDoctorCheck
.WithCauses(issues.ToArray())
.WithRemediation(r => r
.AddManualStep(1, "Verify API key", "Check ANTHROPIC_API_KEY is valid")
.AddManualStep(2, "Check quotas", "Verify API usage limits on console.anthropic.com"))
.AddManualStep(2, "Check quotas", "Verify API usage limits on console.anthropic.com")
.WithRunbookUrl(""))
.WithVerification("stella doctor --check check.ai.provider.claude")
.Build();
}
@@ -171,7 +172,8 @@ public sealed class ClaudeProviderCheck : IDoctorCheck
.WithCauses("Network connectivity issue or invalid endpoint")
.WithRemediation(r => r
.AddManualStep(1, "Check network", "Verify network connectivity to api.anthropic.com")
.AddManualStep(2, "Check proxy", "Ensure proxy settings are configured if required"))
.AddManualStep(2, "Check proxy", "Ensure proxy settings are configured if required")
.WithRunbookUrl(""))
.WithVerification("stella doctor --check check.ai.provider.claude")
.Build();
}

View File

@@ -143,7 +143,8 @@ public sealed class GeminiProviderCheck : IDoctorCheck
.WithRemediation(r => r
.AddManualStep(1, "Verify API key", "Check GEMINI_API_KEY or GOOGLE_API_KEY is valid")
.AddManualStep(2, "Enable API", "Ensure Generative Language API is enabled in Google Cloud Console")
.AddManualStep(3, "Check quotas", "Verify API usage limits in Google Cloud Console"))
.AddManualStep(3, "Check quotas", "Verify API usage limits in Google Cloud Console")
.WithRunbookUrl(""))
.WithVerification("stella doctor --check check.ai.provider.gemini")
.Build();
}
@@ -159,7 +160,8 @@ public sealed class GeminiProviderCheck : IDoctorCheck
.WithCauses("Network connectivity issue or invalid endpoint")
.WithRemediation(r => r
.AddManualStep(1, "Check network", "Verify network connectivity to generativelanguage.googleapis.com")
.AddManualStep(2, "Check proxy", "Ensure proxy settings are configured if required"))
.AddManualStep(2, "Check proxy", "Ensure proxy settings are configured if required")
.WithRunbookUrl(""))
.WithVerification("stella doctor --check check.ai.provider.gemini")
.Build();
}

View File

@@ -143,7 +143,8 @@ public sealed class LlmProviderConfigurationCheck : IDoctorCheck
.WithCauses(issues.ToArray())
.WithRemediation(r => r
.AddManualStep(1, "Set API key", "Configure API key for the default provider")
.AddManualStep(2, "Verify provider", "Ensure default provider matches a configured one"))
.AddManualStep(2, "Verify provider", "Ensure default provider matches a configured one")
.WithRunbookUrl(""))
.WithVerification("stella doctor --check check.ai.llm.config")
.Build());
}

View File

@@ -142,7 +142,8 @@ public sealed class LocalInferenceCheck : IDoctorCheck
.WithCauses(issues.ToArray())
.WithRemediation(r => r
.AddManualStep(1, "Load model", "Ensure a model is loaded in the server")
.AddManualStep(2, "Check model path", "Verify the model file exists at configured path"))
.AddManualStep(2, "Check model path", "Verify the model file exists at configured path")
.WithRunbookUrl(""))
.WithVerification("stella doctor --check check.ai.provider.local")
.Build();
}

View File

@@ -84,7 +84,8 @@ public sealed class OllamaProviderCheck : IDoctorCheck
.WithCauses("Ollama server is not running or endpoint is incorrect")
.WithRemediation(r => r
.AddManualStep(1, "Start Ollama", "Run: ollama serve")
.AddManualStep(2, "Check endpoint", $"Verify Ollama is running at {endpoint}"))
.AddManualStep(2, "Check endpoint", $"Verify Ollama is running at {endpoint}")
.WithRunbookUrl(""))
.WithVerification("stella doctor --check check.ai.provider.ollama")
.Build();
}
@@ -160,7 +161,8 @@ public sealed class OllamaProviderCheck : IDoctorCheck
.WithCauses(issues.ToArray())
.WithRemediation(r => r
.AddManualStep(1, "Pull model", $"Run: ollama pull {model}")
.AddManualStep(2, "List models", "Run: ollama list"))
.AddManualStep(2, "List models", "Run: ollama list")
.WithRunbookUrl(""))
.WithVerification("stella doctor --check check.ai.provider.ollama")
.Build();
}

View File

@@ -139,7 +139,8 @@ public sealed class OpenAiProviderCheck : IDoctorCheck
.WithCauses(issues.ToArray())
.WithRemediation(r => r
.AddManualStep(1, "Verify API key", "Check OPENAI_API_KEY is valid")
.AddManualStep(2, "Check quotas", "Verify API usage limits on platform.openai.com"))
.AddManualStep(2, "Check quotas", "Verify API usage limits on platform.openai.com")
.WithRunbookUrl(""))
.WithVerification("stella doctor --check check.ai.provider.openai")
.Build();
}
@@ -155,7 +156,8 @@ public sealed class OpenAiProviderCheck : IDoctorCheck
.WithCauses("Network connectivity issue or invalid endpoint")
.WithRemediation(r => r
.AddManualStep(1, "Check network", "Verify network connectivity to api.openai.com")
.AddManualStep(2, "Check proxy", "Ensure proxy settings are configured if required"))
.AddManualStep(2, "Check proxy", "Ensure proxy settings are configured if required")
.WithRunbookUrl(""))
.WithVerification("stella doctor --check check.ai.provider.openai")
.Build();
}