# 制約

公開ガイドは現行設計と同じ作者向け契約です。登録済みの参照・引数・型は[完全表](reference-contract.md)、上限・秘密値の扱い・未実装機能の境界は[実装パターン](authoring-patterns.md)を参照してください。APIキー、認証情報、実ユーザー・部屋の秘密状態をJSON・ガイド・例へ含めません。公開資料の詳しさを理由にサーバー検証や秘密情報保護を弱めません。

ターンマーカーの所有者は複数可設定で複数人にできます。チーム同時操作はメンバー全員へ付与します。手番なしで手番のみ操作ONなら全員の変更を既定禁止するため、再付与ボタンには別途操作許可が必要です。秘密情報の閲覧範囲や同一部品のロックを緩和せず、サーバーで競合操作を直列確定します。開始・終了は集合切替ごと1回です。

通常タブの非表示は倉庫用の表示設定で、秘密情報の根拠にはしません。倉庫の公開カードを検索・移動する処理に公開許可フラグは不要です。カードの本人／チーム限定・裏向きや、所有者付きタブ・変数の公開範囲の保護は解除しません。

一時値の公開範囲は保存前にも検証します。限定公開の値やその値に依存する条件結果を全員公開のログ・変数・共有処理へ渡す明確な矛盾は保存エラー、対象者・カード状態等で変化するものは保存可能な警告です。警告には該当処理へのリンクがあります。実行時の安全チェックは維持し、該当処理・参照元・公開先・停止理由を表示します。秘密の値・回答・カード内容は表示しません。公開が意図された場合に限り、既存の `temporaryPublish:true`（variable/message/logのみ）を編集者が明示します。自動的に公開設定へ変更せず、警告を消すために公開を有効化しないでください。保存形式の項目・版は変わりません。自動送信や専用送信機能はありません。

- ゲームルールは最大20ページ。
- ユーザー画像はPNG、JPEG、WebP、GIFのみ。任意のSVG・外部URLは禁止。ただしアプリ標準画像は別で、builtin-game-image-manifest.jsonの完全一致パスと、標準の番号付きサイコロ（7〜500）のサーバーSVG参照を許可する。埋込SVGは標準画像と内容が完全一致する場合だけ標準参照へ正規化する。改変SVG・任意パス・クエリ付きURLを許可する意味ではない。詳細はgame-data-spec.mdの画像仕様を参照。
- 画像参照は最大300件、画像をアセット参照に置き換えたゲーム定義・編集プロジェクトはUTF-8で各8MiB以下。画像本体を含む書出JSONのファイル容量とは異なります。部屋は固定定義込み16MiB。読込・書出は単一JSONのまま、内部のDB保存だけ自動分割します。画像容量・演出メモリ・一時値と処理量の上限は別です。
- IDは重複禁止。参照先は必ず存在すること。
- 重要部品は左右5%、上下8%の安全領域内へ置く。
- 操作対象は44×44以上を推奨。
- 山札と対応する捨て札は隣接させる。
- 意図しない部品の重なりを作らない。
- スマホ縦・横で操作UIを妨げない。

条件分岐の組合せは `branches[].conditionMode`（and／or、省略and）と `additionalConditions`（最大4件のCommonCondition）を使用する。元のleft/operator/right等は第一条件として維持し、分岐間は上から最初の成立を実行する。追加なしは旧形式と同じ。追加条件の深さ免除は不可。操作条件のプレイヤー文字比較はcomparisonValueKind="text"とtextValueを明示し、数値はvalue（旧形式は数値のまま）。固定テキストは候補に限定しない。内部IDを名称へ書き換えず、UI表示だけ名称を解決する。例: examples/compound-branch.json。

進行処理の組み方は[公開実装パターン](authoring-patterns.md#タイマー確認終局)を参照。phaseは同一sourceでも終了→開始を実行。messageParts（LogMessagePart配列）は実行時に解決し、messageConfig.severityはerror/warning/message。PlayerTarget.player-variableのoperator=max/minは数値の同点全員を返す。loopはmode=count/while/playersとbranches[0].actions、loopBreakで最内ループを終了、loop-playerで対象を参照する。実行中のruntimeLoopState/runtimeLoopFramesは作者JSONに保存しない。最大1000反復・10000ステップ・100フェーズ移動で停止する。旧データは変換不要、新操作を旧クライアントで実行する互換性は保証しない。

外部JSONの「読込」は、元の画像形式、公開Schema、処理の設定・参照・公開範囲を検証し、エラーを場所と理由の一覧で表示します。エラーがあるファイルは取り込まず、編集中のゲームを保持します。作者のSVG・外部画像URL・一時画像参照は使用できません。PNG・JPEG・WebP・GIFを埋め込んでください。正式な組込み画像の参照は既存の例外です。保存済み下書きを修復するために開く操作とは区別します。
