signalprocessing

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 6, 2026 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Overview

Package signalprocessing provides interfaces for signal processing components.

These interfaces enable dependency injection and testability: - K8sEnricher: Enriches Kubernetes context from cluster state - PolicyEvaluator: Unified Rego evaluator for environment, severity, priority, custom labels

Per APDC methodology, these interfaces are the contracts that unit tests mock, while integration tests use real implementations.

Package signalprocessing implements the SignalProcessing CRD controller. Per IMPLEMENTATION_PLAN_V1.31.md - E2E GREEN Phase + BR-SP-090 Audit

Reconciliation Flow:

  1. Pending → Enriching: K8s context enrichment + owner chain + custom labels
  2. Enriching → Classifying: Environment + Priority classification
  3. Classifying → Categorizing: Business classification
  4. Categorizing → Completed: Final status update + audit event

Business Requirements:

  • BR-SP-001: K8s Context Enrichment
  • BR-SP-051-053: Environment Classification
  • BR-SP-070-072: Priority Assignment
  • BR-SP-090: Categorization Audit Trail
  • BR-SP-100: Owner Chain Traversal
  • BR-SP-102: Custom Labels

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type K8sEnricher

type K8sEnricher interface {
	// Enrich queries the Kubernetes API to build rich context for a signal.
	// Returns namespace, pod, deployment, and other relevant cluster state.
	Enrich(ctx context.Context, signal *signalprocessingv1alpha1.SignalData) (*signalprocessingv1alpha1.KubernetesContext, error)
}

K8sEnricher enriches signal context with Kubernetes cluster state. BR-SP-001: K8s context enrichment with caching, timeout, metrics This interface enables unit testing without requiring a real K8s cluster.

type PolicyEvaluator added in v1.1.0

type PolicyEvaluator interface {
	EvaluateEnvironment(ctx context.Context, input evaluator.PolicyInput) (*signalprocessingv1alpha1.EnvironmentClassification, error)
	EvaluatePriority(ctx context.Context, input evaluator.PolicyInput) (*signalprocessingv1alpha1.PriorityAssignment, error)
	EvaluateSeverity(ctx context.Context, input evaluator.PolicyInput) (*evaluator.SeverityResult, error)
	EvaluateCustomLabels(ctx context.Context, input evaluator.PolicyInput) (map[string][]string, error)
	GetPolicyHash() string
}

PolicyEvaluator provides unified Rego policy evaluation for all classification rules. ADR-060: Replaces EnvironmentClassifier, PriorityAssigner, SeverityClassifier, and RegoEngine with a single evaluator backed by one policy.rego file.

BR-SP-051: Environment classification BR-SP-070: Priority assignment BR-SP-102: CustomLabels extraction BR-SP-105: Severity determination

type SignalProcessingReconciler

type SignalProcessingReconciler struct {
	client.Client
	Scheme       *runtime.Scheme
	AuditManager *audit.Manager // BR-SP-090: Audit Manager (Phase 3 refactoring - 2026-01-22)

	// V1.0 Maturity Requirements (per SERVICE_MATURITY_REQUIREMENTS.md)
	Metrics  *metrics.Metrics     // DD-005: Observability - metrics wired to controller
	Recorder record.EventRecorder // K8s best practice: EventRecorder for debugging

	// ========================================
	// STATUS MANAGER (DD-PERF-001)
	// 📋 Design Decision: DD-PERF-001 | ✅ Atomic Status Updates Pattern
	// See: docs/architecture/decisions/DD-PERF-001-atomic-status-updates-mandate.md
	// ========================================
	//
	// StatusManager manages atomic status updates to reduce K8s API calls
	// Consolidates multiple status field updates into single atomic operations
	//
	// BENEFITS:
	// - 66-75% API call reduction (3-4 updates → 1 atomic update per reconcile)
	// - Eliminates race conditions from sequential updates
	// - Reduces etcd write load and watch events
	//
	// WIRED IN: cmd/signalprocessing/main.go
	// USAGE: r.StatusManager.AtomicStatusUpdate(ctx, sp, func() { ... })
	StatusManager *status.Manager

	// ADR-060: Unified Rego evaluator replaces individual classifiers
	// Covers: environment (BR-SP-051), priority (BR-SP-070), severity (BR-SP-105), custom labels (BR-SP-102)
	PolicyEvaluator PolicyEvaluator // MANDATORY - fail loudly if nil

	SignalModeClassifier *classifier.SignalModeClassifier // BR-SP-106: Proactive signal mode classification (ADR-054)

	// K8sEnricher provides sophisticated Kubernetes context enrichment
	// This is MANDATORY - fail loudly if nil or on error
	K8sEnricher K8sEnricher // BR-SP-001: K8s context enrichment (interface for testability)
}

SignalProcessingReconciler reconciles a SignalProcessing object. Per IMPLEMENTATION_PLAN_V1.31.md - E2E GREEN Phase + BR-SP-090 Audit Day 10 Integration: Wired with Rego-based classifiers from pkg/signalprocessing/classifier

func (*SignalProcessingReconciler) Reconcile

Reconcile implements the reconciliation loop for SignalProcessing.

func (*SignalProcessingReconciler) SetupWithManager

func (r *SignalProcessingReconciler) SetupWithManager(mgr ctrl.Manager) error

SetupWithManager sets up the controller with the Manager. DD-CONTROLLER-001: ObservedGeneration provides idempotency without blocking status updates GenerationChangedPredicate removed to allow phase progression via status updates

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL