# Changelog

## Score

- CAI 51 → 52 (+1.1)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 100 → 76 (-24.3)
- Architecture 86 → 86 (+0.0)
- Maturity 21 → 28 (+6.9)
- Readiness 65 → 65 (+0.0)
- Security 89 → 89 (+0.0)

## Resolved (7)

- Ambiguous 'clear' method. `Connection.clear` likely clears the connection pool or cache, while `Interfaces.RealTime.clear` and `Interfaces.SQL.clear` likely clear index data or reset the index state. The name 'clear' is too generic and context-dependent.
- AssociationProxy exposes `search` and `search_for_ids`, which duplicates the intent of the global `ThinkingSphinx` methods but lacks the `sphinx_` prefix used in the ActiveRecord Base ClassMethods. This creates a confusing dual API where one path uses prefixes and the other doesn't.
- Inconsistent naming convention for query operations. 'search' and 'search_for_ids' use underscores, while 'count' and 'facets' do not. Additionally, 'search_for_ids' is verbose compared to a potential 'ids' or 'search_ids'.
- Inconsistent naming within the ActiveRecord extension. The methods are prefixed with `sphinx_` but vary in structure: `sphinx_search`, `sphinx_search_count`, `sphinx_search_for_ids`, `sphinx_facets`. This mixes the action (`search`) with the result type (`count`, `ids`, `facets`) inconsistently.
- Orphaned files with no living knowledge
- Redundant methods `close` and `close!` with no visible signature difference in the list. In Ruby, `!` often implies a more aggressive or irreversible action, but without documentation, this is confusing. If they do the same thing, it's redundant. If they differ, the distinction is not obvious from the signature.
- Workflow token permissions not restricted

## New (6)

- Inconsistent constructor naming. 'Connection' uses the standard Ruby 'new' method, while 'Client' uses 'initialize'. While 'initialize' is the internal constructor in Ruby, exposing it as a public API signature alongside 'new' for similar objects is inconsistent.
- Inconsistent naming convention for search operations. 'search' and 'search_for_ids' use snake_case, while 'count' and 'facets' are short verbs/nouns without the 'search_' prefix, despite performing related query operations.
- Inconsistent naming convention in ActiveRecord class methods. Most methods are prefixed with 'sphinx_' and use 'search_' (e.g., 'sphinx_search', 'sphinx_search_for_ids'), but 'sphinx_facets' lacks the 'search_' component, and 'sphinx_search_none' uses 'none' instead of a verb like 'clear' or 'empty'.
- Inconsistent naming convention in AssociationProxy. It uses 'search' and 'search_for_ids', which is consistent with the main ThinkingSphinx module, but inconsistent with the ActiveRecord Base ClassMethods which use 'sphinx_search' and 'sphinx_search_for_ids'. While the context differs, the lack of 'sphinx_' prefix here while present in the main model interface is confusing.
- Redundant methods with ambiguous distinction. 'close' and 'close!' exist. In Ruby, '!' often implies a more forceful or destructive action, but without documentation, it's unclear if they do different things or if one is just an alias. This creates confusion for API users.
- Workflow token permissions not restricted (.github/workflows/ci.yml)

## Changes since last survey

- 1 commits — 1 feature/other, 0 fixes

## By area

- (root) — 1 commit

## Notable commits

- change: AI/LLMs policy
