测试矩阵覆盖 py3.8 / 3.11 / 3.12 与 Windows;额外提供聚合 job `ci`, 分支保护只引用这一个稳定名字。pre-commit 在提交前跑同一套 ruff 规则。
pyproject 变更推送到 main 时触发发布;手动触发保留给回滚补发。