{ "id": "P24-03", "title": "選択と保存の受入", "work": "施設・客・職員・レイヤーの選択を撤去、離脱、保存再起動に跨がせる。", "acceptance": "不在対象を参照せず、有効な選択と画面値が復元される。", "counting_scope": "one existing original unit among 30 packages/88 delivery units; no partial completion", "original_authority": "docs/traceability/original/BASELINE.txt", "approved_plan": "docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md", "required_conditions": [ { "id": "facility_lifecycle", "text": "有効施設の選択ID・表示値・地図強調を復元し、実撤去後は不存在参照を残さない。" }, { "id": "guest_lifecycle", "text": "有効客の選択・表示値を復元し、実離脱/除去後の現在状態に整合する。履歴の存在と現在の選択可能性を区別する。" }, { "id": "staff_lifecycle", "text": "有効職員の選択・表示値を復元し、許可された一般職員の実離脱後は不存在を参照しない。Unique人物の解雇/消去禁止を守る。" }, { "id": "layer_and_values", "text": "選択中レイヤーと画面値を正式保存し、別processの通常Mainで同じ状態を復元。UIで収集してもRuntimeを変えない。" }, { "id": "invalid_and_failed_load", "text": "不存在/不正型/過大ID/旧metadataを安全に扱い、失敗読込では現在選択とゲーム状態を保存する。" }, { "id": "normal_os_input", "text": "通常OSの選択・保存・別process再開の証拠が同一候補sourceと一致。関数呼び出し/pressed.emitのみをOS入力として扱わない。" }, { "id": "final_validation_review", "text": "必要な局所/影響範囲/正確な最終候補の全回帰と別Claude正式独立レビュー。試験件数を成果完了に代用しない。" } ], "implementation_instructions": [ "現sourceを確認し既存成果を再利用。正常なものを再実装せず、受入に必要な不足と不具合だけ修正する。", "プラグインのCodex実装担当がデータ整合/保存/選択寿命のGDScriptと検証器を実装する。AntigravityはUI設計や素材差替えが必要な場合の担当。今回は見た目/素材/操作仕様の新設は不要。rootはワーカーsourceを代筆しない。経済/人物/マナ/Clock順序/旧保存係数を変えない。", "原本とUnique保護を維持。離脱の履歴が残ること自体は不存在ではない。モデル状態を確認し表示/選択への扱いが整合することを証明。", "必要なら新局所suite tests/ui/test_selection_departure.gd と別processfixture tests/ui/fixtures/selection_cross_process.gd を追加。既存suite/cleanup/strict markersの条件を弱めない。正式試験はRunner/rootが実行し、作成者はgit書込み/他担当起動をしない。", "効率のため必要ならtools/run_all_tests.pyに--suiteを複数指定できる限定実行を追加。指定なしの全roster/parse範囲と既存ガードを維持し、限定実行はfull_regression=false、実行対象/全roster/同候補sourceを明記。未知suite/空指定は拒否。全回帰は最終候補で別途必要。", "tools/check_p24_selection_evidence.py を作成。--verify-onlyはBUILD_OUTPUT_DIR/p24-evidence/index.jsonを読む。証拠がない/古いsource/未実行/条件不足なら非0。UI証拠の自己申告trueだけを受入にしない。source_map、PID、正式saveの整合、ログ/画面/OS入力、全回帰を具体的artifactと突合する。", "indexにはrequired_conditionsの全IDごとに根拠artifact/適用sourceを持たせ、native/cross-process/OS/full regressionを区別し、欠損条件を報告する。machine validationが通っても元単位を自己完了にしない。", "テストpolicy/marker追加は新suiteだけ、既存コードを変更したsuiteのSHA更新は理由記載。件数の水増し、assert削除、全状態の切り捨て、teardownの終了強制、外部PID/個人profile操作は禁止。", "docs/plans/original-completion-2026-10-02/execution/p24-03/に条件matrixと変更/不足/実行計画を記載。未実行証拠はpending。OS操作やWindowsが未実行でもコード提出はsubmittedとして可、元成果の完了は全必要証拠と独立レビュー後のみ。", "spec_sha256はRunnerがgit show文字列.strip()をUTF-8でハッシュした値。末尾改行を含むraw SHAとの違いだけでblockedにしない。根拠source_pinsはraw bytes SHA。", "旧別worktreeの外部パスを必要入力にしない。全入力はこのrepo内の現在sourceと固定specで得られる。provider/Runner/台帳/原本を編集せず上限を変えない。" ], "current_source_pins": { "scenes/main/main.gd": "a3d7d7ddd08a8df1f987806e60accf51792d728cf71c06e6b822f5a31d8ed3e3", "scripts/ui/guest_observation_panel.gd": "67ffc6404262d803a6d677853f327759c3e68c592cc6c8a88a1ebd20aca239f2", "scripts/ui/staff_management_panel.gd": "df3120130956b300d1349cb758c0aa30dfd7da5e0774fb7fb9a1f3e4e0786fb2", "scripts/guest/guest_service.gd": "56880410e9a00816f9a95d30821982955532de8dd976980934e12016a9f2b21e", "scripts/staff/staff_service.gd": "355ad5c3c9f85dc4d4ffc3bc4293e36f81078c403d1662512a735b2c8d815fb3", "tests/ui/test_actor_selection.gd": "f37a0f4805adce4b538fccde1404c1a417f20639fddf36947f076d88409ba0a3", "tests/ui/test_selection_lifecycle.gd": "ed68b120f422e1b37b8cf0654b6d6605458fe01c7e5d84decc3ba6f4e9366c47", "tests/ui/test_selection_autosave.gd": "1d7d267ef171041f77241c4c2f1a1bb55a46253f803d5c496507e934bc8fa815", "tools/run_all_tests.py": "320ca668732b4ff72fc4449998af2327d4e5c527b06896740806aaf0487282b4", "tools/regression/suite-policy.json": "3d420b9f6ff50d9212a5960eaa9094bca710d2e12b3b652607f2672f2266c29e" }, "existing_evidence_reuse": "No current pass proof established yet; old test sources reusable, results only after version/config/input/environment/applicability match", "dependencies": "Package dependencies are integration prerequisites, not automatic whole-package prerequisite for this vertical slice. Existing save/update/UI contracts must be verified for current candidate. Windows-specific conditions remain separately unaccepted; Mac gaps are work, not environment blockers.", "operational_revision": "code-role-r02; same original P24-03 work, acceptance, conditions and scope; AGY run cancelled after repeated read-only calls and zero edits", "reassignment_authority": "窓口が、ユーザーの複数AI開発体制(Codex実装/agy UI)の既存許可とClaude診断19dce17d054d4ea89f3d5d614f84b494に基づき担当分界を訂正。原仕様/受入/予算/上限/権限の変更はない。" }