dorgu-operator/
├── api/v1/ # CRD type definitions
│ ├── applicationpersona_types.go # ApplicationPersona spec + status
│ ├── clusterpersona_types.go # ClusterPersona spec + status
│ ├── groupversion_info.go # API group registration
│ └── zz_generated.deepcopy.go # Generated deep copy methods
│
├── cmd/ # Entrypoint
│ ├── main.go # Manager setup, controller registration
│ └── config.go # CLI flag parsing
│
├── internal/
│ ├── controller/ # Reconciliation controllers
│ │ ├── applicationpersona_controller.go # Main reconciler
│ │ ├── applicationpersona_validation.go # Validation logic
│ │ ├── applicationpersona_status.go # Status update helpers
│ │ ├── clusterpersona_controller.go # Cluster reconciler
│ │ ├── clusterpersona_discovery.go # Node/resource discovery
│ │ ├── clusterpersona_addons.go # Add-on detection
│ │ ├── argocd_watcher.go # ArgoCD Application watcher
│ │ └── controller_helpers.go # Shared utilities
│ │
│ ├── metrics/ # Prometheus integration
│ │ └── prometheus_client.go # PromQL queries for baselines
│ │
│ ├── webhook/ # Admission webhook
│ │ └── deployment_validator.go # Validating webhook handler
│ │
│ └── websocket/ # WebSocket server
│ ├── server.go # Server lifecycle, client management
│ ├── handlers.go # Message handlers
│ └── protocol.go # Message types and payloads
│
├── charts/dorgu-operator/ # Helm chart
├── config/ # Kustomize manifests (CRDs, RBAC)
└── test/e2e/ # End-to-end tests