# リリースプロセスリファレンス

Taida は Semantic Versioning を採用しません。公開バージョンは
世代番号とビルド番号で表現します。

```text
<世代>.<番号>[.<ラベル>]
```

実際に押下する安定リリースのタグはリリースゲートで決定します。
本書は、互換性判断が各バージョン構成要素にどう対応するかを定義します。

---

## バージョン構成要素

| 構成要素 | 意味 |
|----------|------|
| `<世代>` | 世代番号。公開仕様を壊す変更が land する際に進めます。 |
| `<番号>` | 同一世代内のビルド番号。追加変更とバグ修正で進めます。 |
| `<ラベル>` | 任意のプレリリース識別子。安定リリースでは省略します。 |

ビルド番号は単調増加です。あるプレリリースタグが、同じ番号の
安定タグへ自動的に昇格することはありません。安定タグは独立した
リリース判断として扱います。

---

## 公開仕様を壊す変更

既存の公開仕様を削除・改名・厳格化する変更、あるいは既存の公開
仕様の観測可能な挙動を変える変更は、公開仕様を壊す変更です。
代表例:

- 演算子の削除または改名
- プレリュード関数・モールド・型・CLI コマンド・文書化済みフラグの
  削除または改名
- 型シグネチャやマニフェストスキーマの厳格化
- 公開診断コードの廃止または番号再割り当て
- 文書化済み API の観測可能な意味を変更し、それまで有効だった
  プログラムが失敗する、もしくは異なる値を計算するようになる変更

公開仕様を壊す変更は世代番号の繰り上げでのみ land します。当該
変更を含むリリースの前には、移行ガイドを用意します。

---

## 追加変更

それまで有効だったプログラムをそのまま動かしたまま追加できる
変更は、ビルド番号の繰り上げで land します。代表例:

- 新しいプレリュード関数・メソッドの追加
- 既定挙動を変えない、省略可能なマニフェストフィールドの追加
- 既存ターゲットの意味を変えない、新しいターゲット文字列の受理
- 未使用の公開診断コード帯における新規コードの追加

追加変更であっても、リリース前にはバックエンド間の挙動一致と
ドキュメントカバレッジをレビューします。

---

## バグ修正

それまでの挙動が文書化済みのバグ、もしくは明らかに意図されない
挙動だった場合、バグ修正はビルド番号の繰り上げで land できます。

一方で、当該修正がきちんと書かれたプログラムを壊しうる観測可能な
挙動変更を含む場合は、公開仕様を壊す変更として扱い、次の世代まで
保留します。判断が曖昧なケースも、公開仕様を壊す変更として扱います。

---

## 非推奨化

公開シンボル・CLI フラグ・マニフェストフィールドは同一世代内で
非推奨化できます。非推奨化は警告を出力しますが、公開仕様からは
削除しません。

削除できるのは次の世代繰り上げ以降です。非推奨として維持する
最短期間は 1 世代です。

---

## 安定仕様の参照先

互換性判断は次の公開リファレンスを根拠にします。

- `docs/reference/operators.md`
- `docs/reference/cli.md`
- `docs/reference/diagnostic_codes.md`
- `docs/reference/addon_manifest.md`
- `docs/reference/wasm_profiles.md`
- `docs/reference/perf_gates.md`
- `docs/api/prelude.md` (プレリュード関数 / ビルトイン型メソッド / コレクション)
- `docs/api/os.md`, `docs/api/net.md`, `docs/api/crypto.md`, `docs/api/pool.md`, `docs/api/build_descriptors.md` (コア同梱パッケージ API)
- `docs/api/js.md` (旧 JS ターゲット互換 API。正式パリティ契約には含めない)
- `docs/guide/05_mold.md` (モールド型の解剖とユーザー定義)

---

## 非保証範囲

次の項目は公開仕様の保証範囲には含まれません。利用者は自己責任で
これらに依存することになり、ビルド番号の繰り上げで変化することが
あります。

- Taida 本体の内部実装 (パーサ、型システム、インタプリタ、各バック
  エンドのコード生成、アドオンローダーなど)
- `taida build` が出力するネイティブバイナリ・WASM 成果物のオンディスク
  形式。再現性の保証はソースコード水準であり、バイナリ水準ではありません
- 診断メッセージの正確な文言（公開診断コードそのものは安定仕様）
- 任意のワークロードの実時間性能。perf ゲートで監視はしますが、
  数値そのものは契約対象ではありません
- 実行ホストのリソース枯渇時の挙動（OOM 終了など）。ネイティブ
  ランタイムは致命的なアロケーションメッセージを出して終了ステータス
  1 で停止することがあります。バックエンド間で OOM メッセージや
  回復挙動の一致は保証しません
- アドオン ABI のメジャーバージョン（互換のある追加スロットは
  ビルド番号の繰り上げで land しますが、メジャー改訂は世代繰り上げが
  必要です）
- 配布アーティファクトに含まれない内部開発用ファイル
