Versions in this module Expand all Collapse all v0 v0.2.0 Apr 23, 2026 Changes in this version + var DefaultThresholds = CoverageThresholds + var ErrCoverageBelowSLO = errors.New("validation coverage below SLO") + var ErrNoExecutor = errors.New("no executor available") + func Enforce(c ValidationCoverage, t CoverageThresholds) error + type AgentCapability interface + AvailableExecutorKinds func(ctx context.Context, tenantID shared.ID) ([]ExecutorKind, error) + type AttackerProfile struct + Capabilities []string + ID shared.ID + Name string + type CoverageThresholds struct + P0 float64 + P1 float64 + P2 float64 + P3 float64 + type DefaultSelector struct + func (DefaultSelector) Select(tid TechniqueID, profile *AttackerProfile, available []ExecutorKind) (ExecutorKind, error) + type Evidence struct + Artifacts []string + EndedAt time.Time + ExecutorKind string + Outcome Outcome + RawMeta map[string]any + StartedAt time.Time + Summary string + Target Target + Technique TechniqueID + func (e Evidence) Executor() string + type EvidenceRepository interface + Create func(ctx context.Context, ev StoredEvidence) error + ListByFinding func(ctx context.Context, tenantID, findingID shared.ID) ([]StoredEvidence, error) + type EvidenceStore struct + func NewEvidenceStore(repo EvidenceRepository) *EvidenceStore + func (s *EvidenceStore) ListForFinding(ctx context.Context, tenantID, findingID shared.ID) ([]StoredEvidence, error) + func (s *EvidenceStore) Record(ctx context.Context, tenantID, findingID shared.ID, simulationRunID *shared.ID, ...) (StoredEvidence, error) + type ExecutorKind string + const KindAtomicRedTeam + const KindCaldera + const KindNuclei + const KindSafeCheck + type FindingMutator interface + Get func(ctx context.Context, tenantID, findingID shared.ID) (*vulnerability.Finding, error) + Update func(ctx context.Context, f *vulnerability.Finding) error + type Outcome string + const OutcomeDetected + const OutcomeError + const OutcomeInconclusive + const OutcomeNotDetected + const OutcomeSkipped + type ProofOfFixService struct + func NewProofOfFixService(dispatcher ValidationDispatcher, capability AgentCapability, ...) *ProofOfFixService + func (s *ProofOfFixService) Retest(ctx context.Context, tenantID, findingID shared.ID, tid TechniqueID, ...) (Evidence, bool, error) + type Redactor struct + func NewRedactor() *Redactor + func (r *Redactor) AddPattern(re string) + func (r *Redactor) Redact(ev Evidence) Evidence + type RetestNotifier interface + NotifyFixRejected func(ctx context.Context, tenantID, findingID shared.ID, reason string) error + type Selector interface + Select func(tid TechniqueID, profile *AttackerProfile, available []ExecutorKind) (ExecutorKind, error) + type StoredEvidence struct + CreatedAt time.Time + Evidence Evidence + FindingID shared.ID + ID shared.ID + SimulationRunID *shared.ID + TenantID shared.ID + type Target struct + Address string + AssetID shared.ID + Metadata map[string]any + Type string + type TechniqueID string + type ValidationCoverage struct + P0Total int + P0WithEvidence int + P1Total int + P1WithEvidence int + P2Total int + P2WithEvidence int + P3Total int + P3WithEvidence int + func (c ValidationCoverage) Pct(class string) float64 + type ValidationDispatcher interface + Submit func(ctx context.Context, job ValidationJob) (Evidence, error) + type ValidationJob struct + ExecutorKind ExecutorKind + FindingID shared.ID + JobID shared.ID + ProfileID shared.ID + Target Target + Technique TechniqueID + TenantID shared.ID + TimeoutSeconds int