# Changelog

## Score

- CAI 60 → 51 (-9.4)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 98 → 98 (+0.0)
- Architecture 54 → 54 (+0.0)
- Maturity 52 → 32 (-20.0)
- Readiness 82 → 82 (+0.1)
- Security 73 → 73 (+0.0)

## Resolved (5)

- Ambiguous relationship between `dependencies()` and `enumerate_dependencies()`. In Ruby, `enumerate` often implies an iterator or lazy evaluation, while `dependencies` might imply a cached list. If they return the same data structure, one is redundant. If one is lazy and the other is eager, the naming is inconsistent with common Ruby conventions (where `all` or `to_a` is often used for eager evaluation).
- Inconsistent naming convention for CLI entry points. Most methods use simple imperative verbs (cache, status, list, migrate), but 'notices' is a noun. While 'list' implies listing notices, the explicit 'notices' method suggests a specific action distinct from listing, or is a redundant alias for a list operation depending on implementation. However, the more glaring inconsistency is between the top-level CLI methods and the Command classes.
- Outdated: csv
- Outdated: licensee
- Redundant reporter creation methods. Both `create_reporter` and `default_reporter` exist on the Command class. It is unclear if `default_reporter` is a factory for a specific default type while `create_reporter` is generic, or if they are aliases. This creates confusion for implementers of subclasses.

## New (28)

- Ambiguous overlap between `enumerate_dependencies` and `dependencies` in the `Source` base class. `enumerate_dependencies` is implemented by all specific sources, but `dependencies` is also present on the base class. It is unclear if `dependencies()` is a cached wrapper, a different implementation, or a legacy alias. This creates confusion for consumers regarding which method to call for the actual list of dependencies.
- Inconsistent naming convention for CLI entry points. Most methods use simple imperative verbs (cache, status, list, notices, migrate), but `CLI.exit_on_failure?()` uses a predicate suffix (`?`) which is inconsistent with the other action-oriented methods and suggests a configuration check rather than a command execution.
- Orphaned file (lib/licensed/cli.rb)
- Orphaned file (lib/licensed/commands/cache.rb)
- Orphaned file (lib/licensed/commands/command.rb)
- Orphaned file (lib/licensed/commands/status.rb)
- Orphaned file (lib/licensed/configuration.rb)
- Orphaned file (lib/licensed/dependency.rb)
- Orphaned file (lib/licensed/dependency_record.rb)
- Orphaned file (lib/licensed/migrations/v2.rb)
- Orphaned file (lib/licensed/reporters/cache_reporter.rb)
- Orphaned file (lib/licensed/reporters/list_reporter.rb)
- Orphaned file (lib/licensed/reporters/notices_reporter.rb)
- Orphaned file (lib/licensed/reporters/status_reporter.rb)
- Orphaned file (lib/licensed/sources/bundler.rb)
- Orphaned file (lib/licensed/sources/cabal.rb)
- Orphaned file (lib/licensed/sources/cargo.rb)
- Orphaned file (lib/licensed/sources/dep.rb)
- Orphaned file (lib/licensed/sources/go.rb)
- Orphaned file (lib/licensed/sources/gradle.rb)
- …and 8 more

## Changes since last survey

- 1 commits — 1 feature/other, 0 fixes

## By area

- (repo) — 1 commit

## Notable commits

- change: Merge pull request #985 from licensee/dependabot/all-3fa9bcdc88

## Architecture

- 0 containers · 1 bounded contexts · 0 dependency edges (baseline)
