docs: freeze original P24-03 selection acceptance contract

This commit is contained in:
Takeshi
2026-10-13 00:34:53 +09:00
parent 4fb8312a33
commit 9b2ee480a8
+66
View File
@@ -0,0 +1,66 @@
{
"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を確認し既存成果を再利用。正常なものを再実装せず、受入に必要な不足と不具合だけ修正する。",
"UI寿命/保存選択の担当はagy。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."
}