# Changelog

## Score

- CAI 63 → 62 (-0.8)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 72 → 61 (-11.0)
- Architecture 69 → 69 (+0.0)
- Maturity 51 → 55 (+3.8)
- Readiness 72 → 71 (-1.1)
- Security 72 → 72 (+0.0)
- Domain Modelling 100 → 100 (+0.0)
- Performance 95 → 95 (+0.0)

## Resolved (5)

- Inconsistent argument order for `diff_from`. On the `Model` class/instance, the signature is `diff_from(version, time)`, whereas on the `History` object, it is `diff_from(time, version)`. This inconsistency increases cognitive load and risk of bugs when switching contexts between the model and its history object.
- Inconsistent parameter handling for similar operations. `at` and `at!` accept both `time` and `version`, while `at_version` and `at_version!` accept only `version`. This forces users to remember two different method names for essentially the same lookup operation (finding a record at a specific point in history), depending on whether they have a timestamp or just a version number. The `!` variants likely imply raising errors, but the distinction between `at` and `at_version` is purely parameter-based, not semantic.
- Off-boarding risk: anonymized user #1
- PR-triggered workflow without a permissions block
- Redundant naming and placement of identical operations. `reset_log_data` exists on both the `Detachable` module (instance method) and `Logidze.Model` (both class and instance methods). While `Detachable` is a concern, exposing the same operation on the main `Model` module creates confusion about which is the canonical entry point.

## New (9)

- Confusingly similar names: `at` and `at_version` appear to do the same thing (retrieving a model state at a specific point in time/version). The distinction between passing `time` vs `version` is implicit in the name `at_version` but explicit in `at`, leading to potential confusion about which method to use for version-based lookups.
- Duplicate intent with inconsistent naming: The bang versions (`at!`, `at_version!`) mirror the non-bang versions but with the same signature inconsistency (`at` takes time/version, `at_version` takes version). This doubles the confusion of the non-bang methods.
- Duplicate intent: Both instance methods perform the same logical operation (clearing/resetting log data) on the model instance. While one is in a module and one in the main module, exposing both on the same class (via inclusion) creates ambiguity on which should be used or if they behave identically.
- Off-boarding risk: anonymized user #1
- Orphaned file (lib/logidze/detachable.rb)
- Orphaned file (lib/logidze/meta.rb)
- PR-triggered workflow without a permissions block (.github/workflows/docs-lint.yml)
- PR-triggered workflow without a permissions block (.github/workflows/rspec.yml)
- PR-triggered workflow without a permissions block (.github/workflows/rubocop.yml)
