# Changelog

## Score

- CAI 70 → 67 (-3.1)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 99 → 70 (-28.8)
- Architecture 100 → 100 (+0.0)
- Maturity 56 → 55 (-0.9)
- Readiness 70 → 72 (+1.5)
- Security 90 → 90 (+0.0)
- Performance 100 (new)

## Resolved (1)

- Workflow token permissions not restricted

## New (10)

- Ambiguous naming convention for equality checks. 'equals' implies full value and currency equality, while 'isSameCurrency' is explicit. However, in many contexts, 'equals' is the standard name for full equality. The potential confusion arises if a developer assumes 'equals' only checks currency or value independently. More critically, the existence of both suggests a split in intent that could be clearer, but they are distinct operations (full equality vs currency identity). This is a minor naming convention issue rather than a functional redundancy.
- Inconsistent return types and parameter handling between the domain object (Money) and the service layer (Teller). Money.add returns a Money object, while Teller.add returns a string. This forces the consumer to handle type conversion or know which layer they are interacting with, breaking the principle of least surprise if the Teller is expected to return domain objects.
- Orphaned file (benchmark/MoneyOperationBench.php)
- Orphaned file (src/CurrencyPair.php)
- Orphaned file (src/Exchange/IndirectExchange.php)
- Orphaned file (src/Teller.php)
- Workflow token permissions not restricted (.github/workflows/bench.yml)
- Workflow token permissions not restricted (.github/workflows/checks.yml)
- Workflow token permissions not restricted (.github/workflows/ci.yml)
- Workflow token permissions not restricted (.github/workflows/static.yml)

## Architecture

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