Repository navigation
feat: dorikin - Kubernetes configuration drift detector - #1
Merged
Merged
Conversation
Convert all numeric types to float64 before comparison since JSON unmarshaling returns numbers as float64 while YAML keeps integers. This eliminates false positives from type mismatches.
- Press 'r' for manual refresh - Press 'a' to toggle auto-refresh (default 5s interval) - Add --refresh-interval flag to configure interval
Fix HPA minReplicas to match deployment replicas (3) to prevent HPA-induced drift at baseline.
Include features, installation, CLI reference, TUI controls, test track instructions, and roadmap.
Explains comparison algorithm, field filtering, type normalization, limitations (HPA, ranges, ordering), and future improvements.
Skip spec.replicas comparison for resources managed by HPAs. Supports Deployments, StatefulSets, and ReplicaSets. Modes: --hpa-aware=manifests (default), cluster, disabled
- Load config from .dorikin.yaml (walks up directory tree) - Global and resource-specific ignore paths - extend_defaults option to include/replace built-in ignores - CLI flags override config file settings
- Add VHS tape files for generating demo recordings - Add demo.gif showing tmux split-pane live drift detection - Update README with demo GIF in Overview section - Add `make demo` target for regenerating the GIF
- Use relative paths for portability - Enable auto-refresh with 'a' key press - Remove temporary test tape file
- Add dorikin-branded status bar (jade green badge, amber LIVE indicator) - Add jade green pane borders for active pane - Add demo-tui make target for quick TUI launches - Document VHS tape format learnings in CLAUDE.md - Add helper script for pane initialization
- Use conditional pane-border-format with correct pane-base-index (1, not 0) - Add dedicated init scripts for left/right pane titles - Document tmux pane-base-index gotcha in CLAUDE.md - Left pane shows "test track", right pane shows "dorikin tui"
- Create common.go with ScanFlags struct and shared initialization - Export ParseHPAAwareMode and BuildLoader for reuse - Add BuildScanContext to handle common setup logic - Reduce scan.go from 205 to 75 lines - Reduce ui.go from 155 to 69 lines - Add CLI tests (39.8% coverage, up from 0%)
- Quantity normalization: Treat 128Mi = 134217728 bytes, 500m = 0.5 CPU Uses k8s.io/apimachinery/pkg/api/resource for semantic comparison - Content-based array matching: Match containers, env, volumes, etc. by key field (name, containerPort, port) instead of by index - Prevents false positives when array order changes or quantities use different but equivalent representations - Update test track with Q/R drift scenarios to exercise new features - Update docs to reflect implemented features (344 tests, 80%+ coverage)
indrasvat
force-pushed
the
create-dorikin
branch
from
January 8, 2026 04:44
a88ab5f to
4c2e44c
Compare
indrasvat
force-pushed
the
main
branch
2 times, most recently
from
January 8, 2026 04:51
f0ebe6a to
438a7c9
Compare
indrasvat
force-pushed
the
create-dorikin
branch
from
January 8, 2026 04:51
4c2e44c to
261e6ae
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Dorikin is a Kubernetes configuration drift detector that compares desired manifests against live cluster state. It provides both a CLI for CI/CD integration and an interactive TUI for exploration and debugging.
Core Features
spec.replicasfor HPA-managed workloads--helm-valuesand--helm-setoverrides--kustomize128Mi=134217728,500m=0.5).dorikin.yamlfor custom ignore paths and resource-specific rulesDrift Status Types
IN_SYNCDRIFTEDMISSINGEXTRAERRORLoader Support
dorikin scan ./manifests/dorikin scan --helm ./chart/dorikin scan --kustomize ./overlay/Test Track
Includes a local testing environment using Colima + k3s with pre-built drift scenarios:
Test Plan
make cipasses (344 tests, lint clean)128Mi=134217728bytes)