# Changelog

## Score

- CAI 67 → 67 (+0.0)
- Rubric changed (rubric-2026.09.8 → rubric-2026.09.16) — scores are not directly comparable.

## Lenses

- Code Health 96 → 96 (+0.0)
- Architecture 100 → 100 (+0.0)
- Maturity 59 → 59 (+0.0)
- Readiness 55 → 55 (+0.0)
- Security 100 → 100 (+0.0)

## Resolved (2)

- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)

## New (3)

- Ambiguous distinction between `on_slim_text` and `on_slim_text_inline`. The signatures differ only by the `type` parameter in the first method. It is unclear if `type` is a discriminator for block vs inline text, or if `on_slim_text_inline` is a specialized override. This suggests a potential duplication of intent or unclear state management.
- Inconsistent naming for the primary entry point method. While `call` is common in Ruby for callable objects, `Parser` uses `call(str)` while other components like `Engine` also use `call`. However, `Parser.initialize` takes `opts` while `Engine` does not have a visible constructor in the list (or it's implicit). More critically, `Slim.Parser.call` takes a `str` (string), whereas `Slim.Engine.call` takes `input` (likely a string or IO). This is minor, but the lack of a unified `parse` or `render` verb across the board (some use `call`, some use `run` in `Command`) is slightly inconsistent.
- Inconsistent parameter handling for attribute setting. `code_attr` takes an explicit `escape` boolean, while `attr` does not. It is unclear if `attr` assumes a default escape behavior or if it is for non-escaped attributes, creating ambiguity in how to correctly set attributes.
