Python canonical (`src/python_run/piper_plus/`, `src/python/piper_train/`, `src/python/g2p/piper_plus_g2p/`) ă〿Žăă PR ă§ă ONNX I/O 仄ć€ăźèżœéæŒă (phonemizer / config schema / CLI flag / data ćœąćŒ / API 〿Ž) ă 7 ă©ăłăżă€ă + 2 docker image çŻćČă§ fail-fast æ€ćșăăăPR
ZH-EN code-switching loanword ăźćæăš forward-compat ă 1 ăłăăłăă§æ€æ»ăzh_en_loanword.json ăç·šéăăă 5 ă©ăłăżă€ă ăźăăăăă«æ°èŠăšăłăăȘăèżœć ăăććŸă«ćŒă¶ăPython source ă canonical ăšăăRustĂ2 / Go / C# / WASM / C++ ăź 6 mirror + Python runtime mirror = èš 7 copy + 6 fixture mirror ă byte-for-byteâŠ
PR äœæćăźæç”ăă§ăăŻăȘăčă (lint/test/docs/CHANGELOG/æȘăłăăăçąșèȘ)ă/precheck ăźæĄćŒ”çă§ăăăă„ăĄăłăæŽćæ§ăæ€èšŒăăŸăă
æšè«ăăčăź canonical Python (`export_onnx.py` / `vits/models.py:VitsModel.infer`) ă〿Žăă PR ă§ă6 ă©ăłăżă€ă (Python runtime / Rust / Go / C# / C++ / WASM) ăź inference path ăèżœéăăŠăăăă git diff ă§çąșèȘăPR
piper-plus ăźăłăăăă«ăŒă« (CLAUDE.md æșæ ) ă§ăčăăŒăžæžăżăăĄă€ă«ăăłăăăăăŸăă--no-verify çŠæąăHEREDOCăé©ćăȘ prefix ăćŒ·ć¶ă
ăłăăăćă«ăšăŒăžă§ăłăăăŒă ă§ć šăăă„ăĄăłă (CLAUDE.md / README / CHANGELOG / docs/) ăçŁæ»ăăăłăŒă〿Žă«ćżăăŠèȘćæŽæ°ăăŸăăć€§èŠæšĄć€æŽæăź documentation drift ăäșéČă
9 ăăă±ăŒăž Ă 5 ăŹăžăčăăȘăź version bump ăšéąéŁăăĄă€ă«æŽæ° (Cargo.lock / package-lock.json / Swift checksum / CHANGELOG ææ Œ) ă 1 ăłăăłăă§é©çšæĄă«ăă read-mostly skillă`release-prep` (çąșèȘçš) ăźç¶ăă«ćŒăłă ćź bump ć·źćăź markdown ææĄ + é ćșä»ă publish ăŹă€ăăçæăăă
7 ă©ăłăżă€ă manifest ăź version äžèŠ§èĄšç€șăCHANGELOG `[Unreleased]` â `[X.Y.Z]` ç§»èĄæŻæŽăć Źé registry ăźææ°ć Źé version çąșèȘă 1 ăłăăłăă§ćźèĄăă read-mostly skillă`docs/spec/release-versions.toml` ă canonical source ăšăăŠćç §ă