<!--
Before opening this PR, read the Contribution and AI Policy in README.md.

Rules for contributions in this repository:
- Always start by opening an issue before starting implementation.
- Please try to write the issue yourself. A short issue with typos is better than a wall of AI-generated text.
- AI-generated code is allowed, but you must review it carefully before submitting.
- If this PR contains code that is clearly generated by AI and not reviewed by a human developer, you will be banned from contributing to this repository.
- If reviewing code generated by your agents is not worth your time, do not expect the maintainer to waste time reviewing it for you.
-->

## Contribution and AI Policy

- [ ] I have read and accept the Contribution and AI Policy in `README.md`, and I have reviewed this PR myself.
