# Changelog

## Score

- CAI 69 → 65 (-4.0)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 98 → 74 (-23.3)
- Architecture 99 → 99 (+0.0)
- Maturity 58 → 55 (-3.0)
- Readiness 66 → 66 (+0.0)
- Security 87 → 87 (+0.0)

## Resolved (9)

- Ambiguous method overloading/usage. `parse` exists as both a constructor-like initializer taking a string and a no-arg method. This suggests `parse` might be mutating state or that the API is unclear about whether parsing happens at initialization or via a separate call.
- Confusing naming. `kubectl_resource_type` sounds like it returns the K8s kind, which is what `type()` (or `kind()`) likely does. If `kubectl_resource_type` returns something specific to the kubectl wrapper (e.g., 'pods', 'deployments'), it should be named more clearly, e.g., `kubectl_resource_name` or `plural_name`.
- Fork-triggerable workflow runs with an unscoped write token
- Inconsistent exception handling semantics. The `!` suffix in Ruby typically indicates a method that raises exceptions on failure, while the non-`!` version might return a boolean or nil. However, without seeing the bodies, it's unclear if `validate_config_files` is a safe check and `validate_config_files!` is the strict one, or if they are redundant. Given the context of a builder, validation usually fails hard.
- Off-boarding risk: anonymized user #1
- Orphaned files with no living knowledge
- Potential naming collision with Ruby's built-in `Object#type` (which returns the class). While `KubernetesResource` is a specific class, overriding `type` to return a string (the K8s kind) is confusing and non-idiomatic. Similarly, `status` might conflict with generic status reporting if not careful, but `type` is the bigger issue.
- Redundant methods. Both `kind()` and `type()` exist on `KubernetesResource`. In Kubernetes, 'kind' is the standard term. Having both suggests one is a wrapper or they are aliases, which is redundant API surface.
- Workflow token permissions not restricted

## New (35)

- Ambiguous method overloading/usage. `parse` exists as both a constructor-like initializer taking a string and a no-arg method. This suggests `parse(string)` might be a factory or setter, while `parse()` is the execution step, but the naming is identical, causing confusion about whether calling `parse` with args replaces the buffer or parses immediately.
- Concentrated knowledge decay
- Confusingly similar naming for distinct concepts. `type()` likely returns the Kubernetes Kind (e.g., 'Deployment'), while `kubectl_resource_type()` likely returns the API resource name (e.g., 'deployments'). Similarly, `group()` returns the API group. These are semantically distinct but named similarly, risking confusion about which returns the plural resource name vs the Kind string.
- Fork-triggerable workflow runs with an unscoped write token (.github/workflows/cla.yml)
- Inconsistent exception handling semantics. The `!` suffix in Ruby typically indicates a method that raises exceptions on failure, while the non-`!` version might return a boolean or nil. Without documentation, it is unclear if `validate_config_files` is a 'soft' check and `validate_config_files!` is a 'hard' check, or if they are redundant aliases with different error handling. This creates a cognitive load for API users to remember which variant to use.
- Off-boarding risk: anonymized user #1
- Orphaned file (lib/krane/cli/deploy_command.rb)
- Orphaned file (lib/krane/cli/global_deploy_command.rb)
- Orphaned file (lib/krane/cli/krane.rb)
- Orphaned file (lib/krane/cluster_resource_discovery.rb)
- Orphaned file (lib/krane/container_logs.rb)
- Orphaned file (lib/krane/deferred_summary_logging.rb)
- Orphaned file (lib/krane/deploy_task.rb)
- Orphaned file (lib/krane/ejson_secret_provisioner.rb)
- Orphaned file (lib/krane/global_deploy_task.rb)
- Orphaned file (lib/krane/kubeclient_builder.rb)
- Orphaned file (lib/krane/kubectl.rb)
- Orphaned file (lib/krane/kubernetes_resource/custom_resource.rb)
- Orphaned file (lib/krane/kubernetes_resource/custom_resource_definition.rb)
- Orphaned file (lib/krane/kubernetes_resource/daemon_set.rb)
- …and 15 more

## Changes since last survey

- 2 commits — 2 feature/other, 0 fixes

## By area

- (repo) — 1 commit
- (root) — 1 commit

## Notable commits

- change: Merge pull request #1006 from ptsavdar/panos/selector-as-filter-unlabelled
- change: Skip templates without labels in --selector-as-filter instead of crashing
