# Changelog

## Score

- CAI 63 → 67 (+3.5)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

## Lenses

- Code Health 83 → 83 (-0.0)
- Architecture 100 → 96 (-3.7)
- Maturity 48 → 53 (+5.0)
- Readiness 74 → 77 (+3.1)
- Security 70 → 76 (+5.9)
- Performance 85 (new)

## Resolved (4)

- Documentation: no installation or build instructions (README.md)
- Hotspot: tera/src/parsing/ast.rs (tera/src/parsing/ast.rs)
- Hotspot: tera/src/tera.rs (tera/src/tera.rs)
- Hotspot: tera/src/value/mod.rs (tera/src/value/mod.rs)

## New (8)

- Inconsistent error handling and return types for lookup operations. `Kwargs.get` returns `TeraResult` (implying it might fail or wrap the value), while `Context.get` returns `Value` directly (likely panicking or returning a default on miss). `Kwargs.must_get` suggests a variant that panics or errors, but `Context` lacks a `must_get` equivalent, making the API surface for accessing context data inconsistent between `Kwargs` and `Context`.
- Inconsistent parameter ordering for 'to' (write) variants. `render_str_to` includes `autoescape` before `write`, whereas `render_component_to` and `render_block_to` do not have an `autoescape` parameter in the same position (or at all, relying on global/state settings). More critically, `render_to` (for named templates) does not expose `autoescape` in the signature, while `render_str_to` does. This inconsistency in how autoescaping is handled across similar 'render to writer' methods is confusing.
- Incorrect return types for `as_array` and `as_bytes`. `as_map` returns `Map`, but `as_array` and `as_bytes` return `String`. This is likely a typo in the API definition (should probably return `Vec<Value>` and `Vec<u8>` or similar). Returning `String` for an array or bytes conversion is semantically incorrect and inconsistent with `as_map`.
- Off the main sequence: tera
- Outdated: indexmap
- Outdated: jiff
- Outdated: rand
- Redundant naming for identical functionality. `render_str` and `one_off` appear to perform the same operation (rendering a string template rather than a named template). The distinction is unclear from the signature alone, and having two methods for the same logical action creates confusion.
