11 KiB
Doctor Plugins Reference
Sprint: SPRINT_20260117_025_Doctor_coverage_expansion
Task: DOC-EXP-006 - Documentation Updates
This document describes the Doctor health check plugins, their checks, and configuration options.
Plugin Overview
| Plugin | Directory | Checks | Description |
|---|---|---|---|
| Postgres | StellaOps.Doctor.Plugin.Postgres |
3 | PostgreSQL database health |
| Storage | StellaOps.Doctor.Plugin.Storage |
3 | Disk and storage health |
| Crypto | StellaOps.Doctor.Plugin.Crypto |
4 | Regional crypto compliance |
| Timestamping | StellaOps.Doctor.Plugin.Timestamping |
22 | RFC-3161 and eIDAS timestamp health |
| EvidenceLocker | StellaOps.Doctor.Plugin.EvidenceLocker |
4 | Evidence integrity checks |
| Attestor | StellaOps.Doctor.Plugin.Attestor |
3+ | Signing and verification |
| Auth | StellaOps.Doctor.Plugin.Auth |
3+ | Authentication health |
| Policy | StellaOps.Doctor.Plugin.Policy |
3+ | Policy engine health |
| Vex | StellaOps.Doctor.Plugin.Vex |
3+ | VEX feed health |
| Operations | StellaOps.Doctor.Plugin.Operations |
3+ | General operations |
PostgreSQL Plugin
Plugin ID: stellaops.doctor.postgres
NuGet: StellaOps.Doctor.Plugin.Postgres
Checks
check.postgres.connectivity
Verifies PostgreSQL database connectivity and response time.
| Field | Value |
|---|---|
| Severity | Fail |
| Tags | database, postgres, connectivity, core |
| Timeout | 10 seconds |
Thresholds:
- Warning: Latency > 100ms
- Critical: Latency > 500ms
Evidence collected:
- Connection string (masked)
- Server version
- Server timestamp
- Latency in milliseconds
Remediation:
# Check database status
stella db status
# Test connection
stella db ping
# View connection configuration
stella config get Database:ConnectionString
check.postgres.migration-status
Checks for pending database migrations.
| Field | Value |
|---|---|
| Severity | Warning |
| Tags | database, postgres, migrations |
Evidence collected:
- Current schema version
- Pending migrations list
- Last migration timestamp
Remediation:
# View migration status
stella db migrations status
# Apply pending migrations
stella db migrations run
# Verify migration state
stella db migrations verify
check.postgres.connection-pool
Monitors connection pool health and utilization.
| Field | Value |
|---|---|
| Severity | Warning |
| Tags | database, postgres, pool, performance |
Thresholds:
- Warning: Utilization > 70%
- Critical: Utilization > 90%
Evidence collected:
- Active connections
- Idle connections
- Maximum pool size
- Pool utilization percentage
Remediation:
# View pool statistics
stella db pool stats
# Increase pool size (if needed)
stella config set Database:MaxPoolSize 50
Storage Plugin
Plugin ID: stellaops.doctor.storage
NuGet: StellaOps.Doctor.Plugin.Storage
Checks
check.storage.disk-space
Checks available disk space on configured storage paths.
| Field | Value |
|---|---|
| Severity | Fail |
| Tags | storage, disk, capacity |
Thresholds:
- Warning: Usage > 80%
- Critical: Usage > 90%
Evidence collected:
- Drive/mount path
- Total space
- Used space
- Free space
- Percentage used
Remediation:
# List large files
stella storage analyze --path /var/stella
# Clean up old evidence
stella evidence cleanup --older-than 90d
# View storage summary
stella storage summary
check.storage.evidence-locker-write
Verifies write permissions to the evidence locker directory.
| Field | Value |
|---|---|
| Severity | Fail |
| Tags | storage, evidence, permissions |
Evidence collected:
- Evidence locker path
- Write test result
- Directory permissions
Remediation:
# Check permissions
stella evidence locker status
# Repair permissions
stella evidence locker repair --permissions
# Verify configuration
stella config get EvidenceLocker:BasePath
check.storage.backup-directory
Verifies backup directory accessibility (skipped if not configured).
| Field | Value |
|---|---|
| Severity | Warning |
| Tags | storage, backup |
Evidence collected:
- Backup directory path
- Write accessibility
- Last backup timestamp
Crypto Plugin
Plugin ID: stellaops.doctor.crypto
NuGet: StellaOps.Doctor.Plugin.Crypto
Checks
check.crypto.fips-compliance
Verifies FIPS 140-2/140-3 compliance for US government deployments.
| Field | Value |
|---|---|
| Severity | Fail (when FIPS profile active) |
| Tags | crypto, compliance, fips, regional |
Evidence collected:
- Active crypto profile
- FIPS mode enabled status
- Validated algorithms
- Non-compliant algorithms detected
Remediation:
# Check current profile
stella crypto profile show
# Enable FIPS mode
stella crypto profile set fips
# Verify FIPS compliance
stella crypto verify --standard fips
check.crypto.eidas-compliance
Verifies eIDAS compliance for EU deployments.
| Field | Value |
|---|---|
| Severity | Fail (when eIDAS profile active) |
| Tags | crypto, compliance, eidas, regional, eu |
Evidence collected:
- Active crypto profile
- eIDAS algorithm support
- Qualified signature availability
Remediation:
# Enable eIDAS profile
stella crypto profile set eidas
# Verify compliance
stella crypto verify --standard eidas
check.crypto.gost-availability
Verifies GOST algorithm availability for Russian deployments.
| Field | Value |
|---|---|
| Severity | Fail (when GOST profile active) |
| Tags | crypto, compliance, gost, regional, russia |
Evidence collected:
- GOST provider status
- Available GOST algorithms
- Library version
check.crypto.sm-availability
Verifies SM2/SM3/SM4 algorithm availability for Chinese deployments.
| Field | Value |
|---|---|
| Severity | Fail (when SM profile active) |
| Tags | crypto, compliance, sm, regional, china |
Evidence collected:
- SM crypto provider status
- Available SM algorithms
- Library version
Timestamping Plugin
Plugin ID: stellaops.doctor.timestamping
NuGet: StellaOps.Doctor.Plugin.Timestamping
Checks
check.timestamp.tsa.reachable- TSA endpoints reachablecheck.timestamp.tsa.response-time- TSA latency thresholdscheck.timestamp.tsa.valid-response- TSA returns valid RFC-3161 responsecheck.timestamp.tsa.failover-ready- Backup TSA readinesscheck.timestamp.tsa.cert-expiry- TSA signing cert expirycheck.timestamp.tsa.root-expiry- TSA root trust expirycheck.timestamp.tsa.chain-valid- TSA certificate chain validitycheck.timestamp.ocsp.responder- OCSP responder availabilitycheck.timestamp.ocsp.stapling- OCSP stapling enabledcheck.timestamp.crl.distribution- CRL distribution availabilitycheck.timestamp.revocation.cache-fresh- OCSP/CRL cache freshnesscheck.timestamp.evidence.staleness- Aggregate evidence stalenesscheck.timestamp.evidence.tst.expiry- TSTs approaching expirycheck.timestamp.evidence.tst.deprecated-algo- TSTs using deprecated algorithmscheck.timestamp.evidence.tst.missing-stapling- TSTs missing stapled revocation datacheck.timestamp.evidence.retimestamp.pending- Pending retimestamp workloadcheck.timestamp.eidas.trustlist.fresh- EU Trust List freshnesscheck.timestamp.eidas.qts.qualified- Qualified TSA providers still qualifiedcheck.timestamp.eidas.qts.status-change- QTS status changescheck.timestamp.timesync.system- System time synchronizationcheck.timestamp.timesync.tsa-skew- TSA time skewcheck.timestamp.timesync.rekor-correlation- TST vs Rekor time correlation
Configuration
Doctor:
Timestamping:
TsaEndpoints:
- name: PrimaryTsa
url: https://tsa.example.org
- name: BackupTsa
url: https://tsa-backup.example.org
WarnLatencyMs: 5000
CriticalLatencyMs: 30000
MinHealthyTsas: 2
Evidence:
DeprecatedAlgorithms:
- SHA1
Note: evidence staleness, OCSP stapling, and chain validation checks require data providers to be registered by the host.
Evidence Locker Plugin
Plugin ID: stellaops.doctor.evidencelocker
NuGet: StellaOps.Doctor.Plugin.EvidenceLocker
Checks
check.evidence.attestation-retrieval
Verifies attestation retrieval functionality.
| Field | Value |
|---|---|
| Severity | Fail |
| Tags | evidence, attestation, retrieval |
Evidence collected:
- Sample attestation ID
- Retrieval latency
- Storage backend status
Remediation:
# Check evidence locker status
stella evidence locker status
# Verify index integrity
stella evidence index verify
# Rebuild index if needed
stella evidence index rebuild
check.evidence.provenance-chain
Verifies provenance chain integrity.
| Field | Value |
|---|---|
| Severity | Fail |
| Tags | evidence, provenance, integrity |
Evidence collected:
- Chain depth
- Verification result
- Last verified timestamp
check.evidence.index
Verifies evidence index health and consistency.
| Field | Value |
|---|---|
| Severity | Warning |
| Tags | evidence, index, consistency |
Evidence collected:
- Index entry count
- Orphaned entries
- Missing entries
check.evidence.merkle-anchor
Verifies Merkle tree anchoring (when configured).
| Field | Value |
|---|---|
| Severity | Warning |
| Tags | evidence, merkle, anchoring |
Evidence collected:
- Anchor status
- Last anchor timestamp
- Pending entries
Configuration
Enabling/Disabling Plugins
In appsettings.yaml:
Doctor:
Plugins:
Postgres:
Enabled: true
Storage:
Enabled: true
Crypto:
Enabled: true
ActiveProfile: international # fips, eidas, gost, sm
EvidenceLocker:
Enabled: true
Check-Level Configuration
Doctor:
Checks:
"check.storage.disk-space":
WarningThreshold: 75 # Override default 80%
CriticalThreshold: 85 # Override default 90%
"check.postgres.connectivity":
TimeoutSeconds: 15 # Override default 10
Report Storage Configuration
Doctor:
ReportStorage:
Backend: postgres # inmemory, postgres, filesystem
RetentionDays: 90
CompressionEnabled: true
Running Checks
CLI
# Run all checks
stella doctor
# Run specific plugin
stella doctor --plugin postgres
# Run specific check
stella doctor --check check.postgres.connectivity
# Output formats
stella doctor --format table # Default
stella doctor --format json
stella doctor --format markdown
API
# Run all checks
curl -X POST /api/v1/doctor/run
# Run with filters
curl -X POST /api/v1/doctor/run \
-H "Content-Type: application/json" \
-d '{"plugins": ["postgres", "storage"]}'
Last updated: 2026-01-20 (UTC)