Compare commits

..
39 changed files with 25718 additions and 20 deletions
@@ -3784,7 +3784,7 @@
"template": "Peeping room runtime: <checks> checks, <failures> failures",
"required": true,
"fixed_check_count_used": false,
"source_sha256_at_schema_audit": "30ed2fe11cc6b0353e9a3a6d995cf8690d322858d2c3dbb38ef32fd941072d2d",
"source_sha256_at_schema_audit": "924efd34414c12a325a1b700f799aef0396de9f15441fd88a3608292ff221657",
"authority": {
"path": "docs/plans/original-completion-2026-10-02/execution/p13-02/CODE1_TASK_SPEC.json",
"scope": "new backend suite marker; native execution pending"
@@ -0,0 +1,18 @@
{
"actual_suites": 184,
"missing_marker_paths": [],
"remaining_unexecuted_tests": [],
"available_marker_checks": 21903,
"actual_all_roster_checks": 21903,
"strict_accepted_checks": 21903,
"verified": true,
"composed": true,
"original_full_attempt_passed": false,
"whole_original_acceptance": false,
"parse_checks": 329,
"setup_phases": 2,
"owned_ended": 186,
"tested_source": "a7e3069b167511b3194242b3403fbcc35244a526",
"engines_started": 0,
"verifier_sha256": "d00bf46bfcc0e0bb197edd284a3ae14610ca710507831e18e071a79461946e8a"
}
@@ -0,0 +1,73 @@
{
"controller_sha256": "d00bf46bfcc0e0bb197edd284a3ae14610ca710507831e18e071a79461946e8a",
"harness_sha256": "744177b243fb97ff7ad954880a433acf6a9b879c06d4ee51cfe02ed95be29422",
"cases": [
{
"case": "copytree string arguments create separate byte-exact support files",
"expected": "accept",
"actual": "accept"
},
{
"case": "exact whole private-profile move and readback",
"expected": "accept",
"actual": "accept"
},
{
"case": "absent empty startup profile explicitly retained",
"expected": "accept",
"actual": "accept"
},
{
"case": "reject unowned profile name",
"expected": "reject",
"actual": "reject"
},
{
"case": "reject valid nonce at wrong canonical location",
"expected": "reject",
"actual": "reject"
},
{
"case": "reject changed original profile",
"expected": "reject",
"actual": "reject"
},
{
"case": "reject undeclared profile member",
"expected": "reject",
"actual": "reject"
},
{
"case": "reject profile symlink",
"expected": "reject",
"actual": "reject"
},
{
"case": "reject existing retention destination",
"expected": "reject",
"actual": "reject"
},
{
"case": "large profile lossless compression entire readback",
"expected": "accept",
"actual": "accept"
},
{
"case": "reject compressed bytes changed",
"expected": "reject",
"actual": "reject"
},
{
"case": "reject incomplete compressed member manifest",
"expected": "reject",
"actual": "reject"
},
{
"case": "reject invalid archive hash",
"expected": "reject",
"actual": "reject"
}
],
"passed": true,
"native_engines_started": 0
}
@@ -0,0 +1,27 @@
{
"task_id": "P13-02-CODE1",
"commit": "a7e3069b167511b3194242b3403fbcc35244a526",
"status": "pass",
"summary": "判定: pass。ただし対象は登録済みの限定バックエンド CODE1 のみです。親の P13-02 は完了していないままで、30/88・formal 14/88 の分母にも加算しません。\n\n【実装の照合(仕様のすべての要件・カバレッジ項目と突き合わせ)】\n- 構成: PeepingRoomService を独立サービスとして追加し、Runtime 側の接続は限定的です。\n - 生成と読み込みのたびに構成し直し、施設登録解除と解体の両方で接続しています。\n - コマンドは validate / place / relink / record_evidence の4種で、通常の実行キューを通ります。\n- 配置判定: 2x1 の BACK 配置が、許可された完成済み FRONT 対象1つの真裏に完全に収まるかを検査します。\n - 拒否理由を網羅しています: 層違い、形状違い、範囲外、未掘削、建設中、対象なし、部分重なり、複数対象、対象不一致、不明対象、許可外対象、通路衝突(World の歩行可否と Path の両方で判定)、BACK 占有済み。\n - vip_suite は PENDING_P10_01 として扱い、vip_private_salon を代用に使わないことを確認しました。\n- 対象の同一性:\n - 撤去すると TARGET_LOST になり、停止状態に固定されます。\n - 同じ位置に再建すると別の ID になり、自動で再リンクしません。\n - 明示的な relink は配置判定をすべてやり直し、停止状態(RELINKED_PENDING_RESUME)のまま残ります。\n - target_history に過去の対象 ID を残すため、既存の証拠が孤立しません。\n- 証拠 ID: (room, target, source_event_key) を長さ付き UTF-8 の hex で符号化しており、単射です。\n - 同じイベントの再実行は同一 ID を返し、記録は増えません。\n - 部屋や対象が違えば ID も別になり、取り違えは起きません。\n- 本番経路の封じ込め:\n - 本番の記録は RECORDER_ELIGIBILITY_PENDING_D04_D08_P16 で拒否され、台帳を変えません。\n - place は BUILD_DEFINITION_PENDING_D04 を返すだけです。テストで、ドメインイベントの受領が1件だけ発行され、それ以外の ID とドメインデータが変わらないことを確認しています。\n - CONTROLLED_FIXTURE 用のメソッドは公開コマンドやパレットから呼べません。\n - 停止中 / 無電力 / 閉店 / 建設中 / 対象喪失 の各ケースで収集を拒否します。\n- 保存:\n - Runtime のバージョンは 14 / 15 のままで、format2 は MIMI15 の場合だけです。\n - 新セクションは任意キーで、空のときは出力しません。セクションのない本物の旧形式セーブは空として移行します。\n - 現行形式で不正なものは全体をそのまま保ったまま原子的に拒否し、元の Runtime を壊しません。対象は、セクション欠落 / null / バージョン / 未知キー / 重複 / 参照不正 / 時刻 / ID 上限 / 型 / 孤立占有、およびその逆方向の不整合で、テストの18変異ケースと孤立ケースで確認しています。\n - SaveService は同じ検証器を通したうえで、購入用の許可キー一覧を元のまま維持しています。\n\n【検証証跡】\n- 登録済みの p13-reference 検証は exit 0 で通過しています(narrow 15 スイート / 863 チェック / 構文 329 / 終了 17)。\n- 全体の 184 スイート / 21903 チェックは合成検証です。\n - 構成: 元の通し実行は ENOSPC で失敗しており、失敗のまま残っています。その前半58スイートを再検証し、後半126スイートを実際に実行した結果を組み合わせたものです。\n - 結果: 読み取り専用の集計で verified / composed=true(ネイティブ終了 186 件、すべて一意)を、元の通し実行と対象コミットに紐付いた記録で確認しました。\n- 自己申告だけに依拠していません。\n\n【残る後続ゲート】\n- 最終版でのリグレッション、通常の統合と最終確定。\n- D04 / D08 / P16 の数値、記録係の配置、自然な収集トリガー、VIP(P10-01)、P19 / P24、通常のパレット登録、Windows 条件。",
"acceptance_ids": [
"P13-02-CODE1"
],
"findings": [
{
"severity": "low",
"message": "create_snapshot は対象喪失を正規化しません(detect_target_loss は収集時にだけ遅延実行されます)。そのため、シグナルを経ずに対象が消えた場合は LINKED の部屋が残ります。こうして書かれたセーブは restore_section の配置判定で全体が拒否され、読み込めなくなります。現状、そのような経路は確認できませんでした(facility_service.restore_snapshot はシグナルを出さず、ロールバックは既存の対象を消しません)。ただし、スナップショット生成時に正規化するか、後続で防御策を入れることを推奨します。"
},
{
"severity": "low",
"message": "Runtime の schema バージョンが 5 未満(v1〜4)の旧形式に special_peeping_rooms があっても拒否されず、検証を通れば受理されます。仕様の「本物の旧形式はセクションなし」に照らすと、偽装された旧ペイロードを受け入れる余地がわずかにあります。中身は restore_section で厳密に検証されるため、実害は小さいと判断します。"
},
{
"severity": "low",
"message": "施設の寸法移行(prepare_facility_dimension_snapshot)で public_bath / adult_private_room の占有セルが変わると、LINKED の部屋の再検証に失敗し、移行全体が拒否されます。現在の部屋はテスト用フィクスチャでしか作れないため影響は限定的です。後続の本番配置の実装時に扱いを決める必要があります。"
},
{
"severity": "low",
"message": "「建設中なら収集を拒否」の分岐は、本番状態では到達できません。テストは ConstructionService を差し替えて確認しており、意味上の網羅としては人工的です。配置判定も、建物定義(D04)が未定のため construction_service.validate_placement(支持・重量の判定)を使っていません。いずれも仕様の「未定値を発明しない」範囲内として許容しますが、記録に残します。"
}
]
}
@@ -0,0 +1,9 @@
{
"passed": true,
"error": null,
"ended_unix_ns": 1792230973546897000,
"controller_sha256": "d00bf46bfcc0e0bb197edd284a3ae14610ca710507831e18e071a79461946e8a",
"owner_runner_pid": 92258,
"original_full_attempt_passed": false,
"whole_original_acceptance": false
}
@@ -0,0 +1,80 @@
{
"source": "a7e3069b167511b3194242b3403fbcc35244a526",
"original_import_and_parse_passed": 2,
"reusable_suites": 58,
"raw057_qualified_after_archival_recovery": true,
"original_owned_ended_pids": [
73903,
73987,
74026,
74052,
74079,
74092,
74125,
74151,
74171,
74194,
74212,
74236,
74256,
74284,
74327,
74632,
75319,
75331,
75368,
75392,
75429,
75453,
75466,
75555,
75577,
75603,
75619,
75654,
75687,
75932,
76254,
76409,
76434,
76455,
76480,
76487,
76566,
76851,
76898,
76931,
76945,
76973,
76989,
77012,
77035,
77087,
77108,
77120,
77143,
77158,
77179,
77206,
77240,
77253,
77277,
77297,
77325,
77340,
77364,
77382
],
"original_checks": 10991,
"remaining_suites": 126,
"engine_runs": 0,
"whole_original_acceptance": false,
"original_full_attempt_passed": false,
"controller_sha256": "d00bf46bfcc0e0bb197edd284a3ae14610ca710507831e18e071a79461946e8a",
"free_bytes": 4484616192,
"admission_required_bytes": 3467374666,
"root_owner_pid": 92258,
"run_id": "52bfe67d08e54acd9478d74d5b030293",
"started_unix_ns": 1792229968318418000,
"original_input_sha256": "24d10b3a91553df54b3b2fd4b1a57dce683cc72a55576e0c73c9e142b335ad40"
}
@@ -0,0 +1,115 @@
{
"at_jst": "2026-10-17T19:05:57.762697+09:00",
"plan_id": "P13-02",
"batch": "P13-02-CODE1",
"S": "a7e3069b167511b3194242b3403fbcc35244a526",
"original_packages": 30,
"original_units": 88,
"formally_completed": 14,
"new_credit": 0,
"normal_validation": "passed; exact S narrow15/863/329parse/17nativeended",
"actual_full": {
"actual_suites": 184,
"missing_marker_paths": [],
"remaining_unexecuted_tests": [],
"available_marker_checks": 21903,
"actual_all_roster_checks": 21903,
"strict_accepted_checks": 21903,
"verified": true,
"composed": true,
"original_full_attempt_passed": false,
"whole_original_acceptance": false,
"parse_checks": 329,
"setup_phases": 2,
"owned_ended": 186,
"tested_source": "a7e3069b167511b3194242b3403fbcc35244a526",
"engines_started": 0,
"verifier_sha256": "d00bf46bfcc0e0bb197edd284a3ae14610ca710507831e18e071a79461946e8a"
},
"formal_review": {
"state": "terminal_pass",
"run_id": "ead8e74b9683404d8cf3d97bca118726",
"model": "claude-opus-5-5",
"critical_high_medium": 0,
"low": 4,
"artifact": "ACTUAL_INDEPENDENT_OPUS_REVIEW.json"
},
"normal_integration_candidate": "65f07bf5eaa759a8e2e17c7bdbbbdbceb24ee373",
"source_on_main": true,
"remaining_conditions": [
"Whole original P13-02 normal construction/recorder/natural triggers/approved quantities/VIP/UI/assets/Windows and all original conditions remain unaccepted; CODE1 has no new original-unit credit",
"Four low severity future-production defensive/migration/coverage observations retained from actual Opus review; no observed ordinary production path and no critical/high/medium finding",
"P04-01 remains next original formal closure when existing D05 owner choices arrive; independent next original-unit selection will be requested from actual Opus"
],
"evidence": [
{
"path": "ACTUAL_AGGREGATE_READONLY_VERIFICATION.json",
"original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-full-composed-readonly-verification-a7e3069.json",
"bytes": 562,
"sha256": "3a8be9f92c76d14dc1c9f6d387fad8e939d0d333a6f8d5903b53b8fc44ef584b"
},
{
"path": "ACTUAL_SUFFIX_INPUT.json",
"original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-full-continuation-a7/controller-input.json",
"bytes": 1401,
"sha256": "81c3dcfdd092fde977c158482310f164a727a73dabea698e18807eeb585d4937"
},
{
"path": "ACTUAL_SUFFIX_ENDED.json",
"original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-full-continuation-a7/controller-ended.json",
"bytes": 277,
"sha256": "b0759724f65175e01822b94ee731b3b9574c5098b82ce931e73e087fc5a89c65"
},
{
"path": "ACTUAL_CONTINUATION_CONTROLS.json",
"original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-full-continuation-a7/CONTINUATION_STORAGE_CONTROLS.json",
"bytes": 1846,
"sha256": "96f47033ef95614426cb8646f7a4fbfedcb5af6bd95a0ab1e54a802d3eed77a6"
},
{
"path": "ACTUAL_INDEPENDENT_OPUS_REVIEW.json",
"actual_original": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/ead8e74b9683404d8cf3d97bca118726/result.json",
"bytes": 6753,
"sha256": "cc12bb1011da2f3a21018da8fdde966a13e70dcf33ef7c83310dcf0ca08f4ec8"
},
{
"path": "FORMAL_VALIDATION.json",
"actual_original": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/6df11a390bc44b48a10c916cbeab95c9-validation.json",
"bytes": 380,
"sha256": "d9e73b97bb173a75931a0263119ff6430a2049e204ca459fbb53ca04b8aa0e4a"
},
{
"path": "FORMAL_INTEGRATION.json",
"actual_original": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/562e2bb9ca8b4f458d0cc011edd41cc4-integration.json",
"bytes": 381,
"sha256": "513ab79bd5fadafb929d5ad3201a8e9d5ff0e826eda37a80c831d82327940d8e"
},
{
"path": "FORMAL_FINAL.json",
"actual_original": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/45fdaf3b82c84e1485ad0d4cc7bf993c-final.json",
"bytes": 375,
"sha256": "213af13d38587ff108802fc96f6c410af6e9bf66ab6bb683963af62d36ecae2f"
},
{
"path": "RUNNER_COMPLETED_TRACEABILITY.json",
"actual_original": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/traceability/P13-02-CODE1.json",
"bytes": 3697,
"sha256": "c11f2f390bfe3222dc4e955fb001878ba5db03deafd1b85534299da758354250"
},
{
"path": "EXACT_INTEGRATED_FULL_REUSE_QUALIFICATION.json",
"actual_original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/coordinator-start-20261017/EXACT_C65F07B_FULL_REUSE_QUALIFICATION.json",
"bytes": 1487,
"sha256": "b5c4f52638b34be0c95030486560d1ce8ed83f48e855a2fddfef528e6e635721"
}
],
"next_formal_original_unit": "P04-01 pending existing real-owner D05 choices; no duplicate request or fabricated approval",
"backend_batch_state": "completed",
"normal_main_base": "191ea3b4d1289144d8d31096f50fbd71435656c9",
"normal_final": {
"passed": true,
"commit": "65f07bf5eaa759a8e2e17c7bdbbbdbceb24ee373",
"artifact": "FORMAL_FINAL.json"
},
"whole_original_acceptance": false
}
@@ -0,0 +1,35 @@
{
"S": "a7e3069b167511b3194242b3403fbcc35244a526",
"C": "65f07bf5eaa759a8e2e17c7bdbbbdbceb24ee373",
"M": "191ea3b4d1289144d8d31096f50fbd71435656c9",
"candidate_worktree": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/P13-02-CODE1-integration-15cc1271",
"whole_selected_source_files": 1368,
"all_source_settings_assets_test_inputs_helpers_byte_equal": true,
"marker_policy_engine_roster_parse_default_player_equal": true,
"full_evidence_reuse_qualified": true,
"original_full_attempt_passed": false,
"whole_original_acceptance": false,
"aggregate": {
"actual_suites": 184,
"missing_marker_paths": [],
"remaining_unexecuted_tests": [],
"available_marker_checks": 21903,
"actual_all_roster_checks": 21903,
"strict_accepted_checks": 21903,
"verified": true,
"composed": true,
"original_full_attempt_passed": false,
"whole_original_acceptance": false,
"parse_checks": 329,
"setup_phases": 2,
"owned_ended": 186,
"tested_source": "a7e3069b167511b3194242b3403fbcc35244a526",
"engines_started": 0,
"verifier_sha256": "d00bf46bfcc0e0bb197edd284a3ae14610ca710507831e18e071a79461946e8a"
},
"actual_independent_review": "ead8e74b9683404d8cf3d97bca118726",
"critical_high_medium": 0,
"low_findings": 4,
"ownership_authority": "Existing explicit human main-update and commit/push permission only; no new SHA-specific human speech is claimed",
"time_ns": 1792231367426496000
}
@@ -0,0 +1,14 @@
{
"task_id": "P13-02-CODE1",
"commit": "65f07bf5eaa759a8e2e17c7bdbbbdbceb24ee373",
"kind": "final",
"checks": [
{
"id": "p13-reference",
"exit_code": 0,
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/2add11628b67481495b3782fa64dee52",
"passed": true
}
],
"passed": true
}
@@ -0,0 +1,14 @@
{
"task_id": "P13-02-CODE1",
"commit": "65f07bf5eaa759a8e2e17c7bdbbbdbceb24ee373",
"kind": "integration",
"checks": [
{
"id": "p13-reference",
"exit_code": 0,
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/19d3100d61564e3c9878624d2d8ea496",
"passed": true
}
],
"passed": true
}
@@ -0,0 +1,14 @@
{
"task_id": "P13-02-CODE1",
"commit": "a7e3069b167511b3194242b3403fbcc35244a526",
"kind": "validation",
"checks": [
{
"id": "p13-reference",
"exit_code": 0,
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/339d1c3cc94648aa94b00a750a5fa5ce",
"passed": true
}
],
"passed": true
}
@@ -0,0 +1,22 @@
{
"source_review": "ead8e74b9683404d8cf3d97bca118726",
"scope": "Future normal production unlock and dimension-migration defensive handling; no mandatory CODE1 gate remains, parent P13-02 incomplete",
"findings": [
{
"severity": "low",
"message": "create_snapshot は対象喪失を正規化しません(detect_target_loss は収集時にだけ遅延実行されます)。そのため、シグナルを経ずに対象が消えた場合は LINKED の部屋が残ります。こうして書かれたセーブは restore_section の配置判定で全体が拒否され、読み込めなくなります。現状、そのような経路は確認できませんでした(facility_service.restore_snapshot はシグナルを出さず、ロールバックは既存の対象を消しません)。ただし、スナップショット生成時に正規化するか、後続で防御策を入れることを推奨します。"
},
{
"severity": "low",
"message": "Runtime の schema バージョンが 5 未満(v1〜4)の旧形式に special_peeping_rooms があっても拒否されず、検証を通れば受理されます。仕様の「本物の旧形式はセクションなし」に照らすと、偽装された旧ペイロードを受け入れる余地がわずかにあります。中身は restore_section で厳密に検証されるため、実害は小さいと判断します。"
},
{
"severity": "low",
"message": "施設の寸法移行(prepare_facility_dimension_snapshot)で public_bath / adult_private_room の占有セルが変わると、LINKED の部屋の再検証に失敗し、移行全体が拒否されます。現在の部屋はテスト用フィクスチャでしか作れないため影響は限定的です。後続の本番配置の実装時に扱いを決める必要があります。"
},
{
"severity": "low",
"message": "「建設中なら収集を拒否」の分岐は、本番状態では到達できません。テストは ConstructionService を差し替えて確認しており、意味上の網羅としては人工的です。配置判定も、建物定義(D04)が未定のため construction_service.validate_placement(支持・重量の判定)を使っていません。いずれも仕様の「未定値を発明しない」範囲内として許容しますが、記録に残します。"
}
]
}
@@ -0,0 +1,88 @@
{
"contract": {
"id": "P13-02-CODE1",
"title": "P13-02 背面対象参照・占有・保存の非描写機構(全原成果の一部、加算なし)",
"requirement_ids": [
"P13-02"
],
"acceptance_ids": [
"P13-02-CODE1"
],
"spec_ref": "docs/plans/original-completion-2026-10-02/execution/p13-02/CODE1_TASK_SPEC.json",
"base_commit": "1e8d4ea88876865a72547ff0edf43ed5b0e74c7e",
"worker": "codex",
"allowed_paths": [
"scripts/special/peeping_room_service.gd",
"autoload/simulation_runtime.gd",
"scripts/core/save_service.gd",
"tests/special/**",
"tools/run_p13_reference_tests.py",
"docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json",
"docs/plans/original-completion-2026-10-02/execution/p13-02/**"
],
"depends_on": [],
"resource_locks": [
"runtime-save-schema",
"special-target-reference",
"p13-reference-tests"
],
"validation_ids": [
"p13-reference"
],
"max_repair_attempts": null,
"spec_sha256": "8ea65f2eefedc772c08170186f5cd03ac017432f4b069ade4f9210d4215c2d43"
},
"implementation_commit": "a7e3069b167511b3194242b3403fbcc35244a526",
"integration_commit": "65f07bf5eaa759a8e2e17c7bdbbbdbceb24ee373",
"owner": "このチャットのユーザーによる既存の明示指示「mainの更新を明示的に許可します」「コミットすべき内容をコミットして。その上でpushして」に基づく継続許可。対象は全条件レビュー合格の登録CODE1と、この実C/M。新たなSHA指定の人間発言は主張しない。原P13-02の完了加算なし。",
"evidence": [
{
"id": 1,
"task_id": "P13-02-CODE1",
"kind": "validation",
"commit_sha": "e930a1dedff7ab4c4a94d274a2e0c55fc2b95829",
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/212e4352722a442990b6fe923abe8f84-validation.json",
"passed": 0
},
{
"id": 2,
"task_id": "P13-02-CODE1",
"kind": "validation",
"commit_sha": "27fc5f05442ca3a2b0986a976b303cf0ef675f66",
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/5526523400ff41b6aeacd0d6f8ffd9b9-validation.json",
"passed": 0
},
{
"id": 3,
"task_id": "P13-02-CODE1",
"kind": "validation",
"commit_sha": "a7e3069b167511b3194242b3403fbcc35244a526",
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/6df11a390bc44b48a10c916cbeab95c9-validation.json",
"passed": 1
},
{
"id": 4,
"task_id": "P13-02-CODE1",
"kind": "review",
"commit_sha": "a7e3069b167511b3194242b3403fbcc35244a526",
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/ead8e74b9683404d8cf3d97bca118726/result.json",
"passed": 1
},
{
"id": 5,
"task_id": "P13-02-CODE1",
"kind": "integration",
"commit_sha": "65f07bf5eaa759a8e2e17c7bdbbbdbceb24ee373",
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/562e2bb9ca8b4f458d0cc011edd41cc4-integration.json",
"passed": 1
},
{
"id": 6,
"task_id": "P13-02-CODE1",
"kind": "final",
"commit_sha": "65f07bf5eaa759a8e2e17c7bdbbbdbceb24ee373",
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/45fdaf3b82c84e1485ad0d4cc7bf993c-final.json",
"passed": 1
}
]
}
@@ -0,0 +1,209 @@
{
"scripts/special/peeping_room_service.gd.uid": {
"owner": "scripts/special/peeping_room_service.gd",
"owner_sha256": "4dc02bc99f081d63a2518f69c960397d778d577b93d87d57bcac29bc6f108531",
"file_type": "regular",
"bytes": 20,
"raw_bytes": [
117,
105,
100,
58,
47,
47,
98,
105,
51,
54,
102,
118,
112,
49,
106,
105,
105,
105,
118,
10
],
"sha256": "3f045afc3c140886c70ec8494d6dcb012e6da645e8a3ff3c6488442ce63a9353",
"text": "uid://bi36fvp1jiiiv\n"
},
"tests/special/peeping_room_fixture.gd.uid": {
"owner": "tests/special/peeping_room_fixture.gd",
"owner_sha256": "0243b1d35e1fdd8aa085894a0ce1e5cd1a189e5c98fcb859f81b70ae75b98bed",
"file_type": "regular",
"bytes": 20,
"raw_bytes": [
117,
105,
100,
58,
47,
47,
98,
48,
99,
51,
111,
117,
117,
113,
52,
50,
121,
99,
103,
10
],
"sha256": "a74e5ef6d8959826919a648e8b5d82e96d1c73ff22cd6c1f216be8b5c4060a8a",
"text": "uid://b0c3ouuq42ycg\n"
},
"tests/special/test_peeping_room_evidence.gd.uid": {
"owner": "tests/special/test_peeping_room_evidence.gd",
"owner_sha256": "390e0032d14de9a8875ced163a922341ce655744200d78b4ffa776d42c4f8c2a",
"file_type": "regular",
"bytes": 20,
"raw_bytes": [
117,
105,
100,
58,
47,
47,
100,
102,
116,
115,
107,
121,
49,
51,
112,
101,
48,
117,
106,
10
],
"sha256": "26bbc1435bcda963b5866327b887096f798b1629c7984768c85bfb6175648ec5",
"text": "uid://dftsky13pe0uj\n"
},
"tests/special/test_peeping_room_geometry.gd.uid": {
"owner": "tests/special/test_peeping_room_geometry.gd",
"owner_sha256": "103d85f83e1e97a8637892504264275eef23f172eeec56c94e5c022d81bf6945",
"file_type": "regular",
"bytes": 19,
"raw_bytes": [
117,
105,
100,
58,
47,
47,
52,
114,
52,
48,
102,
49,
107,
112,
106,
109,
118,
106,
10
],
"sha256": "391b78806bc0bf759f00c778cb25dfaa97d47f6e309c3b302412c38123c5440c",
"text": "uid://4r40f1kpjmvj\n"
},
"tests/special/test_peeping_room_reference.gd.uid": {
"owner": "tests/special/test_peeping_room_reference.gd",
"owner_sha256": "188b00a60f7aefda69dc4973f1de9c14447a0d4bcdd1257a2eabe7c4782e4caf",
"file_type": "regular",
"bytes": 20,
"raw_bytes": [
117,
105,
100,
58,
47,
47,
99,
110,
110,
111,
110,
53,
119,
111,
117,
102,
117,
114,
112,
10
],
"sha256": "db8bfa98b7943dba15858ccaa6681bc430efd43f40f57de99117dc19c51ac417",
"text": "uid://cnnon5woufurp\n"
},
"tests/special/test_peeping_room_runtime.gd.uid": {
"owner": "tests/special/test_peeping_room_runtime.gd",
"owner_sha256": "924efd34414c12a325a1b700f799aef0396de9f15441fd88a3608292ff221657",
"file_type": "regular",
"bytes": 19,
"raw_bytes": [
117,
105,
100,
58,
47,
47,
52,
110,
53,
119,
101,
108,
113,
102,
104,
100,
113,
103,
10
],
"sha256": "b742bb8e4077f111e0f7b4d9039261a06fe6deaad8ea308ba3b89c7b5a4a9069",
"text": "uid://4n5welqfhdqg\n"
},
"tests/special/test_peeping_room_save.gd.uid": {
"owner": "tests/special/test_peeping_room_save.gd",
"owner_sha256": "ba0e7644277477c1821135cae6d6fd533651799c6f9bd8c43ccf45e63b96c63c",
"file_type": "regular",
"bytes": 19,
"raw_bytes": [
117,
105,
100,
58,
47,
47,
56,
117,
121,
116,
109,
112,
106,
117,
112,
56,
113,
52,
10
],
"sha256": "005561b37df9051e618d4714b2a91a82f4a48ec63c841cdf27c251bcd2865505",
"text": "uid://8uytmpjup8q4\n"
}
}
@@ -0,0 +1,13 @@
{
"S": "a7e3069b167511b3194242b3403fbcc35244a526",
"argv": [
"/Users/korizatou114/Antigravity/\u74b0\u5883\u69cb\u7bc9/agent-control/.venv/bin/python",
"-B",
"tests/special/test_p13_uid_policy.py"
],
"started_unix_ns": 1792225317277353000,
"ended_unix_ns": 1792225317417668000,
"exit_code": 0,
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"stderr_sha256": "c8904f75939074499eaa0d8a5add9f1fd5007a4e4e5e75cc9b1ce324d8f4b69c"
}
@@ -0,0 +1,5 @@
.......
----------------------------------------------------------------------
Ran 7 tests in 0.053s
OK
@@ -0,0 +1,88 @@
{
"at_jst": "2026-10-17T17:28:02.473746+09:00",
"plan_id": "P13-02",
"batch": "P13-02-CODE1",
"original_packages": 30,
"original_units": 88,
"formally_completed": 14,
"new_credit": 0,
"S": "a7e3069b167511b3194242b3403fbcc35244a526",
"source_backup_branch": "codex/p13-02-reference",
"source_on_main": false,
"normal_integration_candidate": null,
"runner_state_after_registered_validation": "review_pending",
"repairs": 4,
"max_repairs": null,
"implementation_models": "Astra selected by Opus for coupled save schema; Sol selected by Opus for UID policy and exact queue-event oracle corrections",
"actual_narrow": {
"suites": 15,
"checks": 863,
"parse_files": 329,
"phases": 17,
"actual_PIDs": [
63523,
63619,
63653,
63684,
63709,
63723,
63751,
63773,
63789,
63815,
63830,
63854,
63870,
63896,
63919,
63933,
63993
],
"passed": true,
"all_owned_engines_ended": true,
"guard_errors": [],
"cleanup_errors": [],
"finite_UID_set": 7,
"game_body_changed_by_latest_fix": false
},
"test_oracle_correction": "Direct rejected placement full typed Runtime unchanged; queued placement keeps world/economy/room/non-event IDs unchanged and verifies exactly1 COMMAND_FAILED domain-event ID/cause receipt. No blanket normalization or event suppression.",
"current_next_gate": "Full standard regression with finite native UID metadata extension must preserve all standard generated-report/audio/diagnostic/process/profile/source/marker gates; actual Opus plan requested before collection, formal independent review then ordinary integration/final remain.",
"whole_original_unit": "not accepted; pending ordinary construction/recorder/natural collection triggers/approved values/VIP/UI/content/Windows and all P13 conditions unchanged",
"P04_priority": "Next formal closure P04-01, existing D05 questions pending, no repeated questions or fake approval",
"previous_failures_retained": [
"p13-reference-native-e930a1d-import-failed",
"p13-reference-native-uid-corrected-27fc5f0-runtime-failed"
],
"evidence": [
{
"path": "ACTUAL_NATIVE_ENDED.json",
"actual_original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native-uid-corrected/runner-ended.json",
"bytes": 469751,
"sha256": "4694cc13c0e0c309adf1f5c3c3885fc2d54efa8dc8ec63319ce016e48d2d66a5"
},
{
"path": "ACTUAL_NATIVE_INPUT.json",
"actual_original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native-uid-corrected/runner-input.json",
"bytes": 320481,
"sha256": "c899b3463fdc8925a98f5dd288eea5cca1d41b3591bc17d29394ec90da0b1094"
},
{
"path": "ACTUAL_RETAINED_UIDS.json",
"actual_original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native-uid-corrected/accepted-uids.json",
"bytes": 4198,
"sha256": "6a6987d53b93387aaa0f8cae268c96eb4bf326fa4599eea4e837af00384e3c38"
},
{
"path": "ACTUAL_STATIC_UID_CONTROLS.json",
"actual_original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/audit-support/p13-root-native-a7e3069/static-uid-controls.json",
"bytes": 493,
"sha256": "d9f4acac3e7f0ed869ece76bc5ef3e9dbe96314e893f1d7a2081a39d97b66053"
},
{
"path": "ACTUAL_STATIC_UID_STDERR.log",
"actual_original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/audit-support/p13-root-native-a7e3069/static-uid-controls.stderr.log",
"bytes": 105,
"sha256": "c8904f75939074499eaa0d8a5add9f1fd5007a4e4e5e75cc9b1ce324d8f4b69c"
}
]
}
@@ -0,0 +1,252 @@
{
"phase": "import",
"test": null,
"passed": false,
"failed": true,
"validation_error": null,
"profile_startup_name": "TheTree-PCK-tests-974717b708984f0d81f24d8164fe7bc3-standard-startup-import",
"private_project_sha256": "f825875e910e090ce57fc0527f34b55386a77123c1784d6916718113139a3673",
"private_project_fields": 2,
"source_sha256": null,
"command": [
"/Applications/Godot.app/Contents/MacOS/Godot",
"--headless",
"--path",
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/stage",
"--editor",
"--import",
"--quit",
"--verbose",
"--log-file",
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/import/engine-native.log"
],
"logical_script": null,
"starter_sha256": null,
"controlled_environment": {},
"native_process": {
"argv": [
"/Applications/Godot.app/Contents/MacOS/Godot",
"--headless",
"--path",
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/stage",
"--editor",
"--import",
"--quit",
"--verbose",
"--log-file",
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/import/engine-native.log"
],
"pid": 55035,
"started_utc": "2026-10-17T08:05:39.153436+00:00",
"ended_utc": "2026-10-17T08:05:54.328314+00:00",
"wall_seconds": 15.174453041981906,
"exit_code": 0,
"helper_exit_code": 0,
"timed_out": false,
"stdout_sha256": "a7044e250290690749e344039a98595963550e89777a727da0532dd975c95778",
"stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"error_lines": [],
"owned_popen_ended": true,
"old_helper_engine_ended": true,
"start_receipt_written": true,
"end_receipt_written": true,
"lifecycle_error": null,
"old_helper_lifecycle_error": null,
"actual_start_binding": {
"scope": "isolated diagnostic owned child",
"event": "ENGINE_STARTED",
"actual_pid": 55035,
"owner_pid": 53623,
"command": [
"/Applications/Godot.app/Contents/MacOS/Godot",
"--headless",
"--path",
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/stage",
"--editor",
"--import",
"--quit",
"--verbose",
"--log-file",
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/import/engine-native.log"
],
"monotonic_ns": 2836045348628125,
"pid": 55035,
"argv": [
"/Applications/Godot.app/Contents/MacOS/Godot",
"--headless",
"--path",
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/stage",
"--editor",
"--import",
"--quit",
"--verbose",
"--log-file",
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/import/engine-native.log"
],
"started_utc": "2026-10-17T08:05:39.153436+00:00",
"current_process_identity": {
"pid": 55035,
"ppid": 53623,
"pgid": 55035,
"args": "/Applications/Godot.app/Contents/MacOS/Godot --headless --path /Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/stage --editor --import --quit --verbose --log-file /Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/import/engine-native.log"
},
"live_identity_exact": true,
"tracked_child_ended_before_initial_probe": false,
"signal_scope": "tracked Popen child only; no external group signal"
},
"actual_end_binding": {
"scope": "isolated diagnostic owned child",
"event": "ENGINE_ENDED",
"actual_pid": 55035,
"owner_pid": 53623,
"command": [
"/Applications/Godot.app/Contents/MacOS/Godot",
"--headless",
"--path",
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/stage",
"--editor",
"--import",
"--quit",
"--verbose",
"--log-file",
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/import/engine-native.log"
],
"monotonic_ns": 2836060496050750,
"exit_code": 0,
"actual_process_exit_code": 0,
"engine_ended": true,
"timed_out": false,
"lifecycle_error": null,
"start_receipt_written": true,
"pid": 55035,
"argv": [
"/Applications/Godot.app/Contents/MacOS/Godot",
"--headless",
"--path",
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/stage",
"--editor",
"--import",
"--quit",
"--verbose",
"--log-file",
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/import/engine-native.log"
],
"ended_utc": "2026-10-17T08:05:54.320361+00:00",
"signal_scope": "tracked Popen child only; no external group signal"
},
"strict_native_diagnostics": {
"errors": [],
"banner_count": 1,
"known_unicode_diagnostic_count": 0,
"unrecognized_unicode_diagnostic_count": 0,
"exit_leak_diagnostic_lines": []
},
"external_process_or_group_signals": 0,
"owned_child_process_helper_sha256": "c007e712c281573254faa1233c2ac92e100ab87393256a6dc096b35283e43037",
"adapter_owned_cleanup": {
"owned_child_created": true,
"engine_ended": true,
"actual_process_exit_code": 0,
"attempts": [
{
"attempt": 1,
"kill_attempted": false,
"wait_timeout_seconds": 5,
"wait_completed": true,
"errors": [],
"poll_before": 0,
"wait_returned_code": 0,
"poll_after": 0
}
],
"errors": []
},
"adapter_error": null,
"old_helper_bytes_preserved": true,
"helper_wait_None_maps_to_actual_timeout_seconds": 5,
"explicit_helper_wait_timeouts_preserved": true,
"additional_cleanup_wait_timeout_seconds": 5,
"additional_cleanup_max_attempts": 3
},
"outer_actual_capture": {
"actual_captured_pids": [
55035
],
"cleanup": [
{
"pid": 55035,
"cleanup": {
"owned_child_created": true,
"engine_ended": true,
"actual_process_exit_code": 0,
"attempts": [
{
"attempt": 1,
"kill_attempted": false,
"wait_timeout_seconds": 5,
"wait_completed": true,
"errors": [],
"poll_before": 0,
"wait_returned_code": 0,
"poll_after": 0
}
],
"errors": []
},
"outer_cleanup_errors": [],
"engine_ended": true,
"outer_maximum_helper_invocations": 3,
"helper_maximum_waits": 3,
"per_wait_timeout_seconds": 5,
"foreign_process_or_group_signals": 0
}
],
"adapter_exception": null,
"all_captured_ended": true,
"outer_cleanup_errors": [],
"foreign_process_or_group_signals": 0,
"all_cleanup_before_outer_receipt": true,
"outer_receipt_written": true,
"outer_receipt_error": null,
"passed": true
},
"actual_pid": 55035,
"engine_ended": true,
"exit_code": 0,
"log": "import/combined-raw.log",
"log_sha256": "a7044e250290690749e344039a98595963550e89777a727da0532dd975c95778",
"raw_native_log": {
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/import/engine-native.log",
"bytes": 119669,
"sha256": "9e66d1295be17e1bfa9052e78e06e7cf9bfee7fe5624ea97226529209404b8ed"
},
"finite_original_diagnostic_review": {
"verified": true,
"original_NUL_fixture_contract_applied": false,
"producer_source_sha256": null,
"actual_transport_counts": {
"stdout": 0,
"stderr": 0,
"native_file": 0
},
"actual_complete_diagnostic_sequences": {
"stdout": [],
"stderr": [],
"native_file": []
},
"unknown_or_error_or_leak_lines": {
"stdout": [],
"stderr": [],
"native_file": []
},
"raw_lines_deleted_or_rewritten": 0,
"contract_sha256": "22fd41c59eb13e0af397984bed418870c55fa8942524c377490a90a2aca8dedd",
"allowed_e31_error_lines": []
},
"whole_startup_profile_after": {
"path": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-974717b708984f0d81f24d8164fe7bc3-standard-startup-import",
"files": {},
"fresh_before_engine": true
},
"guard_error": "AssertionError: complete source/UID/generated report set"
}
@@ -0,0 +1,10 @@
{
"task_id": "P13-02-CODE1",
"commit": "1e8d4ea88876865a72547ff0edf43ed5b0e74c7e",
"status": "submitted",
"summary": "許可範囲内で非描写サービス、Runtime・保存連携、5試験、専用検証スクリプト、マーカー・説明書を追加。Python構文とマーカーSHA整合を確認。エンジン・試験・Runner操作・git書込みは未実施。正式検証と独立レビュー待ちで、P13受入への加算はありません。",
"acceptance_ids": [
"P13-02-CODE1"
],
"findings": []
}
@@ -0,0 +1,85 @@
{
"at_jst": "2026-10-17T17:09:16.053627+09:00",
"plan_id": "P13-02",
"batch": "P13-02-CODE1",
"original_packages": 30,
"original_units": 88,
"formally_completed": 14,
"new_credit": 0,
"source_submitted": "e930a1dedff7ab4c4a94d274a2e0c55fc2b95829",
"source_backup_branch": "codex/p13-02-reference-e930a1d",
"normal_integration_candidate": null,
"source_on_main": false,
"worker_model": "gpt-6-astra",
"model_selection": "actual Opus19f00667 after examining coupled14/15 save paths; earlier Sol was proposal only",
"repairs_before_current_correction": 2,
"max_repairs": null,
"worker_run": "b3af838ff79b4f3fafe7b68040a89079",
"worker_terminal": "submitted",
"source_change_summary": "12 files/1015 additions, service plus bounded Runtime/save/5suite/harness wiring; no mandatory numbers or normal palette invented",
"native": {
"import_actual_pid": 55035,
"engine_ended": true,
"exit_code": 0,
"diagnostic_errors": 0,
"accepted": false,
"guard_failure": "exactly7 native-generated UID sidecars undeclared in complete source/UID/generated set",
"suite_count": 0,
"all15_suites_unexecuted": true,
"all329_parse_unexecuted": true,
"default_player_changed": false,
"cleanup_errors": []
},
"next": "actual Opus decision for precise UID artifact handling; do not waive source/UID/process/profile guard or rerun full regression now",
"P04_priority": "Next original unit to close remains P04-01; owner D05 answers pending, this batch is independent work",
"required_remaining": [
"UID correction then exact narrow/impact verification with strict raw evidence",
"separate actual Opus independent code/evidence review",
"required final exact-source full regression, normal integration/final and ledger update for backend batch",
"whole original P13-02 normal build/production/content/roles/approved D04/D05/D08 values/VIP/UI/Windows and all original conditions remain unaccepted"
],
"manifest": [
{
"path": "ACTUAL_OPUS_MODEL_AND_BRIEF.json",
"original": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/19f00667226d42dd8e9b3a4ae99aaa68/result.json",
"sha256": "1afa4b721f45c10cabeb10830db1c8b064d29c55000c3c6fbf5802ec0474c533",
"bytes": 11457
},
{
"path": "ACTUAL_WORKER_RESULT.json",
"original": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p13-02-reference/runs/b3af838ff79b4f3fafe7b68040a89079/result.json",
"sha256": "e38129543ab8796c51b6f1c56fba7417a6f7efe8d4cff338d1a0b074bbf23dd1",
"bytes": 538
},
{
"path": "ACTUAL_IMPORT_RECEIPT.json",
"original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/import-receipt.json",
"sha256": "cfa6b72b59f8df394eb22adfe1e73babbca31fb0c2a9caed9190dcc80b52d8f1",
"bytes": 9333
},
{
"path": "ACTUAL_NATIVE_ENDED.json",
"original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/runner-ended.json",
"sha256": "9f13934d7844e4ceba72e87a7c5dc88e7e2ebdea5de1c556c5f19d90092917c3",
"bytes": 167969
},
{
"path": "ACTUAL_NATIVE_INPUT.json",
"original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-reference-native/runner-input.json",
"sha256": "6018a3d83835317a46aee69188d5f3ca0e01977212e36b030a751894cb3284dc",
"bytes": 320355
},
{
"path": "ROOT_REVIEW_CHECKLIST.json",
"original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/coordinator-start-20261017/ROOT_REVIEW_CHECKLIST.json",
"sha256": "32079bede7a4da3defabbdc4fca7eaf96a03ffc12344cfd7631c2d5c5e22e7c7",
"bytes": 1440
},
{
"path": "EXACT_FAILURE_FACTS.json",
"original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/P13-02-CODE1-implement/build/owner-handoff/native-import-failure/ROOT_EXACT_FAILURE_FACTS.json",
"sha256": "a7c906d0df05003be005e8d7160ae8c104dbdb00388bd57b87696f1dd425de86",
"bytes": 1782
}
]
}
@@ -0,0 +1,54 @@
{
"S": "e930a1dedff7ab4c4a94d274a2e0c55fc2b95829",
"actual_engine_pid": 55035,
"exit_code": 0,
"owned_engine_ended": true,
"diagnostic_errors": 0,
"actual_suites": 0,
"new_stage_files": [
{
"path": "tests/special/peeping_room_fixture.gd.uid",
"sha256": "a74e5ef6d8959826919a648e8b5d82e96d1c73ff22cd6c1f216be8b5c4060a8a",
"bytes": 20,
"text": "uid://b0c3ouuq42ycg\n"
},
{
"path": "tests/special/test_peeping_room_runtime.gd.uid",
"sha256": "f7276000bd3b4c3429c72612f791ca2ed6bb04dde1de8e278cb1a055ae4ce743",
"bytes": 20,
"text": "uid://dkc1kiqioypih\n"
},
{
"path": "tests/special/test_peeping_room_save.gd.uid",
"sha256": "005561b37df9051e618d4714b2a91a82f4a48ec63c841cdf27c251bcd2865505",
"bytes": 19,
"text": "uid://8uytmpjup8q4\n"
},
{
"path": "tests/special/test_peeping_room_geometry.gd.uid",
"sha256": "391b78806bc0bf759f00c778cb25dfaa97d47f6e309c3b302412c38123c5440c",
"bytes": 19,
"text": "uid://4r40f1kpjmvj\n"
},
{
"path": "tests/special/test_peeping_room_evidence.gd.uid",
"sha256": "26bbc1435bcda963b5866327b887096f798b1629c7984768c85bfb6175648ec5",
"bytes": 20,
"text": "uid://dftsky13pe0uj\n"
},
{
"path": "tests/special/test_peeping_room_reference.gd.uid",
"sha256": "db8bfa98b7943dba15858ccaa6681bc430efd43f40f57de99117dc19c51ac417",
"bytes": 20,
"text": "uid://cnnon5woufurp\n"
},
{
"path": "scripts/special/peeping_room_service.gd.uid",
"sha256": "3f045afc3c140886c70ec8494d6dcb012e6da645e8a3ff3c6488442ce63a9353",
"bytes": 20,
"text": "uid://bi36fvp1jiiiv\n"
}
],
"guards_not_waived": true,
"whole_acceptance": false
}
@@ -0,0 +1,13 @@
{
"scope": "Root-derived review checklist within the immutable original P13-02 state/reference/save conditions. Not extra product rules, test results, or implementation directions.",
"created_unix_ns": 1792223589246621000,
"checks": [
"Retain prior evidence identities/history after target loss and explicit relink; a new target does not turn old evidence into a different event or silently discard it. Check roundtrip after this combined history.",
"Relink may ignore only the same room own occupancy, never another room or corridor conflict. A rebuilt different facility ID cannot silently revive the link.",
"Ordinary production commands cannot reach CONTROLLED_FIXTURE entry points or bypass missing build/recorder approvals; rejection leaves whole typed Runtime unchanged.",
"Optional section absence is valid only for truly empty state; orphan world occupancy or owned IDs cannot be accepted by dropping the section. Other existing exact schema key allowlists remain strict.",
"Failed section restore or later-system failure restores original whole Runtime including clock, ID generator, commands, facilities, ledger and new service references; var_to_bytes evidence, no JSON normalization.",
"Source/marker/policy/engine/input/environment identities and actual owned process endings cover the final tested version; local test numbers never substitute whole-unit acceptance."
],
"formal_credit": 0
}
@@ -0,0 +1,29 @@
{
"archive_sha256": "f962d3622f5da562c3c07c4afed84bf4f1042a2470f555c16148d450e70453ff",
"drive_archive_id": "1F6MYrZ7begmlNaZkjMOlJT5y9uMcSVwM",
"drive_restore_kit_id": "1eT98KWt71v62IGhxyBSjmf4FEoTvFMxA",
"views": [
{
"original": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-cb0e908014ed4be48b1cc74787337f66-standard-runtime-057",
"files": 2792,
"logical_bytes": 1839108706,
"verified_all_bytes_before_retirement": true,
"restore_view": "original",
"absent_after": true
},
{
"original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/P13-02-CODE1/build/p13-full-controller/run/profiles/057/runtime",
"files": 1535,
"logical_bytes": 861302992,
"verified_all_bytes_before_retirement": true,
"restore_view": "failed-copy",
"absent_after": true
}
],
"free_before": 894099456,
"free_after": 2749599744,
"time_ns": 1792229099545221000,
"original_full_attempt_passed": false,
"receipt_bytes_unmodified": true,
"actual_free_gain_bytes": 1855500288
}
@@ -0,0 +1,69 @@
{
"at_jst": "2026-10-17T18:34:28.900674+09:00",
"plan_id": "P13-02",
"batch": "P13-02-CODE1",
"S": "a7e3069b167511b3194242b3403fbcc35244a526",
"original_packages": 30,
"original_units": 88,
"formally_completed": 14,
"new_credit": 0,
"original_full_attempt_passed": false,
"failure": "ENOSPC while copying ended native5374check P08 migration runtime profile; incomplete original runner-ended preserved",
"causal_measurements": {
"single_runtime_profile_files": 2792,
"single_runtime_logical_bytes": 1839108706,
"partial_duplicate_whole_files": 1534,
"partial_duplicate_zero_byte_fragment": 1
},
"recovery": "Exact full archive plus original partial-copy view and fragment retained; every member SHA verified locally, remote complete archives fetched and streamed SHA verified before retiring only verified uncompressed profiles. No test log or acceptance data erased.",
"archives": [
{
"drive_id": "1F6MYrZ7begmlNaZkjMOlJT5y9uMcSVwM",
"url": "https://drive.google.com/file/d/1F6MYrZ7begmlNaZkjMOlJT5y9uMcSVwM/view",
"purpose": "current057 full profile"
},
{
"drive_id": "1eT98KWt71v62IGhxyBSjmf4FEoTvFMxA",
"url": "https://drive.google.com/file/d/1eT98KWt71v62IGhxyBSjmf4FEoTvFMxA/view",
"purpose": "current057 restore kit with exact original and failed-copy views"
},
{
"drive_id": "1_HFt31YEAs6ak7Z2BiX9xOCQJkYBjovE",
"url": "https://drive.google.com/file/d/1_HFt31YEAs6ak7Z2BiX9xOCQJkYBjovE/view",
"purpose": "previous ended P23 full179 runtime profile, full restore metadata embedded"
},
{
"drive_id": "1tR_3rlst7AshVskaVxG6JFvQxF5OP5ow",
"url": "https://drive.google.com/file/d/1tR_3rlst7AshVskaVxG6JFvQxF5OP5ow/view",
"purpose": "older ended P08 phase profile, full restore metadata embedded; failed whole attempt remains failed"
}
],
"proof_records": {
"DRIVE_FULL_ARCHIVE_READBACK.json": {
"bytes": 221,
"sha256": "36a59d70bb6b67b20c89a26bc5bc1bae3e16f1e4cdc34faf8690cb8d47f4ea55",
"original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/storage-profile-recovery-20261017/DRIVE_FULL_ARCHIVE_READBACK.json"
},
"DRIVE_RESTORE_KIT_READBACK.json": {
"bytes": 219,
"sha256": "29119b49b58bdaed54b672bab4629fd17f56c33b5cb6961ce2061f222a0897e3",
"original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/storage-profile-recovery-20261017/DRIVE_RESTORE_KIT_READBACK.json"
},
"057-ARCHIVAL-RECOVERY.json": {
"bytes": 1110,
"sha256": "220aa68ceb8195b1ac3358118b4ea652750cafc4a421b9f277026ccfadb76722",
"original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/storage-profile-recovery-20261017/057-ARCHIVAL-RECOVERY.json"
},
"PREVIOUS_P23_PROFILE057_DRIVE_AND_RETIREMENT.json": {
"bytes": 785,
"sha256": "6633575fcf6cba529d72c3fc652fffc082128114e20cdf9f0fd0a223ff5d9c8e",
"original": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/storage-profile-recovery-20261017/PREVIOUS_P23_PROFILE057_DRIVE_AND_RETIREMENT.json"
}
},
"current_free_bytes": 4107698176,
"next_full_scope": "Import and329parse plus original58 suites qualified; remaining126 require unchanged native per-phase gates, exact input equality, all cross-segment checks, separate actual Opus review, normal integration/final. No restart of accepted native phases.",
"admission_required_bytes": 3467374666,
"P04_next_formal_unit": "P04-01 pending actual owner D05 choices, no fake approval",
"whole_original_acceptance": false,
"later_archival_result": "Additional1.838GB logical old profile preserved remotely with full readback SHA. Immediate measured free gain153612288B; logical size is not claimed as physical space recovered."
}
@@ -0,0 +1,7 @@
{
"drive_id": "1F6MYrZ7begmlNaZkjMOlJT5y9uMcSVwM",
"bytes": 97976496,
"sha256": "f962d3622f5da562c3c07c4afed84bf4f1042a2470f555c16148d450e70453ff",
"full_remote_readback": true,
"time_ns": 1792229035052351000
}
@@ -0,0 +1,7 @@
{
"drive_id": "1eT98KWt71v62IGhxyBSjmf4FEoTvFMxA",
"bytes": 216139,
"sha256": "8517b61a253141a76e3bde5bab81f3971ca91989b37b2c89e95a5ee42c010cda",
"full_remote_readback": true,
"time_ns": 1792229078775515000
}
@@ -0,0 +1,18 @@
{
"drive_id": "1tR_3rlst7AshVskaVxG6JFvQxF5OP5ow",
"remote_bytes": 98084260,
"remote_sha256": "79879544b1351706d96e072f77a5b893aced99204c3c8fa83c216279b2cef011",
"full_remote_readback": true,
"all_original_bytes_verified_before_retirement": true,
"original": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-4c87cfdfbfff41fd85a9686027d4b109-standard-runtime-057",
"files": 2792,
"archive": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/storage-profile-recovery-20261017/p08-older-ended-profile057-lossless.tar.gz",
"archive_contains_full_manifest": true,
"original_full_attempt_passed": false,
"phase_passed_and_ended": true,
"time_ns": 1792230632135468000,
"free_before": 3985821696,
"original_absent": true,
"free_after": 4139433984,
"actual_free_gain": 153612288
}
@@ -0,0 +1,16 @@
{
"drive_id": "1_HFt31YEAs6ak7Z2BiX9xOCQJkYBjovE",
"remote_bytes": 98141942,
"remote_sha256": "0cdfb0eb3dc7b5bced24f209bd024436db5450926dae74885d658bcdcf407ed5",
"full_remote_readback": true,
"all_original_bytes_verified_before_retirement": true,
"original": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-4572ef90efe94bc59f24b8e3d80452d0-standard-runtime-057",
"files": 2792,
"archive": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p13-02-reference/.runtime/storage-profile-recovery-20261017/p23-previous-full179-profile057-lossless.tar.gz",
"archive_contains_full_manifest": true,
"time_ns": 1792229606376983000,
"free_before": 2652545024,
"original_absent": true,
"free_after": 4500942848,
"actual_free_gain": 1848397824
}
@@ -244,7 +244,7 @@
"facility_value_contracts_validation.json": "bf490a9ca585c48fc318e76c4a069ef244827d828d46e6415399f7710590dd16",
"performance_audit.json": "0b630b15a392c3e0366f1362bfe4ddacb968f915f54549f82e4d6fa315384762",
"progress_contract.json": "ccbdfce8c8365d5c13f59531955708834cce45acd0e136561c95295dfdb5df77",
"progress_snapshot.json": "d929905fac7089ad359154fdaa9f4d65e323becf7a6b46c8cadd2ba6d1719a9c",
"progress_snapshot.json": "d0fead780b4cc15adde9c5256674a1314b22f001255c0bd76eb8b7dd4aaf1cef",
"progress_validator_guard_checks.json": "72ee513fcf1cad85c24bfd0a4b472f425f6acf117928ece0f6b41e29018da627",
"progress_validator_guard_checks.r01.json": "14c26adffa5a1938241db4912e50ea54b660641ee6fee2e412d467dce14d0519",
"requirement_coverage.json": "03b10e4da367579db502d0671a6e0dda36fd385111c6f1c0084acaff7605f593",
@@ -254,6 +254,6 @@
"validate_facility_value_contracts.py": "91640e2a76cd6cc9186f7b85c0bf379b24b6cac0d48962815235ee628e7ae43e",
"validate_plan.py": "23678227d9b3c556f1bd903f4b5b3147c4a82ce5085e10055481026803451b80",
"validator_update_checks.json": "f997d0f3de2cea29550840b1d5cb23647d64f81329de46758551e2b6c8fecc27",
"work_packages.json": "cd70846e0701396a3492cbab95aed9a3272cb108a08f9920b9c28e46c21e7361"
"work_packages.json": "2ae4cc7e6dd0de3cf10864ac7aee3ef75e4f5f4dc02a9132b3fa04a8731fa7cd"
}
}
@@ -157,8 +157,8 @@
},
"current_delivery_state_counts": {
"completed": 14,
"in_progress": 23,
"planned": 51
"in_progress": 24,
"planned": 50
},
"completed_current_deliveries": [
"P00-01",
@@ -10422,5 +10422,59 @@
"source": "fe44f550750acbf5c510346e7cacbea2ccbdd184",
"original_unit_credit_added": 0,
"all8_accepted": false
},
"current_p13_02_backend_local_progress": {
"observed_at_jst": "2026-10-17T17:28:02.473746+09:00",
"source": "a7e3069b167511b3194242b3403fbcc35244a526",
"evidence": "docs/plans/original-completion-2026-10-02/execution/p13-02/root-a7e3069-local-20261017/CURRENT_ACCEPTANCE_STATUS.json",
"source_adopted_on_main": false,
"whole_original_accepted": false,
"new_credit": 0,
"local_suites": 15,
"local_checks": 863,
"full_regression": false,
"formal_independent_review": false,
"prior_delivery_counts_before_P13_started": {
"completed": 14,
"in_progress": 23,
"planned": 51
},
"scope": "Corrects planned→in_progress only; no formal completion or source adoption",
"full_scope_native": {
"actual_suites": 184,
"missing_marker_paths": [],
"remaining_unexecuted_tests": [],
"available_marker_checks": 21903,
"actual_all_roster_checks": 21903,
"strict_accepted_checks": 21903,
"verified": true,
"composed": true,
"original_full_attempt_passed": false,
"whole_original_acceptance": false,
"parse_checks": 329,
"setup_phases": 2,
"owned_ended": 186,
"tested_source": "a7e3069b167511b3194242b3403fbcc35244a526",
"engines_started": 0,
"verifier_sha256": "d00bf46bfcc0e0bb197edd284a3ae14610ca710507831e18e071a79461946e8a"
},
"latest_full_status": "docs/plans/original-completion-2026-10-02/execution/p13-02/root-a7e3069-full-20261017/CURRENT_ACCEPTANCE_STATUS.json",
"formal_review": {
"state": "terminal_pass",
"run_id": "ead8e74b9683404d8cf3d97bca118726",
"model": "claude-opus-5-5",
"critical_high_medium": 0,
"low": 4,
"artifact": "ACTUAL_INDEPENDENT_OPUS_REVIEW.json"
},
"formal_credit": 0,
"backend_batch_state": "completed",
"normal_integration_candidate": "65f07bf5eaa759a8e2e17c7bdbbbdbceb24ee373",
"normal_final": {
"passed": true,
"commit": "65f07bf5eaa759a8e2e17c7bdbbbdbceb24ee373",
"artifact": "FORMAL_FINAL.json"
},
"whole_original_acceptance": false
}
}
@@ -8011,7 +8011,7 @@
},
"legacy_state": "planned",
"state_scope": "package-level; completed means whole package accepted; partial implementation is not completion",
"current_summary": "P13-03「内容差異の記録」を正式完了。提出bd3a97e、原8条件を別Opusレビュー、実統合/最終e80c6c0で確認。全7施設/84利用枠/6分類、33拒否+代替正常系、固定原30/88・部分点なし。記録1件のみ、内容/素材/P13パッケージ/原子/ゲーム完成の加点0。P13-01/02とD08/D09・未制作内容は未完了。",
"current_summary": "P13-03は原成果として完了済み。P13-02の限定CODE1のみ通常最終ゲートまで完了し、元P13-02全条件は引き続き未達。限定backend CODE1は提出a7e3069→通常統合C65f07bf/M191ea3bでRunner completed。厳密15/863登録検証、全184/21903・329構文・186実PID終了の正確合成証明、別Opus全CODE1レビュー合格(重大/高/中0・低4を後続記録)、実候補の全1368入力等値照合、通常integration/finalを完了。元ENOSPC全回帰の失敗記録と全量可逆退避は保持。親P13-02の通常建設・記録係・承認値・自然収集・VIP/完成素材/Windows等は未達、原正式14/88から加算0。",
"remaining_deliverables": [
{
"id": "P13-01",
@@ -8032,16 +8032,38 @@
"path": "docs/plans/original-completion-2026-10-02/execution/p13-02/CODE1_TASK_SPEC.json",
"sha256": "988d6e18a49372549863cd433432c2852c962fa64b138e490361c023e80249dc",
"scope": "Actual Opus-selected bounded implementation contract preparation; no tests or whole acceptance credit"
},
{
"path": "docs/plans/original-completion-2026-10-02/execution/p13-02/root-e930a1d-native-import-20261017/CURRENT_ACCEPTANCE_STATUS.json",
"sha256": "87122b4256cafac78f5fe0efe3253f5d59bbda5e8bfdf727c177bb354050207c",
"scope": "Actual submitted backend and failed owned import guard evidence; no passing suites or formal credit"
},
{
"path": "docs/plans/original-completion-2026-10-02/execution/p13-02/root-a7e3069-local-20261017/CURRENT_ACCEPTANCE_STATUS.json",
"sha256": "6635dfeaa73fe69f3395e8d03bc9ae5f8506a04259e8682917a3cf11b0f8575a",
"scope": "Actual15/863 local and329 parse with all17 owned engines ended and exact UID policy; no whole-original acceptance or credit"
},
{
"path": "docs/plans/original-completion-2026-10-02/execution/p13-02/root-a7e3069-full-20261017/CURRENT_ACCEPTANCE_STATUS.json",
"sha256": "9a37598317771097232be1f92bba4b7b21fd399ec2d173abb115662d8ba5c310",
"scope": "Actual qualified composed184/21903/329parse/186ended; original failed full not overwritten; formal independent review and integration/final pending, original credit0"
}
],
"progress_summary": "実Opus e65d48f5がP04回答に依存しない実装対象として選定。現mainにない背面配置/対象喪失/証拠ID重複防止/保存機構をRuntimeへ接続するCODE1契約を準備。担当sol指定。未承認建設値・記録係/自然収集契機・VIP未定義・D05/カメラUI等は捏造せず残す。通常建設/自然営業/全原条件は未受入、正式14/88で加算0。",
"current_summary": "実Opus e65d48f5がP04回答に依存しない実装対象として選定。現mainにない背面配置/対象喪失/証拠ID重複防止/保存機構をRuntimeへ接続するCODE1契約を準備。担当sol指定。未承認建設値・記録係/自然収集契機・VIP未定義・D05/カメラUI等は捏造せず残す。通常建設/自然営業/全原条件は未受入、正式14/88で加算0。",
"updated_at_jst": "2026-10-17T16:38:25.025337+09:00",
"current_execution": "docs/plans/original-completion-2026-10-02/execution/p13-02/CODE1_TASK_SPEC.json",
"progress_summary": "限定backend CODE1は提出a7e3069→通常統合C65f07bf/M191ea3bでRunner completed。厳密15/863登録検証、全184/21903・329構文・186実PID終了の正確合成証明、別Opus全CODE1レビュー合格(重大/高/中0・低4を後続記録)、実候補の全1368入力等値照合、通常integration/finalを完了。元ENOSPC全回帰の失敗記録と全量可逆退避は保持。親P13-02の通常建設・記録係・承認値・自然収集・VIP/完成素材/Windows等は未達、原正式14/88から加算0。",
"current_summary": "限定backend CODE1は提出a7e3069→通常統合C65f07bf/M191ea3bでRunner completed。厳密15/863登録検証、全184/21903・329構文・186実PID終了の正確合成証明、別Opus全CODE1レビュー合格(重大/高/中0・低4を後続記録)、実候補の全1368入力等値照合、通常integration/finalを完了。元ENOSPC全回帰の失敗記録と全量可逆退避は保持。親P13-02の通常建設・記録係・承認値・自然収集・VIP/完成素材/Windows等は未達、原正式14/88から加算0。",
"updated_at_jst": "2026-10-17T19:05:57.762697+09:00",
"current_execution": "docs/plans/original-completion-2026-10-02/execution/p13-02/root-a7e3069-full-20261017/CURRENT_ACCEPTANCE_STATUS.json",
"remaining_gaps": [
"CODE1実装・必要な局所/影響検証・独立レビュー・通常統合finalは未実行。登録機構は元成果の全条件/通常Runtime/画面/保存受入を代替しない。",
"未承認建設/維持/収集数値・記録係条件、VIP施設、自然収集トリガ、D05取引規則、P19/P24接続と完成資産、原P13-02全条件の受入を残す。"
]
"Whole original P13-02 normal construction/recorder/natural triggers/approved quantities/VIP/UI/assets/Windows and all original conditions remain unaccepted; CODE1 has no new original-unit credit",
"Four low severity future-production defensive/migration/coverage observations retained from actual Opus review; no observed ordinary production path and no critical/high/medium finding",
"P04-01 remains next original formal closure when existing D05 owner choices arrive; independent next original-unit selection will be requested from actual Opus"
],
"submitted_commit": "a7e3069b167511b3194242b3403fbcc35244a526",
"normal_integration_candidate": "65f07bf5eaa759a8e2e17c7bdbbbdbceb24ee373",
"worker_model": "gpt-6-astra",
"model_selected_by_actual_opus": "19f00667226d42dd8e9b3a4ae99aaa68",
"integrated_commit": "65f07bf5eaa759a8e2e17c7bdbbbdbceb24ee373",
"backend_batch_state": "completed"
},
{
"id": "P13-03",
@@ -8105,7 +8127,7 @@
],
"cross_cutting_acceptance_scope": "Completion requirements only, not achieved results. Apply each to relevant slices; non-applicable views require a recorded reason.",
"initial_revision_state": "planned",
"updated_at_jst": "2026-10-15T20:07:06.405550+09:00"
"updated_at_jst": "2026-10-17T19:05:57.762697+09:00"
},
{
"id": "P14",
+96
View File
@@ -0,0 +1,96 @@
"""Static UID policy cases; no engine, native worker or regression invocation."""
import importlib.util
from pathlib import Path
import sys
import tempfile
import unittest
sys.dont_write_bytecode = True
TOOLS = Path(__file__).resolve().parents[2] / 'tools'
sys.path.insert(0, str(TOOLS))
spec = importlib.util.spec_from_file_location('p13_uid_policy', TOOLS / 'run_p13_reference_tests.py')
runner = importlib.util.module_from_spec(spec)
spec.loader.exec_module(runner)
class UIDPolicyTests(unittest.TestCase):
def setUp(self):
self.tmp = tempfile.TemporaryDirectory()
self.addCleanup(self.tmp.cleanup)
self.stage = Path(self.tmp.name)
self.owner = 'tests/special/example.gd'
self.other = 'scripts/special/peeping_room_service.gd'
for name in (self.owner, self.other):
self.write(name, b'extends RefCounted\n')
self.write('project.godot', b'[application]\n')
self.write('scripts/existing.gd.uid', b'uid://existing\n')
self.source = runner.shared.inventory(self.stage, stage=True)
self.plan = runner.uid_plan(self.source)
self.write(self.owner + '.uid', b'uid://first\n')
self.write(self.other + '.uid', b'uid://second\n')
def write(self, name, raw):
path = self.stage / name
path.parent.mkdir(parents=True, exist_ok=True)
path.write_bytes(raw)
def snapshot(self):
return runner.uid_snapshot(self.stage, self.source, self.plan)
def test_accept_and_owner_seal(self):
accepted = self.snapshot()
self.assertEqual(set(accepted), {self.owner + '.uid', self.other + '.uid'})
pin = accepted[self.owner + '.uid']
self.assertEqual(pin['raw_bytes'], list(b'uid://first\n'))
self.assertEqual(pin['text'], 'uid://first\n')
self.assertEqual(pin['owner_sha256'], self.source[self.owner]['sha256'])
self.assertEqual(pin['sha256'], runner.shared.sha(self.stage / (self.owner + '.uid')))
def test_unknown_and_extra(self):
for name in ('scripts/unknown.gd.uid', 'extra.txt'):
with self.subTest(name=name):
self.write(name, b'uid://extra\n')
with self.assertRaises(AssertionError):
self.snapshot()
(self.stage / name).unlink()
def test_missing(self):
(self.stage / (self.owner + '.uid')).unlink()
with self.assertRaises(AssertionError):
self.snapshot()
def test_malformed(self):
for raw in (b'uid://UPPER\n', b'uid://first', b'uid://first\nextra',
b'uid://12345678901234\n', b'uid://\n', b'uid://first\r\n'):
with self.subTest(raw=raw):
self.write(self.owner + '.uid', raw)
with self.assertRaises(AssertionError):
self.snapshot()
def test_duplicate_and_existing_collision(self):
for raw in (b'uid://second\n', b'uid://existing\n'):
with self.subTest(raw=raw):
self.write(self.owner + '.uid', raw)
with self.assertRaises(AssertionError):
self.snapshot()
def test_modified_original(self):
for name in (self.owner, 'project.godot', 'scripts/existing.gd.uid'):
with self.subTest(name=name):
path = self.stage / name
original = path.read_bytes()
path.write_bytes(original + b'tamper')
with self.assertRaises(AssertionError):
self.snapshot()
path.write_bytes(original)
def test_symlink(self):
path = self.stage / (self.owner + '.uid')
path.unlink()
path.symlink_to(self.stage / (self.other + '.uid'))
with self.assertRaises(AssertionError):
self.snapshot()
if __name__ == '__main__':
unittest.main()
+35 -2
View File
@@ -12,10 +12,43 @@ func _run() -> void:
expect(before == var_to_bytes(runtime.create_snapshot()), "validator changes no whole Runtime bytes")
var public_validation: CommandResult = runtime.submit_command(&"peeping_room_validate", validation.payload)
expect(public_validation.is_success(), "registered validation command runs through real queue")
var domain_before := [runtime.world_service.create_snapshot(), runtime.economy_service.create_snapshot(), runtime.id_generator.create_snapshot(), runtime.peeping_room_service.create_snapshot()]
var placement := SimulationCommand.new()
placement.command_type = &"peeping_room_place"
placement.payload = validation.payload.duplicate(true)
var placement_before := var_to_bytes(runtime.create_snapshot())
var direct_unavailable: CommandResult = runtime._execute_peeping_room(placement)
expect(not direct_unavailable.is_success() and direct_unavailable.details[&"reason"] == &"BUILD_DEFINITION_PENDING_D04", "direct production placement unavailable with precise reason")
expect(placement_before == var_to_bytes(runtime.create_snapshot()), "direct placement adds no room, occupancy, cost or ID in whole typed Runtime")
var domain_before := var_to_bytes([runtime.world_service.create_snapshot(), runtime.economy_service.create_snapshot(), runtime.peeping_room_service.create_snapshot()])
var ids_before: Dictionary = runtime.id_generator.create_snapshot()
var counters_before: Dictionary = ids_before["counters"]
var event_counter_before: int = counters_before.get("domain_event", 0)
var event_ids_before := {}
for event: SimulationDomainEvent in runtime.domain_events.recent_events():
event_ids_before[event.event_id] = true
var unavailable: CommandResult = runtime.submit_command(&"peeping_room_place", validation.payload)
expect(not unavailable.is_success() and unavailable.details[&"reason"] == &"BUILD_DEFINITION_PENDING_D04", "production placement unavailable with precise reason")
expect(var_to_bytes(domain_before) == var_to_bytes([runtime.world_service.create_snapshot(), runtime.economy_service.create_snapshot(), runtime.id_generator.create_snapshot(), runtime.peeping_room_service.create_snapshot()]), "placement adds no room, occupancy, cost or ID (normal queue receipt only)")
expect(domain_before == var_to_bytes([runtime.world_service.create_snapshot(), runtime.economy_service.create_snapshot(), runtime.peeping_room_service.create_snapshot()]), "queued placement adds no room, occupancy or cost")
var ids_after: Dictionary = runtime.id_generator.create_snapshot()
var counters_after: Dictionary = ids_after["counters"]
expect(ids_before["version"] == ids_after["version"], "queued placement preserves ID generator version")
for prefix: Variant in counters_before:
if prefix != "domain_event":
expect(counters_after.has(prefix) and counters_after.get(prefix) == counters_before[prefix], "queued placement consumes no non-event ID or removes prefix: %s" % prefix)
for prefix: Variant in counters_after:
if prefix != "domain_event":
expect(counters_before.has(prefix), "queued placement adds no non-event ID prefix: %s" % prefix)
expect(counters_after.has("domain_event") and counters_after["domain_event"] == event_counter_before + 1, "queued placement allocates exactly one normal receipt event ID")
var new_events: Array[SimulationDomainEvent] = []
for event: SimulationDomainEvent in runtime.domain_events.recent_events():
if not event_ids_before.has(event.event_id):
new_events.append(event)
expect(new_events.size() == 1, "queued placement publishes exactly one new receipt event")
if new_events.size() == 1:
var receipt: SimulationDomainEvent = new_events[0]
expect(receipt.event_id == StringName("domain_event.%012d" % (event_counter_before + 1)), "placement receipt uses the next domain event ID")
expect(receipt.event_type == &"COMMAND_FAILED", "unavailable placement receipt is COMMAND_FAILED")
expect(receipt.causation_command_id == unavailable.command_id, "placement receipt causation matches rejected command")
var room := place(f)
enable_fixture(f, room)
var blocked: CommandResult = runtime.submit_command(&"peeping_room_record_evidence", {&"room_id": room, &"source_event_key": &"fixture.command"})
+123 -4
View File
@@ -5,6 +5,9 @@ import ast
import inspect
import json
import os
import re
import stat
import types
from pathlib import Path
import shutil
import sys
@@ -13,6 +16,7 @@ sys.dont_write_bytecode = True
import run_all_tests as shared
PROTOCOL = 'guarded-p13-reference-v1'
CANONICAL_EVIDENCE = 'p13-reference-native-uid-corrected'
NEW_TESTS = [
'tests/special/test_peeping_room_geometry.gd',
'tests/special/test_peeping_room_reference.gd',
@@ -34,12 +38,112 @@ ROSTER = NEW_TESTS + [
]
def uid_plan(refs):
return {name + '.uid': {'owner': name, 'owner_sha256': pin['sha256'],
'file_type': 'regular'}
for name, pin in sorted(refs.items())
if name.endswith('.gd') and name + '.uid' not in refs
and (name.startswith('tests/special/')
or name == 'scripts/special/peeping_room_service.gd')}
def uid_snapshot(stage, source, plan):
"""Accept exactly the source inventory and finite native UID plan."""
actual = shared.inventory(stage, stage=True)
shared.require(set(actual) == set(source) | set(plan), 'exact source and planned UID set')
shared.require({n: actual[n] for n in source} == source, 'original source/settings unchanged')
seen = set()
for name in source:
if name.endswith('.uid'):
raw = (stage / name).read_bytes().rstrip(b'\r\n')
shared.require(raw not in seen, 'existing project UID collision')
seen.add(raw)
result = {}
for name, binding in plan.items():
path = stage / name
shared.require(stat.S_ISREG(path.lstat().st_mode) and not path.is_symlink()
and path.stat().st_nlink == 1, 'ordinary generated UID')
raw = path.read_bytes()
shared.require(re.fullmatch(rb'uid://[a-z0-9]{1,13}\n', raw) is not None,
'complete canonical UID bytes')
shared.require(raw.rstrip(b'\n') not in seen, 'generated UID collision')
seen.add(raw.rstrip(b'\n'))
shared.require(stat.S_ISREG((stage / binding['owner']).lstat().st_mode)
and shared.sha(stage / binding['owner']) == binding['owner_sha256'],
'UID owner content binding')
result[name] = dict(binding, bytes=len(raw), raw_bytes=list(raw),
sha256=shared.sha(path), text=raw.decode('ascii'))
return result
def install_uid_policy(namespace):
"""Specialize private globals; shared and P18 functions remain untouched."""
original_collect, original_seal = namespace['collect'], namespace['seal']
state = {}
def reports(stage, expected, previous, requested):
shared.require(not requested and not previous, 'P13 has no generated reports')
snapshot = uid_snapshot(stage, state['source'], state['plan'])
if state['accepted'] is None:
shared.require(state['phase'] == 'import', 'UID generation only during import')
state['accepted'] = snapshot
expected.update({n: {'bytes': p['bytes'], 'sha256': p['sha256']}
for n, p in snapshot.items()})
shared.require(snapshot == state['accepted'], 'sealed UID bytes unchanged')
return shared.declared_reports(stage, expected, previous, requested)
phase_globals = dict(vars(shared), declared_reports=reports)
execute = types.FunctionType(shared.execute_phase.__code__, phase_globals)
def phase(*args):
stage, out, label = args[1:4]
state['phase'] = label
if label == 'import':
shared.require(shared.inventory(stage, stage=True) == state['source'],
'original stage before import')
before = {}
shared.write(out / 'uid-plan.json', state['plan'])
else:
before = uid_snapshot(stage, state['source'], state['plan'])
shared.require(before == state['accepted'], 'UID set before phase unchanged')
row = execute(*args)
after = uid_snapshot(stage, state['source'], state['plan'])
shared.require(after == state['accepted'], 'UID set after phase unchanged')
shared.write(out / (label + '-uids.json'), {'before': before, 'after': after})
return row
namespace['shared'] = types.SimpleNamespace(**dict(vars(shared), execute_phase=phase))
def collect(args, root, out, refs, *rest):
state.update(source=namespace['content_map'](refs), plan=uid_plan(refs), accepted=None)
return original_collect(args, root, out, refs, *rest)
def seal(out, refs, engine, contract_sha):
shared.write(out / 'accepted-uids.json', state['accepted'])
return original_seal(out, refs, engine, contract_sha)
def retained(stage, source, out):
plan = namespace['read_json'](out / 'uid-plan.json')
shared.require(plan == uid_plan(source), 'independently derived exact UID plan')
accepted = uid_snapshot(stage, source, plan)
shared.require(namespace['read_json'](out / 'accepted-uids.json') == accepted,
'retained raw UID bytes and owner bindings')
for label in ['import', 'parse'] + [str(i).zfill(3) for i in range(len(ROSTER))]:
shared.require(namespace['read_json'](out / (label + '-uids.json')) ==
{'before': {} if label == 'import' else accepted, 'after': accepted},
'all phase UID before/after seals')
return True
namespace.update(collect=collect, seal=seal, uid_retained=retained)
def protocol_core():
"""Reuse P18's complete guarded core without editing or copying its runner.
P18 predates configurable protocol/roster constants. Specialize ONLY its
three entry functions' identity literals and explicit roster cardinalities.
All proof gates and pure helpers are the imported original functions.
P18 predates configurable protocol/roster constants. Specialize its three
entry functions' identity literals and explicit roster cardinalities, plus
one retained-stage comparison for the finite UID policy. The local phase
adapter retains every original shared gate and seals its accepted sidecars.
Fail closed if an upstream function changes any of these adapter sites.
Both runner sources remain bound by the whole selected source map.
"""
@@ -92,7 +196,22 @@ def protocol_core():
tree = adapter.visit(ast.parse(inspect.getsource(getattr(core, name))))
shared.require((adapter.identities, adapter.counts, adapter.summary) == counts,
'unchanged upstream adaptation sites: ' + name)
if name == 'verify':
old = "shared.inventory(confined(out, 'stage'), stage=True) == source"
matches = [node for node in ast.walk(tree)
if isinstance(node, ast.Compare) and ast.unparse(node) == old]
shared.require(len(matches) == 1, 'unchanged retained-stage UID adapter site')
class Retained(ast.NodeTransformer):
def visit_Compare(self, node):
if ast.unparse(node) == old:
return ast.copy_location(ast.parse(
"uid_retained(confined(out, 'stage'), source, out)", mode='eval').body, node)
return self.generic_visit(node)
tree = Retained().visit(tree)
exec(compile(ast.fix_missing_locations(tree), str(shared.HERE / 'run_p18_relationship_tests.py'), 'exec'), namespace)
install_uid_policy(namespace)
return namespace
@@ -118,7 +237,7 @@ def main(argv=None):
if args.output is None:
base = os.environ.get('BUILD_OUTPUT_DIR')
shared.require(bool(base) and Path(base).is_absolute(), 'absolute BUILD_OUTPUT_DIR required')
args.output = str(Path(base) / 'p13-reference-native')
args.output = str(Path(base) / CANONICAL_EVIDENCE)
args.timeout = 1200 # unchanged guarded core timeout; not a product value
core = protocol_core()
root = shared.HERE.parent