From 5536bc041188d53229d18f33f08b17d4d83b7590 Mon Sep 17 00:00:00 2001 From: Takeshi Date: Tue, 13 Oct 2026 00:19:30 +0900 Subject: [PATCH] docs: freeze reuse-only repair contract for mana proposal --- .../acceptance/P06-mana-proposal-r02.json | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 docs/spec/acceptance/P06-mana-proposal-r02.json diff --git a/docs/spec/acceptance/P06-mana-proposal-r02.json b/docs/spec/acceptance/P06-mana-proposal-r02.json new file mode 100644 index 0000000..2125b82 --- /dev/null +++ b/docs/spec/acceptance/P06-mana-proposal-r02.json @@ -0,0 +1,76 @@ +{ + "id": "MP-01-r02", + "linked_original_delivery": "P06-01", + "counting_scope": "owner-requested approval artifact only; not an additional delivery among the original 88 and not acceptance of P06-01", + "owner_request": "承認用の候補案を作成する。候補は承認まで実装値に反映しない。", + "work": "現実装値の根拠と全既存施設の需要を調べ、初期残量・容量・世界樹生成・マナ炉投入/生成・単位・更新順序・旧ゼロ保存の承認用候補を作る。", + "acceptance": "提案値と原本値/現実装値/試験値を区別し、計算を再現でき、原本制約と未確定範囲を維持し、製品へ未反映である。", + "source_authority": "docs/traceability/original/BASELINE.txt", + "related_original_contract": "docs/spec/acceptance/P06-01.json", + "known_original_constraints": [ + "枯渇時に全館機能停止", + "マナ炉6x3、裏地下、奴隷消費", + "人物の代替不可能/売却不可など別原本制約に反する投入を提案しない" + ], + "distinctions": [ + "GameState初期mana=100は初期残量の実装値。STARTER_MANA_OUTPUT=100はネットワーク供給能力の実装値であり、Mana/時刻あたり生成量として承認済みではない。", + "maintenance_manaの現在用途・時刻単位をコードから調べる。生成/消費への換算は提案として明示。", + "初期値、容量、周期、生成率、炉の投入量と出力量、旧ゼロの意味と旧保存の移行、同じ境界再送は別々に根拠を記載。" + ], + "required_outputs": [ + "proposal.json", + "PROPOSAL.md" + ], + "proposal_json_contract": { + "status": "proposed_unapproved", + "applied_to_product": false, + "required_top_level": [ + "recommended", + "alternatives", + "demand_catalog", + "ordering", + "legacy_zero", + "open_decisions", + "source_pins", + "comparisons" + ], + "recommended_numeric_fields": [ + "initial_amount", + "storage_capacity", + "world_tree_generation_per_interval", + "interval_minutes" + ], + "recommended_furnace": "explicit proposed input/output quantity, eligibility, timing; no actual actor consumption", + "demand_catalog_row_fields": [ + "definition_id", + "path", + "observed_maintenance_mana" + ], + "source_pins": "repo-relative path to current file SHA256; original/current implementation/fixture/candidate provenance must be distinct" + }, + "worker_instructions": [ + "承認用候補値の作成は許可済み。これは採用/数値確定ではない。提案を作るために未確定であることだけを理由に停止しない。", + "源値と単位を現sourceから調べ、推薦案1つと比較代替案を提示。負荷計算は式・入力・期間・結果を示し、未実装13施設等の需要はunknownとして全ゲーム予測をしない。", + "低負荷/通常/需要超過/0残量/容量上限/供給喪失と復帰/同分再送の設計比較を行う。これは候補式の計算であり実機受入試験ではない。", + "炉の投入は原本制約を守り、対象/タイミング/原子性/保存履歴/中断時の扱いを提案する。値が未承認なので人物/資源を実際に変更しない。", + "更新順序はD05未承認の現点を明記し、マナ評価の推奨順序と既存会計/勤務/サービス境界への影響を提案する。旧0を満量/無制限へ黙って変換しない。", + "製品source、元88成果のwork/acceptance、仕様原本、台帳、Runner、provider設定を編集しない。allowed_paths内の2成果だけ作成。", + "数値は提案として明確に表記し、PROPOSAL.mdの先頭に未承認・製品未反映を表示。根拠・不足・承認する範囲を明示する。", + "Runnerが別Claudeレビューする。作成者は正式試験/git書込み/統合/完了を自己確定しない。指定の提案条件を満たしたらsubmittedとして返す。", + "既存提案書2点をreuse_inputsから読み、同じ数値・根拠・比較を再利用する。全再調査や新しい数値設計を開始しない。必要な矛盾が見つかった場合だけ理由を明記して修正。", + "source_pinsは {repo-relative-path: raw-file-SHA256} 辞書へ修正。個別provenanceは別項目へ移す。maintenance_mana省略の4施設はFacilityDefinitionの既定0を根拠に0と記し、未知の原13施設を0扱いしない。", + "Runner契約spec_sha256は git show の返却文字列.strip()をUTF-8ハッシュ化する方式。ファイルの末尾改行を含む生バイトSHAと異なっても仕様改変ではない。個別source_pinsは生バイトSHAを用い、契約specの比較方法と混同しない。", + "今回のspecもRunnerハッシュ方式で一致を確認する。末尾改行差のみを理由にblockedを返さない。rootがscope/提出/正式検証/独立レビューを行う。" + ], + "revision_reason": "Reuse existing proposal; correct hash interpretation and source_pins serialization. No new original unit.", + "reuse_inputs": [ + { + "path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/mana-proposal/MP-01-implement/docs/plans/original-completion-2026-10-02/execution/mana-proposal/proposal.json", + "sha256": "aca6d781d5ce730c9f905b5dc817f27548b372b043beea68cf6de73761f6f0d2" + }, + { + "path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/mana-proposal/MP-01-implement/docs/plans/original-completion-2026-10-02/execution/mana-proposal/PROPOSAL.md", + "sha256": "95024959e7c301c6a68a24de36dd6629e45b189f9d038f4397757124ba0bb41f" + } + ] +}