ADR-0013 シード付き乱数を状態層が所有しセーブに含める
| 状態 | accepted |
| 決定日 | 2026-08-09 |
| 区分 | アーキテクチャ |
死語
この ADR は 2026-08-09 時点の語彙で書かれている。 本文の次の語は、いま通じない。ただし乱数の扱いについての決定そのものは、この語の廃止に影響されていない。
| 本文中の語 | この ADR での意味 | 現在 |
|---|---|---|
| 白紙化 | 敵がページを白紙ページへ変える攻撃。乱数を使う箇所の例として挙げている | 廃止。敵はページを焼かない(ADR-0028) |
背景
旧ドキュメント群には乱数の話が一度も出てこなかった。 しかし《保存前と同一の観測結果が得られる》という要求は、乱数の内部状態を保存しない限り原理的に達成不可能である。デッキのシャッフル、白紙化対象の選択、マップ生成、報酬抽選、すべてが乱数に依存している。
決定
DeterministicRng を状態層が所有し、seed と state の両方をセーブに含める。core/ 内でのグローバル乱数(randi() / Array.shuffle() 等)を禁止する。
影響
- セーブ/ロードのラウンドトリップテストが、この契約の唯一の検証手段になった(テスト方針)
- シード共有によるバグ再現が可能になった