# Changelog

## Score

- CAI 66 → 61 (-4.9)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 96 → 73 (-22.4)
- Architecture 90 → 100 (+10.4)
- Maturity 57 → 52 (-4.9)
- Readiness 56 → 56 (+0.0)
- Security 96 → 87 (-9.1)

## Resolved (3)

- Duplicate URL generation logic across App and Server. `App.url_for` and `Server.url_for` appear to perform the same function (generating a URL for a job), but are exposed on different objects. `App.remote_url_for` is also distinct but likely related. This splits responsibility for URL generation between the App configuration and the Server runtime.
- Inconsistent accessor naming for singleton/app lookup. `Dragonfly` uses Ruby's standard `[]` syntax for class-level lookup, while `App` also uses `[]` but this is inconsistent with the explicit `instance(name)` method present on the same class. This creates confusion about whether `[]` is the primary accessor or a legacy alias.
- Projects may be oversized for their cohesion

## New (2)

- Inconsistent accessor style for the datastore property. The API exposes both a method `datastore()` and a property `datastore`. In Ruby, this usually implies one is a reader and one might be a writer or a distinct method, but given the property exists, the method is likely redundant or confusing.
- Redundant accessors for retrieving an App instance by name. Both the top-level Dragonfly module and the App class expose two methods that appear to do the same thing: a bracket notation ([]) and a named method (app/instance).
