<!--
Thanks for the contribution. A short PR is easier to review than a careful
one — please prefer "one logical change per PR" even when that means splitting.
-->

## What

<!-- one or two sentences -->

## Why

<!-- the user / scenario this serves; link any related issue -->

## Spec impact

- [ ] No spec impact (just code / docs / tests)
- [ ] Changes wire format, manifest schema, or safety model — see RATIONALE.md
      for what we expect from this kind of change

## Checklist

- [ ] Tests added or updated
- [ ] `ruff check src tests` passes locally
- [ ] `pytest` passes locally
- [ ] CHANGELOG.md updated under `## [Unreleased]`
- [ ] If a public API or CLI changed, the README and `docs/RATIONALE.md` are
      consistent with the new behavior
