# Changelog

## Score

- CAI 68 → 64 (-4.5)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 96 → 74 (-22.4)
- Architecture 100 → 100 (+0.0)
- Maturity 57 → 52 (-4.9)
- Readiness 69 → 69 (+0.0)
- Security 80 → 80 (+0.0)

## Resolved (5)

- Conflicting responsibility for background transparency. `Base` has a setter `transparent_background=` which likely configures the chart style, while `Renderer` has a method `transparent_background(columns, rows)` which appears to perform an action or setup on the rendering surface. It is unclear if these are related or if one overrides the other.
- Inconsistent accessor patterns. `minimum_value` and `maximum_value` are exposed as both methods (with parentheses) and properties (without parentheses). In Ruby, this usually implies one is a method and one is a reader, but having both explicitly listed suggests redundancy or confusion between getter methods and attribute readers.
- Inconsistent naming and mutability patterns for sorting. `Base` exposes `sort` and `sorted_drawing` as properties, while `Candlestick` exposes them as setters (`sort=`, `sorted_drawing=`). This inconsistency in how sorting configuration is applied across chart types is confusing.
- Off-boarding risk: anonymized user #1
- Redundant normalization methods with unclear distinction. `norm_data` takes no arguments while `normalize` takes `keywords`. It is unclear if they perform the same operation on different data structures or if one is deprecated/alias. This creates confusion for users on which method to call for normalizing data.

## New (7)

- Documentation: no architecture or design documentation
- Inconsistent API style for setting themes. There is a generic setter `theme=(options)` alongside multiple specific methods for predefined themes. This forces users to learn two different ways to apply a theme (one generic, one specific) when the specific ones could likely be implemented as wrappers around the generic one.
- Inconsistent accessor patterns. `minimum_value` and `maximum_value` are exposed as both Properties (likely getters) and Methods (likely getters or setters). In Ruby, this usually implies a getter method and a property accessor, but having both explicitly listed as distinct members with the same name creates ambiguity about whether one is a setter or if they are duplicates.
- Inconsistent naming and scope for background transparency. `Base` uses a setter property pattern `transparent_background=`, while `Renderer` uses a method `transparent_background` that also takes dimensions. The intent (making background transparent) is similar, but the API surface differs significantly in signature and naming convention (setter vs method).
- Off-boarding risk: anonymized user #1
- Orphaned file (rails_generators/gruff/gruff_generator.rb)
- Redundant methods with overlapping intent. Both methods appear to perform normalization on the store's data. `norm_data` takes no arguments, while `normalize` takes keywords, suggesting one might be a convenience wrapper or they handle different normalization scopes, but the naming convention is inconsistent (abbreviated vs full word).
