## What does this PR do?
<!-- One sentence summary -->

## Type of change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
- [ ] Refactor (no behavior change)

## Testing
- [ ] Tests added for new behavior
- [ ] All existing tests pass locally (`pytest tests/`)
- [ ] Tested manually with `echotrace demo`

## Checklist
- [ ] `ruff check .` passes
- [ ] `ruff format --check .` passes
- [ ] CHANGELOG.md updated under [Unreleased]
- [ ] Version NOT bumped in pyproject.toml (that happens on release)

## Related issues
Closes #
