diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/CLOUD_RESTORE_METADATA_VERIFIED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/CLOUD_RESTORE_METADATA_VERIFIED.json new file mode 100644 index 0000000..2c96d14 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/CLOUD_RESTORE_METADATA_VERIFIED.json @@ -0,0 +1,30 @@ +{ + "files": [ + { + "name": "MANIFEST.json", + "url": "https://drive.google.com/file/d/1I0dCIIRucT0N0GnprOofSHhGSrdM8F0u/view?usp=drivesdk", + "id": "1I0dCIIRucT0N0GnprOofSHhGSrdM8F0u", + "sha256": "586ba62da712fd17a7f02ed86a0223cb5293465ff45a4e8757a9dcb670f4b22b", + "bytes": 14356, + "raw_readback_verified": true + }, + { + "name": "restore.py", + "url": "https://drive.google.com/file/d/1QjS6v6ht63O5KStHwVaN0AUH5fLG5eKu/view?usp=drivesdk", + "id": "1QjS6v6ht63O5KStHwVaN0AUH5fLG5eKu", + "sha256": "1082a4581b677345d4b1b1a8172ecd40224b59242b0e19a84a3016cd41c5c2e1", + "bytes": 2132, + "raw_readback_verified": true + }, + { + "name": "RESTORE.md", + "url": "https://drive.google.com/file/d/1NpNkNhJn60d78u9GX4wHmZCDvI0B4cJv/view?usp=drivesdk", + "id": "1NpNkNhJn60d78u9GX4wHmZCDvI0B4cJv", + "sha256": "9a33b568f276b4d3c1746be68cb37303295ba8a1ee31abc8d5f18624ce823454", + "bytes": 1638, + "raw_readback_verified": true + } + ], + "all_restore_bytes_identical": true, + "formal_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/CLOUD_ZIPS_VERIFIED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/CLOUD_ZIPS_VERIFIED.json new file mode 100644 index 0000000..789b437 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/CLOUD_ZIPS_VERIFIED.json @@ -0,0 +1,25 @@ +{ + "all_three_whole_zip_bytes_verified": true, + "files": [ + { + "variant": "optional-capture", + "sha256": "e593c0c4675672d773b91e8297a7380f18c2750ba05c205c44426ef14d00d96f", + "bytes": 90662752, + "actual_cloud_readback_verified": true + }, + { + "variant": "unsorted-membership", + "sha256": "ed60d7e4954a3c55e92ecf1520b596322ecd3c4342f778d55e90d6ac39accd46", + "bytes": 90662748, + "actual_cloud_readback_verified": true + }, + { + "variant": "p02-03-r05", + "sha256": "9af0ef42b97f71fd09587990c5b1d8ce14792252eb05a32cd58a1197f60f5a29", + "bytes": 90702153, + "actual_cloud_readback_verified": true + } + ], + "all_members_already_matched_local_distribution": true, + "formal_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/MANIFEST.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/MANIFEST.json new file mode 100644 index 0000000..099f21e --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/MANIFEST.json @@ -0,0 +1,374 @@ +{ + "scope": "Only three historical 2026-10-10-era Windows ZIPs and their byte-identical extracted distribution copies. Keep export proof/source/receipts locally. These are not same-current-final-Windows acceptance.", + "items": [ + { + "name": "windows-current1299-optional-capture-release-candidate-r01-46fc6c398e3d42a4a0a55646d495b070", + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/windows-current1299-optional-capture-release-candidate-r01-46fc6c398e3d42a4a0a55646d495b070", + "zip": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/windows-current1299-optional-capture-release-candidate-r01-46fc6c398e3d42a4a0a55646d495b070/TheTree-Windows-current-source-release-candidate.zip", + "sha256": "e593c0c4675672d773b91e8297a7380f18c2750ba05c205c44426ef14d00d96f", + "bytes": 90662752, + "mode": 420, + "mtime_ns": 1791447754699533163 + }, + "files": [ + { + "relative_path": "TheTree/BUILD_MANIFEST.json", + "sha256": "3cdaf0486c49726b51be7e577bd2f54c6f0b11c9ce5da942858e5515d91ee401", + "bytes": 78128, + "mode": 420, + "mtime_ns": 1791447751172997493 + }, + { + "relative_path": "TheTree/LICENSES/Godot-LICENSE.txt", + "sha256": "b0435e3b3e4e55238f05f4b306f30524a1b2e20147810d436eaa554fa6855c80", + "bytes": 1149, + "mode": 420, + "mtime_ns": 1791447751024554474 + }, + { + "relative_path": "TheTree/LICENSES/Godot-third-party.txt", + "sha256": "908aaf7ad53efa3f6d948b3265b6a4a660f9cc532c1caba7923a1292d3b8dda0", + "bytes": 103199, + "mode": 420, + "mtime_ns": 1791447751024808764 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-InterfaceSounds.txt", + "sha256": "f7966c773bbed0eca6a9c75081c44a178b38eae112724dbb5fdfbd4192d118a9", + "bytes": 574, + "mode": 420, + "mtime_ns": 1791447751025013138 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-TinyDungeon.txt", + "sha256": "9f574a2f1f636a3db8a0665ba90212f34e2b5e61ecb533d77c05237766374111", + "bytes": 570, + "mode": 420, + "mtime_ns": 1791447751025225637 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-TinyTown.txt", + "sha256": "c483c167cc3bdfe17c15f957ff847d409f64d81b410b28783636cf3b2b7814c5", + "bytes": 567, + "mode": 420, + "mtime_ns": 1791447751025448470 + }, + { + "relative_path": "TheTree/LICENSES/kenney-interface-sounds-source.json", + "sha256": "f981c2ce12ed364010217dee996908f037d2abfcc3b21b8cf501dd591f7744c9", + "bytes": 1330, + "mode": 420, + "mtime_ns": 1791447751025653219 + }, + { + "relative_path": "TheTree/LICENSES/kenney-sources.json", + "sha256": "708f5980d0e740f6a7bf1e7fbd0d8964292729309c1a3eeafc367fb94f119b76", + "bytes": 724, + "mode": 420, + "mtime_ns": 1791447751025835343 + }, + { + "relative_path": "TheTree/README.txt", + "sha256": "59e86b72fe6087dc6c83a8bffd4041046cc33c4513d9fe25e0bde1c0b5cf057e", + "bytes": 240, + "mode": 420, + "mtime_ns": 1791447751026447590 + }, + { + "relative_path": "TheTree/SOURCE_MANIFEST.json", + "sha256": "85cf9fe0dcc1133c6e048d61f545c0f034d123c1497c6a7089359f3df3350092", + "bytes": 152598, + "mode": 420, + "mtime_ns": 1791447751026376257 + }, + { + "relative_path": "TheTree/TheTree.exe", + "sha256": "d34d36f3be1a6c49c56525ae86469b92e4f417ddf0b43cf00dd80c385c4b0562", + "bytes": 109268480, + "mode": 420, + "mtime_ns": 1791447746011119869 + }, + { + "relative_path": "TheTree/TheTree.pck", + "sha256": "84be6eb5d1894a2169fbd8efa2f780b486af3aaad06f6c57f36416d8fd521440", + "bytes": 54201240, + "mode": 420, + "mtime_ns": 1791447747133086561 + } + ], + "directories": [ + { + "path": ".", + "mode": 493, + "mtime_ns": 1791447743913272805 + }, + { + "path": "TheTree", + "mode": 493, + "mtime_ns": 1791982101539818954 + }, + { + "path": "TheTree/LICENSES", + "mode": 493, + "mtime_ns": 1791981559275304647 + } + ], + "export_actual_pid": 86640, + "export_ended": true, + "cloud": { + "id": "1CDHCS8q3Tpo32Hn1L4XAXekl9jCRXrIg", + "url": "https://drive.google.com/file/d/1CDHCS8q3Tpo32Hn1L4XAXekl9jCRXrIg/view?usp=drivesdk", + "file_name": "old-windows-r09-optional-capture.zip", + "mime_type": "application/zip" + } + }, + { + "name": "windows-current1299-unsorted-membership-release-candidate-r01-4a758a1bb6f24fbfb0b1a5dff56d0421", + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/windows-current1299-unsorted-membership-release-candidate-r01-4a758a1bb6f24fbfb0b1a5dff56d0421", + "zip": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/windows-current1299-unsorted-membership-release-candidate-r01-4a758a1bb6f24fbfb0b1a5dff56d0421/TheTree-Windows-current-source-release-candidate.zip", + "sha256": "ed60d7e4954a3c55e92ecf1520b596322ecd3c4342f778d55e90d6ac39accd46", + "bytes": 90662748, + "mode": 420, + "mtime_ns": 1791440560198659367 + }, + "files": [ + { + "relative_path": "TheTree/BUILD_MANIFEST.json", + "sha256": "e7716509c394d39d20d4bc9a4ee44264b4be531ab9f0a6b34f84be081e4602b1", + "bytes": 78266, + "mode": 420, + "mtime_ns": 1791440556615471577 + }, + { + "relative_path": "TheTree/LICENSES/Godot-LICENSE.txt", + "sha256": "b0435e3b3e4e55238f05f4b306f30524a1b2e20147810d436eaa554fa6855c80", + "bytes": 1149, + "mode": 420, + "mtime_ns": 1791440556477071156 + }, + { + "relative_path": "TheTree/LICENSES/Godot-third-party.txt", + "sha256": "908aaf7ad53efa3f6d948b3265b6a4a660f9cc532c1caba7923a1292d3b8dda0", + "bytes": 103199, + "mode": 420, + "mtime_ns": 1791440556478418946 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-InterfaceSounds.txt", + "sha256": "f7966c773bbed0eca6a9c75081c44a178b38eae112724dbb5fdfbd4192d118a9", + "bytes": 574, + "mode": 420, + "mtime_ns": 1791440556478634613 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-TinyDungeon.txt", + "sha256": "9f574a2f1f636a3db8a0665ba90212f34e2b5e61ecb533d77c05237766374111", + "bytes": 570, + "mode": 420, + "mtime_ns": 1791440556478832571 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-TinyTown.txt", + "sha256": "c483c167cc3bdfe17c15f957ff847d409f64d81b410b28783636cf3b2b7814c5", + "bytes": 567, + "mode": 420, + "mtime_ns": 1791440556479017446 + }, + { + "relative_path": "TheTree/LICENSES/kenney-interface-sounds-source.json", + "sha256": "f981c2ce12ed364010217dee996908f037d2abfcc3b21b8cf501dd591f7744c9", + "bytes": 1330, + "mode": 420, + "mtime_ns": 1791440556479196863 + }, + { + "relative_path": "TheTree/LICENSES/kenney-sources.json", + "sha256": "708f5980d0e740f6a7bf1e7fbd0d8964292729309c1a3eeafc367fb94f119b76", + "bytes": 724, + "mode": 420, + "mtime_ns": 1791440556479347904 + }, + { + "relative_path": "TheTree/README.txt", + "sha256": "59e86b72fe6087dc6c83a8bffd4041046cc33c4513d9fe25e0bde1c0b5cf057e", + "bytes": 240, + "mode": 420, + "mtime_ns": 1791440556479929321 + }, + { + "relative_path": "TheTree/SOURCE_MANIFEST.json", + "sha256": "9b06033e7d236994bb235c18774fdc9bb7d5f13c737d5828f02121452a532629", + "bytes": 152598, + "mode": 420, + "mtime_ns": 1791440556479864987 + }, + { + "relative_path": "TheTree/TheTree.exe", + "sha256": "d34d36f3be1a6c49c56525ae86469b92e4f417ddf0b43cf00dd80c385c4b0562", + "bytes": 109268480, + "mode": 420, + "mtime_ns": 1791440551426619577 + }, + { + "relative_path": "TheTree/TheTree.pck", + "sha256": "f5062056cd7c6b78f09d6367dd53eb7b009cf60c7606ea309b7270249e9cb04e", + "bytes": 54201256, + "mode": 420, + "mtime_ns": 1791440552552264643 + } + ], + "directories": [ + { + "path": ".", + "mode": 493, + "mtime_ns": 1791440549272303096 + }, + { + "path": "TheTree", + "mode": 493, + "mtime_ns": 1791982207139806136 + }, + { + "path": "TheTree/LICENSES", + "mode": 493, + "mtime_ns": 1791982207163831145 + } + ], + "export_actual_pid": 98873, + "export_ended": true, + "cloud": { + "id": "1B--rlPkZQXeYNDjUfatT-GeAD9qkD3yz", + "url": "https://drive.google.com/file/d/1B--rlPkZQXeYNDjUfatT-GeAD9qkD3yz/view?usp=drivesdk", + "file_name": "old-windows-r09-unsorted-membership.zip", + "mime_type": "application/zip" + } + }, + { + "name": "p02-03-r05-windows-export-native-r03", + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p02-03-r05-windows-export-native-r03", + "zip": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p02-03-r05-windows-export-native-r03/TheTree-Windows-current-source-release-candidate.zip", + "sha256": "9af0ef42b97f71fd09587990c5b1d8ce14792252eb05a32cd58a1197f60f5a29", + "bytes": 90702153, + "mode": 420, + "mtime_ns": 1791592216411888023 + }, + "files": [ + { + "relative_path": "TheTree/BUILD_MANIFEST.json", + "sha256": "2a1d70f0039adbc828a5c52d91bac5d1eb8d734ed29ca6bda76ae893cfb48f66", + "bytes": 131644, + "mode": 420, + "mtime_ns": 1791592212691480397 + }, + { + "relative_path": "TheTree/LICENSES/Godot-LICENSE.txt", + "sha256": "b0435e3b3e4e55238f05f4b306f30524a1b2e20147810d436eaa554fa6855c80", + "bytes": 1149, + "mode": 420, + "mtime_ns": 1791592212540839014 + }, + { + "relative_path": "TheTree/LICENSES/Godot-third-party.txt", + "sha256": "908aaf7ad53efa3f6d948b3265b6a4a660f9cc532c1caba7923a1292d3b8dda0", + "bytes": 103199, + "mode": 420, + "mtime_ns": 1791592212541078098 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-InterfaceSounds.txt", + "sha256": "f7966c773bbed0eca6a9c75081c44a178b38eae112724dbb5fdfbd4192d118a9", + "bytes": 574, + "mode": 420, + "mtime_ns": 1791592212541294224 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-TinyDungeon.txt", + "sha256": "9f574a2f1f636a3db8a0665ba90212f34e2b5e61ecb533d77c05237766374111", + "bytes": 570, + "mode": 420, + "mtime_ns": 1791592212541528099 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-TinyTown.txt", + "sha256": "c483c167cc3bdfe17c15f957ff847d409f64d81b410b28783636cf3b2b7814c5", + "bytes": 567, + "mode": 420, + "mtime_ns": 1791592212541718058 + }, + { + "relative_path": "TheTree/LICENSES/kenney-interface-sounds-source.json", + "sha256": "f981c2ce12ed364010217dee996908f037d2abfcc3b21b8cf501dd591f7744c9", + "bytes": 1330, + "mode": 420, + "mtime_ns": 1791592212541924350 + }, + { + "relative_path": "TheTree/LICENSES/kenney-sources.json", + "sha256": "708f5980d0e740f6a7bf1e7fbd0d8964292729309c1a3eeafc367fb94f119b76", + "bytes": 724, + "mode": 420, + "mtime_ns": 1791592212542107268 + }, + { + "relative_path": "TheTree/README.txt", + "sha256": "59e86b72fe6087dc6c83a8bffd4041046cc33c4513d9fe25e0bde1c0b5cf057e", + "bytes": 240, + "mode": 420, + "mtime_ns": 1791592212542769853 + }, + { + "relative_path": "TheTree/SOURCE_MANIFEST.json", + "sha256": "8bbb18bd12a474e944eb7ee28075ac53fdbd54f62d70e2b45badee5ebc84d08a", + "bytes": 152598, + "mode": 420, + "mtime_ns": 1791592212542695227 + }, + { + "relative_path": "TheTree/TheTree.exe", + "sha256": "d34d36f3be1a6c49c56525ae86469b92e4f417ddf0b43cf00dd80c385c4b0562", + "bytes": 109268480, + "mode": 420, + "mtime_ns": 1791592208392309717 + }, + { + "relative_path": "TheTree/TheTree.pck", + "sha256": "7861bf1bc23dc89a5c691a67f56a9543411db51e75031746ebb78c14f2e69edd", + "bytes": 54233448, + "mode": 420, + "mtime_ns": 1791592209697660994 + } + ], + "directories": [ + { + "path": ".", + "mode": 493, + "mtime_ns": 1791592206037560564 + }, + { + "path": "TheTree", + "mode": 493, + "mtime_ns": 1791982206015145547 + }, + { + "path": "TheTree/LICENSES", + "mode": 493, + "mtime_ns": 1791982206031488742 + } + ], + "export_actual_pid": 44792, + "export_ended": true, + "cloud": { + "id": "1BpD0syDcUN5oZJsJ8KNH7lHTceHrxHKK", + "url": "https://drive.google.com/file/d/1BpD0syDcUN5oZJsJ8KNH7lHTceHrxHKK/view?usp=drivesdk", + "file_name": "old-windows-r09-p02-03-r05.zip", + "mime_type": "application/zip" + } + } + ], + "full_zip_and_all_extracted_members_verified": true, + "new_original_acceptance_credit": 0, + "local_retirement_pending_cloud_readback": true +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/MANIFEST.pending.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/MANIFEST.pending.json new file mode 100644 index 0000000..2e5bc14 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/MANIFEST.pending.json @@ -0,0 +1,359 @@ +{ + "scope": "Only three historical 2026-10-10-era Windows ZIPs and their byte-identical extracted distribution copies. Keep export proof/source/receipts locally. These are not same-current-final-Windows acceptance.", + "items": [ + { + "name": "windows-current1299-optional-capture-release-candidate-r01-46fc6c398e3d42a4a0a55646d495b070", + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/windows-current1299-optional-capture-release-candidate-r01-46fc6c398e3d42a4a0a55646d495b070", + "zip": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/windows-current1299-optional-capture-release-candidate-r01-46fc6c398e3d42a4a0a55646d495b070/TheTree-Windows-current-source-release-candidate.zip", + "sha256": "e593c0c4675672d773b91e8297a7380f18c2750ba05c205c44426ef14d00d96f", + "bytes": 90662752, + "mode": 420, + "mtime_ns": 1791447754699533163 + }, + "files": [ + { + "relative_path": "TheTree/BUILD_MANIFEST.json", + "sha256": "3cdaf0486c49726b51be7e577bd2f54c6f0b11c9ce5da942858e5515d91ee401", + "bytes": 78128, + "mode": 420, + "mtime_ns": 1791447751172997493 + }, + { + "relative_path": "TheTree/LICENSES/Godot-LICENSE.txt", + "sha256": "b0435e3b3e4e55238f05f4b306f30524a1b2e20147810d436eaa554fa6855c80", + "bytes": 1149, + "mode": 420, + "mtime_ns": 1791447751024554474 + }, + { + "relative_path": "TheTree/LICENSES/Godot-third-party.txt", + "sha256": "908aaf7ad53efa3f6d948b3265b6a4a660f9cc532c1caba7923a1292d3b8dda0", + "bytes": 103199, + "mode": 420, + "mtime_ns": 1791447751024808764 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-InterfaceSounds.txt", + "sha256": "f7966c773bbed0eca6a9c75081c44a178b38eae112724dbb5fdfbd4192d118a9", + "bytes": 574, + "mode": 420, + "mtime_ns": 1791447751025013138 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-TinyDungeon.txt", + "sha256": "9f574a2f1f636a3db8a0665ba90212f34e2b5e61ecb533d77c05237766374111", + "bytes": 570, + "mode": 420, + "mtime_ns": 1791447751025225637 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-TinyTown.txt", + "sha256": "c483c167cc3bdfe17c15f957ff847d409f64d81b410b28783636cf3b2b7814c5", + "bytes": 567, + "mode": 420, + "mtime_ns": 1791447751025448470 + }, + { + "relative_path": "TheTree/LICENSES/kenney-interface-sounds-source.json", + "sha256": "f981c2ce12ed364010217dee996908f037d2abfcc3b21b8cf501dd591f7744c9", + "bytes": 1330, + "mode": 420, + "mtime_ns": 1791447751025653219 + }, + { + "relative_path": "TheTree/LICENSES/kenney-sources.json", + "sha256": "708f5980d0e740f6a7bf1e7fbd0d8964292729309c1a3eeafc367fb94f119b76", + "bytes": 724, + "mode": 420, + "mtime_ns": 1791447751025835343 + }, + { + "relative_path": "TheTree/README.txt", + "sha256": "59e86b72fe6087dc6c83a8bffd4041046cc33c4513d9fe25e0bde1c0b5cf057e", + "bytes": 240, + "mode": 420, + "mtime_ns": 1791447751026447590 + }, + { + "relative_path": "TheTree/SOURCE_MANIFEST.json", + "sha256": "85cf9fe0dcc1133c6e048d61f545c0f034d123c1497c6a7089359f3df3350092", + "bytes": 152598, + "mode": 420, + "mtime_ns": 1791447751026376257 + }, + { + "relative_path": "TheTree/TheTree.exe", + "sha256": "d34d36f3be1a6c49c56525ae86469b92e4f417ddf0b43cf00dd80c385c4b0562", + "bytes": 109268480, + "mode": 420, + "mtime_ns": 1791447746011119869 + }, + { + "relative_path": "TheTree/TheTree.pck", + "sha256": "84be6eb5d1894a2169fbd8efa2f780b486af3aaad06f6c57f36416d8fd521440", + "bytes": 54201240, + "mode": 420, + "mtime_ns": 1791447747133086561 + } + ], + "directories": [ + { + "path": ".", + "mode": 493, + "mtime_ns": 1791447743913272805 + }, + { + "path": "TheTree", + "mode": 493, + "mtime_ns": 1791982101539818954 + }, + { + "path": "TheTree/LICENSES", + "mode": 493, + "mtime_ns": 1791981559275304647 + } + ], + "export_actual_pid": 86640, + "export_ended": true, + "cloud": null + }, + { + "name": "windows-current1299-unsorted-membership-release-candidate-r01-4a758a1bb6f24fbfb0b1a5dff56d0421", + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/windows-current1299-unsorted-membership-release-candidate-r01-4a758a1bb6f24fbfb0b1a5dff56d0421", + "zip": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/windows-current1299-unsorted-membership-release-candidate-r01-4a758a1bb6f24fbfb0b1a5dff56d0421/TheTree-Windows-current-source-release-candidate.zip", + "sha256": "ed60d7e4954a3c55e92ecf1520b596322ecd3c4342f778d55e90d6ac39accd46", + "bytes": 90662748, + "mode": 420, + "mtime_ns": 1791440560198659367 + }, + "files": [ + { + "relative_path": "TheTree/BUILD_MANIFEST.json", + "sha256": "e7716509c394d39d20d4bc9a4ee44264b4be531ab9f0a6b34f84be081e4602b1", + "bytes": 78266, + "mode": 420, + "mtime_ns": 1791440556615471577 + }, + { + "relative_path": "TheTree/LICENSES/Godot-LICENSE.txt", + "sha256": "b0435e3b3e4e55238f05f4b306f30524a1b2e20147810d436eaa554fa6855c80", + "bytes": 1149, + "mode": 420, + "mtime_ns": 1791440556477071156 + }, + { + "relative_path": "TheTree/LICENSES/Godot-third-party.txt", + "sha256": "908aaf7ad53efa3f6d948b3265b6a4a660f9cc532c1caba7923a1292d3b8dda0", + "bytes": 103199, + "mode": 420, + "mtime_ns": 1791440556478418946 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-InterfaceSounds.txt", + "sha256": "f7966c773bbed0eca6a9c75081c44a178b38eae112724dbb5fdfbd4192d118a9", + "bytes": 574, + "mode": 420, + "mtime_ns": 1791440556478634613 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-TinyDungeon.txt", + "sha256": "9f574a2f1f636a3db8a0665ba90212f34e2b5e61ecb533d77c05237766374111", + "bytes": 570, + "mode": 420, + "mtime_ns": 1791440556478832571 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-TinyTown.txt", + "sha256": "c483c167cc3bdfe17c15f957ff847d409f64d81b410b28783636cf3b2b7814c5", + "bytes": 567, + "mode": 420, + "mtime_ns": 1791440556479017446 + }, + { + "relative_path": "TheTree/LICENSES/kenney-interface-sounds-source.json", + "sha256": "f981c2ce12ed364010217dee996908f037d2abfcc3b21b8cf501dd591f7744c9", + "bytes": 1330, + "mode": 420, + "mtime_ns": 1791440556479196863 + }, + { + "relative_path": "TheTree/LICENSES/kenney-sources.json", + "sha256": "708f5980d0e740f6a7bf1e7fbd0d8964292729309c1a3eeafc367fb94f119b76", + "bytes": 724, + "mode": 420, + "mtime_ns": 1791440556479347904 + }, + { + "relative_path": "TheTree/README.txt", + "sha256": "59e86b72fe6087dc6c83a8bffd4041046cc33c4513d9fe25e0bde1c0b5cf057e", + "bytes": 240, + "mode": 420, + "mtime_ns": 1791440556479929321 + }, + { + "relative_path": "TheTree/SOURCE_MANIFEST.json", + "sha256": "9b06033e7d236994bb235c18774fdc9bb7d5f13c737d5828f02121452a532629", + "bytes": 152598, + "mode": 420, + "mtime_ns": 1791440556479864987 + }, + { + "relative_path": "TheTree/TheTree.exe", + "sha256": "d34d36f3be1a6c49c56525ae86469b92e4f417ddf0b43cf00dd80c385c4b0562", + "bytes": 109268480, + "mode": 420, + "mtime_ns": 1791440551426619577 + }, + { + "relative_path": "TheTree/TheTree.pck", + "sha256": "f5062056cd7c6b78f09d6367dd53eb7b009cf60c7606ea309b7270249e9cb04e", + "bytes": 54201256, + "mode": 420, + "mtime_ns": 1791440552552264643 + } + ], + "directories": [ + { + "path": ".", + "mode": 493, + "mtime_ns": 1791440549272303096 + }, + { + "path": "TheTree", + "mode": 493, + "mtime_ns": 1791982207139806136 + }, + { + "path": "TheTree/LICENSES", + "mode": 493, + "mtime_ns": 1791982207163831145 + } + ], + "export_actual_pid": 98873, + "export_ended": true, + "cloud": null + }, + { + "name": "p02-03-r05-windows-export-native-r03", + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p02-03-r05-windows-export-native-r03", + "zip": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p02-03-r05-windows-export-native-r03/TheTree-Windows-current-source-release-candidate.zip", + "sha256": "9af0ef42b97f71fd09587990c5b1d8ce14792252eb05a32cd58a1197f60f5a29", + "bytes": 90702153, + "mode": 420, + "mtime_ns": 1791592216411888023 + }, + "files": [ + { + "relative_path": "TheTree/BUILD_MANIFEST.json", + "sha256": "2a1d70f0039adbc828a5c52d91bac5d1eb8d734ed29ca6bda76ae893cfb48f66", + "bytes": 131644, + "mode": 420, + "mtime_ns": 1791592212691480397 + }, + { + "relative_path": "TheTree/LICENSES/Godot-LICENSE.txt", + "sha256": "b0435e3b3e4e55238f05f4b306f30524a1b2e20147810d436eaa554fa6855c80", + "bytes": 1149, + "mode": 420, + "mtime_ns": 1791592212540839014 + }, + { + "relative_path": "TheTree/LICENSES/Godot-third-party.txt", + "sha256": "908aaf7ad53efa3f6d948b3265b6a4a660f9cc532c1caba7923a1292d3b8dda0", + "bytes": 103199, + "mode": 420, + "mtime_ns": 1791592212541078098 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-InterfaceSounds.txt", + "sha256": "f7966c773bbed0eca6a9c75081c44a178b38eae112724dbb5fdfbd4192d118a9", + "bytes": 574, + "mode": 420, + "mtime_ns": 1791592212541294224 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-TinyDungeon.txt", + "sha256": "9f574a2f1f636a3db8a0665ba90212f34e2b5e61ecb533d77c05237766374111", + "bytes": 570, + "mode": 420, + "mtime_ns": 1791592212541528099 + }, + { + "relative_path": "TheTree/LICENSES/Kenney-TinyTown.txt", + "sha256": "c483c167cc3bdfe17c15f957ff847d409f64d81b410b28783636cf3b2b7814c5", + "bytes": 567, + "mode": 420, + "mtime_ns": 1791592212541718058 + }, + { + "relative_path": "TheTree/LICENSES/kenney-interface-sounds-source.json", + "sha256": "f981c2ce12ed364010217dee996908f037d2abfcc3b21b8cf501dd591f7744c9", + "bytes": 1330, + "mode": 420, + "mtime_ns": 1791592212541924350 + }, + { + "relative_path": "TheTree/LICENSES/kenney-sources.json", + "sha256": "708f5980d0e740f6a7bf1e7fbd0d8964292729309c1a3eeafc367fb94f119b76", + "bytes": 724, + "mode": 420, + "mtime_ns": 1791592212542107268 + }, + { + "relative_path": "TheTree/README.txt", + "sha256": "59e86b72fe6087dc6c83a8bffd4041046cc33c4513d9fe25e0bde1c0b5cf057e", + "bytes": 240, + "mode": 420, + "mtime_ns": 1791592212542769853 + }, + { + "relative_path": "TheTree/SOURCE_MANIFEST.json", + "sha256": "8bbb18bd12a474e944eb7ee28075ac53fdbd54f62d70e2b45badee5ebc84d08a", + "bytes": 152598, + "mode": 420, + "mtime_ns": 1791592212542695227 + }, + { + "relative_path": "TheTree/TheTree.exe", + "sha256": "d34d36f3be1a6c49c56525ae86469b92e4f417ddf0b43cf00dd80c385c4b0562", + "bytes": 109268480, + "mode": 420, + "mtime_ns": 1791592208392309717 + }, + { + "relative_path": "TheTree/TheTree.pck", + "sha256": "7861bf1bc23dc89a5c691a67f56a9543411db51e75031746ebb78c14f2e69edd", + "bytes": 54233448, + "mode": 420, + "mtime_ns": 1791592209697660994 + } + ], + "directories": [ + { + "path": ".", + "mode": 493, + "mtime_ns": 1791592206037560564 + }, + { + "path": "TheTree", + "mode": 493, + "mtime_ns": 1791982206015145547 + }, + { + "path": "TheTree/LICENSES", + "mode": 493, + "mtime_ns": 1791982206031488742 + } + ], + "export_actual_pid": 44792, + "export_ended": true, + "cloud": null + } + ], + "full_zip_and_all_extracted_members_verified": true, + "new_original_acceptance_credit": 0, + "local_retirement_pending_cloud_readback": true +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/RESTORE.md b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/RESTORE.md new file mode 100644 index 0000000..a6b1029 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/RESTORE.md @@ -0,0 +1,22 @@ +# Historical Windows packages r09 restore + +The three whole ZIPs were downloaded back from Drive and byte-hashed before local retirement. Every ZIP entry was separately verified against the existing extracted distribution and historical package-integrity.json. No Windows device acceptance is claimed. Export receipts, logs, source maps and other proof stay local. + +Download MANIFEST.json, restore.py and all three ZIPs from the recorded Drive URLs. With Python 3.12: + +`python3 restore.py MANIFEST.json /fresh/destination optional-capture.zip unsorted-membership.zip p02-03-r05.zip` + +ZIP names do not matter; all three hashes must match. The script refuses existing output folders, verifies ZIPs and all extracted files, and restores file modes/mtimes. To use the old original artifact paths, first restore to a fresh directory, then move only the verified ZIP/distribution into the original artifact folder while preserving existing reports. + +windows-current1299-optional-capture-release-candidate-r01-46fc6c398e3d42a4a0a55646d495b070 +https://drive.google.com/file/d/1CDHCS8q3Tpo32Hn1L4XAXekl9jCRXrIg/view?usp=drivesdk +SHA256 e593c0c4675672d773b91e8297a7380f18c2750ba05c205c44426ef14d00d96f + +windows-current1299-unsorted-membership-release-candidate-r01-4a758a1bb6f24fbfb0b1a5dff56d0421 +https://drive.google.com/file/d/1B--rlPkZQXeYNDjUfatT-GeAD9qkD3yz/view?usp=drivesdk +SHA256 ed60d7e4954a3c55e92ecf1520b596322ecd3c4342f778d55e90d6ac39accd46 + +p02-03-r05-windows-export-native-r03 +https://drive.google.com/file/d/1BpD0syDcUN5oZJsJ8KNH7lHTceHrxHKK/view?usp=drivesdk +SHA256 9af0ef42b97f71fd09587990c5b1d8ce14792252eb05a32cd58a1197f60f5a29 + diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/RETIREMENT.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/RETIREMENT.json new file mode 100644 index 0000000..665e40b --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/RETIREMENT.json @@ -0,0 +1,15 @@ +{ + "retired_packages": [ + "windows-current1299-optional-capture-release-candidate-r01-46fc6c398e3d42a4a0a55646d495b070", + "windows-current1299-unsorted-membership-release-candidate-r01-4a758a1bb6f24fbfb0b1a5dff56d0421", + "p02-03-r05-windows-export-native-r03" + ], + "zip_bytes": 272027653, + "distribution_bytes": 491512275, + "free_before": 1167253504, + "free_after": 1644806144, + "net_free_delta": 477552640, + "all_export_proofs_and_sources_retained": true, + "all_zip_and_restore_bytes_verified_in_Drive": true, + "formal_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/SOURCE_RECHECK.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/SOURCE_RECHECK.json new file mode 100644 index 0000000..0e300e3 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/SOURCE_RECHECK.json @@ -0,0 +1,6 @@ +{ + "all_three_zip_and_36_distribution_members_exact": true, + "no_open_files": true, + "cloud_zip_and_restore_byte_verification_complete": true, + "formal_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/restore.py b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/restore.py new file mode 100644 index 0000000..598dc60 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/restore.py @@ -0,0 +1,26 @@ +"""Restore archived historical ZIPs and exact distribution bytes to a fresh folder.""" +import argparse,hashlib,json,os,shutil,zipfile +from pathlib import Path + +def sha(p): + with p.open('rb')as f:return hashlib.file_digest(f,'sha256').hexdigest() +p=argparse.ArgumentParser();p.add_argument('manifest');p.add_argument('destination');p.add_argument('archives',nargs='+');a=p.parse_args();m=json.loads(Path(a.manifest).read_text());root=Path(a.destination).resolve();archives={} +for name in a.archives: + path=Path(name);h=sha(path);assert h not in archives;archives[h]=path +assert set(archives)=={x['zip']['sha256']for x in m['items']} +for item in m['items']: + dest=root/item['name'];assert dest.resolve().is_relative_to(root)and not dest.exists()and not dest.is_symlink();source=archives[item['zip']['sha256']];assert source.stat().st_size==item['zip']['bytes'];dest.mkdir(parents=True) + target=dest/Path(item['zip']['path']).name + with source.open('rb')as inp,target.open('xb')as out:shutil.copyfileobj(inp,out,1024**2) + assert sha(target)==item['zip']['sha256'];os.chmod(target,item['zip']['mode']);os.utime(target,ns=(item['zip']['mtime_ns'],item['zip']['mtime_ns'])) + files={x['relative_path']:x for x in item['files']} + with zipfile.ZipFile(source)as archive: + assert set(archive.namelist())==set(files)and len(archive.infolist())==len(files) + for name,x in files.items(): + relative=Path(name);assert not relative.is_absolute()and '..'not in relative.parts;path=dest/'distribution'/relative;assert path.resolve().is_relative_to(dest)and not path.exists();path.parent.mkdir(parents=True,exist_ok=True);h=hashlib.sha256() + with archive.open(name)as inp,path.open('xb')as out: + for chunk in iter(lambda:inp.read(1024**2),b''):h.update(chunk);out.write(chunk) + assert h.hexdigest()==x['sha256']and path.stat().st_size==x['bytes'];os.chmod(path,x['mode']);os.utime(path,ns=(x['mtime_ns'],x['mtime_ns'])) + for d in reversed(item['directories']): + path=dest/'distribution'/d['path'];os.chmod(path,d['mode']);os.utime(path,ns=(d['mtime_ns'],d['mtime_ns'])) +print('Verified and restored',len(m['items']),'historical packages') diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/thetree-old-windows-r09-prepare.py b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/thetree-old-windows-r09-prepare.py new file mode 100644 index 0000000..256a3fc --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/thetree-old-windows-r09-prepare.py @@ -0,0 +1,18 @@ +from pathlib import Path +import json,hashlib,zipfile,time +r=Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部');a=r/'artifacts/original-completion-2026-10-02';e=r/'docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015';e.mkdir(exist_ok=False);names=['windows-current1299-optional-capture-release-candidate-r01-46fc6c398e3d42a4a0a55646d495b070','windows-current1299-unsorted-membership-release-candidate-r01-4a758a1bb6f24fbfb0b1a5dff56d0421','p02-03-r05-windows-export-native-r03'];items=[] +def sha(p): + with p.open('rb')as f:return hashlib.file_digest(f,'sha256').hexdigest() +for name in names: + p=a/name;z=p/'TheTree-Windows-current-source-release-candidate.zip';integrity=json.loads((p/'package-integrity.json').read_text());process=json.loads((p/'export-process.json').read_text());assert process['passed']and process['native_process']['owned_popen_ended']and process['native_process']['exit_code']==0;assert sha(z)==integrity['zip_sha256'];st=z.stat();files=[];directories=[] + with zipfile.ZipFile(z)as archive: + for info in archive.infolist(): + assert not info.is_dir();path=Path(info.filename);assert not path.is_absolute()and '..'not in path.parts;source=p/'distribution'/path;assert source.is_file()and not source.is_symlink();digest=hashlib.sha256() + with archive.open(info)as f: + for chunk in iter(lambda:f.read(1024**2),b''):digest.update(chunk) + h=digest.hexdigest();s=source.stat();assert h==sha(source)==integrity['members'][info.filename]and s.st_size==info.file_size;files.append({'relative_path':info.filename,'sha256':h,'bytes':s.st_size,'mode':s.st_mode&0o777,'mtime_ns':s.st_mtime_ns}) + assert set(x['relative_path']for x in files)=={str(x.relative_to(p/'distribution'))for x in (p/'distribution').rglob('*')if x.is_file()} + for source in [p/'distribution']+sorted(x for x in (p/'distribution').rglob('*')if x.is_dir()): + s=source.stat();directories.append({'path':'.'if source==p/'distribution'else str(source.relative_to(p/'distribution')),'mode':s.st_mode&0o777,'mtime_ns':s.st_mtime_ns}) + items.append({'name':name,'source':str(p),'zip':{'path':str(z),'sha256':integrity['zip_sha256'],'bytes':st.st_size,'mode':st.st_mode&0o777,'mtime_ns':st.st_mtime_ns},'files':files,'directories':directories,'export_actual_pid':process['actual_pid'],'export_ended':True,'cloud':None}) +result={'scope':'Only three historical 2026-10-10-era Windows ZIPs and their byte-identical extracted distribution copies. Keep export proof/source/receipts locally. These are not same-current-final-Windows acceptance.','items':items,'full_zip_and_all_extracted_members_verified':True,'new_original_acceptance_credit':0,'local_retirement_pending_cloud_readback':True};(e/'MANIFEST.pending.json').write_text(json.dumps(result,ensure_ascii=False,indent=2)+'\n');print({'archives':len(items),'zip_upload_bytes':sum(x['zip']['bytes']for x in items),'extracted_bytes':sum(f['bytes']for x in items for f in x['files'])}) diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/thetree-old-windows-r09-retire.py b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/thetree-old-windows-r09-retire.py new file mode 100644 index 0000000..200cfbe --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015/thetree-old-windows-r09-retire.py @@ -0,0 +1,18 @@ +from pathlib import Path +import json,hashlib,subprocess,shutil +r=Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部');e=r/'docs/plans/original-completion-2026-10-02/execution/drive-offload-old-windows-r09-20261015';m=json.loads((e/'MANIFEST.json').read_text());v=json.loads((e/'CLOUD_ZIPS_VERIFIED.json').read_text());meta=json.loads((e/'CLOUD_RESTORE_METADATA_VERIFIED.json').read_text());assert v['all_three_whole_zip_bytes_verified']and len(v['files'])==3 and meta['all_restore_bytes_identical']and len(meta['files'])==3 +for row in meta['files']:assert hashlib.sha256((e/row['name']).read_bytes()).hexdigest()==row['sha256'] +def sha(p): + with p.open('rb')as f:return hashlib.file_digest(f,'sha256').hexdigest() +for x in m['items']: + root=Path(x['source']);assert root.parent==r/'artifacts/original-completion-2026-10-02';check=subprocess.run(['lsof','-nP','+D',str(root/'distribution')],capture_output=True);assert check.returncode==1 and not check.stdout;check=subprocess.run(['lsof','-nP',x['zip']['path']],capture_output=True);assert check.returncode==1 and not check.stdout + assert sha(Path(x['zip']['path']))==x['zip']['sha256'];assert set(str(p.relative_to(root/'distribution'))for p in(root/'distribution').rglob('*')if p.is_file())=={f['relative_path']for f in x['files']} + for f in x['files']: + p=root/'distribution'/f['relative_path'];assert not p.is_symlink();s=p.stat();assert sha(p)==f['sha256']and s.st_size==f['bytes']and s.st_mode&0o777==f['mode']and s.st_mtime_ns==f['mtime_ns'] +(e/'SOURCE_RECHECK.json').write_text(json.dumps({'all_three_zip_and_36_distribution_members_exact':True,'no_open_files':True,'cloud_zip_and_restore_byte_verification_complete':True,'formal_credit':0},indent=2)+'\n');before=shutil.disk_usage(r).free;retired=[] +for x in m['items']: + root=Path(x['source']);dist=root/'distribution';hold=root/'.distribution-retiring-r09';assert not hold.exists();dist.rename(hold) + for f in x['files']:(hold/f['relative_path']).unlink() + for p in sorted([p for p in hold.rglob('*')if p.is_dir()],key=lambda p:len(p.parts),reverse=True):p.rmdir() + hold.rmdir();Path(x['zip']['path']).unlink();pointer={'cloud_zip':x['cloud'],'zip_sha256':x['zip']['sha256'],'zip_bytes':x['zip']['bytes'],'source_and_export_proofs_retained_locally':True,'restore_metadata':meta['files'],'local_manifest':str(e/'MANIFEST.json'),'local_restore':str(e/'RESTORE.md'),'same_current_final_Windows_acceptance':False,'formal_credit':0};(root/'CLOUD_WINDOWS_R09.json').write_text(json.dumps(pointer,indent=2)+'\n');retired.append(x['name']) +after=shutil.disk_usage(r).free;result={'retired_packages':retired,'zip_bytes':sum(x['zip']['bytes']for x in m['items']),'distribution_bytes':sum(f['bytes']for x in m['items']for f in x['files']),'free_before':before,'free_after':after,'net_free_delta':after-before,'all_export_proofs_and_sources_retained':True,'all_zip_and_restore_bytes_verified_in_Drive':True,'formal_credit':0};(e/'RETIREMENT.json').write_text(json.dumps(result,ensure_ascii=False,indent=2)+'\n');print(json.dumps(result,ensure_ascii=False)) diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/CLOUD_ALL_BYTES_VERIFIED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/CLOUD_ALL_BYTES_VERIFIED.json new file mode 100644 index 0000000..9f717c7 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/CLOUD_ALL_BYTES_VERIFIED.json @@ -0,0 +1,42 @@ +{ + "files": [ + { + "name": "new-objects-r08.tar.gz", + "id": "1Y4rzlArj92SAMqlTYIAK_P9rZ7QvrcVT", + "url": "https://drive.google.com/file/d/1Y4rzlArj92SAMqlTYIAK_P9rZ7QvrcVT/view?usp=drivesdk", + "bytes": 1800566, + "sha256": "2ef5e8150023a0d1e3038aa3b7df78b720ee56343b4f2cb831568e2a5164ddc8", + "actual_cloud_readback": true + }, + { + "name": "MANIFEST.json.gz", + "id": "10l7V2Y7dpzsKzvEZ7mL5IyE3fXX94-hn", + "url": "https://drive.google.com/file/d/10l7V2Y7dpzsKzvEZ7mL5IyE3fXX94-hn/view?usp=drivesdk", + "bytes": 487346, + "sha256": "3454136bcae00d3eaf4ee19c5dc197352914e87c041aea9eabb44634e6e9d88f", + "actual_cloud_readback": true + }, + { + "name": "restore.py", + "id": "1OU7J5Asf_xeLyq2fpm5fd07RWuh0X7Eg", + "url": "https://drive.google.com/file/d/1OU7J5Asf_xeLyq2fpm5fd07RWuh0X7Eg/view?usp=drivesdk", + "bytes": 2439, + "sha256": "14d11436359fd567aec937bcf615fbd0c9c9447b41edf1a3671f6df26af1d4af", + "actual_cloud_readback": true + }, + { + "name": "RESTORE.md", + "id": "1EwIpLv31pJJUxROYz_L9BzhNqRXp1yaO", + "url": "https://drive.google.com/file/d/1EwIpLv31pJJUxROYz_L9BzhNqRXp1yaO/view?usp=drivesdk", + "bytes": 3253, + "sha256": "942e46e389475a5844ab5190658e7eea2dd37fe64fa5f30754bfbf060a25c695", + "actual_cloud_readback": true + } + ], + "all_four_raw_bytes_identical": true, + "all_new_objects_individually_verified": 188, + "prior_archive_readback_reused": true, + "original_file_mappings": 8245, + "original_source_retired": false, + "formal_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/CLOUD_INITIAL_FILES.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/CLOUD_INITIAL_FILES.json new file mode 100644 index 0000000..342f0d9 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/CLOUD_INITIAL_FILES.json @@ -0,0 +1,42 @@ +{ + "archive": { + "accepted_input": "file_uri", + "success": true, + "id": "1Y4rzlArj92SAMqlTYIAK_P9rZ7QvrcVT", + "title": "p18-review-r08-new-objects-r08.tar.gz", + "file_name": "p18-review-r08-new-objects-r08.tar.gz", + "mime_type": "application/gzip", + "url": "https://drive.google.com/file/d/1Y4rzlArj92SAMqlTYIAK_P9rZ7QvrcVT/view?usp=drivesdk", + "parent_id": "1Xa2b6rQmwBFq4jWIDFcJgiCbcNYfWXsK", + "structuredContent": { + "accepted_input": "file_uri", + "success": true, + "id": "1Y4rzlArj92SAMqlTYIAK_P9rZ7QvrcVT", + "title": "p18-review-r08-new-objects-r08.tar.gz", + "file_name": "p18-review-r08-new-objects-r08.tar.gz", + "mime_type": "application/gzip", + "url": "https://drive.google.com/file/d/1Y4rzlArj92SAMqlTYIAK_P9rZ7QvrcVT/view?usp=drivesdk", + "parent_id": "1Xa2b6rQmwBFq4jWIDFcJgiCbcNYfWXsK" + } + }, + "restore": { + "accepted_input": "file_uri", + "success": true, + "id": "1OU7J5Asf_xeLyq2fpm5fd07RWuh0X7Eg", + "title": "p18-review-r08-restore.py", + "file_name": "p18-review-r08-restore.py", + "mime_type": "text/x-python", + "url": "https://drive.google.com/file/d/1OU7J5Asf_xeLyq2fpm5fd07RWuh0X7Eg/view?usp=drivesdk", + "parent_id": "1Xa2b6rQmwBFq4jWIDFcJgiCbcNYfWXsK", + "structuredContent": { + "accepted_input": "file_uri", + "success": true, + "id": "1OU7J5Asf_xeLyq2fpm5fd07RWuh0X7Eg", + "title": "p18-review-r08-restore.py", + "file_name": "p18-review-r08-restore.py", + "mime_type": "text/x-python", + "url": "https://drive.google.com/file/d/1OU7J5Asf_xeLyq2fpm5fd07RWuh0X7Eg/view?usp=drivesdk", + "parent_id": "1Xa2b6rQmwBFq4jWIDFcJgiCbcNYfWXsK" + } + } +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/COVERAGE_PRECHECK.json.gz b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/COVERAGE_PRECHECK.json.gz new file mode 100644 index 0000000..4a37ac0 Binary files /dev/null and b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/COVERAGE_PRECHECK.json.gz differ diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/LOCAL_TEMP_ARCHIVE_RETIRED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/LOCAL_TEMP_ARCHIVE_RETIRED.json new file mode 100644 index 0000000..5ebe0cc --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/LOCAL_TEMP_ARCHIVE_RETIRED.json @@ -0,0 +1,7 @@ +{ + "only_verified_uploaded_temp_archive_removed": true, + "bytes": 1800566, + "sha256": "2ef5e8150023a0d1e3038aa3b7df78b720ee56343b4f2cb831568e2a5164ddc8", + "restoration_sources": "MANIFEST.json.gz/CLOUD_ALL_BYTES_VERIFIED.json", + "formal_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/MANIFEST.json.gz b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/MANIFEST.json.gz new file mode 100644 index 0000000..e3957a5 Binary files /dev/null and b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/MANIFEST.json.gz differ diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/NEW_OBJECTS_PREPARED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/NEW_OBJECTS_PREPARED.json new file mode 100644 index 0000000..babaaea --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/NEW_OBJECTS_PREPARED.json @@ -0,0 +1,8 @@ +{ + "path": "/private/tmp/thetree-p18-cold-r08/new-objects-r08.tar.gz", + "sha256": "2ef5e8150023a0d1e3038aa3b7df78b720ee56343b4f2cb831568e2a5164ddc8", + "bytes": 1800566, + "objects": 188, + "raw_unique_bytes": 10785212, + "prior_logical_bytes_reused": 1893131770 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/RESTORE.md b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/RESTORE.md new file mode 100644 index 0000000..2a3c939 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/RESTORE.md @@ -0,0 +1,29 @@ +# P18 closed review r08 restore + +The backend task is formally completed. This archives only its ended review material. The source Git checkout, all normal Runner result/traceability records, and current canonical native proof remain local. + +Download MANIFEST.json.gz and restore.py from the same Drive folder. Download the following archive bytes (existing archives reuse already verified objects): + +drive-offload-cold-r06-20261015 — SHA256 75953c3d35d5fbc633e7cb68c6510ea8ad33aa9b7591a83feccd1d8c69389cc0 +part 0 SHA256 22c205b386248abf7b39b70c2b858a483654aa7e089a3d64b70a17a571886f53 https://drive.google.com/file/d/1MXFzQ_yfhmdJU9Q_dnWwqD7MNQlp8QYE/view?usp=drivesdk +part 1 SHA256 6e199f6f2d6efb73252038892f0dc2a41892aa1bbb3c2888b5b4b5e45270ba3c https://drive.google.com/file/d/1Ws-lJGHGUPFVg0i43hdhct3vue6pkOW-/view?usp=drivesdk +part 2 SHA256 70bc0439aceba6fd5642b8e819b69959e977db25e993dfa027a9abb3ba2d6549 https://drive.google.com/file/d/1wDnWAWPIdFxs1RqHAG5ow2vOt4mkNekY/view?usp=drivesdk +part 3 SHA256 ff1f41ae4c20f2b8c7b61877671e68f0e7e9fc6a8c8852e1748c5c06f99b0627 https://drive.google.com/file/d/1f-rJ_4Z1yV4lc7F2BBVartTFB84WZEJy/view?usp=drivesdk + +drive-offload-review-material-r04-20261015 — SHA256 adf793994e1d0079b226f882d40fd9dc0d8282da42d7b04d24195e2b3a84c151 +part 0 SHA256 88c14f4fc36278bdbe953e60a4a9a0c03312c4a90fc4a18b6cdbb44af8c811c8 https://drive.google.com/file/d/1zDFSBgYRTnNh633ee8yzsjtq7dQeHoWp/view?usp=drivesdk +part 1 SHA256 2c05a971176d0b5e9f3c288f69ce5d4ec9dc6c8623d6c52edbd709aa5f4b9b0c https://drive.google.com/file/d/1adCPiKM7VECXZxCX1AHdBZxUSKXIyAiC/view?usp=drivesdk +part 2 SHA256 608f89ef345bee96cd275ae67ee6b0636fc9165e7a3ef539b1e48d1b973f27ac https://drive.google.com/file/d/15_UXbGuW50NkTf1RgbkBSpUodPmXfcY9/view?usp=drivesdk +part 3 SHA256 a6e73590c86b6282ef63fd88863de357911434998f389229cdb2ac1f470a53bc https://drive.google.com/file/d/1ki8e92PBUZeOavzsuvfQU4zoMIvwQdyA/view?usp=drivesdk +part 4 SHA256 a50e262a1ec412b97f1185b469d436f4fcd1fc020cbbe972209a6f609448bb13 https://drive.google.com/file/d/1I8To-mkJC_kmQZyYiRbrCipaeF4cidcl/view?usp=drivesdk +part 5 SHA256 67ba53bbd2dc2416661e888758419d9465d3a5dd5f8ffc191f788493e013f305 https://drive.google.com/file/d/1ILqHWPtXVjZ4nvgkaNBgjw4TrEdIuXpZ/view?usp=drivesdk +part 6 SHA256 a88d6f246cef9c98686f94cf1167b4a6cb980610d44043e404f7515575adb202 https://drive.google.com/file/d/1K1xXtKe-PNuVtpqgjltLXMuJJVlOL-zO/view?usp=drivesdk + +r08-new — SHA256 2ef5e8150023a0d1e3038aa3b7df78b720ee56343b4f2cb831568e2a5164ddc8 +https://drive.google.com/file/d/1Y4rzlArj92SAMqlTYIAK_P9rZ7QvrcVT/view?usp=drivesdk + +Verify each listed part hash and concatenate parts in numeric order for each old archive. Verify complete archive hashes. Use Python 3.12: + +`python3 restore.py MANIFEST.json.gz /fresh/destination cold-r06.tar.gz review-material-r04.tar.gz new-objects-r08.tar.gz` + +Supply every archive listed above (one argument per complete archive). No archive is downloaded by the script. It checks whole archive hashes, refuses existing output paths, restores .review-material/ only, and verifies every original file size/hash before applying preserved modes/mtimes. Wrong or missing archives fail. This is storage preservation and grants no original game acceptance credit. diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/RETIREMENT.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/RETIREMENT.json new file mode 100644 index 0000000..e20e91c --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/RETIREMENT.json @@ -0,0 +1,15 @@ +{ + "retired_source": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/P18-01-CODE-review-7d78df63/.review-material", + "files": 8245, + "logical_bytes": 1903916982, + "free_before": 1438687232, + "free_after": 1445711872, + "net_free_delta": 7024640, + "new_archive_bytes": 1800566, + "all_restore_bytes_verified": true, + "source_worktree_retained": true, + "current_canonical_proof_retained": true, + "normal_run_and_traceability_records_retained": true, + "pointer": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/P18-01-CODE-review-7d78df63.review-material.CLOUD_R08.json", + "formal_original_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/SOURCE_RECHECK.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/SOURCE_RECHECK.json new file mode 100644 index 0000000..e39e635 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/SOURCE_RECHECK.json @@ -0,0 +1,8 @@ +{ + "all8245_file_bytes_modes_mtimes_exact": true, + "no_open_files": true, + "actual_cloud_readback_new_and_prior_objects_complete": true, + "backend_normal_final_verified": true, + "source_worktree_and_current_canonical_proof_excluded": true, + "formal_original_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/restore.py b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/restore.py new file mode 100644 index 0000000..8aecf2d --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/restore.py @@ -0,0 +1,37 @@ +"""Restore byte-verified multi-archive objects to a fresh destination only.""" +import argparse,contextlib,gzip,hashlib,json,os,tarfile +from pathlib import Path + +def sha(path): + with Path(path).open('rb')as f:return hashlib.file_digest(f,'sha256').hexdigest() +p=argparse.ArgumentParser();p.add_argument('manifest');p.add_argument('destination');p.add_argument('archives',nargs='+');a=p.parse_args();mp=Path(a.manifest);raw=gzip.decompress(mp.read_bytes())if mp.suffix=='.gz'else mp.read_bytes();m=json.loads(raw);dest=Path(a.destination).resolve();rows=m['members'];expected={v['sha256']:k for k,v in m['archives'].items()};provided={} +for archive in a.archives: + h=sha(archive);assert h in expected and expected[h] not in provided;provided[expected[h]]=Path(archive) +needed={x['archive']for x in rows if x['type']=='file'};assert needed<=provided.keys();assert len({x['path']for x in rows})==len(rows);by_hash={} +for x in rows: + path=Path(x['path']);assert not path.is_absolute()and '..'not in path.parts and '.'not in path.parts;q=dest/path;assert q.resolve().is_relative_to(dest)and not q.exists()and not q.is_symlink() + if x['type']=='file':by_hash.setdefault(x['sha256'],[]).append(x) + else:assert x['type']=='directory' +for x in rows: + if x['type']=='directory':(dest/x['path']).mkdir(parents=True,exist_ok=True) +seen=set();restored=0 +for label,path in provided.items(): + with tarfile.open(path,'r|gz')as t: + for entry in t: + assert entry.isfile() + if not entry.name.startswith('objects/'):continue + key=entry.name[8:];group=[x for x in by_hash.get(key,[])if x['archive']==label] + if not group:continue + assert key not in seen;seen.add(key);assert all(x['bytes']==entry.size for x in group);digest=hashlib.sha256() + with contextlib.ExitStack()as stack: + handles=[stack.enter_context((dest/x['path']).open('xb'))for x in group];source=stack.enter_context(t.extractfile(entry)) + for chunk in iter(lambda:source.read(1024**2),b''): + digest.update(chunk) + for f in handles:f.write(chunk) + assert digest.hexdigest()==key + for x in group: + q=dest/x['path'];assert q.stat().st_size==x['bytes'];os.chmod(q,x['mode']);os.utime(q,ns=(x['mtime_ns'],x['mtime_ns']));restored+=1 +assert seen==set(by_hash)and restored==m['files'] +for x in reversed(rows): + if x['type']=='directory':q=dest/x['path'];os.chmod(q,x['mode']);os.utime(q,ns=(x['mtime_ns'],x['mtime_ns'])) +print('Restored and verified',restored,'files') diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/thetree-p18-cold-review-coverage-r08.py b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/thetree-p18-cold-review-coverage-r08.py new file mode 100644 index 0000000..2a35f0c --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/thetree-p18-cold-review-coverage-r08.py @@ -0,0 +1,16 @@ +from pathlib import Path +import json,gzip,hashlib,time +r=Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部');base=r/'docs/plans/original-completion-2026-10-02/execution';root=Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/P18-01-CODE-review-7d78df63/.review-material');own=json.loads((root/'manifest.json').read_text());assert own['candidate']=='265ce30f81b1302ca374330f7129f02d6fde4697';refs={} +for batch in ['drive-offload-review-material-r04-20261015','drive-offload-cold-r06-20261015']: + m=json.loads(gzip.decompress((base/batch/'MANIFEST.json.gz').read_bytes()));v=json.loads((base/batch/'CLOUD_ARCHIVE_VERIFIED.json').read_text());assert v['actual_cloud_readback'] + for x in m['members']: + if x['type']=='file':refs.setdefault(x['sha256'],{'batch':batch,'bytes':x['bytes']}) +rows=[];missing={};t=time.monotonic() +for p in sorted(root.rglob('*')): + assert not p.is_symlink();s=p.stat();row={'path':str(p.relative_to(root)),'type':'directory' if p.is_dir() else 'file','mode':s.st_mode&0o777,'mtime_ns':s.st_mtime_ns} + if p.is_file(): + with p.open('rb') as f:h=hashlib.file_digest(f,'sha256').hexdigest() + ref=refs.get(h);assert ref is None or ref['bytes']==s.st_size;row.update(bytes=s.st_size,sha256=h,existing_cloud_batch=ref['batch'] if ref else None) + if not ref:missing.setdefault(h,{'path':str(p),'bytes':s.st_size}) + rows.append(row) +result={'source':str(root),'candidate':own['candidate'],'backend_completed':True,'members':rows,'file_count':sum(x['type']=='file' for x in rows),'logical_bytes':sum(x.get('bytes',0)for x in rows),'uncovered_unique_objects':missing,'uncovered_unique_bytes':sum(x['bytes']for x in missing.values()),'seconds':time.monotonic()-t,'source_retired':False,'formal_credit':0};e=base/'drive-offload-p18-review-r08-20261015';e.mkdir(exist_ok=False);raw=json.dumps(result,ensure_ascii=False,indent=2).encode();(e/'COVERAGE_PRECHECK.json.gz').write_bytes(gzip.compress(raw,mtime=0));print({k:v for k,v in result.items() if k not in ['members','uncovered_unique_objects']});print('uncovered_objects',len(missing)) diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/thetree-p18-review-r08-prepare.py b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/thetree-p18-review-r08-prepare.py new file mode 100644 index 0000000..d04ac99 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/thetree-p18-review-r08-prepare.py @@ -0,0 +1,20 @@ +from pathlib import Path +import json,gzip,hashlib,tarfile,shutil +r=Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部');base=r/'docs/plans/original-completion-2026-10-02/execution';e=base/'drive-offload-p18-review-r08-20261015';c=json.loads(gzip.decompress((e/'COVERAGE_PRECHECK.json.gz').read_bytes()));tmp=Path('/private/tmp/thetree-p18-cold-r08');tmp.mkdir(exist_ok=False);archive=tmp/'new-objects-r08.tar.gz';needed=c['uncovered_unique_objects'];assert sum(x['bytes']for x in needed.values())<50*1024**2 +with tarfile.open(archive,'w:gz')as t: + for h,x in sorted(needed.items()): + p=Path(x['path']);assert p.stat().st_size==x['bytes'] + with p.open('rb')as f:assert hashlib.file_digest(f,'sha256').hexdigest()==h + info=tarfile.TarInfo('objects/'+h);info.size=x['bytes'];info.mode=0o600 + with p.open('rb')as f:t.addfile(info,f) +newhash=hashlib.sha256(archive.read_bytes()).hexdigest();archives={} +for batch in sorted({x.get('existing_cloud_batch')for x in c['members']if x['type']=='file'and x.get('existing_cloud_batch')}): + p=base/batch;v=json.loads((p/'CLOUD_ARCHIVE_VERIFIED.json').read_text());archives[batch]={'sha256':v['whole_archive_sha256'],'cloud_parts':json.loads((p/'CLOUD_PARTS.json').read_text()),'prior_actual_cloud_readback':v} +archives['r08-new']={'sha256':newhash,'cloud_url':None,'bytes':archive.stat().st_size} +rows=[] +root=Path(c['source']);s=root.stat();rows.append({'path':'.review-material','type':'directory','mode':s.st_mode&0o777,'mtime_ns':s.st_mtime_ns}) +for x in c['members']: + v={k:val for k,val in x.items()if k!='existing_cloud_batch'};v['path']='.review-material/'+x['path'] + if x['type']=='file':v['archive']=x['existing_cloud_batch']or'r08-new' + rows.append(v) +m={'source_root':c['source'],'restore_base':str(root.parent),'candidate':c['candidate'],'backend_completed':True,'members':rows,'files':c['file_count'],'logical_bytes':c['logical_bytes'],'archives':archives,'scope':'Closed independent backend review material only; source worktree/current canonical native proof and all formal run/traceability records stay local','formal_credit':0};(e/'MANIFEST.pending.json').write_text(json.dumps(m,ensure_ascii=False,indent=2)+'\n');(e/'NEW_OBJECTS_PREPARED.json').write_text(json.dumps({'path':str(archive),'sha256':newhash,'bytes':archive.stat().st_size,'objects':len(needed),'raw_unique_bytes':c['uncovered_unique_bytes'],'prior_logical_bytes_reused':c['logical_bytes']-c['uncovered_unique_bytes']},indent=2)+'\n');print({'new_archive_bytes':archive.stat().st_size,'new_objects':len(needed),'original_files':c['file_count']}) diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/thetree-p18-review-r08-retire.py b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/thetree-p18-review-r08-retire.py new file mode 100644 index 0000000..2bcc26f --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015/thetree-p18-review-r08-retire.py @@ -0,0 +1,18 @@ +from pathlib import Path +import json,gzip,hashlib,subprocess,shutil +r=Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部');e=r/'docs/plans/original-completion-2026-10-02/execution/drive-offload-p18-review-r08-20261015';m=json.loads(gzip.decompress((e/'MANIFEST.json.gz').read_bytes()));v=json.loads((e/'CLOUD_ALL_BYTES_VERIFIED.json').read_text());assert v['all_four_raw_bytes_identical']and v['all_new_objects_individually_verified']==188 and v['original_file_mappings']==8245 +root=Path(m['source_root']);assert str(root)=='/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/P18-01-CODE-review-7d78df63/.review-material';assert not root.is_symlink();trace=json.loads((r/'docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/RUNNER_BACKEND_COMPLETION_TRACEABILITY_265_R02.json').read_text());assert trace['implementation_commit']==m['candidate']and all(any(x['kind']==kind and x['passed']==1 and x['commit_sha']==commit for x in trace['evidence'])for kind,commit in [('review',m['candidate']),('final',trace['integration_commit'])]) +assert json.loads((root/'manifest.json').read_text())['candidate']==m['candidate'];check=subprocess.run(['lsof','-nP','+D',str(root)],capture_output=True);assert check.returncode==1 and not check.stdout +expected={x['path']for x in m['members']if x['type']=='file'};actual={'.review-material/'+str(x.relative_to(root))for x in root.rglob('*')if x.is_file()};assert actual==expected +for x in m['members']: + p=root.parent/x['path'];assert not p.is_symlink();s=p.stat();assert s.st_mode&0o777==x['mode'] and s.st_mtime_ns==x['mtime_ns'] + if x['type']=='file': + with p.open('rb')as f:h=hashlib.file_digest(f,'sha256').hexdigest() + assert h==x['sha256'] and s.st_size==x['bytes'] +(e/'SOURCE_RECHECK.json').write_text(json.dumps({'all8245_file_bytes_modes_mtimes_exact':True,'no_open_files':True,'actual_cloud_readback_new_and_prior_objects_complete':True,'backend_normal_final_verified':True,'source_worktree_and_current_canonical_proof_excluded':True,'formal_original_credit':0},indent=2)+'\n') +before=shutil.disk_usage(r).free;quarantine=root.with_name('.review-material-retiring-r08');assert not quarantine.exists();root.rename(quarantine) +for x in m['members']: + if x['type']=='file': + p=quarantine/Path(x['path']).relative_to('.review-material');assert p.stat().st_mtime_ns==x['mtime_ns'];p.unlink() +for p in sorted([p for p in quarantine.rglob('*')if p.is_dir()],key=lambda p:len(p.parts),reverse=True):p.rmdir() +quarantine.rmdir();after=shutil.disk_usage(r).free;pointer=root.parent.with_name(root.parent.name+'.review-material.CLOUD_R08.json');pointer.write_text(json.dumps({'retired_source':str(root),'local_manifest':str(e/'MANIFEST.json.gz'),'cloud_files':v['files'],'restore_instructions':str(e/'RESTORE.md'),'prior_archives_required':list(m['archives']),'source_worktree_retained':True,'formal_original_credit':0},indent=2)+'\n');result={'retired_source':str(root),'files':8245,'logical_bytes':m['logical_bytes'],'free_before':before,'free_after':after,'net_free_delta':after-before,'new_archive_bytes':1800566,'all_restore_bytes_verified':True,'source_worktree_retained':root.parent.exists(),'current_canonical_proof_retained':Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/.runtime/P18-01-CODE/build/p18-relationship-evidence/receipt.json').exists(),'normal_run_and_traceability_records_retained':True,'pointer':str(pointer),'formal_original_credit':0};(e/'RETIREMENT.json').write_text(json.dumps(result,ensure_ascii=False,indent=2)+'\n');print(json.dumps(result,ensure_ascii=False)) diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/CLOUD_INDEX_VERIFIED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/CLOUD_INDEX_VERIFIED.json new file mode 100644 index 0000000..81b0c0d --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/CLOUD_INDEX_VERIFIED.json @@ -0,0 +1,6 @@ +{ + "drive_url": "https://drive.google.com/file/d/1eslpvIz5OAubtMwGs3ifWcRlUUeLIvCm/view?usp=drivesdk", + "bytes": 4139, + "sha256": "1a362a5bfa6e185bc7d667f0e3a3be6da0e88fcd1bacbcaa76539f1740d5aee5", + "whole_raw_readback_verified": true +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/CLOUD_METADATA_VERIFIED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/CLOUD_METADATA_VERIFIED.json new file mode 100644 index 0000000..3259329 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/CLOUD_METADATA_VERIFIED.json @@ -0,0 +1,16 @@ +[ + { + "name": "MANIFEST.json.gz", + "bytes": 354272, + "sha256": "fbb20c5ea84d1591e1764279100b8e30e126f624d48dcca692f1cb4edcda6df6", + "drive_url": "https://drive.google.com/file/d/1xue8YgVnvt2kZV9LCqdmBte4W6QE0Yzo/view?usp=drivesdk", + "whole_raw_readback_verified": true + }, + { + "name": "restore.py", + "bytes": 1857, + "sha256": "b79504fe8d6950896f8a791a83f9f7b4fc342b878d0227f9f6bd186ff77a5bbb", + "drive_url": "https://drive.google.com/file/d/1AmbnamrmJs9Yh4y1Ifi2GHkbUAXpZGTS/view?usp=drivesdk", + "whole_raw_readback_verified": true + } +] diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/CLOUD_RESTORE_MD_VERIFIED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/CLOUD_RESTORE_MD_VERIFIED.json new file mode 100644 index 0000000..eb5a43c --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/CLOUD_RESTORE_MD_VERIFIED.json @@ -0,0 +1,6 @@ +{ + "bytes": 2294, + "sha256": "6ce84b50e5c48f6b1e2a908ec03dfcee8cc2d4dfd2ed702657d1faf0eb511d2c", + "drive_url": "https://drive.google.com/file/d/1T4KFGSxzKlhgw-Trxr0UZ-vaaNVp1bos/view?usp=drivesdk", + "whole_raw_verified": true +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/LARGE_UPLOAD_FAILURE.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/LARGE_UPLOAD_FAILURE.json new file mode 100644 index 0000000..a0136d3 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/LARGE_UPLOAD_FAILURE.json @@ -0,0 +1,5 @@ +{ + "archive_sha256": "dcc28679f7c7e8df7ce5bcac69d7c631114d5d16f38243a9c29ed8c9bbd9bb7b", + "upload_failed": "connector blob upload timeout after 300002ms; no confirmed archive Drive file", + "handling": "32MiB exact-byte chunks with same concatenated hash; source raw retained until all cloud raw readbacks verified" +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/MANIFEST.json.gz b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/MANIFEST.json.gz new file mode 100644 index 0000000..25abde3 Binary files /dev/null and b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/MANIFEST.json.gz differ diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PARTS.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PARTS.json new file mode 100644 index 0000000..fce5a2d --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PARTS.json @@ -0,0 +1,95 @@ +{ + "archive_sha256": "dcc28679f7c7e8df7ce5bcac69d7c631114d5d16f38243a9c29ed8c9bbd9bb7b", + "archive_bytes": 245023778, + "local_concat_hash_verified": true, + "parts": [ + { + "part": 0, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part00", + "bytes": 33554432, + "sha256": "11f7bd9aec8c1e35bd2dec4e907de57666654bb1990968d6941698f79e321ff7", + "drive_url": "https://drive.google.com/file/d/1wPBGZys37ZajhknUh7tRnx_idnFPixuL/view?usp=drivesdk", + "whole_cloud_raw_verified": true + }, + { + "part": 1, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part01", + "bytes": 33554432, + "sha256": "19051bb69f538285b7a7332b92d5385a9dca9365d862f52517d610ac668fa5cc", + "drive_url": "https://drive.google.com/file/d/1aK3KRotL1JQ30aRxTbVeVQ_QjAh-zCiP/view?usp=drivesdk", + "whole_cloud_raw_verified": true + }, + { + "part": 2, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part02", + "bytes": 33554432, + "sha256": "cd0207ee21190cc642563c3abfcbe433ff456a0deb63dd6c4b176531020d9c61", + "drive_url": "https://drive.google.com/file/d/17qPEuyF3vj7VpBxCvz1XgFTzphHBTocS/view?usp=drivesdk", + "whole_cloud_raw_verified": true + }, + { + "part": 3, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part03", + "bytes": 33554432, + "sha256": "5f645d1534d89cf029ab160a0714c404274026aaac30c38b96a2d9c737a6d936", + "drive_url": "https://drive.google.com/file/d/1yif3ZK6pRp2FN6Oi9O1wDmIz3M5xELR7/view?usp=drivesdk", + "whole_cloud_raw_verified": true + }, + { + "part": 4, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part04", + "bytes": 33554432, + "sha256": "a76550841defbcb586162e2acb5676e181c59eed6eb6f7d7d61c5a73a5354ba1", + "drive_url": "https://drive.google.com/file/d/1inyT7mVWsvCs7KSqVK2scD6NfnrOTMU2/view?usp=drivesdk", + "whole_cloud_raw_verified": true + }, + { + "part": 5, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part05", + "bytes": 33554432, + "sha256": "4d118656c80196f1e753ac4ecaa3f4a4868bd0769e65a4793b2c66950284309c", + "drive_url": "https://drive.google.com/file/d/1nR161ngD1PtWba63xyQa2Iz2532QGHN-/view?usp=drivesdk", + "whole_cloud_raw_verified": true + }, + { + "part": 6, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part06", + "bytes": 33554432, + "sha256": "8a8998a3d5cb80a7ff8610f2039f251ac14a63443989f25f980dc4ef74ba258b", + "drive_url": "https://drive.google.com/file/d/1797U2YfQJbddTkM4dM3buk8qh4lgQUSm/view?usp=drivesdk", + "whole_cloud_raw_verified": true + }, + { + "part": 7, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part07", + "bytes": 10142754, + "sha256": "461753179ed8837f3ea2e90085147b61ee674e485b3ee07b538776e6749a21d5", + "drive_url": "https://drive.google.com/file/d/1hMa59x1brxbHIdF7sHGTypscC-E7zPmK/view?usp=drivesdk", + "whole_cloud_raw_verified": true + } + ], + "all_parts_cloud_raw_verified": true, + "whole_archive_identity": "Each cloud part SHA/length equals the local part sequence whose concatenated SHA/length was verified before upload; same archive bytes without duplicated download/reassembly.", + "restore_metadata": [ + { + "name": "MANIFEST.json.gz", + "bytes": 354272, + "sha256": "fbb20c5ea84d1591e1764279100b8e30e126f624d48dcca692f1cb4edcda6df6", + "drive_url": "https://drive.google.com/file/d/1xue8YgVnvt2kZV9LCqdmBte4W6QE0Yzo/view?usp=drivesdk", + "whole_raw_readback_verified": true + }, + { + "name": "restore.py", + "bytes": 1857, + "sha256": "b79504fe8d6950896f8a791a83f9f7b4fc342b878d0227f9f6bd186ff77a5bbb", + "drive_url": "https://drive.google.com/file/d/1AmbnamrmJs9Yh4y1Ifi2GHkbUAXpZGTS/view?usp=drivesdk", + "whole_raw_readback_verified": true + } + ], + "restore_instructions": { + "bytes": 2294, + "sha256": "6ce84b50e5c48f6b1e2a908ec03dfcee8cc2d4dfd2ed702657d1faf0eb511d2c", + "drive_url": "https://drive.google.com/file/d/1T4KFGSxzKlhgw-Trxr0UZ-vaaNVp1bos/view?usp=drivesdk", + "whole_raw_verified": true + } +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PARTS.pending.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PARTS.pending.json new file mode 100644 index 0000000..7a7861d --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PARTS.pending.json @@ -0,0 +1,55 @@ +{ + "archive_sha256": "dcc28679f7c7e8df7ce5bcac69d7c631114d5d16f38243a9c29ed8c9bbd9bb7b", + "archive_bytes": 245023778, + "local_concat_hash_verified": true, + "parts": [ + { + "part": 0, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part00", + "bytes": 33554432, + "sha256": "11f7bd9aec8c1e35bd2dec4e907de57666654bb1990968d6941698f79e321ff7" + }, + { + "part": 1, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part01", + "bytes": 33554432, + "sha256": "19051bb69f538285b7a7332b92d5385a9dca9365d862f52517d610ac668fa5cc" + }, + { + "part": 2, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part02", + "bytes": 33554432, + "sha256": "cd0207ee21190cc642563c3abfcbe433ff456a0deb63dd6c4b176531020d9c61" + }, + { + "part": 3, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part03", + "bytes": 33554432, + "sha256": "5f645d1534d89cf029ab160a0714c404274026aaac30c38b96a2d9c737a6d936" + }, + { + "part": 4, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part04", + "bytes": 33554432, + "sha256": "a76550841defbcb586162e2acb5676e181c59eed6eb6f7d7d61c5a73a5354ba1" + }, + { + "part": 5, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part05", + "bytes": 33554432, + "sha256": "4d118656c80196f1e753ac4ecaa3f4a4868bd0769e65a4793b2c66950284309c" + }, + { + "part": 6, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part06", + "bytes": 33554432, + "sha256": "8a8998a3d5cb80a7ff8610f2039f251ac14a63443989f25f980dc4ef74ba258b" + }, + { + "part": 7, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part07", + "bytes": 10142754, + "sha256": "461753179ed8837f3ea2e90085147b61ee674e485b3ee07b538776e6749a21d5" + } + ] +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_00_VERIFIED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_00_VERIFIED.json new file mode 100644 index 0000000..6b0e7a7 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_00_VERIFIED.json @@ -0,0 +1,8 @@ +{ + "part": 0, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part00", + "bytes": 33554432, + "sha256": "11f7bd9aec8c1e35bd2dec4e907de57666654bb1990968d6941698f79e321ff7", + "drive_url": "https://drive.google.com/file/d/1wPBGZys37ZajhknUh7tRnx_idnFPixuL/view?usp=drivesdk", + "whole_cloud_raw_verified": true +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_01_VERIFIED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_01_VERIFIED.json new file mode 100644 index 0000000..d16b6b0 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_01_VERIFIED.json @@ -0,0 +1,8 @@ +{ + "part": 1, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part01", + "bytes": 33554432, + "sha256": "19051bb69f538285b7a7332b92d5385a9dca9365d862f52517d610ac668fa5cc", + "drive_url": "https://drive.google.com/file/d/1aK3KRotL1JQ30aRxTbVeVQ_QjAh-zCiP/view?usp=drivesdk", + "whole_cloud_raw_verified": true +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_02_VERIFIED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_02_VERIFIED.json new file mode 100644 index 0000000..9ae0b85 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_02_VERIFIED.json @@ -0,0 +1,8 @@ +{ + "part": 2, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part02", + "bytes": 33554432, + "sha256": "cd0207ee21190cc642563c3abfcbe433ff456a0deb63dd6c4b176531020d9c61", + "drive_url": "https://drive.google.com/file/d/17qPEuyF3vj7VpBxCvz1XgFTzphHBTocS/view?usp=drivesdk", + "whole_cloud_raw_verified": true +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_03_VERIFIED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_03_VERIFIED.json new file mode 100644 index 0000000..7391965 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_03_VERIFIED.json @@ -0,0 +1,8 @@ +{ + "part": 3, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part03", + "bytes": 33554432, + "sha256": "5f645d1534d89cf029ab160a0714c404274026aaac30c38b96a2d9c737a6d936", + "drive_url": "https://drive.google.com/file/d/1yif3ZK6pRp2FN6Oi9O1wDmIz3M5xELR7/view?usp=drivesdk", + "whole_cloud_raw_verified": true +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_04_VERIFIED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_04_VERIFIED.json new file mode 100644 index 0000000..4496556 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_04_VERIFIED.json @@ -0,0 +1,8 @@ +{ + "part": 4, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part04", + "bytes": 33554432, + "sha256": "a76550841defbcb586162e2acb5676e181c59eed6eb6f7d7d61c5a73a5354ba1", + "drive_url": "https://drive.google.com/file/d/1inyT7mVWsvCs7KSqVK2scD6NfnrOTMU2/view?usp=drivesdk", + "whole_cloud_raw_verified": true +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_05_VERIFIED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_05_VERIFIED.json new file mode 100644 index 0000000..405d02b --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_05_VERIFIED.json @@ -0,0 +1,8 @@ +{ + "part": 5, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part05", + "bytes": 33554432, + "sha256": "4d118656c80196f1e753ac4ecaa3f4a4868bd0769e65a4793b2c66950284309c", + "drive_url": "https://drive.google.com/file/d/1nR161ngD1PtWba63xyQa2Iz2532QGHN-/view?usp=drivesdk", + "whole_cloud_raw_verified": true +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_06_VERIFIED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_06_VERIFIED.json new file mode 100644 index 0000000..9e850e8 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_06_VERIFIED.json @@ -0,0 +1,8 @@ +{ + "part": 6, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part06", + "bytes": 33554432, + "sha256": "8a8998a3d5cb80a7ff8610f2039f251ac14a63443989f25f980dc4ef74ba258b", + "drive_url": "https://drive.google.com/file/d/1797U2YfQJbddTkM4dM3buk8qh4lgQUSm/view?usp=drivesdk", + "whole_cloud_raw_verified": true +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_07_VERIFIED.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_07_VERIFIED.json new file mode 100644 index 0000000..5c41fb1 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PART_07_VERIFIED.json @@ -0,0 +1,8 @@ +{ + "part": 7, + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz.part07", + "bytes": 10142754, + "sha256": "461753179ed8837f3ea2e90085147b61ee674e485b3ee07b538776e6749a21d5", + "drive_url": "https://drive.google.com/file/d/1hMa59x1brxbHIdF7sHGTypscC-E7zPmK/view?usp=drivesdk", + "whole_cloud_raw_verified": true +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PREPARATION.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PREPARATION.json new file mode 100644 index 0000000..83bb1d4 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/PREPARATION.json @@ -0,0 +1,13 @@ +{ + "scope": "Ended failed P23-03 R14 entire cold artifact. Preserve negative history, current source and all acceptance requirements. No acceptance credit. Restore before any future direct raw review.", + "source": "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p23-03-native-os-9a26f9a-r14", + "archive": { + "path": "/private/tmp/thetree-p23-r14-cold-r10.tar.gz", + "bytes": 245023778, + "sha256": "dcc28679f7c7e8df7ce5bcac69d7c631114d5d16f38243a9c29ed8c9bbd9bb7b" + }, + "local_roundtrip_verified": true, + "ended_result_sha256": "8e8393203389cda699c426cb812c76fc733da626dd6bdfee2d63fb463d7d2c2f", + "free_before_archive": 1055105024, + "retirement_pending_cloud_readback": true +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/RESTORE.md b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/RESTORE.md new file mode 100644 index 0000000..ecf7682 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/RESTORE.md @@ -0,0 +1,15 @@ +# 終了済みP23-03 R14の退避と復元 + +対象は `artifacts/original-completion-2026-10-02/p23-03-native-os-9a26f9a-r14` の全ファイルです。R14はスクリーン倍率校正のgateに失敗した負履歴であり、合格には変更しません。元の候補9a26f9a、画像、入力、ログ、stage、receiptを内容の削除・要約なしで保管します。現作業のP04/P18ソースと証拠は対象外です。 + +245,023,778バイトのgzipアーカイブは、大きなblob転送のタイムアウトを避けるため、32MiBずつ8個に分割しています。これは転送単位であり、レビュー資料や証跡内容の制限ではありません。`PARTS.json` の順序とDrive URLから全8個、`MANIFEST.json.gz`、`restore.py`を取得します。PARTS.jsonに各部分のSHA-256と長さ、MANIFEST.json.gzに全6,434ファイルのSHA-256・長さ・mode・mtime_nsがあります。 + +部分ごとのSHA-256を照合し、番号順にバイナリ結合して任意の空き容量のある場所へ `evidence.tar.gz` を作ります。結合後のSHA-256は `dcc28679f7c7e8df7ce5bcac69d7c631114d5d16f38243a9c29ed8c9bbd9bb7b`、長さは245,023,778バイトです。 + +```sh +python3 restore.py MANIFEST.json.gz evidence.tar.gz /absolute/path/to/fresh-restored-r14 +``` + +復元先は未作成の新しいディレクトリに限定します。スクリプトはアーカイブ全体、各ファイルの内容と長さを検証し、modeとmtime_nsも復元します。稼働中のcheckoutやproofを上書きしません。過去の絶対パスが必要な再監査では、まず元のRoot記録および `CLOUD_R10.json` を確認し、既存ファイルがないことを確かめてから元の場所へ戻します。別プロセスの保存先への参照を、復元したことだけで実機受入へ読み替えません。 + +元ファイルのローカル退避は、全8部分のDrive原バイト読戻し、結合SHA一致、manifest・復元スクリプトの原バイト読戻し、元全ファイルの再照合、開かれていないことの確認をすべて満たした後だけ行います。最終状態はRETIREMENT.jsonで確認してください。退避準備や転送成功だけでは削除済みとは扱いません。 diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/RETIREMENT.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/RETIREMENT.json new file mode 100644 index 0000000..646a011 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/RETIREMENT.json @@ -0,0 +1,17 @@ +{ + "retired_source": "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p23-03-native-os-9a26f9a-r14", + "files": 6434, + "logical_bytes": 835064070, + "source_free_before_retirement": 768565248, + "free_after_retirement": 1801052160, + "measured_delta_including_temp_part_removal": 1032486912, + "temporary_parts_bytes_removed": 245023778, + "measured_delta_excluding_temp_part_bytes": 787463134, + "free_before_archive_preparation": 1055105024, + "net_free_change_since_preparation": 745947136, + "all_cloud_parts_raw_verified": true, + "all_restore_metadata_raw_verified": true, + "original_failed_status_preserved": true, + "source_and_current_work_proofs_untouched": true, + "formal_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/SOURCE_RECHECK.json b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/SOURCE_RECHECK.json new file mode 100644 index 0000000..3923342 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/SOURCE_RECHECK.json @@ -0,0 +1,7 @@ +{ + "files": 6434, + "all_bytes_mode_mtime_exact": true, + "source_has_no_open_files": true, + "all_cloud_parts_and_restore_metadata_full_raw_verified": true, + "archive_original_sha256": "dcc28679f7c7e8df7ce5bcac69d7c631114d5d16f38243a9c29ed8c9bbd9bb7b" +} diff --git a/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/prepare.py b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/prepare.py new file mode 100644 index 0000000..f5b812d --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016/prepare.py @@ -0,0 +1,25 @@ +from pathlib import Path +import hashlib,json,os,shutil,tarfile,time +R=Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部');S=R/'artifacts/original-completion-2026-10-02/p23-03-native-os-9a26f9a-r14';E=R/'docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016';E.mkdir(exist_ok=False);T=Path('/private/tmp/thetree-p23-r14-cold-r10.tar.gz');assert not T.exists();sha=lambda p:hashlib.file_digest(p.open('rb'),'sha256').hexdigest();result=json.loads((R/'docs/plans/original-completion-2026-10-02/execution/p23-03/ROOT_9A26F9A_NATIVE_OS_R14_RESULT.json').read_text());assert result['collection_exit_code']==1 and all(z['engine_ended']for z in result['roles']);rows=[];dirs=[] +for p in [S]+sorted(S.rglob('*')): + assert not p.is_symlink();st=p.stat();n='.'if p==S else str(p.relative_to(S));meta={'path':n,'mode':st.st_mode&0o777,'mtime_ns':st.st_mtime_ns} + if p.is_dir():dirs.append(meta) + elif p.is_file():rows.append(dict(meta,bytes=st.st_size,sha256=sha(p))) + else:raise RuntimeError('special file') +free=shutil.disk_usage(S).free;budget=free-400*1024**2;assert budget>350*1024**2 +class Guard: + def __init__(self,f):self.f=f + def write(self,b): + assert self.f.tell()+len(b):` のsha256を計算してspec値と一致させ、原本へ追跡する。tested版はsource_map=実checkoutとする。登録≠testedの場合だけ、次をcheckerが自分で計算する場合に限り適用性を認める: (i) 固定20順序関数の本体bytesが一致すること(関数抽出規則はchecker内に固定)。(ii) `git diff base..HEAD -- ` の変更関数集合を算出し、index.applicability_delta の自己申告と完全一致すること。(iii) 変更関数のうち境界経路に関わるもの(relationship restore/schema、path/arrival、save/restore)には、それぞれ対応するengine case IDが必須であること。上記以外の不一致はstaleとしてfail。古いpinを現行として偽装してはならない。\nB. REACH_REFSを行番号から (path, func名, 本文行のsha256アンカー) に変更し、tested source上で解決する。\nC. 自己申告を排除する。各count条件は、observation内のスカラーに加えて、state artifactの生台帳/予約配列(service/settlement単位のdump)へのcount_eqまたはsame_literalを必須にする。case receiptにはargv、Root生成nonce、probe sourceのsha(source_mapに必須)を要求する。stdoutとnative_logに nonce+case_id+after sha のengine出力行があることもcheckerが検査する。save_restoreは、restore後のstate dumpがsave前の台帳・予約とsame_literalで一致すること、および別PIDであることを必須にする。\nD. 証拠生成の契約を EVIDENCE_COLLECTION.md に確定する。Root既存のguarded native wrapper(power/formal/midnight)とtyped stateを再利用し、1ケース1プロセスで `godot --headless --path --script -- --case --nonce --out $BUILD_OUTPUT_DIR/p04-evidence//` とする。ケースは15+EVの16件と、restoreの別PID1件。不足するprobeだけを追加する。全回帰は実行しない。\nE. checker_negative_fixturesへ負例を追加する: 登録pinの偽装、git diffと申告の差、行ずれ、nonce欠落、台帳とcountsの不一致、restore stateの差。あわせて、登録=testedとdelta合法の2つの正対照を用意する。\n\n【未検証・Root/Owner判断】probeを製品tests/配下に置くにはallowed_paths外の変更が必要で、オーナー判断になる。execution/p04-01/配下からwrapperで読み込めるかは未検証。適用条件: worker修正 → current main基準の候補でRootが16+1件の証拠を収集 → validate → 別セッションでの独立レビュー → 通常統合。D05未確定の帰属は決めない。D034/A01は再承認しない。3受入結果・7領域・30/88は不変、部分点0。容量の見込み: workerはPython1ファイル(約+200行)と文書で1回。Root収集は17 headless実行(各数分以内)。", + "codex_model": "gpt-6-astra", + "codex_model_reason": "ここまで3回repairした結果、checkerには構造的な欠陥が残った(全pinの無条件等置、固定行番号、自己申告依存)。今回はgitから登録blobへ追跡すること、diffから変更関数集合を算出すること、関数本体を抽出・比較すること、nonceと台帳で証拠を結び付けることを、fail-closedかつ偽装不能に設計する必要がある。provenanceの微妙な判断が多く、誤ればpinの偽装や緩和を招くため、astraを選ぶ。変更範囲はPython1ファイルと文書に限られ、engineも実行しないので、使用量と時間の増加は限定的と見込む。" +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_D05_9767_CURRENT_APPLICABILITY.stderr b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_D05_9767_CURRENT_APPLICABILITY.stderr new file mode 100644 index 0000000..e69de29 diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_D05_9767_CURRENT_APPLICABILITY_REQUEST.txt b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_D05_9767_CURRENT_APPLICABILITY_REQUEST.txt new file mode 100644 index 0000000..6dd7cb8 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_D05_9767_CURRENT_APPLICABILITY_REQUEST.txt @@ -0,0 +1 @@ +同じP04-01の9767b0a提出を再監査して具体的な次の指示を決めてください。Rootはchecker/製品/spec/Runnerのどれも直接変更していません。現Runnerは登録validate実行後のrepair_pendingです。今回エンジン/worker/repairは起動しない読取判断のみ。まず .review-material/d05-current-9767b0a/ のSOURCE_MANIFEST.json、POST_P18_CURRENT_SOURCE_APPLICABILITY.json、registered-validation.json と stdout/stderr を読み、actual failを確認してください。出力は「p04-evidence/index.json が無い」で、Rootは合格入力を捏造していません。checkerの10反例は実装者確認のみ、Rootも独立確認予定です。P18 backendは同じmainに通常統合・final済み、現main 5f6bc11d6bb6e92d22d787989b219fef3a435bc1。Rootは登録版対current版の20順序関数を全行bytes比較し20/20一致、spec6pinsは5一致/Runtimeのみ不一致を再確認しました。登録Runtime d52a995と現Runtimeは異なり、今のchecker:verifyはspec.current_source_pinsの全値をcurrent sourceへ無条件等置するため、現mainに普通に統合すると必ず stale/immutable pinで落ちる設計です。REACH_REFSの固定行番号もcurrent Runtimeにはずれます。現Runtime全文のSHA一致コピーをcurrent-source/autoload/へ置き、原本は変更していません。原P04条件・仕様・契約の意味を緩和せず、古いpinを現行として偽装せず、DB直接編集・policy/hook回避・別プロジェクト重複実装もせずに、正しい現在版の証拠と通常統合が可能になる最小の正規手順を具体化してください。既存specが適用性比較を意図するなら登録版pinとactual tested sourceの役割を明示して必ず原本に追跡する設計が必要で、単なるpin検査削除は不可です。今の固定必須15条件+到達するEV予約のraw証拠不足を正確に分けてください。raw_origin=engineや自己申告countsだけで真のnative実行/状態・台帳・保存同一性が証明されるのかも独立に判断し、必要なら証拠生成argvとRootの収集手順を確定してください。Rootは既存のguarded native phase基盤、p04-01-shift-end-repro-r03.gd(古い誤期待を含む負履歴)、power/formal/midnightの既存wrapperとtyped状態を保持しており、全回帰の再実行より有限境界の再利用/不足追加を優先します。承認D05二件とD034/A01は確定、未確定帰属を決めずに安全性の必須原条件を証明する。3受入結果・7領域・30/88不変、部分点0。次の修正指示は実行可能な具体ファイル・検証・独立レビュー・current統合の適用条件・容量/時間を示し、sourceの事実と提案と未検証は区別してください。 diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_D05_9767_REPAIR4_RUN_DECISION.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_D05_9767_REPAIR4_RUN_DECISION.json new file mode 100644 index 0000000..ea9cb9b --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_D05_9767_REPAIR4_RUN_DECISION.json @@ -0,0 +1,7 @@ +{ + "action": "run", + "task_id": "P04-01", + "reason": "P04-01 repair run (9767b0a, repair_ready, 4回目/max null)。受入条件・allowed_paths(tools/check_p04_order_evidence.py, docs/plans/original-completion-2026-10-02/execution/p04-01/**)・30/88・7領域・部分点0は変えない。製品、既存tests、Runner、設定は変更しない。engine実行、コミット、統合も行わない。D05は未確定のまま残し、D034/A01は再承認しない。\n\n【失敗の原因(確認済み)】p04-acceptanceはexit 1で、出力は\"missing/outside file: index.json\"。checkerは意図どおり入力なしで落ちている(stderr 0B)。ただしchecker自体に次の欠陥がある。(a) 216-217行目でspec.current_source_pinsをsource_mapへ無条件に等置しているため、Runtimeが登録d52a995→現7f01b2dcに変わった通常統合treeでは必ず落ちる。(b) REACH_REFSが固定行番号で、_execute_create_staff_taskが+7行ずれている。(c) receipt、raw_origin、counts、PID、exit_codeがすべてJSONの自己申告で、checkerは何も独立に検証していない。20順序関数の本体は20/20、spec pinは6件中5件一致している。\n\n【A 版の役割分離】current_source_pinsはregistered_pinsとして残す(削除も緩和もしない)。checkerが`git show deb1bcb:`のsha256を自分で計算し、spec値と照合する。tested=実checkoutのsource_mapとする。registered≠testedのときに限り、次を全部checker自身が計算できた場合だけ適用可とし、それ以外はstale failにする。(i) checker内に固定した抽出規則で、20順序関数の本体bytesが一致すること。(ii) `git diff base..HEAD -- path`から求めた変更関数集合が、index.applicability_deltaと完全に一致すること。(iii) 変更関数のうち境界経路(relationship restore/schema、path/arrival、save/restore)に関わるものに、それぞれ対応するengine case IDがあること。実行元(9767b0a)、登録版(deb1bcb)、tested版、統合版はindex上で別フィールドに分ける。別候補のreceipt SHAを書き換えて流用するのは禁止。\n\n【B】REACH_REFSは(path, func名, 本文行sha256アンカー)にし、tested source上で解決する。\n\n【C 自己申告の排除】countの各条件について、observation内のスカラーに加え、state dump(service/settlement単位の生台帳と予約配列)とのcount_eqまたはsame_literalを必須にする。save_restoreでは、restore後の台帳・予約がsave前とsame_literalで一致し、正式ReaderのPIDがWriterと別であることを要求する。nonceやログ文字列は真正性の代用として扱わない。各case receiptは既存guarded owned_outerの成果物(execution.jsonのactual_captured_PIDs/cleanup/engine_ended、runner-input.jsonのselected_source_map/QA_overrides/wrapper_sha256、source_before/after不変、default_player/doc4不変、stage inventory、parse-paths、contracts marker)に結合し、checkerがそのファイルsha、PIDの一致、cleanupの完全性、source_map=tested、probe sha∈source_mapを照合する。\n\n【D 収集契約 = EVIDENCE_COLLECTION.md と execution/p04-01/** 内の最小差分】.review-material/native-existing-sources/(実体はbuild_dir/audit-support/p04-native-existing-sources/)にあるwrapper 4本とGD probe 6本を実際に読むこと。新しいcollectorは作らない。既存パターン(r.source_refs、copy_source、private stage、testpathへのQA明示上書き、bootstrap、cache cp -c、execute_phase、owned_outer.finish_captured、fixed_guard)をRootが続けて使えるよう、パラメータ化した差分と実行契約だけを書く。\n・固定1299 pinの代わりに、tested checkoutのsource_refsをsource_map authorityにする。\n・旧r03/1299 pinと誤期待を含むケースは実行しない。負履歴としてsha付きで記録する。\n・条件の束ね方: 同じ状態系列で証明できる条件は1プロセスにまとめ、プロセス数を目標にしない。例: midnight_settlement/paused_midnight/midnight_replay/night_staff_absent、power_stop/recovery_completion/dependency_stop、exit_release/patience_release/closure_release/same_minute_replay、shift_completion/overtime_task、destruction_stop、save_restore(Writer+別PIDの正式Reader)、EV予約到達。各条件のseed、状態、receiptはケースごとに分けたままにする。\n・旧証拠39件のうち、具体的に適用できる部分は再利用し、その根拠をA(i)〜(iii)で示す。\n・Runtime差分の境界経路がtested版で再実行を必要とするかを明記し、原則は最終の正確な版で検証する。登録版の証拠を使う有限条件も明記する。\n・15+EVの各条件→probe/phase/観測artifactの被覆表を作る。transportはreach=falseの根拠だけでよい。\n・既存probeで足りない条件だけ、新しいGD probeを書く(execution/p04-01/**内、THE_TREE_ORDER_EVIDENCE等の既存env規約に合わせる)。\n\n【E】checker_negative_fixturesに負例を置く: 登録pinの偽装、git diffと申告の差、行ずれ、owned_outer結合の欠落やPIDの不一致、台帳とcountsの不一致、restore stateの差、別候補receiptの流用。正対照は、登録=testedの場合とdelta合法の場合の2つ。\n\n【完了時の報告】変更ファイル、checkerのnegative/positive結果(Python実行のみ)、Rootが実行する正確なコマンド列と予想プロセス数、残る欠落を返す。完了は自己確定しない。Rootがnative収集→validate→別セッションの独立レビュー→通常統合を行う。", + "codex_model": "gpt-6-astra", + "codex_model_reason": "今回は1回で4つの仕事を同時に正しく終える必要がある。(1) git diffから関数単位の適用性を判定するcheckerの再設計、(2) 既存guarded owned_outer/execute_phase基盤へのreceipt結合、(3) 不足分のGDScript probeの作成、(4) 負例と正対照の作成。版の区別や自己申告の排除で誤りが出やすい。すでにrepairが4回続いており、ここで品質が不足するとrepairがもう1回増えるほうが時間・使用量の両面で高くつく。そのため既定のgpt-6.1-solではなくastraを選ぶ。" +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_D05_9767_REPAIR4_RUN_DECISION.stderr b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_D05_9767_REPAIR4_RUN_DECISION.stderr new file mode 100644 index 0000000..e69de29 diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_D05_9767_REPAIR4_RUN_REQUEST.txt b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_D05_9767_REPAIR4_RUN_REQUEST.txt new file mode 100644 index 0000000..9bbbe32 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_D05_9767_REPAIR4_RUN_REQUEST.txt @@ -0,0 +1,14 @@ +同じ9767b0aのrequest-repairを通常dispatchし、repair_ready、実カウンタ4/max nullです。元の受入・allowed_pathsを維持してrun開始判断をお願いします。あなたの前判断を下記に全文保持します。判断をworkerへ渡すrun reasonは省略せず具体的にしてください。追加のユーザー指示を優先します: 関連条件を安全にまとめ、重複試験と再実装を避けます。前判断の「1 case=1 process、16+1個の実行」は必須原条件ではありません。同じ実行で複数の条件を証明できるなら束ね、状態/seed/receipt分離と正式Reader別PIDは維持する。15+EVは条件の被覆であって、プロセス件数を増やす目標にしない。旧証拠39件も具体的適用性が成立する部分は再利用する。 +probeを新規製品testsへ置く権限拡大は不要です。既存guarded native wrapperは、元の製品source_mapを保持し、private stageに実診断QAを既存testpathへ明示上書きしてselected_source_map/QA_overrides/marker/全parse/source+profile不変/owned cleanupを記録しています。この先例のPython10文書とGD probeは .review-material/native-existing-sources/ にbyte一致コピーし、実体は build_dir/audit-support/p04-native-existing-sources/ にも置きました。古い1299 pinやr03の誤期待は実行せず負履歴として保全してください。これを実際に読んで、既存基盤を再実装しないでください。workerが必要な診断probe/collectorソースを制作する場合も execution/p04-01/** 内だけに置き、Rootが独立してnative収集を実行します。製品と既存testsは変更しない。engine実行はworkerには許可されていません。collectorを新設するより既存wrapperのRoot継続用に必要な差分・実行契約を確定し、足りないprobeだけ作ります。 +登録Runtimeと現在Runtimeで2種の証拠が必要なら、その理由と再利用できる有限条件を明示し、原則は最終の正確な版での検証を優先する。別候補のreceiptのSHAを書き換えて流用せず、実行元/登録版/tested版/統合版を区別してください。新nonceやログ文字列だけをnative真正性の代用にせず、既存guarded owned_outerの起動・終了・隔離・source/settings/input/engine guardへ結合すること。無限repairや同じ自己申告checker検証の繰返しで済ませず、P04原条件を本当に閉じる実用的なprobe/収集契約まで今回の同じ修正に含めてください。 +先の実Opus判断全文: +【sourceで確認した事実】(1) registered-validation.json: p04-acceptance exit 1。stdoutは {"machine_verified":false,"error":"missing/outside file: index.json"}、stderrは0バイト。checkerの意図どおりのfail-closedで、p04-evidence/index.jsonが無いことだけが原因。Rootが合格入力を捏造した形跡はない。(2) POST_P18: 20個の順序関数本体はbytes一致20/20。spec pin 6件のうち5件は一致し、Runtimeのみ登録d52a995と現在7f01b2dc(5f6bc11)で不一致。(3) checkerの216-217行目は spec.current_source_pins を index.source_map に無条件で等置し、215行目はsource_mapを実checkoutと照合する。このため現mainへ通常統合したtreeでは必ず 'immutable source pin' で落ちる設計欠陥がある。(4) REACH_REFSは固定行番号。現Runtimeでは _execute_create_staff_task が6733→6740行へ+7行ずれており、'reachability source text' でも落ちる。(5) receipt、raw_origin=engine、observation内countsはすべてindex提供者のJSON自己申告。checkerは実プロセス・native実行・台帳・保存同一性を独立に証明していない(PID/exit_codeもJSON値)。(6) 必須はREQUIRED15条件(power_stop, destruction_stop, dependency_stop, shift_completion, recovery_completion, same_minute_replay, closure_release, exit_release, patience_release, paused_midnight, midnight_settlement, midnight_replay, save_restore, night_staff_absent, overtime_task)とEV予約到達ケース1件。raw engine証拠は16件すべて0件。transportはreach=false根拠のみ必要。r03は誤期待を含む負履歴なので合格証拠に使えない。 + +【修正指示(allowed_paths内: tools/check_p04_order_evidence.py と execution/p04-01/**)】 +A. 版の役割分離。spec.current_source_pinsは削除・緩和せず「registered_pins」として扱う。各pinについて、checkerが自分で `git show :` のsha256を計算してspec値と一致させ、原本へ追跡する。tested版はsource_map=実checkoutとする。登録≠testedの場合だけ、次をcheckerが自分で計算する場合に限り適用性を認める: (i) 固定20順序関数の本体bytesが一致すること(関数抽出規則はchecker内に固定)。(ii) `git diff base..HEAD -- ` の変更関数集合を算出し、index.applicability_delta の自己申告と完全一致すること。(iii) 変更関数のうち境界経路に関わるもの(relationship restore/schema、path/arrival、save/restore)には、それぞれ対応するengine case IDが必須であること。上記以外の不一致はstaleとしてfail。古いpinを現行として偽装してはならない。 +B. REACH_REFSを行番号から (path, func名, 本文行のsha256アンカー) に変更し、tested source上で解決する。 +C. 自己申告を排除する。各count条件は、observation内のスカラーに加えて、state artifactの生台帳/予約配列(service/settlement単位のdump)へのcount_eqまたはsame_literalを必須にする。case receiptにはargv、Root生成nonce、probe sourceのsha(source_mapに必須)を要求する。stdoutとnative_logに nonce+case_id+after sha のengine出力行があることもcheckerが検査する。save_restoreは、restore後のstate dumpがsave前の台帳・予約とsame_literalで一致すること、および別PIDであることを必須にする。 +D. 証拠生成の契約を EVIDENCE_COLLECTION.md に確定する。Root既存のguarded native wrapper(power/formal/midnight)とtyped stateを再利用し、1ケース1プロセスで `godot --headless --path --script -- --case --nonce --out $BUILD_OUTPUT_DIR/p04-evidence//` とする。ケースは15+EVの16件と、restoreの別PID1件。不足するprobeだけを追加する。全回帰は実行しない。 +E. checker_negative_fixturesへ負例を追加する: 登録pinの偽装、git diffと申告の差、行ずれ、nonce欠落、台帳とcountsの不一致、restore stateの差。あわせて、登録=testedとdelta合法の2つの正対照を用意する。 + +【未検証・Root/Owner判断】probeを製品tests/配下に置くにはallowed_paths外の変更が必要で、オーナー判断になる。execution/p04-01/配下からwrapperで読み込めるかは未検証。適用条件: worker修正 → current main基準の候補でRootが16+1件の証拠を収集 → validate → 別セッションでの独立レビュー → 通常統合。D05未確定の帰属は決めない。D034/A01は再承認しない。3受入結果・7領域・30/88は不変、部分点0。容量の見込み: workerはPython1ファイル(約+200行)と文書で1回。Root収集は17 headless実行(各数分以内)。 diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_NATIVE_FIRST_AND_LIMITS_DECISION.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_NATIVE_FIRST_AND_LIMITS_DECISION.json new file mode 100644 index 0000000..cbe9915 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_NATIVE_FIRST_AND_LIMITS_DECISION.json @@ -0,0 +1,7 @@ +{ + "action": "request-repair", + "task_id": "P04-01", + "reason": "【判断】同じP04-01でrepair5を出します(使用済4→5、max nullのまま)。範囲は「依存先休業pause/resume+00:00跨ぎ」1条件の実行可能probeと、既存wrapperとの差分作成だけです。worker/engineは起動せず、Rootが実測します。Cのchecker完成はRootのraw取得後の次repairに回します。\n\n【現物確認】\n- ROOT_APPROVED_SHIFT_CURRENT_RESULT.json と observations.json を照合しました。checks52/failures0、3PID(77462/77504/77536)は通常終了し、execution.json の passed=true です。1079(elapsed44/45)→1080 FACILITY_COMPLETIONでwallet50→25となり、SERVICE_SALEとSERVICE_CASH_SWEEPが同じ ledger_00000006 に1回だけ記帳されています(二重課金ではありません)。その時点のstaffは2人で、AI_DECISIONSでOFF_DUTY/0人になり、1081の追加課金は0です。reservation_00000001は1080にCONSUMEDとなり、孤立はありません。\n- approved-shift.gd は aa./zz. のtick handlerとvar+JSON鏡像で取得していて、良い型です。wrapperはQA一件をtest上書きし、import/parse/reproを所有PIDで回す型で、再利用できます。\n- 現行の依存先停止経路は scripts/facility/facility_service.gd:860-866 です。`related_facility_operating=false` でACTIVEのserviceを `pause(&\"RELATED_FACILITY_INACTIVE\")`、復帰時に同じreasonだけresumeします。直接休業D-034や停電NO_POWER(867-874)とは別の分岐です。\n\n【repair5の指示】\n- 保持:checkpoint dc51b351…の6ファイルはそのまま保持し、書換えも複製もしません。\n- 新規:allowed_pathsの docs/plans/original-completion-2026-10-02/execution/p04-01/probes/ に2つ作ります。\n - (a) dependency-pause-midnight.gd:approved-shift.gd と同じ継承・handler・_write_var方式。_build_cafeteria(true)の厨房を、既存の公開commandだけで非稼働にします(直接休業・破壊・停電は使わない)。ACTIVE途中のserviceが同じservice_id/reservation_idのままPAUSEDになり、休業中はelapsed不変・SERVICE_SALE 0件とします。23:59→00:00を跨いで決算行は各日1回だけ、復帰後は残分だけ進んで1回だけ完了・課金・CONSUMEDとし、予約孤立0とsnapshot replayの一致を確認します。期待値は現sourceから導き、未確定値は作りません。\n - (b) wrapper差分:actual-native-wrapper.py に対し、OUT/QA/marker template/classificationの差分だけを書きます。全文複製はしません。\n - (c) README:Rootの実行手順と、生成されるraw exact pathの一覧を書きます。\n- 禁止:engine・全回帰・Runner操作・製品source変更。checkerの完成主張と、原成果を完了扱いすることもしません。\n\n【必要入力(exact path、これだけ)】\n- .review-material/native-first-current/approved-shift.gd\n- .review-material/native-first-current/actual-native-wrapper.py\n- .review-material/native-first-current/actual-native/execution.json\n- .review-material/native-first-current/actual-native/order-evidence/observations.json\n- .review-material/native-first-current/ROOT_APPROVED_SHIFT_CURRENT_RESULT.json\n- worktree内の tests/s3/test_runtime_actor_hardening.gd、scripts/facility/facility_service.gd、autoload/simulation_runtime.gd\n- snapshot形 /systems/runtime/economy/entries と /systems/runtime/inventory/reservations\n\n【context gap】worktreeのbaseはdeb1bcbで、Root実測は5f6bc11です。順序20関数は20/20一致をRootが確認済みなので読取りには使えますが、probeの実行はRootが5f6bc11で行います。全39rawが無いことはprobe作成を止める理由にしません。\n\n【(2) 別成果への切替】しません。P18-01の残りは通常UIの3軸グラフ/盾、承認済み本番初期値、whole受入、Windowsです。P02-03はWindows実機の接続待ちです。どちらもオーナー判断か外部条件が前提で、P04を上回るとは言えません。P04は承認済みD05の範囲内で、Root native基盤も揃っていて最も進めやすいです。\n\n【(3) timeout adapter】既存の「個別上限を全て撤廃」の承認範囲に入ると判断します。再承認の質問はしません。安全に実装するための条件は次のとおりです。\n- ①登録config/digestは書換えません。trusted owner CLIのプロセス内でだけ有効にします。\n- ②project/task/role=implementer/service=codexの完全一致でだけ発動し、eventを記録してfinallyで戻します(提案の形のままで可)。\n- ③提案は `self.config['policy']` を一時的に書換える方式です。そのため同一Runnerプロセスで他のprocess呼出しが並行すると、そちらも上限なしになります。adapterは単一run専用のCLIプロセスで直列に実行し、開始前後にpolicy dictが元と同一であることをassertします。\n- ④validation/review/試験watchdog(1200)・料金・セキュリティ・分母・モデル判断は変わりません。\n- ⑤上限なしなので、提供元が止まった場合はオーナーのKeyboardInterrupt経路(既存のkillpg)で停止します。\nなお、repair5の範囲は900秒以内に収まる見込みなので、adapterを入れていなくても実行できます。\n\n【資源見積】Codex 1run。入力約1-2M token(cache主体)、出力約15-25k、実時間15-40分程度です。その後Rootのnative 3PIDは約15秒です。正式加点は0のままです。", + "codex_model": "gpt-6.1-sol", + "codex_model_reason": "今回の作業は、既存のapproved-shift.gd型の写しと、facility_service.gd:860-866の単一分岐の読取りが中心です。成果物はprobe1本とwrapper差分なので、規模が小さく型も確立しています。repair4ではC/D/Eを同時に抱えて時間切れになりましたが、今回は範囲を1条件に絞ったため、より強いAstraの追加コストや時間は見合わないと判断し、既定のSolにしました。" +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_NATIVE_FIRST_AND_LIMITS_DECISION.stderr b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_NATIVE_FIRST_AND_LIMITS_DECISION.stderr new file mode 100644 index 0000000..e69de29 diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_NATIVE_FIRST_AND_LIMITS_REQUEST.txt b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_NATIVE_FIRST_AND_LIMITS_REQUEST.txt new file mode 100644 index 0000000..ba75d7e --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_NATIVE_FIRST_AND_LIMITS_REQUEST.txt @@ -0,0 +1,6 @@ +同じP04-01の次の実行方針を、現物から短く具体化してください。今回worker/engine/repairは起動しない読取判断だけです。repair4は実run bd5c307f8ca4419f8e699649c38fa981 / exit124、実カウンタ4/max nullのまま、編集6ファイルを保持・全hash確認済みcheckpoint化。providerは900秒制限に達し、終了直前の発言もC/D/E未完成を認めていました。timeoutだけが原因とも、完成とも扱いません。部分成果を捨てたり同じ実装を複製しません。 +Rootはその後、承認済み18:00条件を先に実測しました。.review-material/native-first-current/ の ROOT_APPROVED_SHIFT_CURRENT_RESULT.json、actual-native/order-evidence/observations.json、approved-shift.gd、actual-native-wrapper.py、execution.json を実際に読んでください。Macの現在main5f6bc11/全1338source同一でimport+全316parse+probeの3実PIDが通常終了、52/0。17:59進捗44/45→18:00施設完了でwallet50→25・SALE25が1回、staffはまだ2人。その後交代で0人。18:01追加課金0。snapshot replayも全typed state一致。ledgerはSERVICE_SALEとCASH_SWEEPの2行ですが同じledger_00000006で二重課金ではありません。JSON鏡像は型を失うことを明示し、元.varを全保持しています。command再送や正式保存/別PID復元を証明したとは扱いません。新native実測があるので、仮想receiptの設計だけを繰返す方式からnative-firstへ移します。 +(1) 原7領域/安全性3結果/30-88/部分点0を保ち、次は一つの未証明条件(推奨:依存先休業pause/resume+日跨ぎ)の実行可能probeと既存wrapper差分を先に揃え、Rootの実測を得てからCのcheckerを現実のraw形式へ完成させる順序を判断してください。既存の良いコードは保持します。必要なrawのexact pathがあれば、それだけを指定。全39raw不足を理由に新probeを作らず終了することは避けます。Root実測のsnapshot JSON形は /systems/runtime/economy/entries と /systems/runtime/inventory/reservations です。 +(2) ORIGINAL_88_CURRENT_SCOREBOARD.json に現在と次の原成果を整理しました。もしP04を続けるより別の原成果を正式に閉じるほうが価値/依存/残工数で明確に優れるなら1件だけを具体的根拠と残条件から提案してください。試験件数や容易さを完成の代用にしない。原P18-01のbackend4条件は正常review/integration/final済みですが原P18全体未完です。 +(3) 人間は既に「個別上限を全て撤廃」と指示済みで、900秒のLLM打切りが残ったままです。ACTUAL_RUNNER_PROCESS_REFERENCE.txt と RUNTIME_TIMEOUT_PROPOSAL_NOT_INSTALLED.py を読んでください。正常Runner.processが timeout or policy.timeout_seconds でcommunicateする実装です。登録configを直接書換えてdigestを更新する方法は禁止。提案は既存trusted owner CLIのタスク/役割限定budget adapterで、P04 implementer/CodexだけNoneとし、finallyで戻し、セキュリティ/スコープ/分母/モデル判断/試験watchdog/料金は変えないもの。ユーザー承認の範囲として妥当か・安全に実装する具体的方法を判断し、既に撤廃許可された上限の再承認質問はしないでください。提案は未適用です。 +今回は具体的な次の1行動と根拠、必要な入力、担当モデル(あなたOpusが選択)、資源見積を返してください。未達がある原成果を完了にしない。 diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_REPAIR5_C_RUN_DECISION.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_REPAIR5_C_RUN_DECISION.json new file mode 100644 index 0000000..2104ced --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_REPAIR5_C_RUN_DECISION.json @@ -0,0 +1,7 @@ +{ + "action": "run", + "task_id": "P04-01", + "reason": "判断: run。前回のrequest-repairの方向(C段階のみ。native raw/ownership/ledger/service/reservation/正式保存の結合)をそのまま実行に移す。状態はrepair_readyで、有効なactionはrun/waitのみ。wait(待機)にする理由は無い。\n\n【入力の確認】\n- worktree内には提出済み9767b0aと未提出のrepair4編集6件がある。修正3件(CHECKER_PROTOCOL.md/checker_negative_fixtures.py/tools/check_p04_order_evidence.py)と新規3件(EVIDENCE_COLLECTION.md/checker_applicability_fixtures.py/repair4-context.json)の実在を確認した。\n- .review-material内のmirrorは無い。オーナーの説明では、全270 files/23426716 bytesをhash完全一致のまま、build_dir/audit-support/native-first-current/ へrename移動済みであり、実装者はそこを読める。scope内にRoot helperを残さない処置として整合しており、入力欠落ではない。\n\n【実装範囲】allowed_paths(tools/check_p04_order_evidence.py と execution/p04-01/**)の中だけ。repair4の編集と既存のverify/coverage/applicability/boundary_conditions、A/Bの修正は全て残す。\n(1) native結合層\n - OWNERSHIP_RAW_PROVENANCE の全fileについて、bytes/sha256を再計算して一致を確認する。\n - lifecycle の started→process→ended のPID連鎖を確認する。writerとreaderでPIDとprofileが異なること、所有プロセスが全て通常終了していること、cleanupが記録されていることも確認する。\n - production_commit/current_source_pins/applicabilityの一致を確認する。\n - 固定のPIDや価格は使わず、run・入力・原定義から照合する。\n(2) ledger/service/reservation 結合。scalarの自己申告は使わず、restart-evidence と observations.json の生receipt行から再計算する。\n - SERVICE_SALE行はservice_idを持たない。midnight-after.json の /systems/runtime/economy/idempotency 配列の key(service.payment.service_00000001)→ transaction_id(ledger_00000081)を経由して、ledger行/guest wallet/facility/request/reservation系列に結合する。\n - maintenance は accrual が1439、payment が1440 で、同一transactionとして照合する。\n - PAUSED中の判定は interruption_reason を使う。\n - 財布の差分は ledger 差分と照合する。\n(3) 正式保存の結合\n - writer/readerの5点×4memberのSHAが一致すること。\n - 元の20memberが変わっていないこと。\n - typed .var 14件と原order-evidence .varのSHA一致を、ファイル実体から再計算する。\n - .varのdecodeは必須にせず、値の根拠はnativeのJSON receiptに置く。\n(4) 生raw改変の負例を追加する。1byte改竄/member欠落/PID同一化/ended異常/receipt行の二重化・削除/PAUSED中の売上注入/予約孤立化/commit・pin不一致/self-reported scalar true の全てがfailすることを確認する。applicability fixtureも追随させる。\n(5) 結合規則を CHECKER_PROTOCOL.md と EVIDENCE_COLLECTION.md に記す。\n\n【固定する範囲と制約】\n- 全15条件、reachable EV、原7領域、安全性3結果は固定する。\n- 未収集の条件は明示的に未達とする。対象は非ゼロ給与のシフト交代×00:00、command再送、停電→閉店の同一Tick、退出/予約孤立、破壊、EV。\n- formal_original_credit は0のまま維持し、完了・加点は記さない。\n- Rootのprobe/Reader/wrapperは再実装しない。\n- 新規engine起動と全回帰は0とし、Pythonの必要検証だけを行う。\n- product/Clock/値/config/Runner/capは変更しない。\n- 旧39rawは読了・採用扱いにしない。\n- 未収集indexでwhole gateがfailすることが分かっているので、重複のvalidateは行わない。\n- C段階の提出と、原P04-01全体が未達であることを区別して報告する。", + "codex_model": "gpt-6-astra", + "codex_model_reason": "gpt-6-astraを選ぶ理由は次のとおり。\n- 今回は6回目の作業で、直前のrunはexit124(timeout)で失敗している。\n- 4種のraw形式を相互に照合する必要がある。lifecycle JSONのPID連鎖、生receipt行とidempotency配列を経由した間接結合(rowにservice_idが無い)、40memberのSHA、typed .var 14件のSHA結合である。\n- 生raw改変の負例を約15〜25件追加しつつ、既存のA/B規則とapplicability fixtureを壊さないことを同時に保証する必要がある。\n- scalar自己申告の抜け道を全て塞ぐ、対抗的な設計も求められる。\n\n以上から、一回で正しく仕上げる品質を優先する。Solで再び失敗した場合、再runにかかる時間と使用量がAstraとの差額を上回ると判断した。範囲はallowed_paths内のPython・docsの数ファイルで、engine起動は0のため、追加の消費は推論分にとどまる。" +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_REPAIR5_C_RUN_DECISION.stderr b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_REPAIR5_C_RUN_DECISION.stderr new file mode 100644 index 0000000..e69de29 diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_REPAIR5_C_RUN_REQUEST.txt b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_REPAIR5_C_RUN_REQUEST.txt new file mode 100644 index 0000000..97faf50 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OPUS_REPAIR5_C_RUN_REQUEST.txt @@ -0,0 +1,5 @@ +正常dispatch済み、同じP04-01はrepair_ready/使用済5/max nullです。あなたの次の実判断について、保持成果を再利用するCのみの実行開始を判断してください。前repair direction全文: +{"action": "request-repair", "task_id": "P04-01", "reason": "判断: C(信頼できるnative raw/ownership/ledger/service/reservation/正式保存の結合)は、今の現実のraw形式に合わせて今実装するのが妥当。必要なrawはmirror .review-material/native-first-current/ 内に揃っていることを確認した。dependency-{midnight,formal}-native の lifecycle {import,parse,repro|writer,reader}/{started,process,ended,adapter-owned-cleanup,outer-owned-finally}.json と stdout/engine-native/stderr/combined-raw.log、order-evidence/*.var と observations.json、restart-evidence/{writer,reader}.json と全 *.var(reader-receipts.var を含む)、formal-packages/{writer,reader}/{before,midnight,paused,after,next}/ の全40 member、OWNERSHIP_RAW_PROVENANCE.json(source/target/bytes/sha)、ROOT_APPROVED_DEPENDENCY_{MIDNIGHT,FORMAL}_RESULT.json である。このため追加rawの要求は無く、C全体を止める理由も無い。stage/cache/engine本体は今回不要。提供の旧39rawは読了・採用扱いにしない。\n\n実装範囲(allowed_paths内、同worktree、repairs4と提出9767b0a、未提出6編集を全保持):\n(1) tools/check_p04_order_evidence.py に native結合層を追加する。既存の verify/coverage/applicability/boundary_conditions と A/Bの修正は保持する。この層は、index が参照する各native run について次を必須にする。\n - OWNERSHIP_RAW_PROVENANCE の全fileの bytes/sha256 再計算一致。\n - started→process→ended の PID連鎖を {3770,3818,3854,3879} 等と照合し、writer≠reader PID・別profile・全owned通常終了・cleanup記録を確認する。\n - production_commit 5f6bc11 と、current_source_pins/applicability の一致。\n(2) ledger/service/reservation 結合。scalar自己申告ではなく、restart-evidence と observations.json の生receipt行から再計算する。対象は次のとおり。\n - 1440 の MAINTENANCE_ACCRUAL/PAYMENT が施設ごとに1回で、日次close が1回だけ。\n - PAUSED中(1440/1441)は SERVICE_SALE が0、wage が0。\n - 1442 の SERVICE_SALE 25 が service_00000001 に1回だけ。\n - reservation_00000001 は CONSUMED で、1443 の追加は0。\n - 財布 50→25 を ledger 差分と照合する。\n(3) 正式保存の結合。次を確認する。\n - writer/reader の5点×4member の SHA一致と、元20 member の不変。\n - 14件の typed .var(5 persisted/5 loaded/4 replayed)と原 order-evidence .var の SHA一致を、ファイル実体から再計算する。.var のGodot Variant decodeは必須にしない。値の根拠はnativeのJSON receiptに置き、.var はSHAで結合する。\n(4) 生raw改変負例を checker_negative_fixtures.py に追加する。対象は、1byte改竄・member欠落・PID同一化・ended異常・receipt行の二重化/削除・PAUSED中の売上注入・予約孤立化・commit/pin不一致・self-reported scalar true のみ。いずれも fail することを確認する。applicability fixture も追随させる。\n(5) 全15条件と、reachable EV/原7領域/安全性3結果は固定する。未収集の条件(非ゼロ給与・command再送・EV・停電・破壊・シフト交代等の未証明分)は、明示的に未達とする。完了・加点は記さない(formal_original_credit 0維持)。CHECKER_PROTOCOL.md/EVIDENCE_COLLECTION.md に結合規則を記す。Root の probe/Reader/wrapper は再実装しない。product・Clock・値・config・Runner・cap は変更しない。\n\n残りnative境界の優先順(C後、Root側の証拠収集):\n- ① 非ゼロ給与のシフト交代×00:00決算(二重決算/停止中課金の中核)\n- ② 同一idempotency command再送で二重課金・二重生成0\n- ③ 停電→閉店同一Tick順序\n- ④ 退出/忍耐解放と予約孤立0\n- ⑤ 破壊時の予約・課金\n- ⑥ reachable EV予約経路(D05未確定部分は pending のまま)\n\n原P04-01の完了は、全条件・独立whole review・通常integration・final の後のみ。\n\n見積: 単一worker 1run。checker差分は約400〜700行、負例は約15〜25件。所要は40〜80分で、watchdog1200秒の複数区間に相当する。新規engine起動は0で、Python検証のみ。", "codex_model": "gpt-6-astra", "codex_model_reason": "5回目のrepairで、直前のrunはexit124(timeout)で失敗している。Cは、異なる4種のraw形式(lifecycle JSONのPID連鎖、生receiptのledger行、formal package 40 memberのSHA、Godot typed .var 14件のSHA結合)を相互に照合する。そのうえで、生raw改変の負例が既存のA/B規則と既存fixtureを壊さないことを同時に保証する必要がある。scalar自己申告の抜け道をすべて塞ぐという対抗的な設計も求められる。これらの理由から、一発で正しく仕上げる品質を優先してAstraを選ぶ。Solで再失敗すると、再runの時間と使用量がAstraとの差額を上回ると判断した。範囲はallowed_paths内のPython 2〜4ファイルに限定し、engine起動は0とするため、追加の資源消費は推論分のみになる。"} +Root実測probe/Readerは完了済みなので重複実装しません。Rootのreadonly mirror全270 files/23426716 bytesはhash完全一致でworktreeの外、既存build_dir/audit-support/native-first-current/へrename移動済み(scope内にRoothelperを残さないため)。6個の未提出repair4編集は全SHA不変、既存提出9767b0aのままです。実装者はこのbuild配下を読むことができます。新規engine/全回帰0、Pythonの必要検証だけ。段階C実装の提出と原成果全体の未達を区別し、全条件未達のwhole受入を主張しない。未収集indexで登録whole gateが失敗することを知りながら重複validateしない。 +具体的なraw注意点: SERVICE_SALEのrowはservice_idを直接持ちません。order-evidence/midnight-after.json の /systems/runtime/economy/idempotency は配列で、key=service.payment.service_00000001→transaction_id=ledger_00000081が実在し、それをledger行/guest wallet/facility/request/own reservation系列へ結合できます。憶測でrowにservice_idを要求せず、実形を読んでください。1440maintenanceのaccrual absolute_minuteは1439、paymentは1440で同一transaction。PAUSED状態の理由fieldはinterruption_reason。固定PIDや価格25の一般化を避け、run/入力/原定義から照合する。全15条件+reachableEV/原7領域/安全性3結果は固定し未証明を正直に未達。旧39rawを見ていないのに採用しない。 +専用直列CLIにある承認済budget adapterはP04 implementer/codexのみtimeout None、他role/testwatchdog/config/digest/DB不変です。あなたが開始判断で選んだモデルを使います。追加上限確認は不要。必要な入力が実在しscopeが妥当ならrunを返してください。 diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OWNER_P04_LLM_TIMEOUT_ADAPTER.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OWNER_P04_LLM_TIMEOUT_ADAPTER.json new file mode 100644 index 0000000..5c5c6ed --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/OWNER_P04_LLM_TIMEOUT_ADAPTER.json @@ -0,0 +1,21 @@ +{ + "installed": true, + "authority": "direct user all individual limits removed", + "actual_opus_judgment": "OPUS_NATIVE_FIRST_AND_LIMITS_DECISION.json", + "scope": "dedicated serial owner CLI; exact P04 implementer/codex only", + "normal_process_cleanup_scope_validation_and_test_watchdogs_preserved": true, + "registered_config_sha256": "3ba618ae364b304e6daeaf45a92d6663618f2e90141aeec272c8da078041d686", + "registered_config_not_edited": true, + "database_not_edited": true, + "cli_sha256_before": "78a589186aa63b4c67e0a63ad23971b7f4c2c45485b49e5afa333de9c0ce9fbe", + "cli_sha256_after": "621a6f7aba99c2d5c8809726f9f2a13c21a9ad763218ad02bc440f20ca653a73", + "adapter_sha256": "d9e4dc773fd735a599c48866bf95e2b0983fef6beb8df9d4342b824c81618fe5", + "meaningful_fixture_checks": [ + "target budget None", + "unrelated validation/task/project unchanged", + "normal and exception restore identity/value", + "test timeout unchanged", + "no nested/concurrent override" + ], + "new_worker_runs": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/POST_P18_CURRENT_SOURCE_APPLICABILITY.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/POST_P18_CURRENT_SOURCE_APPLICABILITY.json new file mode 100644 index 0000000..23246f7 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/POST_P18_CURRENT_SOURCE_APPLICABILITY.json @@ -0,0 +1,188 @@ +{ + "plan_id": "P04-01", + "production_commit": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "worker_submitted": "9767b0a28ca8d252520307dbbac60a1d8cfb87ab", + "ordering_functions": [ + { + "path": "scripts/core/simulation_kernel.gd", + "function": "advance_one_minute", + "registered_body_sha256": "b9587ef722d8c8640248025462819374ae5eca1c3d8bbe600b6bc9c328567777", + "production_body_sha256": "b9587ef722d8c8640248025462819374ae5eca1c3d8bbe600b6bc9c328567777", + "exact_bytes_equal": true + }, + { + "path": "scripts/core/simulation_kernel.gd", + "function": "_run_phase", + "registered_body_sha256": "52461eeb288892a4bb4b6a99570185af08a30758ef88b0046a911baaa6f318e1", + "production_body_sha256": "52461eeb288892a4bb4b6a99570185af08a30758ef88b0046a911baaa6f318e1", + "exact_bytes_equal": true + }, + { + "path": "scripts/core/simulation_kernel.gd", + "function": "_handle_time_boundaries", + "registered_body_sha256": "2ced47a2911b36def9d89de82a43afc69148ead44d19db6a2a6c7bce5a910ae9", + "production_body_sha256": "2ced47a2911b36def9d89de82a43afc69148ead44d19db6a2a6c7bce5a910ae9", + "exact_bytes_equal": true + }, + { + "path": "scripts/core/command_queue.gd", + "function": "_comes_before", + "registered_body_sha256": "21f7f9f7c0923121fd0a022a2f7546b7bb7117a9979c1ed25d0b33b96e28ab28", + "production_body_sha256": "21f7f9f7c0923121fd0a022a2f7546b7bb7117a9979c1ed25d0b33b96e28ab28", + "exact_bytes_equal": true + }, + { + "path": "autoload/simulation_runtime.gd", + "function": "_process_tick_commands", + "registered_body_sha256": "9de66a4bb84b12304300d49085f44546412319bd4aee91e67b61becf97e50294", + "production_body_sha256": "9de66a4bb84b12304300d49085f44546412319bd4aee91e67b61becf97e50294", + "exact_bytes_equal": true + }, + { + "path": "autoload/simulation_runtime.gd", + "function": "_advance_operations_time", + "registered_body_sha256": "511580d1fac3d2785072e94c2981065fa47ba18b1c97122922645dac5c0d94ab", + "production_body_sha256": "511580d1fac3d2785072e94c2981065fa47ba18b1c97122922645dac5c0d94ab", + "exact_bytes_equal": true + }, + { + "path": "autoload/simulation_runtime.gd", + "function": "_run_operations_deferred_suffix", + "registered_body_sha256": "12075307b12cbb66ffda47a26097194a07fad9d6467e3e557bd7269315c98982", + "production_body_sha256": "12075307b12cbb66ffda47a26097194a07fad9d6467e3e557bd7269315c98982", + "exact_bytes_equal": true + }, + { + "path": "autoload/simulation_runtime.gd", + "function": "_advance_mana", + "registered_body_sha256": "05c54626ce6e355acd92994ab80aaf2177c5cf194885e66934552139e087599e", + "production_body_sha256": "05c54626ce6e355acd92994ab80aaf2177c5cf194885e66934552139e087599e", + "exact_bytes_equal": true + }, + { + "path": "autoload/simulation_runtime.gd", + "function": "_advance_facilities", + "registered_body_sha256": "f1efd0c23bdd60d1ef19a21879640b53b8b4d88844c0c881fe7cd724387ec274", + "production_body_sha256": "f1efd0c23bdd60d1ef19a21879640b53b8b4d88844c0c881fe7cd724387ec274", + "exact_bytes_equal": true + }, + { + "path": "autoload/simulation_runtime.gd", + "function": "_advance_guest_vitals", + "registered_body_sha256": "8226ca18c983ac576a74e772cc3088e9fe52b362ffba1b71255bd1d7623c1234", + "production_body_sha256": "8226ca18c983ac576a74e772cc3088e9fe52b362ffba1b71255bd1d7623c1234", + "exact_bytes_equal": true + }, + { + "path": "autoload/simulation_runtime.gd", + "function": "_advance_staff_ai", + "registered_body_sha256": "c7c440bf77850b2348040c0ae1b17ee11fdca1cea9605d51076c4a53a1ed2edd", + "production_body_sha256": "c7c440bf77850b2348040c0ae1b17ee11fdca1cea9605d51076c4a53a1ed2edd", + "exact_bytes_equal": true + }, + { + "path": "autoload/simulation_runtime.gd", + "function": "_advance_guest_ai_decisions", + "registered_body_sha256": "e33b41294e88dba840affd5cc0a5c58fe5d46f5d98a80a8d5f4e907a3b9a7b93", + "production_body_sha256": "e33b41294e88dba840affd5cc0a5c58fe5d46f5d98a80a8d5f4e907a3b9a7b93", + "exact_bytes_equal": true + }, + { + "path": "autoload/simulation_runtime.gd", + "function": "_release_closed_business_queues", + "registered_body_sha256": "3a05fbe94877eeb750fb0d692501954555ab6a8005448ab3b6023dab9bad816b", + "production_body_sha256": "3a05fbe94877eeb750fb0d692501954555ab6a8005448ab3b6023dab9bad816b", + "exact_bytes_equal": true + }, + { + "path": "autoload/simulation_runtime.gd", + "function": "_release_closed_business_request", + "registered_body_sha256": "7fb1b2c4197319d9ff29d7ab565306ecd0b569e331491281ed71d3a38d3a8695", + "production_body_sha256": "7fb1b2c4197319d9ff29d7ab565306ecd0b569e331491281ed71d3a38d3a8695", + "exact_bytes_equal": true + }, + { + "path": "autoload/simulation_runtime.gd", + "function": "_complete_service_transaction", + "registered_body_sha256": "c7ccce01292699052b8284383ad77f1fe0a5ead9a9c3936622ad9c3b93a3e408", + "production_body_sha256": "c7ccce01292699052b8284383ad77f1fe0a5ead9a9c3936622ad9c3b93a3e408", + "exact_bytes_equal": true + }, + { + "path": "scripts/facility/facility_service.gd", + "function": "advance_one_minute", + "registered_body_sha256": "59c0e89b4dca291e3ec02601b3f7c5544dba7c823fc137e0e7a50e7d5319e0ed", + "production_body_sha256": "59c0e89b4dca291e3ec02601b3f7c5544dba7c823fc137e0e7a50e7d5319e0ed", + "exact_bytes_equal": true + }, + { + "path": "scripts/facility/facility_service.gd", + "function": "_prepare_service_for_tick", + "registered_body_sha256": "8a9bef4ec1bbe3b25c418f8c7d04d4233cedaa942eda5cc77d530280b0f129de", + "production_body_sha256": "8a9bef4ec1bbe3b25c418f8c7d04d4233cedaa942eda5cc77d530280b0f129de", + "exact_bytes_equal": true + }, + { + "path": "scripts/facility/facility_service.gd", + "function": "_complete_service", + "registered_body_sha256": "38a16ace875e4f4b09133b10677cb50871732ca7177166b8659b07c2d79e61d0", + "production_body_sha256": "38a16ace875e4f4b09133b10677cb50871732ca7177166b8659b07c2d79e61d0", + "exact_bytes_equal": true + }, + { + "path": "scripts/facility/facility_service.gd", + "function": "_fail_service", + "registered_body_sha256": "b4dbc53b40ac3eb4e639bdf13d9f5538eb64a7bd6df22ec230e7baef4a535f58", + "production_body_sha256": "b4dbc53b40ac3eb4e639bdf13d9f5538eb64a7bd6df22ec230e7baef4a535f58", + "exact_bytes_equal": true + }, + { + "path": "scripts/operations/operations_coordinator.gd", + "function": "_process_minute_boundaries", + "registered_body_sha256": "1312166dc17aee0ef470069a73ff3fe6b86d11d04ca7de76f3d04f1d2d14674e", + "production_body_sha256": "1312166dc17aee0ef470069a73ff3fe6b86d11d04ca7de76f3d04f1d2d14674e", + "exact_bytes_equal": true + } + ], + "all20_ordering_bodies_identical": true, + "registered_source_pins": [ + { + "path": "autoload/simulation_runtime.gd", + "registered_sha256": "d52a995ae715542bbc550f68d35889540658275d12e04ae0b21ac276f5843f39", + "production_sha256": "7f01b2dcdf28bc965c7588173c2dc70054633faf7204b1ac38ba0f4369331b47", + "matches": false + }, + { + "path": "scripts/facility/facility_service.gd", + "registered_sha256": "ceb4a3e9224587423f273cdb2b56e6843ab176ac1fc4fe79dd498b5ed5c33b77", + "production_sha256": "ceb4a3e9224587423f273cdb2b56e6843ab176ac1fc4fe79dd498b5ed5c33b77", + "matches": true + }, + { + "path": "scripts/economy/economy_service.gd", + "registered_sha256": "95aedd0a0421c93e8fa39f0f76fa890cd0a46905d9a25c88c8b17c4d6d47728e", + "production_sha256": "95aedd0a0421c93e8fa39f0f76fa890cd0a46905d9a25c88c8b17c4d6d47728e", + "matches": true + }, + { + "path": "scripts/guest/guest_service.gd", + "registered_sha256": "56880410e9a00816f9a95d30821982955532de8dd976980934e12016a9f2b21e", + "production_sha256": "56880410e9a00816f9a95d30821982955532de8dd976980934e12016a9f2b21e", + "matches": true + }, + { + "path": "scripts/staff/staff_service.gd", + "registered_sha256": "355ad5c3c9f85dc4d4ffc3bc4293e36f81078c403d1662512a735b2c8d815fb3", + "production_sha256": "355ad5c3c9f85dc4d4ffc3bc4293e36f81078c403d1662512a735b2c8d815fb3", + "matches": true + }, + { + "path": "scripts/mana/mana_network_service.gd", + "registered_sha256": "96f195cf2a28b0966d12cd7c6fab86d13eae97c8342d07d70f52e598fbf49af9", + "production_sha256": "96f195cf2a28b0966d12cd7c6fab86d13eae97c8342d07d70f52e598fbf49af9", + "matches": true + } + ], + "limitation": "Ordering body equality alone does not establish boundary evidence applicability; new relationship restore/schema and path/arrival dependencies need specific checks. Existing six spec pins bind older Runtime; latest integration cannot satisfy a checker that unconditionally equates all current sources to old pins. No spec, checker, policy or acceptance change made by Root.", + "formal_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/REPAIR4_PRESERVED_WORK.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/REPAIR4_PRESERVED_WORK.json new file mode 100644 index 0000000..2478c8b --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/REPAIR4_PRESERVED_WORK.json @@ -0,0 +1,45 @@ +{ + "head": "9767b0a28ca8d252520307dbbac60a1d8cfb87ab", + "actual_provider_run": "bd5c307f8ca4419f8e699649c38fa981", + "exit_code": 124, + "configured_llm_timeout_seconds": 900, + "repairs": 4, + "max_repair_attempts": null, + "checkpoint_sha256": "dc51b3519671d6b8cde774ada767af620ff6f4d2c698c779468e5f2de9377d7d", + "all_original_working_files_retained": true, + "source": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p04-01/P04-01-implement", + "files": [ + { + "path": "docs/plans/original-completion-2026-10-02/execution/p04-01/CHECKER_PROTOCOL.md", + "sha256": "39cba3ee0b9da36c27091ef36087ddaf35dbce7ac768cd8589d5fcba30069e28", + "bytes": 8350 + }, + { + "path": "docs/plans/original-completion-2026-10-02/execution/p04-01/EVIDENCE_COLLECTION.md", + "sha256": "3473599f9534ead612e8c384cdbeb1183a19873b70f1baa9fbc489c27b5e42fe", + "bytes": 10445 + }, + { + "path": "docs/plans/original-completion-2026-10-02/execution/p04-01/checker_applicability_fixtures.py", + "sha256": "7a56baa03fe013e4b6065c25d1e26fe7a68927a0cc70d3dd793dd8687e0a2fa6", + "bytes": 4132 + }, + { + "path": "docs/plans/original-completion-2026-10-02/execution/p04-01/checker_negative_fixtures.py", + "sha256": "a282af9b1e0a14f665f4c296fbce305346d4e0ade82071b532622b178332660f", + "bytes": 10921 + }, + { + "path": "docs/plans/original-completion-2026-10-02/execution/p04-01/repair4-context.json", + "sha256": "a9ad741e58866222df441b3617b1a15bae0be81ffe48372ba62044cfd6c948f6", + "bytes": 2190 + }, + { + "path": "tools/check_p04_order_evidence.py", + "sha256": "2547687052b442ad1e2c373c22ff5c5019801ab0f387ef5fedf4fd532734dcb5", + "bytes": 26190 + } + ], + "scope": "Unsubmitted incomplete repair4, not an accepted implementation. Actual provider output also declared unfinished C/D/E; timeout is not treated as the only cause.", + "formal_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/REPAIR4_PRESERVED_WORK.tar.gz b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/REPAIR4_PRESERVED_WORK.tar.gz new file mode 100644 index 0000000..87d6de6 Binary files /dev/null and b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/REPAIR4_PRESERVED_WORK.tar.gz differ diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_9767B0A_CHECKER_FIXTURES.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_9767B0A_CHECKER_FIXTURES.json new file mode 100644 index 0000000..fc3693d --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_9767B0A_CHECKER_FIXTURES.json @@ -0,0 +1,7 @@ +{ + "candidate": "9767b0a28ca8d252520307dbbac60a1d8cfb87ab", + "exit_code": 0, + "working_source_status_unchanged": true, + "scope": "Root independently executed submitted synthetic checker positive/negative fixtures only; no engine acceptance", + "formal_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_9767B0A_CHECKER_FIXTURES.stderr b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_9767B0A_CHECKER_FIXTURES.stderr new file mode 100644 index 0000000..e69de29 diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_9767B0A_CHECKER_FIXTURES.stdout b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_9767B0A_CHECKER_FIXTURES.stdout new file mode 100644 index 0000000..53cd819 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_9767B0A_CHECKER_FIXTURES.stdout @@ -0,0 +1,115 @@ +{ + "scope": "Synthetic checker checks only; no engine evidence or formal acceptance", + "py_compile": true, + "results": [ + { + "fixture": "synthetic_control", + "exit_code": 0, + "result": { + "task_id": "P04-01", + "machine_verified": true, + "formal_acceptance": false + } + }, + { + "fixture": "missing_index", + "exit_code": 1, + "result": { + "task_id": "P04-01", + "machine_verified": false, + "formal_acceptance": false, + "error": "missing/outside file: index.json" + } + }, + { + "fixture": "duplicate_key", + "exit_code": 1, + "result": { + "task_id": "P04-01", + "machine_verified": false, + "formal_acceptance": false, + "error": "duplicate JSON key: schema_version" + } + }, + { + "fixture": "symlink", + "exit_code": 1, + "result": { + "task_id": "P04-01", + "machine_verified": false, + "formal_acceptance": false, + "error": "symlink: stdout.json" + } + }, + { + "fixture": "hash_mismatch", + "exit_code": 1, + "result": { + "task_id": "P04-01", + "machine_verified": false, + "formal_acceptance": false, + "error": "artifact hash: stdout" + } + }, + { + "fixture": "stale_pin", + "exit_code": 1, + "result": { + "task_id": "P04-01", + "machine_verified": false, + "formal_acceptance": false, + "error": "stale pin: autoload/simulation_runtime.gd" + } + }, + { + "fixture": "unexecuted_receipt", + "exit_code": 1, + "result": { + "task_id": "P04-01", + "machine_verified": false, + "formal_acceptance": false, + "error": "unexecuted/incomplete receipt" + } + }, + { + "fixture": "pending_authority", + "exit_code": 1, + "result": { + "task_id": "P04-01", + "machine_verified": false, + "formal_acceptance": false, + "error": "pending/missing authority" + } + }, + { + "fixture": "missing_condition", + "exit_code": 1, + "result": { + "task_id": "P04-01", + "machine_verified": false, + "formal_acceptance": false, + "error": "mandatory conditions missing/unknown" + } + }, + { + "fixture": "unsupported_reach_false", + "exit_code": 1, + "result": { + "task_id": "P04-01", + "machine_verified": false, + "formal_acceptance": false, + "error": "unsupported reach=false: transport" + } + }, + { + "fixture": "owner_hash_mismatch", + "exit_code": 1, + "result": { + "task_id": "P04-01", + "machine_verified": false, + "formal_acceptance": false, + "error": "owner approval hash mismatch" + } + } + ] +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_FORMAL_ADMISSION.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_FORMAL_ADMISSION.json new file mode 100644 index 0000000..c66a8ca --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_FORMAL_ADMISSION.json @@ -0,0 +1,13 @@ +{ + "scope": "Root public formal SaveService Writer and distinct-PID Reader; same typed native states, no product edit", + "production_commit": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "input_manifest_sha256": "30c9c6354e0614816d31d38569bd64b0a3ff605dc0d65fed2ba2f05164f3ec12", + "probe_sha256": "4c56ff05b1bcf8775bb526a30ed021a4a2630ea4f360a5075f880806b052e6d1", + "wrapper_sha256": "9a0ac985abc20ce8a9a1028448f6e2d839983ca5f41b0a2ce1969c0dd1ea0c6f", + "required_free": 1567661072, + "free_before": 1786761216, + "estimated_seconds": 90, + "functional_watchdog_seconds": 1200, + "earlier_preparation_waited_for_verified_cold_offload": true, + "formal_original_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_FORMAL_INPUT.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_FORMAL_INPUT.json new file mode 100644 index 0000000..e5b0047 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_FORMAL_INPUT.json @@ -0,0 +1,34 @@ +{ + "source_native": "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01", + "execution_sha256": "3883e5784ee4d16754a175a5b7183bdb3608ffae02ce7c4e25a191182270610b", + "source_refs": 1338, + "whole_typed_inputs": { + "before": { + "path": "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-before.var", + "bytes": 421992, + "sha256": "43f0c3aeffa2fa99c91c9e0f721427414da34bb3d6830795bf2f2affe0df2f26" + }, + "midnight": { + "path": "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-midnight.var", + "bytes": 439284, + "sha256": "bbfe9dd65800f6d15c9d364126c58fc25a9bb0d263e42fbe74e1d51293421ca7" + }, + "paused": { + "path": "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-paused.var", + "bytes": 439256, + "sha256": "56b4c20cf6dc8a98754ef32111c0e0d4e8ed39c6575122d3817eacfb5198b7e4" + }, + "after": { + "path": "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-after.var", + "bytes": 439904, + "sha256": "90bc58650c7ae5958016e5507cf36d42a419cf3ad0a7901614efb1448aa0a5b5" + }, + "next": { + "path": "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-next.var", + "bytes": 434572, + "sha256": "045a69ebb2d41b4fce953379e5561dd83a204cfcc4e129d48e6f330247c7f3f2" + } + }, + "kitchen_id": "facility_00000003", + "original_price": 25 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_FORMAL_RESULT.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_FORMAL_RESULT.json new file mode 100644 index 0000000..12ea284 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_FORMAL_RESULT.json @@ -0,0 +1,246 @@ +{ + "plan_id": "P04-01", + "production_commit": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "scope": "Exact finite approved dependency pause/resume across midnight via public SaveService Writer and distinct-PID Reader; not whole-unit acceptance", + "proof": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01", + "pids": [ + 3770, + 3818, + 3854, + 3879 + ], + "writer_pid": 3854, + "reader_pid": 3879, + "all_owned_ended": true, + "formal_original_packages_unchanged": true, + "five_formal_slots": true, + "all_20_original_and_20_copied_members_sha_match": true, + "typed_outputs_14_sha_match_original_native": [ + { + "output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01/restart-evidence/writer-before-persisted.var", + "sha256": "43f0c3aeffa2fa99c91c9e0f721427414da34bb3d6830795bf2f2affe0df2f26", + "original": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-before.var" + }, + { + "output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01/restart-evidence/reader-before-loaded.var", + "sha256": "43f0c3aeffa2fa99c91c9e0f721427414da34bb3d6830795bf2f2affe0df2f26", + "original": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-before.var" + }, + { + "output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01/restart-evidence/writer-midnight-persisted.var", + "sha256": "bbfe9dd65800f6d15c9d364126c58fc25a9bb0d263e42fbe74e1d51293421ca7", + "original": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-midnight.var" + }, + { + "output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01/restart-evidence/reader-midnight-loaded.var", + "sha256": "bbfe9dd65800f6d15c9d364126c58fc25a9bb0d263e42fbe74e1d51293421ca7", + "original": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-midnight.var" + }, + { + "output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01/restart-evidence/reader-replayed-midnight.var", + "sha256": "bbfe9dd65800f6d15c9d364126c58fc25a9bb0d263e42fbe74e1d51293421ca7", + "original": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-midnight.var" + }, + { + "output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01/restart-evidence/writer-paused-persisted.var", + "sha256": "56b4c20cf6dc8a98754ef32111c0e0d4e8ed39c6575122d3817eacfb5198b7e4", + "original": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-paused.var" + }, + { + "output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01/restart-evidence/reader-paused-loaded.var", + "sha256": "56b4c20cf6dc8a98754ef32111c0e0d4e8ed39c6575122d3817eacfb5198b7e4", + "original": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-paused.var" + }, + { + "output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01/restart-evidence/reader-replayed-paused.var", + "sha256": "56b4c20cf6dc8a98754ef32111c0e0d4e8ed39c6575122d3817eacfb5198b7e4", + "original": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-paused.var" + }, + { + "output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01/restart-evidence/writer-after-persisted.var", + "sha256": "90bc58650c7ae5958016e5507cf36d42a419cf3ad0a7901614efb1448aa0a5b5", + "original": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-after.var" + }, + { + "output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01/restart-evidence/reader-after-loaded.var", + "sha256": "90bc58650c7ae5958016e5507cf36d42a419cf3ad0a7901614efb1448aa0a5b5", + "original": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-after.var" + }, + { + "output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01/restart-evidence/reader-replayed-after.var", + "sha256": "90bc58650c7ae5958016e5507cf36d42a419cf3ad0a7901614efb1448aa0a5b5", + "original": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-after.var" + }, + { + "output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01/restart-evidence/writer-next-persisted.var", + "sha256": "045a69ebb2d41b4fce953379e5561dd83a204cfcc4e129d48e6f330247c7f3f2", + "original": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-next.var" + }, + { + "output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01/restart-evidence/reader-next-loaded.var", + "sha256": "045a69ebb2d41b4fce953379e5561dd83a204cfcc4e129d48e6f330247c7f3f2", + "original": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-next.var" + }, + { + "output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-formal-native-r01/restart-evidence/reader-replayed-next.var", + "sha256": "045a69ebb2d41b4fce953379e5561dd83a204cfcc4e129d48e6f330247c7f3f2", + "original": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01/order-evidence/midnight-next.var" + } + ], + "formal_member_pins": [ + { + "point": "before", + "member": "journal.log", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/before/journal.log", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/before/journal.log", + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + { + "point": "before", + "member": "manifest.json", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/before/manifest.json", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/before/manifest.json", + "sha256": "4544e2eec7c160ae5a5357a5b3e28ac70cd005cbe7bca6cca36750ebb5db5d40" + }, + { + "point": "before", + "member": "thumbnail.png", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/before/thumbnail.png", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/before/thumbnail.png", + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + { + "point": "before", + "member": "world.bin", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/before/world.bin", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/before/world.bin", + "sha256": "02112fdf59864c06ba1b9be0434377e95c42d995630a8003d9291b1b850ab716" + }, + { + "point": "midnight", + "member": "journal.log", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/midnight/journal.log", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/midnight/journal.log", + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + { + "point": "midnight", + "member": "manifest.json", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/midnight/manifest.json", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/midnight/manifest.json", + "sha256": "155457444c3b9af907675d2ec9cde718d4f8811f506e4ffd04b212c986873239" + }, + { + "point": "midnight", + "member": "thumbnail.png", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/midnight/thumbnail.png", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/midnight/thumbnail.png", + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + { + "point": "midnight", + "member": "world.bin", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/midnight/world.bin", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/midnight/world.bin", + "sha256": "d554c9cad2acdd74ea41f5a0f7b46daa9cb2477b2cc149468eab9b7ca95bfc6e" + }, + { + "point": "paused", + "member": "journal.log", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/paused/journal.log", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/paused/journal.log", + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + { + "point": "paused", + "member": "manifest.json", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/paused/manifest.json", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/paused/manifest.json", + "sha256": "c47cd7efa8cc5a91d73980ad848f092bb388c9e53e8d3c8a8e4911c6f202aaa7" + }, + { + "point": "paused", + "member": "thumbnail.png", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/paused/thumbnail.png", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/paused/thumbnail.png", + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + { + "point": "paused", + "member": "world.bin", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/paused/world.bin", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/paused/world.bin", + "sha256": "3ddc6a1b3430895d874e50f5055ef407e403f24a640290d3e11c4d79503b8aba" + }, + { + "point": "after", + "member": "journal.log", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/after/journal.log", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/after/journal.log", + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + { + "point": "after", + "member": "manifest.json", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/after/manifest.json", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/after/manifest.json", + "sha256": "a324d97202de77a7e5b6f69ec7e6146eab6b358f9d897cbaec2b24c3e7be1104" + }, + { + "point": "after", + "member": "thumbnail.png", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/after/thumbnail.png", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/after/thumbnail.png", + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + { + "point": "after", + "member": "world.bin", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/after/world.bin", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/after/world.bin", + "sha256": "bc7a5536b3c486d88aa6e27e734fa0d71d7f2a982542ede8940a46f0c8cacfd4" + }, + { + "point": "next", + "member": "journal.log", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/next/journal.log", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/next/journal.log", + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + { + "point": "next", + "member": "manifest.json", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/next/manifest.json", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/next/manifest.json", + "sha256": "e0f3a89994c93009d9d5b9d54e6585179651c718dd1d00a2fa2572691bd0ce75" + }, + { + "point": "next", + "member": "thumbnail.png", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/next/thumbnail.png", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/next/thumbnail.png", + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + { + "point": "next", + "member": "world.bin", + "writer": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-59c42e5f49b44d90ba1db3de96f2ecd6-standard-runtime-writer/saves/p04_boundary/next/world.bin", + "reader": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-c091a018057f4ea99c7ecc052f8668e8-standard-runtime-reader/saves/p04_boundary/next/world.bin", + "sha256": "7121cab824b5a9cacff9ed7dbd0d09b111c77482d0dd2203c7c84d3bfe95f7f8" + } + ], + "reader_one_service_sale_at1442": true, + "source_default_player_doc4_unchanged": true, + "execution_sha256": "6d21b507ce5ad17963e00f05b92dd0c3b22aae837056d81e798ad54dc6517e23", + "writer_receipt_sha256": "794fbb2c7925e41ee752190e5c237896037e05461ae3031c44b40f28fefa6fec", + "reader_receipt_sha256": "26190cbe8690a4c03b43272abd599a6b62d4014010505836f6379d8d85b138bb", + "input_manifest_sha256": "30c9c6354e0614816d31d38569bd64b0a3ff605dc0d65fed2ba2f05164f3ec12", + "formal_original_credit": 0, + "independent_whole_review": "pending", + "remaining": [ + "nonzero payroll and other required boundary conditions", + "native ownership/raw ledger binding in checker", + "all seven-domain conditions and independent whole review", + "ordinary validate/integration/final" + ] +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_MIDNIGHT_ADMISSION.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_MIDNIGHT_ADMISSION.json new file mode 100644 index 0000000..6b13b09 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_MIDNIGHT_ADMISSION.json @@ -0,0 +1,26 @@ +{ + "plan_id": "P04-01", + "classification": "Root acceptance fixture only; product and existing tests unchanged; no formal unit credit", + "owner_approval_sha256": "4583ee9aad45c4db183d72df4420df48aa8e0897e3b5efda13016f0b5cdbd68e", + "source_files": 1338, + "production_commit": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "probe": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-prep-r01/approved-dependency-midnight.gd", + "sha256": "34bd60a147602cc8f07bc36d8948579518da678e55579281c413c6a3fafc7f51" + }, + "wrapper": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01.py", + "sha256": "afa37c3a3aa477de7e900c47f33d8720b087c9575b7a64b90bee21cd82e31a0a" + }, + "base_probe": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-01-midnight-boundary-r01.gd", + "sha256": "4f587cc90a3bbd310b53c6216e54cda1deacfa87fa4312411b41288e534de527" + }, + "source_map_sha256": "681413749d7121b5ec3fc9015299fef11c8695cbe067910a6a286bf0e3deda3c", + "free_before": 1731043328, + "required_free_bytes": 1567661072, + "functional_watchdog_seconds": 1200, + "estimated_native_seconds": 120, + "formal_save_distinct_pid": false, + "formal_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_MIDNIGHT_RESULT.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_MIDNIGHT_RESULT.json new file mode 100644 index 0000000..028d92e --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_MIDNIGHT_RESULT.json @@ -0,0 +1,107 @@ +{ + "plan_id": "P04-01", + "production_commit": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "scope": "Owner-approved dependency closure across real production midnight; same-process typed replay; original product definitions unchanged", + "proof": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-dependency-midnight-native-r01", + "observed": { + "minutes": [ + 1439, + 1440, + 1441, + 1442, + 1443 + ], + "elapsed_minutes": [ + 44, + 44, + 44, + 45, + 45 + ], + "wallets": [ + 50, + 50, + 50, + 25, + 25 + ], + "same_service_id": "service_00000001", + "same_reservation_ids": [ + "reservation_00000001" + ], + "service_states": [ + "ACTIVE", + "PAUSED", + "PAUSED", + "COMPLETED", + "COMPLETED" + ], + "payment_transaction": "ledger_00000081", + "sale_minute": 1442, + "sale_amount": 25, + "daily_close_minute": 1440, + "daily_maintenance": 4, + "daily_wages": 0, + "all_receipts_exact_replay": true, + "all_typed_snapshots_exact_replay": true + }, + "pids": [ + 91726, + 91779, + 91817 + ], + "all_owned_ended": true, + "all_source_unchanged": true, + "default_player_unchanged": true, + "checks": 69, + "failures": 0, + "proof_pins": { + "cache-reuse.json": "13edfbeb3cf3fb1b97a36b39893d67bc64d3245e18c5ec7c61e3cae893977ec6", + "contracts.json": "43d51544ab1c738ab168be7d24f211f5c7bf2ae190605f68e567f2ea17fde5c4", + "execution.json": "3883e5784ee4d16754a175a5b7183bdb3608ffae02ce7c4e25a191182270610b", + "import-actual-phase.json": "790e8332d61d5c3cdc8a7bfc1ef2ddb9cbad713ec8dc173890a32e6b3c23fcaa", + "import-receipt.json": "790e8332d61d5c3cdc8a7bfc1ef2ddb9cbad713ec8dc173890a32e6b3c23fcaa", + "import-startup-profile-before.json": "661c3b0a6c98c6147a7181f1a2de0aff731bfe6f71ac446a2844bbc73d6a95f1", + "order-evidence/midnight-after.json": "6c215cb168a18d1f46d08b629f03d3ba6bf82194ff3a9e87ee619b13e6d357e1", + "order-evidence/midnight-after.var": "90bc58650c7ae5958016e5507cf36d42a419cf3ad0a7901614efb1448aa0a5b5", + "order-evidence/midnight-before.json": "d03285ae31b645e77dc0d27247b4d03b4150ebae3878614bf738562a65eed50f", + "order-evidence/midnight-before.var": "43f0c3aeffa2fa99c91c9e0f721427414da34bb3d6830795bf2f2affe0df2f26", + "order-evidence/midnight-first-closed-before-23-59.json": "d03285ae31b645e77dc0d27247b4d03b4150ebae3878614bf738562a65eed50f", + "order-evidence/midnight-first-closed-before-23-59.var": "43f0c3aeffa2fa99c91c9e0f721427414da34bb3d6830795bf2f2affe0df2f26", + "order-evidence/midnight-first-paused-00-00.json": "b104a76855b56b84a50b4432d5e3eea161b1bdc04e7706aa33c66e2950063295", + "order-evidence/midnight-first-paused-00-00.var": "bbfe9dd65800f6d15c9d364126c58fc25a9bb0d263e42fbe74e1d51293421ca7", + "order-evidence/midnight-first-paused-00-01.json": "43e75dbc37137caacc55cf82a46d0baba734a5321d8fa7aab4b15b5a5ebf17b6", + "order-evidence/midnight-first-paused-00-01.var": "56b4c20cf6dc8a98754ef32111c0e0d4e8ed39c6575122d3817eacfb5198b7e4", + "order-evidence/midnight-first-resumed-complete-00-02.json": "6c215cb168a18d1f46d08b629f03d3ba6bf82194ff3a9e87ee619b13e6d357e1", + "order-evidence/midnight-first-resumed-complete-00-02.var": "90bc58650c7ae5958016e5507cf36d42a419cf3ad0a7901614efb1448aa0a5b5", + "order-evidence/midnight-first-stable-00-03.json": "a9e34a798b2574610434a24fb6b5beed5f0103118dc47d1cb4d779d905acd6e7", + "order-evidence/midnight-first-stable-00-03.var": "045a69ebb2d41b4fce953379e5561dd83a204cfcc4e129d48e6f330247c7f3f2", + "order-evidence/midnight-midnight.json": "b104a76855b56b84a50b4432d5e3eea161b1bdc04e7706aa33c66e2950063295", + "order-evidence/midnight-midnight.var": "bbfe9dd65800f6d15c9d364126c58fc25a9bb0d263e42fbe74e1d51293421ca7", + "order-evidence/midnight-next.json": "a9e34a798b2574610434a24fb6b5beed5f0103118dc47d1cb4d779d905acd6e7", + "order-evidence/midnight-next.var": "045a69ebb2d41b4fce953379e5561dd83a204cfcc4e129d48e6f330247c7f3f2", + "order-evidence/midnight-paused.json": "43e75dbc37137caacc55cf82a46d0baba734a5321d8fa7aab4b15b5a5ebf17b6", + "order-evidence/midnight-paused.var": "56b4c20cf6dc8a98754ef32111c0e0d4e8ed39c6575122d3817eacfb5198b7e4", + "order-evidence/observations.json": "9d4dc8ead56e331d916cb4b0a86f172ea960a8cfbb093f9b551bd2ec0d7119cb", + "parse-actual-phase.json": "2cf9cfe30b8e55cf73bc7429d47c4b9f82a739ada7387ba9c4c3a65627674b5d", + "parse-paths.json": "71bb5a9d7abd7127f0a18c74da1d02ca1186f6330b71a22906245c1578cc01c9", + "parse-profile.json": "772f3e2511218e0b75abe6423cbaa5c9af0ea8f9be3df6d935193b1437ceb7d7", + "parse-receipt.json": "2cf9cfe30b8e55cf73bc7429d47c4b9f82a739ada7387ba9c4c3a65627674b5d", + "parse-startup-profile-before.json": "7f9fc3a0f0a166cb919059fff5b7d7f75b4e191d99756472e6e51f28b3d84b71", + "repro-actual-phase.json": "198adf2aa7c1b736f6d3f874468d454091e80b6f5ac8086d6310753120635b9a", + "repro-profile.json": "f476860466b591061c2b5bb34ccd3f1eb2bf8e20753e7e8066491c5987a7324b", + "repro-receipt.json": "198adf2aa7c1b736f6d3f874468d454091e80b6f5ac8086d6310753120635b9a", + "repro-startup-profile-before.json": "7edacbc96db64dedce498c0b39660f3f700e7b0b9c9420a0b1ad205cd2adce7f", + "runner-input.json": "c8db70b5fd42aee1e4cc63091569328c369ec0cf17fbade20a6d607006b222fb", + "tests__s3__test_runtime_staff_assignment.gd.log": "ccd2372ca79a263c15cfc6312a97bc8ffb2c0fc57a8129b3447236e418efe70d" + }, + "formal_original_credit": 0, + "independent_whole_review": "pending", + "not_proven": [ + "formal SaveService and distinct-PID restoration", + "nonzero wage/day boundary", + "command resend idempotency", + "whole seven-domain acceptance/integration/final", + "Windows" + ] +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_SHIFT_CURRENT_ADMISSION.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_SHIFT_CURRENT_ADMISSION.json new file mode 100644 index 0000000..e04e6b4 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_SHIFT_CURRENT_ADMISSION.json @@ -0,0 +1,10 @@ +{ + "production_commit": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "input_preparation_sha256": "50762290e7d4410d055fad68ec37706cf68cf20d6a2e4bf9aa146c6d855f4419", + "source_map_sha256": "681413749d7121b5ec3fc9015299fef11c8695cbe067910a6a286bf0e3deda3c", + "free_before": 1777139712, + "required_free_bytes": 1567661072, + "native_phases": 3, + "whole_regression": false, + "original_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_SHIFT_CURRENT_RESULT.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_SHIFT_CURRENT_RESULT.json new file mode 100644 index 0000000..17d21f0 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_APPROVED_SHIFT_CURRENT_RESULT.json @@ -0,0 +1,55 @@ +{ + "plan_id": "P04-01", + "production_commit": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "scope": "Fresh finite approved 18:00 completion-before-handover observation; same-process exact snapshot replay only, not command idempotency or formal SaveService/Reader acceptance", + "proof": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p04-approved-shift-current-native-r01", + "observed": { + "before_minute": 1079, + "before_elapsed": 44, + "duration_minutes": 45, + "completion_minute": 1080, + "wallet_before": 50, + "wallet_after": 25, + "payment_transaction_ids": [ + "ledger_00000006" + ], + "ledger_rows": 2, + "service_sale_rows": 1, + "staff_at_payment": [ + "p04.order.server.a", + "p04.order.server.b" + ], + "staff_after_handover": [], + "own_reserved_meal_consumed": true, + "no_extra_payment_at_1081": true, + "snapshot_replay_exact": true + }, + "pids": [ + 77462, + 77504, + 77536 + ], + "all_owned_ended": true, + "parse_paths": 316, + "source_files": 1338, + "proof_pins": { + "runner-input.json": "7e39c7fd6241dc424b3119fba4ecfad1ec3dfbe274a3ed486d1b25ef88211d5b", + "execution.json": "773e988558328d56c09ca24e414b2c04e675e24935dec662fa79ab1772296230", + "import-actual-phase.json": "7879ea41ba2c655e6160462e6c575f86b3314a0ae3413daf7f08dc1da94840cc", + "parse-actual-phase.json": "e4af6d63136fbb7c4dd6619de28a2f61584415d9b870d923d0d3d895d3129c41", + "repro-actual-phase.json": "40f3f858b75105583a795fd93bf7c634586f283716ffc525e9453ac30d45e919", + "order-evidence/observations.json": "3313b14812e8263fb92ba0399a1ce4f2cccfcc5bd97b1e7d248bcb46bd5305b6", + "order-evidence/before.var": "e5c1ca9d5f933c5e69ab350d75b3fdf919f9a0ebb55d350d27bad2dbb79ba229", + "order-evidence/after.var": "a85acb6b025fc510fa71891a0bf32b8f9724056877d510db34d88123d7ef8fb9", + "order-evidence/next.var": "55fab983f888b3c6a7919ba5bb8d149fec8dce0a291df891265b73cc57a25e30" + }, + "formal_original_credit": 0, + "independent_whole_review": "pending", + "remaining": [ + "dependency pause/resume including midnight", + "nonzero payroll/duty and settlement safety", + "formal save/distinct PID restore", + "remaining seven-domain source/proof applicability and all mandatory boundaries", + "final checker completion, independent whole review, normal validation/integration/final" + ] +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_NO_DUPLICATE_PROBE_DISPATCH.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_NO_DUPLICATE_PROBE_DISPATCH.json new file mode 100644 index 0000000..097cb43 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_NO_DUPLICATE_PROBE_DISPATCH.json @@ -0,0 +1,7 @@ +{ + "action": "No dispatch of duplicate probe creation", + "actual_commander": "OPUS_NATIVE_FIRST_AND_LIMITS_DECISION.json", + "reason": "Root independently prepared guarded acceptance fixture while commander was reading; same dependency-midnight scenario is already executing on current main. Preserve worker edits and counters; feed actual raw to commander for checker-only continuation.", + "worker_run_started": false, + "formal_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_REPAIR5_ACTUAL_START.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_REPAIR5_ACTUAL_START.json new file mode 100644 index 0000000..64c90c8 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_REPAIR5_ACTUAL_START.json @@ -0,0 +1,30 @@ +{ + "actual_task": { + "id": "P04-01", + "state": "implementing", + "repairs": 5, + "submitted": "9767b0a28ca8d252520307dbbac60a1d8cfb87ab" + }, + "actual_run": { + "id": "cb864ee199f346408370f8944e574eb7", + "role": "implementer", + "service": "codex", + "status": "running", + "pid": 6886, + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p04-01/runs/cb864ee199f346408370f8944e574eb7" + }, + "codex_model": "gpt-6-astra", + "model_authority": "OPUS_REPAIR5_C_RUN_DECISION.json", + "budget_event": { + "previous": 900, + "effective": null, + "authority": "個別上限を全て撤廃して、勝手に作業停止することを避けて", + "commander": "OPUS_NATIVE_FIRST_AND_LIMITS_DECISION.json", + "scope": "the-tree-p04-01/P04-01 implementer codex only; dedicated serial CLI", + "registered_config_unchanged": true, + "test_timeouts_unchanged": true + }, + "scope": "C raw binding and relevant adversarial Python fixtures; no duplicate probes or native engine", + "worker_output": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p04-01/.runtime/coordinator-repair5-c/worker-output.json", + "formal_original_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_REPAIR5_APPROVAL_CONTEXT_ADDENDUM.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_REPAIR5_APPROVAL_CONTEXT_ADDENDUM.json new file mode 100644 index 0000000..639bbd7 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_REPAIR5_APPROVAL_CONTEXT_ADDENDUM.json @@ -0,0 +1,17 @@ +{ + "scope": "Exact owner decision and frozen-register supplement; no new policy choice", + "files": [ + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/D05_OWNER_APPROVAL.json", + "target": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p04-01/.runtime/P04-01/build/audit-support/native-first-current/D05_OWNER_APPROVAL.json", + "sha256": "4583ee9aad45c4db183d72df4420df48aa8e0897e3b5efda13016f0b5cdbd68e", + "bytes": 2073 + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/D05_APPROVED_DECISION_SUPPLEMENT.json", + "target": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p04-01/.runtime/P04-01/build/audit-support/native-first-current/D05_APPROVED_DECISION_SUPPLEMENT.json", + "sha256": "956d77b1f8f16946970352fc1393c9df902342652dd266f0d35d3d7575eae533", + "bytes": 1328 + } + ] +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_REPAIR5_CONTEXT_RELOCATION.json b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_REPAIR5_CONTEXT_RELOCATION.json new file mode 100644 index 0000000..0a163e8 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/ROOT_REPAIR5_CONTEXT_RELOCATION.json @@ -0,0 +1,1090 @@ +{ + "source": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p04-01/P04-01-implement/.review-material/native-first-current", + "target": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p04-01/.runtime/P04-01/build/audit-support/native-first-current", + "files": 270, + "bytes": 23426716, + "all_content_pins": { + "RUNTIME_TIMEOUT_PROPOSAL_NOT_INSTALLED.py": { + "bytes": 1089, + "sha256": "9245806324b81fa525ea22a25d0ac4c1f64d7719aa158d5bd14955a5dd20f0b3" + }, + "approved-dependency-midnight.gd": { + "bytes": 13957, + "sha256": "34bd60a147602cc8f07bc36d8948579518da678e55579281c413c6a3fafc7f51" + }, + "ROOT_APPROVED_DEPENDENCY_MIDNIGHT_RESULT.json": { + "bytes": 5780, + "sha256": "1ce56189663b0b6f24177ff10dfc17e492683121d9af50ee610bf0d483ed9870" + }, + "SOURCE_MANIFEST.json": { + "bytes": 28515, + "sha256": "381b439fb1d4ee5f30e21243b03ad755c3ab654a9e414af5648004054d67b5f4" + }, + "REPAIR4_PRESERVED_WORK.json": { + "bytes": 1935, + "sha256": "14a87b19aaea58a5e46a5b58a3a3afbe7c609aee3f382615929c26edfd9ed0fe" + }, + "actual-native-wrapper.py": { + "bytes": 6523, + "sha256": "1d158e50dbb8f040b7b5b3a4d2afe8122e96a1a7fbe137167d039058e1a62c3d" + }, + "ACTUAL_RUNNER_PROCESS_REFERENCE.txt": { + "bytes": 5476, + "sha256": "d7a72a6fe81506f6c2459f2a829fcdd28b5041df7be4800031c276f80a09a499" + }, + "ORIGINAL_88_CURRENT_SCOREBOARD.json": { + "bytes": 75812, + "sha256": "b4874d222442b508161893e4bff0424448b13d3a152b86065f65b4226aeb58fb" + }, + "ROOT_APPROVED_DEPENDENCY_FORMAL_RESULT.json": { + "bytes": 18996, + "sha256": "78eb9a5cdb810633dd3892a99e139b8f23eeec20d8ce7f1c011890409166b914" + }, + "dependency-formal-wrapper.py": { + "bytes": 7751, + "sha256": "9a0ac985abc20ce8a9a1028448f6e2d839983ca5f41b0a2ce1969c0dd1ea0c6f" + }, + "OWNERSHIP_RAW_PROVENANCE.json": { + "bytes": 39367, + "sha256": "51d746879b4197445a09cd44a88dd918c365fa98025d9cd652a740cee09a9040" + }, + "ROOT_APPROVED_SHIFT_CURRENT_RESULT.json": { + "bytes": 2414, + "sha256": "24843a41dfc26e844a909a50843799c0bf0b55edccae2f49bb19ea19f86c1173" + }, + "approved-dependency-formal.gd": { + "bytes": 7667, + "sha256": "4c56ff05b1bcf8775bb526a30ed021a4a2630ea4f360a5075f880806b052e6d1" + }, + "approved-shift.gd": { + "bytes": 10396, + "sha256": "a506f6d67e0575aece1deb2ead35fc27b0b7f524bbfe15e0350a60cc19750b5d" + }, + "POST_P18_CURRENT_SOURCE_APPLICABILITY.json": { + "bytes": 9111, + "sha256": "ecb92215b7bfb4368ddeb6d44dcd467d13e97d677ca2f29df3ab9684f6c757c7" + }, + "ACTUAL_CONFIG_POLICY_ONLY.json": { + "bytes": 444, + "sha256": "49b9c7614e33c9a69078bb554707a3767686ffe0a04ed55c60ce9806deb83f9f" + }, + "dependency-midnight-native/parse-startup-profile-before.json": { + "bytes": 204, + "sha256": "7f9fc3a0f0a166cb919059fff5b7d7f75b4e191d99756472e6e51f28b3d84b71" + }, + "dependency-midnight-native/parse-actual-phase.json": { + "bytes": 13129, + "sha256": "2cf9cfe30b8e55cf73bc7429d47c4b9f82a739ada7387ba9c4c3a65627674b5d" + }, + "dependency-midnight-native/tests__s3__test_runtime_staff_assignment.gd.log": { + "bytes": 12076, + "sha256": "ccd2372ca79a263c15cfc6312a97bc8ffb2c0fc57a8129b3447236e418efe70d" + }, + "dependency-midnight-native/repro-actual-phase.json": { + "bytes": 14113, + "sha256": "198adf2aa7c1b736f6d3f874468d454091e80b6f5ac8086d6310753120635b9a" + }, + "dependency-midnight-native/parse-profile.json": { + "bytes": 952, + "sha256": "772f3e2511218e0b75abe6423cbaa5c9af0ea8f9be3df6d935193b1437ceb7d7" + }, + "dependency-midnight-native/parse-receipt.json": { + "bytes": 13129, + "sha256": "2cf9cfe30b8e55cf73bc7429d47c4b9f82a739ada7387ba9c4c3a65627674b5d" + }, + "dependency-midnight-native/cache-reuse.json": { + "bytes": 109460, + "sha256": "13edfbeb3cf3fb1b97a36b39893d67bc64d3245e18c5ec7c61e3cae893977ec6" + }, + "dependency-midnight-native/import-startup-profile-before.json": { + "bytes": 205, + "sha256": "661c3b0a6c98c6147a7181f1a2de0aff731bfe6f71ac446a2844bbc73d6a95f1" + }, + "dependency-midnight-native/repro-startup-profile-before.json": { + "bytes": 204, + "sha256": "7edacbc96db64dedce498c0b39660f3f700e7b0b9c9420a0b1ad205cd2adce7f" + }, + "dependency-midnight-native/contracts.json": { + "bytes": 185127, + "sha256": "43d51544ab1c738ab168be7d24f211f5c7bf2ae190605f68e567f2ea17fde5c4" + }, + "dependency-midnight-native/parse-paths.json": { + "bytes": 15663, + "sha256": "71bb5a9d7abd7127f0a18c74da1d02ca1186f6330b71a22906245c1578cc01c9" + }, + "dependency-midnight-native/repro-receipt.json": { + "bytes": 14113, + "sha256": "198adf2aa7c1b736f6d3f874468d454091e80b6f5ac8086d6310753120635b9a" + }, + "dependency-midnight-native/repro-profile.json": { + "bytes": 952, + "sha256": "f476860466b591061c2b5bb34ccd3f1eb2bf8e20753e7e8066491c5987a7324b" + }, + "dependency-midnight-native/runner-input.json": { + "bytes": 706188, + "sha256": "c8db70b5fd42aee1e4cc63091569328c369ec0cf17fbade20a6d607006b222fb" + }, + "dependency-midnight-native/import-receipt.json": { + "bytes": 9811, + "sha256": "790e8332d61d5c3cdc8a7bfc1ef2ddb9cbad713ec8dc173890a32e6b3c23fcaa" + }, + "dependency-midnight-native/execution.json": { + "bytes": 42941, + "sha256": "3883e5784ee4d16754a175a5b7183bdb3608ffae02ce7c4e25a191182270610b" + }, + "dependency-midnight-native/import-actual-phase.json": { + "bytes": 9811, + "sha256": "790e8332d61d5c3cdc8a7bfc1ef2ddb9cbad713ec8dc173890a32e6b3c23fcaa" + }, + "dependency-formal-native/reader-receipt.json": { + "bytes": 20696, + "sha256": "0f544f3fe6ffc18b56750fa578bc5b3de03818eb8e1b3c7701d022caaccdbf23" + }, + "dependency-formal-native/reader-profile.json": { + "bytes": 957, + "sha256": "00a0a337dda3c4422e7abecb96547111c29b51c32d96f18fbbf93ff89d0a0d22" + }, + "dependency-formal-native/reader-actual-phase.json": { + "bytes": 20696, + "sha256": "0f544f3fe6ffc18b56750fa578bc5b3de03818eb8e1b3c7701d022caaccdbf23" + }, + "dependency-formal-native/parse-startup-profile-before.json": { + "bytes": 204, + "sha256": "3fd6f1a7e429e51340004c3c6d73b794064a6107bc672f186ab4722300d91576" + }, + "dependency-formal-native/parse-actual-phase.json": { + "bytes": 13069, + "sha256": "6801ff26a9ea9556a1273c0cdaab7be1e0be3bf991094fa76c0d82f35839187b" + }, + "dependency-formal-native/tests__s3__test_runtime_staff_assignment.gd.log": { + "bytes": 7897, + "sha256": "7b6a8db10117687f8e7892eacf143293e6890eac9fad4e3c1d1e56a6aa7524a6" + }, + "dependency-formal-native/writer-profile.json": { + "bytes": 957, + "sha256": "653d05a4641355f7466c2e4d0de0593b2ca24bff2fa94d0c74117daf6938613e" + }, + "dependency-formal-native/parse-profile.json": { + "bytes": 952, + "sha256": "1ca78ca7c6fa60d344d2d350182fc50fe4c2a6bfb33baf7fef40607f44affce7" + }, + "dependency-formal-native/writer-receipt.json": { + "bytes": 20691, + "sha256": "2e0419003f6c1be53b7b78eb2d492c342a72b41d75783fce3481b0655a0aa6aa" + }, + "dependency-formal-native/parse-receipt.json": { + "bytes": 13069, + "sha256": "6801ff26a9ea9556a1273c0cdaab7be1e0be3bf991094fa76c0d82f35839187b" + }, + "dependency-formal-native/cache-reuse.json": { + "bytes": 109460, + "sha256": "13edfbeb3cf3fb1b97a36b39893d67bc64d3245e18c5ec7c61e3cae893977ec6" + }, + "dependency-formal-native/import-startup-profile-before.json": { + "bytes": 205, + "sha256": "a9406e8c1f80543c6fbb7bebe482ba7066f9b73ca4012932f01bb897e46e0b8e" + }, + "dependency-formal-native/reader-startup-profile-before.json": { + "bytes": 205, + "sha256": "4bea7f50e946ad76c6124d71bf08ffb8a7bb178a0ddcf8b84cfed63bfe73e33d" + }, + "dependency-formal-native/writer-startup-profile-before.json": { + "bytes": 205, + "sha256": "56f912a6c2d34e675debe719e04253d43872a833316de674790eb61c264940fa" + }, + "dependency-formal-native/writer-actual-phase.json": { + "bytes": 20691, + "sha256": "2e0419003f6c1be53b7b78eb2d492c342a72b41d75783fce3481b0655a0aa6aa" + }, + "dependency-formal-native/contracts.json": { + "bytes": 185124, + "sha256": "f554f67eaf68a49dff8ec04ae968493d6edcf2671558e12d92c66c39d9f61864" + }, + "dependency-formal-native/parse-paths.json": { + "bytes": 15663, + "sha256": "71bb5a9d7abd7127f0a18c74da1d02ca1186f6330b71a22906245c1578cc01c9" + }, + "dependency-formal-native/runner-input.json": { + "bytes": 708459, + "sha256": "cac1b52d699a0f667b2dd2a349be59149cc21f2e3cf533a74890853f940e8305" + }, + "dependency-formal-native/import-receipt.json": { + "bytes": 9768, + "sha256": "31343e97e68a22574151fb8f578bbe593b322f40b1ba35c017aef5b16bca66f7" + }, + "dependency-formal-native/execution.json": { + "bytes": 79236, + "sha256": "6d21b507ce5ad17963e00f05b92dd0c3b22aae837056d81e798ad54dc6517e23" + }, + "dependency-formal-native/import-actual-phase.json": { + "bytes": 9768, + "sha256": "31343e97e68a22574151fb8f578bbe593b322f40b1ba35c017aef5b16bca66f7" + }, + "actual-native/parse-startup-profile-before.json": { + "bytes": 204, + "sha256": "b109f705f88dec20e7ad2e4abbf31cb85ffb26db59b2c67c476323935733624a" + }, + "actual-native/parse-actual-phase.json": { + "bytes": 12985, + "sha256": "e4af6d63136fbb7c4dd6619de28a2f61584415d9b870d923d0d3d895d3129c41" + }, + "actual-native/tests__s3__test_runtime_staff_assignment.gd.log": { + "bytes": 11494, + "sha256": "1221f99ee655b9da702a7d987b2e557bae19ca8c2428623900d29845b40ca369" + }, + "actual-native/repro-actual-phase.json": { + "bytes": 13963, + "sha256": "40f3f858b75105583a795fd93bf7c634586f283716ffc525e9453ac30d45e919" + }, + "actual-native/parse-profile.json": { + "bytes": 952, + "sha256": "e934373327d73e777ed82ac804da94e57ad5adaa67ca0ecf4f89a0075d88bef1" + }, + "actual-native/parse-receipt.json": { + "bytes": 12985, + "sha256": "e4af6d63136fbb7c4dd6619de28a2f61584415d9b870d923d0d3d895d3129c41" + }, + "actual-native/cache-reuse.json": { + "bytes": 109460, + "sha256": "13edfbeb3cf3fb1b97a36b39893d67bc64d3245e18c5ec7c61e3cae893977ec6" + }, + "actual-native/import-startup-profile-before.json": { + "bytes": 205, + "sha256": "23268fdf2b4a0c93e1aab88ed730d5746d0a2e5aafcda6d5326262a612f4ea9d" + }, + "actual-native/repro-startup-profile-before.json": { + "bytes": 204, + "sha256": "cdb629947310e798422b53f58023ad4f14a76c958f7ca9f66f11b29727e3dd22" + }, + "actual-native/contracts.json": { + "bytes": 185124, + "sha256": "ab1334ef8628bb77e1352235874328ea2cf9ed6126ece862a8c73df561085e8e" + }, + "actual-native/parse-paths.json": { + "bytes": 15663, + "sha256": "71bb5a9d7abd7127f0a18c74da1d02ca1186f6330b71a22906245c1578cc01c9" + }, + "actual-native/repro-receipt.json": { + "bytes": 13963, + "sha256": "40f3f858b75105583a795fd93bf7c634586f283716ffc525e9453ac30d45e919" + }, + "actual-native/repro-profile.json": { + "bytes": 952, + "sha256": "5850e8818033916780ad35b82d3538418d585d5768bed35850add48b77485d3d" + }, + "actual-native/runner-input.json": { + "bytes": 706166, + "sha256": "7e39c7fd6241dc424b3119fba4ecfad1ec3dfbe274a3ed486d1b25ef88211d5b" + }, + "actual-native/import-receipt.json": { + "bytes": 9721, + "sha256": "7879ea41ba2c655e6160462e6c575f86b3314a0ae3413daf7f08dc1da94840cc" + }, + "actual-native/execution.json": { + "bytes": 42557, + "sha256": "773e988558328d56c09ca24e414b2c04e675e24935dec662fa79ab1772296230" + }, + "actual-native/import-actual-phase.json": { + "bytes": 9721, + "sha256": "7879ea41ba2c655e6160462e6c575f86b3314a0ae3413daf7f08dc1da94840cc" + }, + "dependency-midnight-native/bootstrap/profile_guard.gd": { + "bytes": 2276, + "sha256": "597696c705cc8f0e79a35265ca3ef8df55f7fc3c4e0e5a2ce9a4e20e29e29a6f" + }, + "dependency-midnight-native/bootstrap/parse_full_dependencies.gd": { + "bytes": 760, + "sha256": "585a0c1da5c050e3bebc5f66793a625419d2db27299f1131cf3a62ffd3236126" + }, + "dependency-midnight-native/order-evidence/midnight-after.var": { + "bytes": 439904, + "sha256": "90bc58650c7ae5958016e5507cf36d42a419cf3ad0a7901614efb1448aa0a5b5" + }, + "dependency-midnight-native/order-evidence/midnight-first-paused-00-00.json": { + "bytes": 422155, + "sha256": "b104a76855b56b84a50b4432d5e3eea161b1bdc04e7706aa33c66e2950063295" + }, + "dependency-midnight-native/order-evidence/midnight-before.var": { + "bytes": 421992, + "sha256": "43f0c3aeffa2fa99c91c9e0f721427414da34bb3d6830795bf2f2affe0df2f26" + }, + "dependency-midnight-native/order-evidence/midnight-before.json": { + "bytes": 405279, + "sha256": "d03285ae31b645e77dc0d27247b4d03b4150ebae3878614bf738562a65eed50f" + }, + "dependency-midnight-native/order-evidence/midnight-first-paused-00-01.json": { + "bytes": 422132, + "sha256": "43e75dbc37137caacc55cf82a46d0baba734a5321d8fa7aab4b15b5a5ebf17b6" + }, + "dependency-midnight-native/order-evidence/midnight-first-resumed-complete-00-02.json": { + "bytes": 422731, + "sha256": "6c215cb168a18d1f46d08b629f03d3ba6bf82194ff3a9e87ee619b13e6d357e1" + }, + "dependency-midnight-native/order-evidence/midnight-after.json": { + "bytes": 422731, + "sha256": "6c215cb168a18d1f46d08b629f03d3ba6bf82194ff3a9e87ee619b13e6d357e1" + }, + "dependency-midnight-native/order-evidence/midnight-next.json": { + "bytes": 417619, + "sha256": "a9e34a798b2574610434a24fb6b5beed5f0103118dc47d1cb4d779d905acd6e7" + }, + "dependency-midnight-native/order-evidence/midnight-midnight.json": { + "bytes": 422155, + "sha256": "b104a76855b56b84a50b4432d5e3eea161b1bdc04e7706aa33c66e2950063295" + }, + "dependency-midnight-native/order-evidence/midnight-first-stable-00-03.json": { + "bytes": 417619, + "sha256": "a9e34a798b2574610434a24fb6b5beed5f0103118dc47d1cb4d779d905acd6e7" + }, + "dependency-midnight-native/order-evidence/midnight-first-paused-00-01.var": { + "bytes": 439256, + "sha256": "56b4c20cf6dc8a98754ef32111c0e0d4e8ed39c6575122d3817eacfb5198b7e4" + }, + "dependency-midnight-native/order-evidence/midnight-first-closed-before-23-59.json": { + "bytes": 405279, + "sha256": "d03285ae31b645e77dc0d27247b4d03b4150ebae3878614bf738562a65eed50f" + }, + "dependency-midnight-native/order-evidence/midnight-first-resumed-complete-00-02.var": { + "bytes": 439904, + "sha256": "90bc58650c7ae5958016e5507cf36d42a419cf3ad0a7901614efb1448aa0a5b5" + }, + "dependency-midnight-native/order-evidence/midnight-first-paused-00-00.var": { + "bytes": 439284, + "sha256": "bbfe9dd65800f6d15c9d364126c58fc25a9bb0d263e42fbe74e1d51293421ca7" + }, + "dependency-midnight-native/order-evidence/midnight-first-closed-before-23-59.var": { + "bytes": 421992, + "sha256": "43f0c3aeffa2fa99c91c9e0f721427414da34bb3d6830795bf2f2affe0df2f26" + }, + "dependency-midnight-native/order-evidence/midnight-paused.json": { + "bytes": 422132, + "sha256": "43e75dbc37137caacc55cf82a46d0baba734a5321d8fa7aab4b15b5a5ebf17b6" + }, + "dependency-midnight-native/order-evidence/midnight-next.var": { + "bytes": 434572, + "sha256": "045a69ebb2d41b4fce953379e5561dd83a204cfcc4e129d48e6f330247c7f3f2" + }, + "dependency-midnight-native/order-evidence/observations.json": { + "bytes": 390730, + "sha256": "9d4dc8ead56e331d916cb4b0a86f172ea960a8cfbb093f9b551bd2ec0d7119cb" + }, + "dependency-midnight-native/order-evidence/midnight-first-stable-00-03.var": { + "bytes": 434572, + "sha256": "045a69ebb2d41b4fce953379e5561dd83a204cfcc4e129d48e6f330247c7f3f2" + }, + "dependency-midnight-native/order-evidence/midnight-midnight.var": { + "bytes": 439284, + "sha256": "bbfe9dd65800f6d15c9d364126c58fc25a9bb0d263e42fbe74e1d51293421ca7" + }, + "dependency-midnight-native/order-evidence/midnight-paused.var": { + "bytes": 439256, + "sha256": "56b4c20cf6dc8a98754ef32111c0e0d4e8ed39c6575122d3817eacfb5198b7e4" + }, + "dependency-midnight-native/starters/repro.gd": { + "bytes": 393, + "sha256": "3c6b3fa14172ac6d2d2ed7735e48890b22c393bb51d67d4c6756a2df00c6c704" + }, + "dependency-midnight-native/parse/stderr.log": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "dependency-midnight-native/parse/ended.json": { + "bytes": 1840, + "sha256": "c21a587c5e2ad5c3a272f5555e1d709fb0cb9d8457ce76289f86bc6f9710304c" + }, + "dependency-midnight-native/parse/adapter-owned-cleanup.json": { + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + "dependency-midnight-native/parse/engine-native.log": { + "bytes": 63337, + "sha256": "cc01d85fb2dc31dfae96acfd21b88c40763ddfe12776bd745fbc1a159cd57c27" + }, + "dependency-midnight-native/parse/stdout.log": { + "bytes": 63487, + "sha256": "c0b43b9657411bd36cda73064b304ad1067b6d4938240235a48653832bcdf7f6" + }, + "dependency-midnight-native/parse/started.json": { + "bytes": 2491, + "sha256": "622dfa7ad5b24900ceb656fbe18d60b0b02f67f01d465c587e6c0d1d6f292df7" + }, + "dependency-midnight-native/parse/process.json": { + "bytes": 6865, + "sha256": "9edc7303eef505186f03dccda9af170da96801e3bd9e8ad85fd37b789472c82a" + }, + "dependency-midnight-native/parse/outer-owned-finally.json": { + "bytes": 964, + "sha256": "8711f69c4afe115874ebb53272c5d9247d9301e119946d751f5c05c708304689" + }, + "dependency-midnight-native/parse/combined-raw.log": { + "bytes": 63487, + "sha256": "c0b43b9657411bd36cda73064b304ad1067b6d4938240235a48653832bcdf7f6" + }, + "dependency-midnight-native/repro/stderr.log": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "dependency-midnight-native/repro/ended.json": { + "bytes": 1802, + "sha256": "55551b7bf4e764bc245ae223bfeee230cc36abd61391d760832603390dab2361" + }, + "dependency-midnight-native/repro/adapter-owned-cleanup.json": { + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + "dependency-midnight-native/repro/engine-native.log": { + "bytes": 11926, + "sha256": "ae7eeecb064d5a1f65e113288277380a44383214ffecf04e25a97f55e9cc05a3" + }, + "dependency-midnight-native/repro/stdout.log": { + "bytes": 12076, + "sha256": "ccd2372ca79a263c15cfc6312a97bc8ffb2c0fc57a8129b3447236e418efe70d" + }, + "dependency-midnight-native/repro/started.json": { + "bytes": 2434, + "sha256": "5369d41173aa16107b6bf08b083faaa578221bb9d50111156b94cf517b389aa5" + }, + "dependency-midnight-native/repro/process.json": { + "bytes": 6752, + "sha256": "34eebd6e083c51da7feff9812dad40bebfffedf7ddd08fccd5cefb17c92d61b0" + }, + "dependency-midnight-native/repro/outer-owned-finally.json": { + "bytes": 964, + "sha256": "58b55a734e7fa37b957877725596a7c223e4181d35ec6c97e1254b0965ecbfc4" + }, + "dependency-midnight-native/import/stderr.log": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "dependency-midnight-native/import/ended.json": { + "bytes": 1512, + "sha256": "6da3bf43bf60d357bfd919b585eb41ee909a23fd17d1a690e61a93aab805ae5d" + }, + "dependency-midnight-native/import/adapter-owned-cleanup.json": { + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + "dependency-midnight-native/import/engine-native.log": { + "bytes": 35121, + "sha256": "e2f54ab4987fadc017a82b490d735c1b34969c428cf2b73f90476c2045f04ae1" + }, + "dependency-midnight-native/import/stdout.log": { + "bytes": 49807, + "sha256": "a62c2910163f0ad6be8440e92189ff1efba7414d94c87492b993cdd7d7207ea3" + }, + "dependency-midnight-native/import/started.json": { + "bytes": 1992, + "sha256": "c4dd815ba06c5ad84b0a820b8a65b7bc8ce821d82647891e65e1e94c554d7254" + }, + "dependency-midnight-native/import/process.json": { + "bytes": 5882, + "sha256": "b3bf46b07502864ed8d54ef0260238557026f66313a7755bd535ecd7b87c0d54" + }, + "dependency-midnight-native/import/outer-owned-finally.json": { + "bytes": 964, + "sha256": "e3046a4e5b9bb078e4c6676a381177b908e2f4cddf1e8b50283b0fdc36a3d693" + }, + "dependency-midnight-native/import/combined-raw.log": { + "bytes": 49807, + "sha256": "a62c2910163f0ad6be8440e92189ff1efba7414d94c87492b993cdd7d7207ea3" + }, + "dependency-formal-native/reader/stderr.log": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "dependency-formal-native/reader/ended.json": { + "bytes": 1791, + "sha256": "cee4a7a3d9e1bca4b158760cff3a13370b9bb7d1f6df5e9b7c0d785e0289787b" + }, + "dependency-formal-native/reader/adapter-owned-cleanup.json": { + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + "dependency-formal-native/reader/engine-native.log": { + "bytes": 7747, + "sha256": "a0f679364ab9a6c0811b3dc2daf74d7db6b6fc0731bb9dd0143e1f6795848018" + }, + "dependency-formal-native/reader/stdout.log": { + "bytes": 7897, + "sha256": "7b6a8db10117687f8e7892eacf143293e6890eac9fad4e3c1d1e56a6aa7524a6" + }, + "dependency-formal-native/reader/started.json": { + "bytes": 2416, + "sha256": "775990facc445c42b99a394979d3e8add672313e041d183c42e7ce897114c718" + }, + "dependency-formal-native/reader/process.json": { + "bytes": 6718, + "sha256": "caac7d633548e96f2a4671ebca39c672ff683d70ccbd84aadddf69f40b29c1c4" + }, + "dependency-formal-native/reader/outer-owned-finally.json": { + "bytes": 962, + "sha256": "7eedb459b259b6abfe02a0f5e179b6de90c812a2ed27c9b9f137e3adeba7901e" + }, + "dependency-formal-native/bootstrap/profile_guard.gd": { + "bytes": 2276, + "sha256": "597696c705cc8f0e79a35265ca3ef8df55f7fc3c4e0e5a2ce9a4e20e29e29a6f" + }, + "dependency-formal-native/bootstrap/parse_full_dependencies.gd": { + "bytes": 760, + "sha256": "585a0c1da5c050e3bebc5f66793a625419d2db27299f1131cf3a62ffd3236126" + }, + "dependency-formal-native/starters/writer.gd": { + "bytes": 391, + "sha256": "27f504a546ddeef6a8a9c83260d62fa9227d0593cd2652e0a40de0563d5521b7" + }, + "dependency-formal-native/starters/reader.gd": { + "bytes": 391, + "sha256": "27f504a546ddeef6a8a9c83260d62fa9227d0593cd2652e0a40de0563d5521b7" + }, + "dependency-formal-native/parse/stderr.log": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "dependency-formal-native/parse/ended.json": { + "bytes": 1825, + "sha256": "8a9bc294e9748631c49e31d04679bf5dad9e0a77056bf99215dfab47dbbbb705" + }, + "dependency-formal-native/parse/adapter-owned-cleanup.json": { + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + "dependency-formal-native/parse/engine-native.log": { + "bytes": 63329, + "sha256": "cf6f32fe200551141ad7f5c2a2311ecce4f82592c2c2a1d6a8f18081f3394e19" + }, + "dependency-formal-native/parse/stdout.log": { + "bytes": 63479, + "sha256": "56a34ed211146c339e4c4ab60214ba3e06e7adb446cece5a77c72a904da96e5d" + }, + "dependency-formal-native/parse/started.json": { + "bytes": 2467, + "sha256": "bf335c6e24114c3d36e27ae3853d982d360a2d982494efc49a754fc137a49f7d" + }, + "dependency-formal-native/parse/process.json": { + "bytes": 6820, + "sha256": "d1a8bd3d92dfbe20b448391a976e7aa2a82ffd3aa315b16ee2e75b6331b043c7" + }, + "dependency-formal-native/parse/outer-owned-finally.json": { + "bytes": 962, + "sha256": "57d7c3833d6e1e061e9a12f2ff2a59130f207853f04f2bc7af794747d2a46589" + }, + "dependency-formal-native/parse/combined-raw.log": { + "bytes": 63479, + "sha256": "56a34ed211146c339e4c4ab60214ba3e06e7adb446cece5a77c72a904da96e5d" + }, + "dependency-formal-native/writer/stderr.log": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "dependency-formal-native/writer/ended.json": { + "bytes": 1791, + "sha256": "6401973f36d41c4e0646bc06ffefd822310e27c2a12b1f72181c3537bcb65fa8" + }, + "dependency-formal-native/writer/adapter-owned-cleanup.json": { + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + "dependency-formal-native/writer/engine-native.log": { + "bytes": 7746, + "sha256": "74ec056c6cd2e842eb86f0de84ba46012ce8cebbd8891461282e8181c9efb8a8" + }, + "dependency-formal-native/writer/stdout.log": { + "bytes": 7896, + "sha256": "1861eaa73acc8ae413e509fc4a45738466620ba87c57ed7adc80c5bc3f6869b6" + }, + "dependency-formal-native/writer/started.json": { + "bytes": 2416, + "sha256": "58ab3d0b4b4f52bd307f4a96ed8d6b3359a196cd5ae48f49286e6dcdc7f14903" + }, + "dependency-formal-native/writer/process.json": { + "bytes": 6717, + "sha256": "ac2a5fd9760915f5ffb6d05b0124c4bdf8eabdbff96c76f42cb530122029ce65" + }, + "dependency-formal-native/writer/outer-owned-finally.json": { + "bytes": 962, + "sha256": "f4a6b74294fe96b20c3dcd09778c4b9b8490e96091209888fe5c1637ef24bb94" + }, + "dependency-formal-native/restart-evidence/reader-receipts.var": { + "bytes": 3556, + "sha256": "4e270db415a26d171844a14cd2e5864f55de5b425c419002c28ac7862f4b3afa" + }, + "dependency-formal-native/restart-evidence/reader-before-loaded.var": { + "bytes": 421992, + "sha256": "43f0c3aeffa2fa99c91c9e0f721427414da34bb3d6830795bf2f2affe0df2f26" + }, + "dependency-formal-native/restart-evidence/writer-midnight-persisted.var": { + "bytes": 439284, + "sha256": "bbfe9dd65800f6d15c9d364126c58fc25a9bb0d263e42fbe74e1d51293421ca7" + }, + "dependency-formal-native/restart-evidence/reader-replayed-midnight.var": { + "bytes": 439284, + "sha256": "bbfe9dd65800f6d15c9d364126c58fc25a9bb0d263e42fbe74e1d51293421ca7" + }, + "dependency-formal-native/restart-evidence/reader-after-loaded.var": { + "bytes": 439904, + "sha256": "90bc58650c7ae5958016e5507cf36d42a419cf3ad0a7901614efb1448aa0a5b5" + }, + "dependency-formal-native/restart-evidence/reader-replayed-next.var": { + "bytes": 434572, + "sha256": "045a69ebb2d41b4fce953379e5561dd83a204cfcc4e129d48e6f330247c7f3f2" + }, + "dependency-formal-native/restart-evidence/writer-after-persisted.var": { + "bytes": 439904, + "sha256": "90bc58650c7ae5958016e5507cf36d42a419cf3ad0a7901614efb1448aa0a5b5" + }, + "dependency-formal-native/restart-evidence/reader-next-loaded.var": { + "bytes": 434572, + "sha256": "045a69ebb2d41b4fce953379e5561dd83a204cfcc4e129d48e6f330247c7f3f2" + }, + "dependency-formal-native/restart-evidence/reader-replayed-paused.var": { + "bytes": 439256, + "sha256": "56b4c20cf6dc8a98754ef32111c0e0d4e8ed39c6575122d3817eacfb5198b7e4" + }, + "dependency-formal-native/restart-evidence/reader-paused-loaded.var": { + "bytes": 439256, + "sha256": "56b4c20cf6dc8a98754ef32111c0e0d4e8ed39c6575122d3817eacfb5198b7e4" + }, + "dependency-formal-native/restart-evidence/writer-paused-persisted.var": { + "bytes": 439256, + "sha256": "56b4c20cf6dc8a98754ef32111c0e0d4e8ed39c6575122d3817eacfb5198b7e4" + }, + "dependency-formal-native/restart-evidence/writer-next-persisted.var": { + "bytes": 434572, + "sha256": "045a69ebb2d41b4fce953379e5561dd83a204cfcc4e129d48e6f330247c7f3f2" + }, + "dependency-formal-native/restart-evidence/reader.json": { + "bytes": 4471, + "sha256": "26190cbe8690a4c03b43272abd599a6b62d4014010505836f6379d8d85b138bb" + }, + "dependency-formal-native/restart-evidence/reader-midnight-loaded.var": { + "bytes": 439284, + "sha256": "bbfe9dd65800f6d15c9d364126c58fc25a9bb0d263e42fbe74e1d51293421ca7" + }, + "dependency-formal-native/restart-evidence/writer.json": { + "bytes": 1034, + "sha256": "794fbb2c7925e41ee752190e5c237896037e05461ae3031c44b40f28fefa6fec" + }, + "dependency-formal-native/restart-evidence/reader-replayed-after.var": { + "bytes": 439904, + "sha256": "90bc58650c7ae5958016e5507cf36d42a419cf3ad0a7901614efb1448aa0a5b5" + }, + "dependency-formal-native/restart-evidence/writer-before-persisted.var": { + "bytes": 421992, + "sha256": "43f0c3aeffa2fa99c91c9e0f721427414da34bb3d6830795bf2f2affe0df2f26" + }, + "dependency-formal-native/import/stderr.log": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "dependency-formal-native/import/ended.json": { + "bytes": 1501, + "sha256": "32e0ead6e3594e8d57aa841bbac95ce3af84173f3554d49db6872b34d7dd88a1" + }, + "dependency-formal-native/import/adapter-owned-cleanup.json": { + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + "dependency-formal-native/import/engine-native.log": { + "bytes": 35121, + "sha256": "e2f54ab4987fadc017a82b490d735c1b34969c428cf2b73f90476c2045f04ae1" + }, + "dependency-formal-native/import/stdout.log": { + "bytes": 49807, + "sha256": "a62c2910163f0ad6be8440e92189ff1efba7414d94c87492b993cdd7d7207ea3" + }, + "dependency-formal-native/import/started.json": { + "bytes": 1974, + "sha256": "9ffa5da4979a47a63ac44f718ab8fbe0609ea5ac595609af432901ef3d6b0c76" + }, + "dependency-formal-native/import/process.json": { + "bytes": 5848, + "sha256": "ed121b79a5c0c2bfef07c472fc6a7d7fb07bd0a5e494d5dca721449747fc1663" + }, + "dependency-formal-native/import/outer-owned-finally.json": { + "bytes": 962, + "sha256": "52c88962cc875b97b0e4967f891bb6d42e2e0545dd21b3eb676d212efdfb9975" + }, + "dependency-formal-native/import/combined-raw.log": { + "bytes": 49807, + "sha256": "a62c2910163f0ad6be8440e92189ff1efba7414d94c87492b993cdd7d7207ea3" + }, + "dependency-formal-native/formal-packages/reader/paused/journal.log": { + "bytes": 35, + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + "dependency-formal-native/formal-packages/reader/paused/world.bin": { + "bytes": 27270, + "sha256": "3ddc6a1b3430895d874e50f5055ef407e403f24a640290d3e11c4d79503b8aba" + }, + "dependency-formal-native/formal-packages/reader/paused/manifest.json": { + "bytes": 419, + "sha256": "c47cd7efa8cc5a91d73980ad848f092bb388c9e53e8d3c8a8e4911c6f202aaa7" + }, + "dependency-formal-native/formal-packages/reader/paused/thumbnail.png": { + "bytes": 83, + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + "dependency-formal-native/formal-packages/reader/next/journal.log": { + "bytes": 35, + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + "dependency-formal-native/formal-packages/reader/next/world.bin": { + "bytes": 27051, + "sha256": "7121cab824b5a9cacff9ed7dbd0d09b111c77482d0dd2203c7c84d3bfe95f7f8" + }, + "dependency-formal-native/formal-packages/reader/next/manifest.json": { + "bytes": 415, + "sha256": "e0f3a89994c93009d9d5b9d54e6585179651c718dd1d00a2fa2572691bd0ce75" + }, + "dependency-formal-native/formal-packages/reader/next/thumbnail.png": { + "bytes": 83, + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + "dependency-formal-native/formal-packages/reader/midnight/journal.log": { + "bytes": 35, + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + "dependency-formal-native/formal-packages/reader/midnight/world.bin": { + "bytes": 27247, + "sha256": "d554c9cad2acdd74ea41f5a0f7b46daa9cb2477b2cc149468eab9b7ca95bfc6e" + }, + "dependency-formal-native/formal-packages/reader/midnight/manifest.json": { + "bytes": 423, + "sha256": "155457444c3b9af907675d2ec9cde718d4f8811f506e4ffd04b212c986873239" + }, + "dependency-formal-native/formal-packages/reader/midnight/thumbnail.png": { + "bytes": 83, + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + "dependency-formal-native/formal-packages/reader/before/journal.log": { + "bytes": 35, + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + "dependency-formal-native/formal-packages/reader/before/world.bin": { + "bytes": 25702, + "sha256": "02112fdf59864c06ba1b9be0434377e95c42d995630a8003d9291b1b850ab716" + }, + "dependency-formal-native/formal-packages/reader/before/manifest.json": { + "bytes": 419, + "sha256": "4544e2eec7c160ae5a5357a5b3e28ac70cd005cbe7bca6cca36750ebb5db5d40" + }, + "dependency-formal-native/formal-packages/reader/before/thumbnail.png": { + "bytes": 83, + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + "dependency-formal-native/formal-packages/reader/after/journal.log": { + "bytes": 35, + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + "dependency-formal-native/formal-packages/reader/after/world.bin": { + "bytes": 27092, + "sha256": "bc7a5536b3c486d88aa6e27e734fa0d71d7f2a982542ede8940a46f0c8cacfd4" + }, + "dependency-formal-native/formal-packages/reader/after/manifest.json": { + "bytes": 417, + "sha256": "a324d97202de77a7e5b6f69ec7e6146eab6b358f9d897cbaec2b24c3e7be1104" + }, + "dependency-formal-native/formal-packages/reader/after/thumbnail.png": { + "bytes": 83, + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + "dependency-formal-native/formal-packages/writer/paused/journal.log": { + "bytes": 35, + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + "dependency-formal-native/formal-packages/writer/paused/world.bin": { + "bytes": 27270, + "sha256": "3ddc6a1b3430895d874e50f5055ef407e403f24a640290d3e11c4d79503b8aba" + }, + "dependency-formal-native/formal-packages/writer/paused/manifest.json": { + "bytes": 419, + "sha256": "c47cd7efa8cc5a91d73980ad848f092bb388c9e53e8d3c8a8e4911c6f202aaa7" + }, + "dependency-formal-native/formal-packages/writer/paused/thumbnail.png": { + "bytes": 83, + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + "dependency-formal-native/formal-packages/writer/next/journal.log": { + "bytes": 35, + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + "dependency-formal-native/formal-packages/writer/next/world.bin": { + "bytes": 27051, + "sha256": "7121cab824b5a9cacff9ed7dbd0d09b111c77482d0dd2203c7c84d3bfe95f7f8" + }, + "dependency-formal-native/formal-packages/writer/next/manifest.json": { + "bytes": 415, + "sha256": "e0f3a89994c93009d9d5b9d54e6585179651c718dd1d00a2fa2572691bd0ce75" + }, + "dependency-formal-native/formal-packages/writer/next/thumbnail.png": { + "bytes": 83, + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + "dependency-formal-native/formal-packages/writer/midnight/journal.log": { + "bytes": 35, + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + "dependency-formal-native/formal-packages/writer/midnight/world.bin": { + "bytes": 27247, + "sha256": "d554c9cad2acdd74ea41f5a0f7b46daa9cb2477b2cc149468eab9b7ca95bfc6e" + }, + "dependency-formal-native/formal-packages/writer/midnight/manifest.json": { + "bytes": 423, + "sha256": "155457444c3b9af907675d2ec9cde718d4f8811f506e4ffd04b212c986873239" + }, + "dependency-formal-native/formal-packages/writer/midnight/thumbnail.png": { + "bytes": 83, + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + "dependency-formal-native/formal-packages/writer/before/journal.log": { + "bytes": 35, + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + "dependency-formal-native/formal-packages/writer/before/world.bin": { + "bytes": 25702, + "sha256": "02112fdf59864c06ba1b9be0434377e95c42d995630a8003d9291b1b850ab716" + }, + "dependency-formal-native/formal-packages/writer/before/manifest.json": { + "bytes": 419, + "sha256": "4544e2eec7c160ae5a5357a5b3e28ac70cd005cbe7bca6cca36750ebb5db5d40" + }, + "dependency-formal-native/formal-packages/writer/before/thumbnail.png": { + "bytes": 83, + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + "dependency-formal-native/formal-packages/writer/after/journal.log": { + "bytes": 35, + "sha256": "f4710df6ad3c546f66cd367a3c91c3e55349c8b664469991b1ae38584dadf77f" + }, + "dependency-formal-native/formal-packages/writer/after/world.bin": { + "bytes": 27092, + "sha256": "bc7a5536b3c486d88aa6e27e734fa0d71d7f2a982542ede8940a46f0c8cacfd4" + }, + "dependency-formal-native/formal-packages/writer/after/manifest.json": { + "bytes": 417, + "sha256": "a324d97202de77a7e5b6f69ec7e6146eab6b358f9d897cbaec2b24c3e7be1104" + }, + "dependency-formal-native/formal-packages/writer/after/thumbnail.png": { + "bytes": 83, + "sha256": "0ef55674eca98b6748ae5ccca85a14b042c1545a143810c9c47b487119895c32" + }, + "actual-native/bootstrap/profile_guard.gd": { + "bytes": 2276, + "sha256": "597696c705cc8f0e79a35265ca3ef8df55f7fc3c4e0e5a2ce9a4e20e29e29a6f" + }, + "actual-native/bootstrap/parse_full_dependencies.gd": { + "bytes": 760, + "sha256": "585a0c1da5c050e3bebc5f66793a625419d2db27299f1131cf3a62ffd3236126" + }, + "actual-native/order-evidence/before.json": { + "bytes": 123989, + "sha256": "b52b46b0e76e3a172699d2e42ae69da02b0e64725074d534258204365c163b3c" + }, + "actual-native/order-evidence/first-18-00-after-staff.json": { + "bytes": 128345, + "sha256": "8e1e35917e3d5ffb1e9e39c98e5736daf1349fd885525fbfbf29e60d429f02be" + }, + "actual-native/order-evidence/first-18-01-tick-complete.json": { + "bytes": 127882, + "sha256": "1f394430dc94f3466f4b1d5858b208574561e2240adfefa1b23dea627a5b961d" + }, + "actual-native/order-evidence/before.var": { + "bytes": 129768, + "sha256": "e5c1ca9d5f933c5e69ab350d75b3fdf919f9a0ebb55d350d27bad2dbb79ba229" + }, + "actual-native/order-evidence/after.var": { + "bytes": 134384, + "sha256": "a85acb6b025fc510fa71891a0bf32b8f9724056877d510db34d88123d7ef8fb9" + }, + "actual-native/order-evidence/first-18-00-before-facility.json": { + "bytes": 123989, + "sha256": "66f5fad4cf982e3391d3bac96d77ef75ee245a191ebf5d8bcae499a58ab51eea" + }, + "actual-native/order-evidence/first-18-00-after-facility.json": { + "bytes": 125748, + "sha256": "c5472a77f2f868790adc9b148e82132bd6b03a87ee3b75f6b0ea42250dd54a5a" + }, + "actual-native/order-evidence/first-18-00-after-staff.var": { + "bytes": 134384, + "sha256": "60f6980a4b941efcb251c21b329a0e7a56602d431aee78cc4b38b19c9edbe9a6" + }, + "actual-native/order-evidence/next.json": { + "bytes": 127882, + "sha256": "1f394430dc94f3466f4b1d5858b208574561e2240adfefa1b23dea627a5b961d" + }, + "actual-native/order-evidence/replay-18-00-after-facility.json": { + "bytes": 125748, + "sha256": "c5472a77f2f868790adc9b148e82132bd6b03a87ee3b75f6b0ea42250dd54a5a" + }, + "actual-native/order-evidence/replay-18-00-after-facility.var": { + "bytes": 131688, + "sha256": "3508e20a811285a3c3f505c03441bc34b583cce9058bdd7ee8d89568adcb6559" + }, + "actual-native/order-evidence/first-18-00-after-facility.var": { + "bytes": 131688, + "sha256": "3508e20a811285a3c3f505c03441bc34b583cce9058bdd7ee8d89568adcb6559" + }, + "actual-native/order-evidence/first-before-17-59.var": { + "bytes": 129768, + "sha256": "e5c1ca9d5f933c5e69ab350d75b3fdf919f9a0ebb55d350d27bad2dbb79ba229" + }, + "actual-native/order-evidence/after.json": { + "bytes": 128345, + "sha256": "f3a59738ad7909bf91fbd2151114c87566e268a636e2b5756db1a8668303d709" + }, + "actual-native/order-evidence/replay-18-00-before-facility.json": { + "bytes": 123989, + "sha256": "66f5fad4cf982e3391d3bac96d77ef75ee245a191ebf5d8bcae499a58ab51eea" + }, + "actual-native/order-evidence/first-18-01-tick-complete.var": { + "bytes": 133912, + "sha256": "55fab983f888b3c6a7919ba5bb8d149fec8dce0a291df891265b73cc57a25e30" + }, + "actual-native/order-evidence/first-before-17-59.json": { + "bytes": 123989, + "sha256": "b52b46b0e76e3a172699d2e42ae69da02b0e64725074d534258204365c163b3c" + }, + "actual-native/order-evidence/observations.json": { + "bytes": 66073, + "sha256": "3313b14812e8263fb92ba0399a1ce4f2cccfcc5bd97b1e7d248bcb46bd5305b6" + }, + "actual-native/order-evidence/first-18-00-tick-complete.var": { + "bytes": 134384, + "sha256": "a85acb6b025fc510fa71891a0bf32b8f9724056877d510db34d88123d7ef8fb9" + }, + "actual-native/order-evidence/replay-18-00-after-staff.var": { + "bytes": 134384, + "sha256": "60f6980a4b941efcb251c21b329a0e7a56602d431aee78cc4b38b19c9edbe9a6" + }, + "actual-native/order-evidence/replay-18-00-after-staff.json": { + "bytes": 128345, + "sha256": "8e1e35917e3d5ffb1e9e39c98e5736daf1349fd885525fbfbf29e60d429f02be" + }, + "actual-native/order-evidence/first-18-00-before-facility.var": { + "bytes": 129768, + "sha256": "0cf40c60b103eac7509ba35ac4e21a6ca5e1b9b02f31d48154d16359e05fe7d6" + }, + "actual-native/order-evidence/next.var": { + "bytes": 133912, + "sha256": "55fab983f888b3c6a7919ba5bb8d149fec8dce0a291df891265b73cc57a25e30" + }, + "actual-native/order-evidence/replay-18-00-before-facility.var": { + "bytes": 129768, + "sha256": "0cf40c60b103eac7509ba35ac4e21a6ca5e1b9b02f31d48154d16359e05fe7d6" + }, + "actual-native/order-evidence/first-18-00-tick-complete.json": { + "bytes": 128345, + "sha256": "f3a59738ad7909bf91fbd2151114c87566e268a636e2b5756db1a8668303d709" + }, + "actual-native/starters/repro.gd": { + "bytes": 387, + "sha256": "fb464846762d57b7b47d5f79fa9be4d2528681ad03ce1bca18ca60fdd955fb9e" + }, + "actual-native/parse/stderr.log": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "actual-native/parse/ended.json": { + "bytes": 1804, + "sha256": "b7642d4dd0f1747a67d89f97144de7d4876111f3d306619db8e9c5e460e1b3a9" + }, + "actual-native/parse/adapter-owned-cleanup.json": { + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + "actual-native/parse/engine-native.log": { + "bytes": 63313, + "sha256": "1ef948965dc95597a6d41fe7ee3e6f5b07ca5acfeccc3f00672594c6039b04bb" + }, + "actual-native/parse/stdout.log": { + "bytes": 63463, + "sha256": "3fd1060d0d6d66a527ee130f186d546c927279f54473ec1550be9da326340dfe" + }, + "actual-native/parse/started.json": { + "bytes": 2437, + "sha256": "bd6e42e390e9f97e4485b278cc7ecd49c4f314e65928d9995e4cff66f39c3713" + }, + "actual-native/parse/process.json": { + "bytes": 6757, + "sha256": "0bbba2cef1398fddba6f4fbcef6513df6185338f8192f00e3862ba6de3b4085c" + }, + "actual-native/parse/outer-owned-finally.json": { + "bytes": 964, + "sha256": "4888ff96abb1ddaf646b3f61f436d2e44df360106b47e6da5a8ab19dcf2e9d0b" + }, + "actual-native/parse/combined-raw.log": { + "bytes": 63463, + "sha256": "3fd1060d0d6d66a527ee130f186d546c927279f54473ec1550be9da326340dfe" + }, + "actual-native/repro/stderr.log": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "actual-native/repro/ended.json": { + "bytes": 1766, + "sha256": "b51ebf5c1512d4985b00e4a9e6789d1cabc0d3040556b08b3853da8f23813620" + }, + "actual-native/repro/adapter-owned-cleanup.json": { + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + "actual-native/repro/engine-native.log": { + "bytes": 11344, + "sha256": "6606012302b86496196116aa635b1751dc6f7207d425274275b31f21ce5e667b" + }, + "actual-native/repro/stdout.log": { + "bytes": 11494, + "sha256": "1221f99ee655b9da702a7d987b2e557bae19ca8c2428623900d29845b40ca369" + }, + "actual-native/repro/started.json": { + "bytes": 2380, + "sha256": "bff95cec2326f59bd6bdeef76a09964c56b875a833137f077bf2cb38a4320699" + }, + "actual-native/repro/process.json": { + "bytes": 6644, + "sha256": "e289cfd6fb59286f8ec5c1108be12ac2764719e247a7624fa6afaab2be3d583f" + }, + "actual-native/repro/outer-owned-finally.json": { + "bytes": 964, + "sha256": "22892e808af6b2b27aff78f491df212a494aba38f7e8027275439f8f0e4674ae" + }, + "actual-native/import/stderr.log": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "actual-native/import/ended.json": { + "bytes": 1488, + "sha256": "d7eb46b19e7f6fa8b641c3766efca60fab4df70c755fa4351410a4adac6cf0dd" + }, + "actual-native/import/adapter-owned-cleanup.json": { + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + "actual-native/import/engine-native.log": { + "bytes": 35121, + "sha256": "e2f54ab4987fadc017a82b490d735c1b34969c428cf2b73f90476c2045f04ae1" + }, + "actual-native/import/stdout.log": { + "bytes": 49807, + "sha256": "a62c2910163f0ad6be8440e92189ff1efba7414d94c87492b993cdd7d7207ea3" + }, + "actual-native/import/started.json": { + "bytes": 1956, + "sha256": "8fcbafb635d8c46080021179cebc8707663695d951ca9824ac9711d97a671dec" + }, + "actual-native/import/process.json": { + "bytes": 5810, + "sha256": "3fdcdbb8f35a375d2d19986d6a7f34a1038e86cbb4ffc4e4c8d3dcc2996ba2af" + }, + "actual-native/import/outer-owned-finally.json": { + "bytes": 964, + "sha256": "27903ec03e7729b611568f8e0270851901701c1e329cf3092bcf09b8daf8590c" + }, + "actual-native/import/combined-raw.log": { + "bytes": 49807, + "sha256": "a62c2910163f0ad6be8440e92189ff1efba7414d94c87492b993cdd7d7207ea3" + } + }, + "all_original_repair4_files_sha_unchanged": true, + "no_root_readonly_helpers_left_in_worker_scope": true +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/approved-dependency-formal-r01.gd b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/approved-dependency-formal-r01.gd new file mode 100644 index 0000000..53fa277 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/approved-dependency-formal-r01.gd @@ -0,0 +1,129 @@ +extends SceneTree +# Reuse reviewed entire boundary inputs. Formal public saves, separate owned Writer/Reader. +var _runtime: Variant +var _clock: Variant +var _state: Variant +var _checks := 0 +var _failures := 0 +var _folder := "" +var _mode := "" +var _cases: Array = [] +var _slots: Dictionary = {} +var _results: Array = [] +func _initialize() -> void: call_deferred("_run") +func _expect(ok: bool, label: String) -> void: + _checks += 1 + if not ok: _failures += 1; push_error(label) +func _json(path: String) -> Variant: + var file := FileAccess.open(path, FileAccess.READ) + _expect(file != null, "read sealed metadata " + path.get_file()) + if file == null: return null + var value: Variant = JSON.parse_string(file.get_as_text()); file.close(); return value +func _input(row: Dictionary) -> Dictionary: + var path := String(row["path"]) + _expect(FileAccess.get_sha256(path) == String(row["sha256"]), "exact original input SHA") + var file := FileAccess.open(path, FileAccess.READ) + _expect(file != null, "original typed input exists") + if file == null: return {} + var data := file.get_buffer(file.get_length()); file.close() + _expect(data.size() == int(row["bytes"]), "entire typed input length") + var value: Variant = bytes_to_var(data) + _expect(value is Dictionary and var_to_bytes(value) == data, "original entire typed input roundtrip") + return value if value is Dictionary else {} +func _proof(label: String, value: Variant) -> void: + var file := FileAccess.open(_folder.path_join(_mode + "-" + label + ".var"), FileAccess.WRITE) + _expect(file != null, "whole typed output " + label) + if file != null: file.store_buffer(var_to_bytes(value)); file.flush(); file.close() +func _reset() -> void: + _cleanup() + _runtime = load("res://autoload/simulation_runtime.gd").new() + _clock = load("res://autoload/game_clock.gd").new() + _state = load("res://autoload/game_state.gd").new() + _clock.reset(1, 6, 0); _state.reset() + _expect(bool(_runtime.initialize(_clock, _state, 424242).get(&"valid", false)), "ordinary Runtime initializes") + _clock.set_paused(true) +func _cleanup() -> void: + if _runtime != null: _runtime.free() + if _clock != null: _clock.free() + if _state != null: _state.free() + _runtime = null; _clock = null; _state = null +func _restore_expected(expected: Dictionary, label: String) -> void: + _expect(_runtime.restore_snapshot(expected), "public whole Runtime restore " + label) + _expect(var_to_bytes(_runtime.create_snapshot()) == var_to_bytes(expected), "whole restore equality " + label) +func _write_save(label: String, expected: Dictionary) -> void: + _restore_expected(expected, label) + var path := "user://saves/p04_boundary/" + label + var result := SaveService.save_snapshot(path, _runtime.create_snapshot()) + _expect(bool(result.get(&"ok", false)), "formal public package save " + label) + var inspected := SaveService.inspect_snapshot(path) + _expect(bool(inspected.get(&"ok", false)) and bool(inspected.get(&"read_only", false)) and var_to_bytes(inspected.get(&"snapshot", {})) == var_to_bytes(expected), "formal whole typed inspect " + label) + _expect(var_to_bytes(_runtime.create_snapshot()) == var_to_bytes(expected), "save leaves whole Runtime unchanged " + label) + _slots[label] = ProjectSettings.globalize_path(path) + _proof(label + "-persisted", expected) +func _copy_package(original: String, label: String) -> void: + var target := ProjectSettings.globalize_path("user://saves/p04_boundary/" + label) + _expect(DirAccess.make_dir_recursive_absolute(target) == OK, "fresh Reader package " + label) + var dir := DirAccess.open(original) + _expect(dir != null, "Writer entire package available") + if dir == null: return + var names := dir.get_files(); names.sort() + _expect(dir.get_directories().is_empty() and names == PackedStringArray(["journal.log", "manifest.json", "thumbnail.png", "world.bin"]), "exact complete four-member save package") + for member: String in names: + _expect(DirAccess.copy_absolute(original.path_join(member), target.path_join(member)) == OK, "copy complete member " + member) + _expect(FileAccess.get_sha256(original.path_join(member)) == FileAccess.get_sha256(target.path_join(member)), "literal copied member SHA " + member) + _slots[label] = target +func _load_save(label: String, expected: Dictionary) -> void: + var result := SaveService.load_snapshot(String(_slots[label])) + _expect(bool(result.get(&"ok", false)), "formal public package load " + label) + if not bool(result.get(&"ok", false)): return + _expect(var_to_bytes(result[&"snapshot"]) == var_to_bytes(expected), "loaded entire typed package matches original " + label) + _restore_expected(result[&"snapshot"], label) + _proof(label + "-loaded", _runtime.create_snapshot()) +func _run() -> void: + _folder = OS.get_environment("THE_TREE_BOUNDARY_RESTART_EVIDENCE") + _mode = OS.get_environment("THE_TREE_BOUNDARY_RESTART_MODE") + if _folder.is_empty() or _mode not in ["writer", "reader"]: quit(2); return + _expect(DirAccess.make_dir_recursive_absolute(_folder) == OK, "fresh formal output") + var manifest: Dictionary = _json(OS.get_environment("THE_TREE_BOUNDARY_RESTART_INPUT")) + var inputs: Dictionary = manifest["whole_typed_inputs"] + _reset() + if _mode == "writer": + for point: String in inputs: _write_save(point, _input(inputs[point])) + else: + var writer: Dictionary = _json(_folder.path_join("writer.json")) + _expect(int(writer["pid"]) != OS.get_process_id() and String(writer["profile"]) != OS.get_user_data_dir(), "distinct actual Writer/Reader PID and private profiles") + for label: String in writer["slots"]: _copy_package(String(writer["slots"][label]), label) + for point: String in inputs: _load_save(point, _input(inputs[point])) + _load_save("before", _input(inputs["before"])) + var receipts: Array = [] + _runtime.economy_service.transaction_posted.connect(func(id: StringName, entries: Array): + var rows: Array = [] + for row: LedgerEntry in entries: rows.append(row.to_dictionary()) + receipts.append({&"id": id, &"minute": _clock.absolute_minute, &"rows": rows}) + ) + for point: String in ["midnight", "paused", "after", "next"]: + if point == "after": + var id := StringName(manifest["kitchen_id"]) + var command: CommandResult = _runtime.submit_command(&"set_facility_policy", {&"facility_id": id, &"patch": {&"business_open": true}}, &"player", &"", 10, -1, &"p04.dependency.reopen") + _expect(command.is_success(), "same public dependency reopen after formal restart") + _clock.advance_one_minute() + var expected := _input(inputs[point]) + _expect(var_to_bytes(_runtime.create_snapshot()) == var_to_bytes(expected), "all typed state after formal restart equals original native " + point) + _proof("replayed-" + point, _runtime.create_snapshot()) + var sale_count := 0 + for receipt: Dictionary in receipts: + for row: Dictionary in receipt[&"rows"]: + if row[&"category"] == &"SERVICE_SALE": + sale_count += 1 + _expect(receipt[&"minute"] == 1442 and row[&"amount"] == int(manifest["original_price"]), "exact original service sale after formal restart") + _expect(sale_count == 1, "one sale notification across paused midnight and recovery") + _results.append({&"receipts": receipts, &"sale_count": sale_count}) + _proof("receipts", receipts) + _finish() +func _finish() -> void: + var file := FileAccess.open(_folder.path_join(_mode + ".json"), FileAccess.WRITE) + if file != null: + file.store_string(JSON.stringify({&"pid": OS.get_process_id(), &"profile": OS.get_user_data_dir(), &"slots": _slots, &"results": _results, &"checks": _checks, &"failures": _failures}, "\t")); file.flush(); file.close() + _cleanup() + print("Dependency formal restart: %d checks, %d failures" % [_checks, _failures]) + quit(1 if _failures else 0) diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/approved-dependency-midnight-r01.gd b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/approved-dependency-midnight-r01.gd new file mode 100644 index 0000000..c04fb1e --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/approved-dependency-midnight-r01.gd @@ -0,0 +1,167 @@ +extends "res://tests/s3/test_runtime_actor_hardening.gd" +var _observations: Array[Dictionary] = [] +var _receipts: Array[Dictionary] = [] +var _first_receipts: Array[Dictionary] = [] +var _receipt_hook: Callable +var _evidence_dir := "" +var _facility_id: StringName = &"" +var _service_id: StringName = &"" +var _request_id: StringName = &"p04.order.midnight.request" +var _guest_id: StringName = &"p04.order.midnight.guest" +var _staff_ids: Array[StringName] = [&"p04.midnight.server.a", &"p04.midnight.server.b"] +var _serial := 0 +var _case := "midnight" +var _original_price := 0 +var _observation_pass := "first" +var _first_summary: Dictionary = {} + +func _run() -> void: + _evidence_dir = OS.get_environment("THE_TREE_ORDER_EVIDENCE") + if _evidence_dir.is_empty(): quit(2); return + _expect(DirAccess.make_dir_recursive_absolute(_evidence_dir) == OK, "fresh external evidence directory") + _run_midnight() + _finish_order() + +func _run_midnight() -> void: + _reset_runtime(424242) + var enabled: Dictionary = _runtime.enable_production_operations() + _expect(bool(enabled.get(&"ok", false)), "public production operations enabled at original Day 1 06:00") + if not bool(enabled.get(&"ok", false)): return + var facility := _build_cafeteria(true) + if facility == null: return + _facility_id = facility.instance_id + var definition: FacilityDefinition = _runtime.definition_registry.get_facility(facility.definition_id) + _original_price = definition.base_price + var cook_id := StringName("fixture.kitchen.worker.%s" % _facility_id) + _expect(_cmd(&"set_staff_work_assignment", {&"staff_id": cook_id, &"template_id": &"NIGHT", &"facility_id": facility.related_facility_id}).is_success(), "public original NIGHT assignment replaces inherited 23:59 cook fixture") + for id: StringName in _staff_ids: + _expect(_cmd(&"register_staff", {&"staff_id": id, &"role_id": &"server", &"options": {&"state": StaffRuntime.State.OFF_DUTY, &"current_cell": Vector3i.ZERO}}).is_success(), "register real workplace Staff " + String(id)) + _expect(_cmd(&"set_staff_work_assignment", {&"staff_id": id, &"template_id": &"NIGHT", &"facility_id": _facility_id}).is_success(), "original NIGHT 18:00-next06:00 assignment " + String(id)) + var queue_at := 1440 - definition.base_service_minutes - 1 + _expect(queue_at > _clock.absolute_minute, "setup finishes before original service start") + if queue_at <= _clock.absolute_minute: return + _clock.advance_minutes(queue_at - _clock.absolute_minute) + _expect(_clock.absolute_minute == queue_at and _runtime.operations_coordinator.current_minute == queue_at, "real production operations advance without blocked suffix") + if _clock.absolute_minute != queue_at: return + for id: StringName in _staff_ids: + var worker: StaffRuntime = _runtime.staff_service.get_staff(id) + _expect(_runtime.staff_service.requires_attendance(id) and StaffCommuteService.is_at_facility(worker, facility) and worker.current_cell != Vector3i.ZERO, "physical ordinary NIGHT workplace arrival " + String(id)) + var kitchen: FacilityInstance = _runtime.facility_service.get_instance(facility.related_facility_id) + var cook: StaffRuntime = _runtime.staff_service.get_staff(cook_id) + _expect(_runtime.staff_service.requires_attendance(cook_id) and StaffCommuteService.is_at_facility(cook, kitchen), "real kitchen NIGHT attendance, not legacy attendance bypass") + _expect(_stock(facility.local_inventory_id, &"ingredient/basic_meal", 1, &"p04.midnight.stock"), "one real meal to reserve") + _expect(_cmd(&"spawn_guest", {&"guest_id": _guest_id, &"guest_type_id": &"traveler", &"gold": _original_price * 2, &"options": {&"state": GuestRuntime.State.DECIDING, &"current_cell": Vector3i.ZERO}}).is_success(), "public actual Guest wallet") + _expect(_cmd(&"create_service_request", {&"facility_id": _facility_id, &"request_id": _request_id, &"guest_ids": [_guest_id]}).is_success(), "actual request original price/duration") + _clock.advance_one_minute() + var active: Array = _runtime.facility_service.get_active_services(_facility_id) + _expect(active.size() == 1, "one actual reserved service starts") + if active.size() != 1: return + var service: ServiceInstance = active[0]; _service_id = service.service_id + _expect(service.started_at + service.duration_minutes == 1440 and service.duration_minutes == definition.base_service_minutes and service.price_snapshot == _original_price, "original service completion coincides with 00:00") + _clock.advance_minutes(1439 - _clock.absolute_minute) + _expect(service.elapsed_minutes == service.duration_minutes - 1, "one original service minute remains at 23:59") + _expect(_runtime.operations_coordinator.get_day_summary(1).is_empty(), "real Day 1 not closed early") + _expect(_cmd(&"set_facility_policy", {&"facility_id": kitchen.instance_id, &"patch": {&"business_open": false}}).is_success(), "public dependency kitchen closure; dining itself remains open by policy") + _expect(not facility.related_facility_operating and kitchen.state == FacilityInstance.State.CLOSED, "dependency closure projects to dining") + var held_ids: Array[StringName] = service.inventory_reservations.duplicate() + var held_elapsed := service.elapsed_minutes + var held_service_id := service.service_id + _connect_receipts(); _observe("closed-before-23-59") + var before: Dictionary = _runtime.create_snapshot() + _clock.advance_one_minute(); _observe("paused-00-00") + _expect(_clock.absolute_minute == 1440 and int(_runtime.operations_coordinator.get_day_summary(1).get(&"closed_at", -1)) == 1440, "real daily close proceeds while dependent service is paused") + _assert_held(service, held_service_id, held_ids, held_elapsed) + var midnight: Dictionary = _runtime.create_snapshot() + _first_summary = _runtime.operations_coordinator.get_day_summary(1).duplicate(true) + _clock.advance_one_minute(); _observe("paused-00-01") + _assert_held(service, held_service_id, held_ids, held_elapsed) + var paused: Dictionary = _runtime.create_snapshot() + _expect(_reopen_dependency(kitchen.instance_id).is_success(), "public reopening of same dependency") + _clock.advance_one_minute(); _observe("resumed-complete-00-02") + _assert_completed(service, held_service_id, held_ids) + var after: Dictionary = _runtime.create_snapshot() + _clock.advance_one_minute(); _observe("stable-00-03") + _assert_completed(service, held_service_id, held_ids) + var next: Dictionary = _runtime.create_snapshot() + _first_receipts.assign(_receipts.duplicate(true)) + _expect(_runtime.restore_snapshot(before), "restore typed pre-midnight dependency-closed snapshot") + _observation_pass = "replay"; _receipts.clear(); _connect_receipts() + _clock.advance_one_minute() + _expect(var_to_bytes(_runtime.create_snapshot()) == var_to_bytes(midnight), "typed paused midnight state replay matches") + _clock.advance_one_minute() + _expect(var_to_bytes(_runtime.create_snapshot()) == var_to_bytes(paused), "typed second paused state replay matches") + _expect(_reopen_dependency(kitchen.instance_id).is_success(), "replay same public reopen command and idempotency key") + _clock.advance_one_minute() + _expect(var_to_bytes(_runtime.create_snapshot()) == var_to_bytes(after), "typed completed state replay matches") + _clock.advance_one_minute() + _expect(var_to_bytes(_runtime.create_snapshot()) == var_to_bytes(next), "typed subsequent state replay matches") + _expect(_first_receipts == _receipts, "all actual service and settlement receipts replay unchanged") + _write_var("before", before); _write_var("midnight", midnight); _write_var("paused", paused); _write_var("after", after); _write_var("next", next) + +func _reopen_dependency(kitchen_id: StringName) -> CommandResult: + return _runtime.submit_command(&"set_facility_policy", {&"facility_id": kitchen_id, &"patch": {&"business_open": true}}, &"player", &"", 10, -1, &"p04.dependency.reopen") + +func _assert_held(service: ServiceInstance, held_id: StringName, ids: Array[StringName], elapsed: int) -> void: + _expect(service.service_id == held_id and service.elapsed_minutes == elapsed and service.inventory_reservations == ids, "same service and own reservation IDs retain exact progress") + _expect(_service_receipts().is_empty() and _runtime.economy_service.get_balance(StringName("GUEST_WALLET:" + String(_guest_id))) == _original_price * 2, "no service sale or wallet charge during dependency closure") + for id: StringName in ids: + var reservation: InventoryReservation = _runtime.inventory_service.get_reservation(id) + _expect(reservation != null and reservation.state == InventoryReservation.State.ACTIVE, "own reservation remains reserved while dependency is closed") + +func _assert_completed(service: ServiceInstance, held_id: StringName, ids: Array[StringName]) -> void: + _expect(service.service_id == held_id and service.state == ServiceInstance.State.COMPLETED and service.completed_at == 1442, "same service completes once after dependency restoration") + _expect(service.inventory_reservations == ids and _service_receipts().size() == 1 and _runtime.economy_service.get_balance(StringName("GUEST_WALLET:" + String(_guest_id))) == _original_price, "same reserved service has one original-price payment") + for id: StringName in ids: + var reservation: InventoryReservation = _runtime.inventory_service.get_reservation(id) + _expect(reservation != null and reservation.state == InventoryReservation.State.CONSUMED, "own original reservation consumed once after restoration") + _expect(_runtime.operations_coordinator.get_day_summary(1) == _first_summary, "restored dependency does not mutate prior daily close") + +func _service_receipts() -> Array: + var selected: Array = [] + for receipt: Dictionary in _receipts: + for row: Dictionary in receipt[&"rows"]: + if row[&"category"] == &"SERVICE_SALE": + selected.append(receipt); break + return selected + +func _connect_receipts() -> void: + if _receipt_hook.is_valid() and _runtime.economy_service.transaction_posted.is_connected(_receipt_hook): + _runtime.economy_service.transaction_posted.disconnect(_receipt_hook) + _receipt_hook = func(id: StringName, entries: Array): + var rows: Array = [] + for row: LedgerEntry in entries: rows.append(row.to_dictionary()) + _receipts.append({&"id": id, &"minute": _clock.absolute_minute, &"rows": rows, &"staff_at_receipt": _runtime.facility_service.get_instance(_facility_id).active_staff_ids.duplicate()}) + _runtime.economy_service.transaction_posted.connect(_receipt_hook) + +func _cmd(kind: StringName, payload: Dictionary) -> CommandResult: + _serial += 1 + return _runtime.submit_command(kind, payload, &"player", &"", 10, -1, StringName("p04.order.shift.command.%d" % _serial)) + +func _observe(label: String) -> void: + label = _case + "-" + _observation_pass + "-" + label + var facility: FacilityInstance = _runtime.facility_service.get_instance(_facility_id) + var service: ServiceInstance = _runtime.facility_service.get_service(_service_id) + var guest: GuestRuntime = _runtime.guest_service.get_guest(_guest_id) + var workers: Array = [] + for id: StringName in _staff_ids: + var worker: StaffRuntime = _runtime.staff_service.get_staff(id) + var shift: ShiftInstance = _runtime.staff_service.get_shift(worker.shift_id) + workers.append({&"staff": worker.create_snapshot(), &"shift": shift.create_snapshot() if shift != null else {}, &"is_present": _runtime.staff_commute.is_present(worker, facility), &"requires_attendance": _runtime.staff_service.requires_attendance(id), &"at_facility": StaffCommuteService.is_at_facility(worker, facility), &"within_shift": shift.contains_minute(_clock.absolute_minute) if shift != null else false}) + _observations.append({&"label": label, &"minute": _clock.absolute_minute, &"workers": workers, &"facility_state": facility.state, &"power_available": facility.power_available, &"active_staff": facility.active_staff_ids.duplicate(), &"service": service.create_snapshot() if service != null else {}, &"request_present": _runtime.facility_service.get_request(_request_id) != null, &"wallet": _runtime.economy_service.get_balance(StringName("GUEST_WALLET:" + String(_guest_id))), &"available_meals": _runtime.inventory_service.available_quantity(facility.local_inventory_id, &"ingredient/basic_meal"), &"reservations": _runtime.inventory_service.create_snapshot(), &"guest": guest.create_snapshot() if guest != null else {}, &"receipts": _receipts.duplicate(true), &"day_summary": _runtime.operations_coordinator.get_day_summary(1), &"operations": _runtime.operations_coordinator.create_snapshot()}) + _write_var(_observation_pass + "-" + label.trim_prefix(_case + "-" + _observation_pass + "-"), _runtime.create_snapshot()) + +func _write_var(label: String, value: Variant) -> void: + var file := FileAccess.open(_evidence_dir.path_join(_case + "-" + label + ".var"), FileAccess.WRITE) + _expect(file != null, "write whole typed evidence " + label) + if file != null: file.store_buffer(var_to_bytes(value)); file.flush(); file.close() + var json_file := FileAccess.open(_evidence_dir.path_join(_case + "-" + label + ".json"), FileAccess.WRITE) + _expect(json_file != null, "write JSON mirror alongside authoritative typed snapshot") + if json_file != null: json_file.store_string(JSON.stringify(value, "\t")); json_file.flush(); json_file.close() + +func _finish_order() -> void: + var file := FileAccess.open(_evidence_dir.path_join("observations.json"), FileAccess.WRITE) + if file != null: + file.store_string(JSON.stringify({&"classification": "P04-01 owner-approved dependency closure across real midnight; unchanged service and reservations resume with one original-price payment; public NIGHT actors with controlled inherited cook setup; typed same-process replay only; not formal SaveService/OS/Windows/whole acceptance", &"observations": _observations, &"first_receipts": _first_receipts, &"replay_receipts": _receipts, &"first_summary": _first_summary, &"checks": _checks, &"failures": _failures}, "\t")); file.flush(); file.close() + _cleanup() + print("Midnight boundary diagnostic: %d checks, %d failures" % [_checks, _failures]) + quit(1 if _failures else 0) diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/approved-shift-current-r01.gd b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/approved-shift-current-r01.gd new file mode 100644 index 0000000..4303642 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/approved-shift-current-r01.gd @@ -0,0 +1,128 @@ +extends "res://tests/s3/test_runtime_actor_hardening.gd" +var _observations: Array[Dictionary] = [] +var _receipts: Array[Dictionary] = [] +var _first_receipts: Array[Dictionary] = [] +var _receipt_hook: Callable +var _evidence_dir := "" +var _facility_id: StringName = &"" +var _service_id: StringName = &"" +var _request_id: StringName = &"p04.order.shift.request" +var _guest_id: StringName = &"p04.order.shift.guest" +var _staff_ids: Array[StringName] = [&"p04.order.server.a", &"p04.order.server.b"] +var _serial := 0 +var _observation_pass := "first" + +func _run() -> void: + _evidence_dir = OS.get_environment("THE_TREE_ORDER_EVIDENCE") + if _evidence_dir.is_empty(): quit(2); return + _expect(DirAccess.make_dir_recursive_absolute(_evidence_dir) == OK, "fresh external evidence directory") + _reset_runtime(420410) + var facility := _build_cafeteria(true) + if facility == null: _finish_order(); return + _facility_id = facility.instance_id + var definition: FacilityDefinition = _runtime.definition_registry.get_facility(facility.definition_id) + for id: StringName in _staff_ids: + _expect(_cmd(&"register_staff", {&"staff_id": id, &"role_id": &"server", &"options": {&"state": StaffRuntime.State.OFF_DUTY, &"current_cell": Vector3i.ZERO}}).is_success(), "register real Staff actor " + String(id)) + _expect(_cmd(&"set_staff_work_assignment", {&"staff_id": id, &"template_id": &"DAY", &"facility_id": _facility_id}).is_success(), "original DAY 06:00-18:00 shift " + String(id)) + # Publicly registered Staff actors walk normally. The inherited fixture's + # kitchen cook is explicitly placed at the kitchen and uses its existing FLEX + # shift; this is not natural hiring/unlock or a proof of the whole labor flow. + var boundary := ShiftInstance.DAY_END + var queue_at := boundary - definition.base_service_minutes - 1 + _expect(queue_at > _clock.absolute_minute, "real ticks can reach exact admission minute") + _clock.advance_minutes(queue_at - _clock.absolute_minute) + _expect(facility.active_staff_ids == _staff_ids, "both daytime actors are physically projected before service") + for id: StringName in _staff_ids: + var worker: StaffRuntime = _runtime.staff_service.get_staff(id) + _expect(_runtime.staff_service.requires_attendance(id) and StaffCommuteService.is_at_facility(worker, facility) and worker.current_cell != Vector3i.ZERO, "actual workplace arrival and attendance plan " + String(id)) + _expect(_stock(facility.local_inventory_id, &"ingredient/basic_meal", 1, &"p04.order.shift.stock"), "one actual meal to reserve") + _expect(_cmd(&"spawn_guest", {&"guest_id": _guest_id, &"guest_type_id": &"traveler", &"gold": definition.base_price * 2, &"options": {&"state": GuestRuntime.State.DECIDING, &"current_cell": Vector3i.ZERO, &"planned_exit_at": boundary + definition.base_service_minutes}}).is_success(), "real public Guest actor and wallet") + _expect(_cmd(&"create_service_request", {&"facility_id": _facility_id, &"request_id": _request_id, &"guest_ids": [_guest_id]}).is_success(), "original price and duration service request") + _clock.advance_one_minute() + var active: Array = _runtime.facility_service.get_active_services(_facility_id) + _expect(active.size() == 1, "exactly one actual service starts") + if active.size() != 1: _finish_order(); return + var service: ServiceInstance = active[0]; _service_id = service.service_id + _expect(service.duration_minutes == definition.base_service_minutes and service.price_snapshot == definition.base_price, "no price or duration override") + _expect(service.started_at + service.duration_minutes == boundary, "normal start plus original duration reaches 18:00 exactly") + _clock.advance_minutes(boundary - 1 - _clock.absolute_minute) + _expect(service.elapsed_minutes == service.duration_minutes - 1, "one real service minute remains at 17:59") + _observe("before-17-59") + var before: Dictionary = _runtime.create_snapshot() + var wallet_before: int = _runtime.economy_service.get_balance(StringName("GUEST_WALLET:" + String(_guest_id))) + _connect_receipts() + _clock.register_tick_handler(_clock.TickPhase.FACILITY_COMPLETION, &"aa.p04.order.observe", func(minute: int): + if minute == boundary: _observe("18-00-before-facility") + ) + _clock.register_tick_handler(_clock.TickPhase.FACILITY_COMPLETION, &"zz.p04.order.observe", func(minute: int): + if minute == boundary: _observe("18-00-after-facility") + ) + _clock.register_tick_handler(_clock.TickPhase.AI_DECISIONS, &"zz.p04.order.observe", func(minute: int): + if minute == boundary: _observe("18-00-after-staff") + ) + _clock.advance_one_minute() + _observe("18-00-tick-complete") + var after: Dictionary = _runtime.create_snapshot() + var wallet_after: int = _runtime.economy_service.get_balance(StringName("GUEST_WALLET:" + String(_guest_id))) + _expect(_clock.absolute_minute == boundary and facility.active_staff_ids.is_empty(), "clock reaches original shift end and removes daytime attendance") + _expect(wallet_after == wallet_before - definition.base_price and _receipts.size() == 1, "approved last DAY interval completes and charges once before handover") + var all_consumed := not service.inventory_reservations.is_empty() + for reservation_id: StringName in service.inventory_reservations: + var reservation: InventoryReservation = _runtime.inventory_service.get_reservation(reservation_id) + if reservation == null or reservation.state != InventoryReservation.State.CONSUMED: + all_consumed = false + _expect(service.state == ServiceInstance.State.COMPLETED and all_consumed and _runtime.inventory_service.available_quantity(facility.local_inventory_id, &"ingredient/basic_meal") == 0, "completed paid service consumed its own real reserved meal exactly once") + _clock.advance_one_minute(); _observe("18-01-tick-complete") + var final: Dictionary = _runtime.create_snapshot() + _first_receipts.assign(_receipts.duplicate(true)) + _expect(_runtime.restore_snapshot(before), "restore actual boundary-before whole state") + _observation_pass = "replay" + _receipts.clear(); _connect_receipts(); _clock.advance_one_minute() + _expect(var_to_bytes(_runtime.create_snapshot()) == var_to_bytes(after), "same boundary replay reproduces all typed state including history") + _clock.advance_one_minute() + _expect(var_to_bytes(_runtime.create_snapshot()) == var_to_bytes(final), "next minute replay reproduces all typed state") + _expect(_first_receipts.size() == 1 and _receipts.size() == 1, "first pass and snapshot replay each observe exactly one completion payment") + _write_var("before", before); _write_var("after", after); _write_var("next", final) + _finish_order() + +func _connect_receipts() -> void: + if _receipt_hook.is_valid() and _runtime.economy_service.transaction_posted.is_connected(_receipt_hook): + _runtime.economy_service.transaction_posted.disconnect(_receipt_hook) + _receipt_hook = func(id: StringName, entries: Array): + var rows: Array = [] + for row: LedgerEntry in entries: rows.append(row.to_dictionary()) + _receipts.append({&"id": id, &"minute": _clock.absolute_minute, &"rows": rows, &"staff_at_receipt": _runtime.facility_service.get_instance(_facility_id).active_staff_ids.duplicate()}) + _runtime.economy_service.transaction_posted.connect(_receipt_hook) + +func _cmd(kind: StringName, payload: Dictionary) -> CommandResult: + _serial += 1 + return _runtime.submit_command(kind, payload, &"player", &"", 10, -1, StringName("p04.order.shift.command.%d" % _serial)) + +func _observe(label: String) -> void: + label = _observation_pass + "-" + label + var facility: FacilityInstance = _runtime.facility_service.get_instance(_facility_id) + var service: ServiceInstance = _runtime.facility_service.get_service(_service_id) + var guest: GuestRuntime = _runtime.guest_service.get_guest(_guest_id) + var workers: Array = [] + for id: StringName in _staff_ids: + var worker: StaffRuntime = _runtime.staff_service.get_staff(id) + var shift: ShiftInstance = _runtime.staff_service.get_shift(worker.shift_id) + workers.append({&"staff": worker.create_snapshot(), &"shift": shift.create_snapshot() if shift != null else {}, &"is_present": _runtime.staff_commute.is_present(worker, facility), &"requires_attendance": _runtime.staff_service.requires_attendance(id), &"at_facility": StaffCommuteService.is_at_facility(worker, facility), &"within_shift": shift.contains_minute(_clock.absolute_minute) if shift != null else false}) + _observations.append({&"label": label, &"minute": _clock.absolute_minute, &"workers": workers, &"facility_state": facility.state, &"active_staff": facility.active_staff_ids.duplicate(), &"service": service.create_snapshot() if service != null else {}, &"request_present": _runtime.facility_service.get_request(_request_id) != null, &"wallet": _runtime.economy_service.get_balance(StringName("GUEST_WALLET:" + String(_guest_id))), &"available_meals": _runtime.inventory_service.available_quantity(facility.local_inventory_id, &"ingredient/basic_meal"), &"reservations": _runtime.inventory_service.create_snapshot(), &"guest": guest.create_snapshot() if guest != null else {}, &"receipts": _receipts.duplicate(true)}) + _write_var(label, _runtime.create_snapshot()) + +func _write_var(label: String, value: Variant) -> void: + var file := FileAccess.open(_evidence_dir.path_join(label + ".var"), FileAccess.WRITE) + _expect(file != null, "write whole typed evidence " + label) + if file != null: file.store_buffer(var_to_bytes(value)); file.flush(); file.close() + var json_file := FileAccess.open(_evidence_dir.path_join(label + ".json"), FileAccess.WRITE) + _expect(json_file != null, "write engine JSON projection alongside authoritative typed evidence " + label) + if json_file != null: json_file.store_string(JSON.stringify(value, "\t")); json_file.flush(); json_file.close() + +func _finish_order() -> void: + var file := FileAccess.open(_evidence_dir.path_join("observations.json"), FileAccess.WRITE) + if file != null: + file.store_string(JSON.stringify({&"classification": "P04-01 owner-approved DAY-end last interval completion diagnostic; public registered Staff and Guest; inherited physically placed kitchen fixture; snapshot replay only; no formal save/device/whole-unit acceptance", &"observations": _observations, &"first_receipts": _first_receipts, &"replay_receipts": _receipts, &"checks": _checks, &"failures": _failures}, "\t")); file.flush(); file.close() + _cleanup() + print("Order boundary diagnostic: %d checks, %d failures" % [_checks, _failures]) + quit(1 if _failures else 0) diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/owner_p04_timeout_budget.py b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/owner_p04_timeout_budget.py new file mode 100644 index 0000000..86ec9c0 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/owner_p04_timeout_budget.py @@ -0,0 +1,19 @@ +"""Owner-authorized P04 implementer LLM budget only; no stored policy edits.""" +import copy,threading + +def install(Runner): + previous=Runner.process + def owner_process(self,task_id,role,service,*args,**kwargs): + targeted=(self.config['project']=='the-tree-p04-01' and task_id=='P04-01' and role=='implementer' and service=='codex') + if not targeted:return previous(self,task_id,role,service,*args,**kwargs) + assert threading.active_count()==1,'dedicated serial owner CLI required' + assert not getattr(self,'_owner_p04_budget_active',False),'no nested override' + old=self.config['policy'];before=copy.deepcopy(old);self._owner_p04_budget_active=True + self.event(task_id,'owner_authorized_llm_timeout_removal',{'previous':old['timeout_seconds'],'effective':None,'authority':'個別上限を全て撤廃して、勝手に作業停止することを避けて','commander':'OPUS_NATIVE_FIRST_AND_LIMITS_DECISION.json','scope':'the-tree-p04-01/P04-01 implementer codex only; dedicated serial CLI','registered_config_unchanged':True,'test_timeouts_unchanged':True}) + try: + self.config['policy']=dict(old,timeout_seconds=None) + return previous(self,task_id,role,service,*args,**kwargs) + finally: + self.config['policy']=old;self._owner_p04_budget_active=False + assert self.config['policy']==before and self.config['policy'] is old + Runner.process=owner_process diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-dependency-formal-native-r01.py b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-dependency-formal-native-r01.py new file mode 100644 index 0000000..c0e32ca --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-dependency-formal-native-r01.py @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- +from pathlib import Path +import hashlib, importlib.util, json, os, shutil, subprocess, sys +sys.dont_write_bytecode = True +R = Path(__file__).resolve().parents[2] +A = R / 'artifacts/original-completion-2026-10-02' +OUT = A / 'p04-approved-dependency-formal-native-r01' +QA = A / 'p04-approved-dependency-formal-prep-r01/dependency-formal.gd' +INPUT = A / 'p04-approved-dependency-formal-prep-r01/INPUT.json' +TEST = 'tests/s3/test_runtime_staff_assignment.gd' +def module(name, path): + spec = importlib.util.spec_from_file_location(name, path) + m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m); return m +def main(): + r = module('order_repro_runner', R / 'tools/run_all_tests.py') + root = r.source_refs(R); source = {n:v['sha256'] for n,v in root.items()} + source_path = A / 'p04-approved-shift-current-prep-r01/SOURCE_MAP.json' + assert source == r.read(source_path) and len(source) == 1338 + fixed = list(r.read(INPUT)['whole_typed_inputs'].values()) + [dict(path=str(INPUT),bytes=INPUT.stat().st_size,sha256=r.sha(INPUT)),dict(path=str(QA),bytes=QA.stat().st_size,sha256=r.sha(QA))] + def fixed_guard(): + for pin in fixed: + f=Path(pin['path']); assert not f.is_symlink() and f.stat().st_size==pin['bytes'] and r.sha(f)==pin['sha256'] + fixed_guard() + protected = r.default_player(R) + docs = {n:r.sha(R / 'docs/plans/original-completion-2026-10-02' / n) for n in ['IMPLEMENTATION_PLAN.md','PROGRESS_INTEGRATION.md','work_packages.json','progress_snapshot.json']} + old = Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/.runtime/P18-01-CODE/build/p18-relationship-evidence') + assert r.read(old / 'runner-ended.json')['passed'] + assert r.read(old / 'runner-input.json')['selected_source_map'] == source + assert shutil.disk_usage(A).free >= 1024**3 + Path('/Applications/Godot.app/Contents/MacOS/Godot').stat().st_size + 136*1024**2 + outer = module('order_literal_owned', r.SUPPORT / 'owned_outer.py') + assert not outer.native.helper['live_engines']() + refs = dict(root); refs[TEST] = dict(path=str(QA), bytes=QA.stat().st_size, sha256=r.sha(QA)) + expected = {n:dict(bytes=p['bytes'],sha256=p['sha256']) for n,p in refs.items()} + selected = dict(root_before=root,map={n:p['sha256'] for n,p in refs.items()},timeout=1200) + assert not OUT.exists(); OUT.mkdir(); stage=OUT/'stage'; stage.mkdir() + for leaf in ['starters','bootstrap']: (OUT/leaf).mkdir() + for n,p in r.read(r.SUPPORT/'bootstrap-scripts.json').items(): + data=p['text'].encode(); assert hashlib.sha256(data).hexdigest()==p['sha256']; (OUT/'bootstrap'/n).write_bytes(data) + for n,p in refs.items(): + dst=stage/n; dst.parent.mkdir(parents=True,exist_ok=True); r.copy_source(Path(p['path']),dst) + assert r.inventory(stage,stage=True)==expected + cache=old/'stage/.godot'; cache_before=r.inventory(cache) + for n in cache_before: + src=cache/n; dst=stage/'.godot'/n; dst.parent.mkdir(parents=True,exist_ok=True) + subprocess.run(['/bin/cp','-c',str(src),str(dst)],check=True); assert src.stat().st_ino != dst.stat().st_ino + assert r.inventory(stage/'.godot')==cache_before + r.write(OUT/'cache-reuse.json',dict(ended_run=str(old),ended_receipt_sha256=r.sha(old/'runner-ended.json'),whole_cache=cache_before,independent_inode=True,ordinary_import_required=True,ordinary_parse_required=True)) + paths=['res://'+n for n in sorted(refs) if n.endswith('.gd')]; r.write(OUT/'parse-paths.json',paths) + markers=module('order_literal_markers',R/'tools/strict_test_markers.py') + contracts=markers.load_contracts(R/'docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json') + contracts[TEST]=dict(test=TEST,template='Dependency formal restart: checks, failures',required=True) + policy=r.read(r.SUPPORT/'suite-policy.json'); assert TEST not in policy['suite_policies'] + r.write(OUT/'contracts.json',contracts) + r.write(OUT/'runner-input.json',dict(classification='P04-01 public formal SaveService Writer and distinct-PID Reader for approved dependency pause/resume across midnight on current source; snapshots are exact typed evidence and JSON mirrors lose Variant key/value types; no formal save, Windows or whole-unit acceptance',owner_runner_pid=os.getpid(),wrapper_sha256=r.sha(__file__),QA=dict(path=str(QA),sha256=r.sha(QA),bytes=QA.stat().st_size),runner_sha256=r.sha(R/'tools/run_all_tests.py'),source_before=root,selected_source_map=selected['map'],source_map_authority=str(source_path),default_player_before=protected,doc4_before=docs,fixed_input_pins=fixed,source_adoption=False,QA_overrides=[TEST],ordinary_disk_floor_bytes=r.MIN_SPACE,functional_watchdog_seconds=1200)) + diagnostics=module('order_literal_diagnostics',r.SUPPORT/'diagnostic_gate.py'); owners=module('order_literal_owners',r.SUPPORT/'ordinary_proof_gate.py'); audio=module('order_literal_audio',r.SUPPORT/'audio_evidence_gate.py') + original=outer.run_phase + def run_phase(argv,folder,timeout,env,**kwargs): + env=dict(env) + if folder.name in ['writer','reader']: env.update(THE_TREE_BOUNDARY_RESTART_EVIDENCE=str(OUT/'restart-evidence'), THE_TREE_BOUNDARY_RESTART_MODE=folder.name, THE_TREE_BOUNDARY_RESTART_INPUT=str(INPUT)) + return original(argv,folder,timeout,env,**kwargs) + outer.run_phase=run_phase + phases=[]; previous={}; error=None; formal_before=None; public=(stage/'project.godot').read_bytes() + try: + for phase,test in [('import',None),('parse',None),('writer',TEST),('reader',TEST)]: + if phase == 'reader': formal_before = {n:r.inventory(Path(p)) for n,p in r.read(OUT/'restart-evidence/writer.json')['slots'].items()} + row=r.execute_phase('/Applications/Godot.app/Contents/MacOS/Godot',stage,OUT,phase,test,selected,expected,previous,policy,contracts,paths,public,protected,R,outer,markers,diagnostics,owners,audio) + phases.append(row); r.write(OUT/(phase+'-actual-phase.json'),row) + print(json.dumps(dict(phase=phase,passed=row['passed'],checks=row.get('reported_checks'),error=row.get('validation_error'))),flush=True) + if not row['passed']: + error=phase+' strict phase failure'; break + except BaseException as caught: error=type(caught).__name__+': '+str(caught) + finally: cleanup,cleanup_errors=outer.finish_captured(outer.OWNED) + fixed_guard() + assert r.source_refs(R)==root and r.default_player(R)==protected + assert {n:r.sha(R/'docs/plans/original-completion-2026-10-02'/n) for n in docs}==docs + assert r.inventory(stage,stage=True)==dict(expected,**previous) and r.inventory(cache)==cache_before + formal_after = {n:r.inventory(Path(p)) for n,p in r.read(OUT/'restart-evidence/writer.json')['slots'].items()} if (OUT/'restart-evidence/writer.json').exists() else None + formal_unchanged = formal_before is not None and formal_after == formal_before + passed=formal_unchanged and error is None and len(phases)==4 and all(p['passed'] for p in phases) and not cleanup_errors and all(p['engine_ended'] for p in cleanup) + r.write(OUT/'execution.json',dict(passed=passed,error=error,phases=phases,actual_captured_PIDs=[p.pid for p in outer.OWNED],cleanup=cleanup,cleanup_errors=cleanup_errors,all_source_unchanged=True,all_default_player_unchanged=True,doc4_unchanged=True,actual_native=len(outer.OWNED),formal_before=formal_before,formal_after=formal_after,formal_unchanged=formal_unchanged,whole_goal_accepted=False,unit_accepted=False)) + print(json.dumps(dict(passed=passed,error=error,actual_native=len(outer.OWNED))),flush=True) + return 0 if passed else 1 +if __name__=='__main__': raise SystemExit(main()) diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-dependency-formal-prepare-r01.py b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-dependency-formal-prepare-r01.py new file mode 100644 index 0000000..a1989d7 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-dependency-formal-prepare-r01.py @@ -0,0 +1,70 @@ +from pathlib import Path +import hashlib,importlib.util,json,shutil +R=Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部');A=R/'artifacts/original-completion-2026-10-02';P=A/'p04-approved-dependency-formal-prep-r01';assert not P.exists();P.mkdir();N=A/'p04-approved-dependency-midnight-native-r01';sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest();assert json.loads((N/'execution.json').read_text())['passed'];base=A/'p04-01-formal-boundary-reload-r01.gd';s=base.read_text();s=s[:s.index('func _branch(')]+'''func _run() -> void: + _folder = OS.get_environment("THE_TREE_BOUNDARY_RESTART_EVIDENCE") + _mode = OS.get_environment("THE_TREE_BOUNDARY_RESTART_MODE") + if _folder.is_empty() or _mode not in ["writer", "reader"]: quit(2); return + _expect(DirAccess.make_dir_recursive_absolute(_folder) == OK, "fresh formal output") + var manifest: Dictionary = _json(OS.get_environment("THE_TREE_BOUNDARY_RESTART_INPUT")) + var inputs: Dictionary = manifest["whole_typed_inputs"] + _reset() + if _mode == "writer": + for point: String in inputs: _write_save(point, _input(inputs[point])) + else: + var writer: Dictionary = _json(_folder.path_join("writer.json")) + _expect(int(writer["pid"]) != OS.get_process_id() and String(writer["profile"]) != OS.get_user_data_dir(), "distinct actual Writer/Reader PID and private profiles") + for label: String in writer["slots"]: _copy_package(String(writer["slots"][label]), label) + for point: String in inputs: _load_save(point, _input(inputs[point])) + _load_save("before", _input(inputs["before"])) + var receipts: Array = [] + _runtime.economy_service.transaction_posted.connect(func(id: StringName, entries: Array): + var rows: Array = [] + for row: LedgerEntry in entries: rows.append(row.to_dictionary()) + receipts.append({&"id": id, &"minute": _clock.absolute_minute, &"rows": rows}) + ) + for point: String in ["midnight", "paused", "after", "next"]: + if point == "after": + var id := StringName(manifest["kitchen_id"]) + var command: CommandResult = _runtime.submit_command(&"set_facility_policy", {&"facility_id": id, &"patch": {&"business_open": true}}, &"player", &"", 10, -1, &"p04.dependency.reopen") + _expect(command.is_success(), "same public dependency reopen after formal restart") + _clock.advance_one_minute() + var expected := _input(inputs[point]) + _expect(var_to_bytes(_runtime.create_snapshot()) == var_to_bytes(expected), "all typed state after formal restart equals original native " + point) + _proof("replayed-" + point, _runtime.create_snapshot()) + var sale_count := 0 + for receipt: Dictionary in receipts: + for row: Dictionary in receipt[&"rows"]: + if row[&"category"] == &"SERVICE_SALE": + sale_count += 1 + _expect(receipt[&"minute"] == 1442 and row[&"amount"] == 25, "exact original service sale after formal restart") + _expect(sale_count == 1, "one sale notification across paused midnight and recovery") + _results.append({&"receipts": receipts, &"sale_count": sale_count}) + _proof("receipts", receipts) + _finish() +func _finish() -> void: + var file := FileAccess.open(_folder.path_join(_mode + ".json"), FileAccess.WRITE) + if file != null: + file.store_string(JSON.stringify({&"pid": OS.get_process_id(), &"profile": OS.get_user_data_dir(), &"slots": _slots, &"results": _results, &"checks": _checks, &"failures": _failures}, "\\t")); file.flush(); file.close() + _cleanup() + print("Dependency formal restart: %d checks, %d failures" % [_checks, _failures]) + quit(1 if _failures else 0) +''' +# Price assertion is bound to exact original definition/input, not a new product value. +s=s.replace('row[&"amount"] == 25','row[&"amount"] == int(manifest["original_price"])');Q=P/'dependency-formal.gd';Q.write_text(s) +obs=json.loads((N/'order-evidence/observations.json').read_text());kitchen=obs['observations'][0]['service']['facility_id'] if 'facility_id'in obs['observations'][0]['service'] else None +before=json.loads((N/'order-evidence/midnight-before.json').read_text());facilities=before['systems']['runtime']['facilities']['instances'];dining=next(f for f in facilities if f['definition_id']=='cafeteria');kitchen=dining['related_facility_id'];inputs={} +for point in ['before','midnight','paused','after','next']: + f=N/'order-evidence'/('midnight-'+point+'.var');inputs[point]={'path':str(f),'bytes':f.stat().st_size,'sha256':sha(f)} +M=P/'INPUT.json';M.write_text(json.dumps({'source_native':str(N),'execution_sha256':sha(N/'execution.json'),'source_refs':1338,'whole_typed_inputs':inputs,'kitchen_id':kitchen,'original_price':obs['observations'][0]['service']['price_snapshot']},indent=2)+'\n') +w=(A/'p04-approved-shift-current-native-r01.py').read_text().replace('p04-approved-shift-current-native-r01','p04-approved-dependency-formal-native-r01').replace("QA = A / 'p04-approved-shift-current-prep-r01/approved-shift.gd'","QA = A / 'p04-approved-dependency-formal-prep-r01/dependency-formal.gd'\nINPUT = A / 'p04-approved-dependency-formal-prep-r01/INPUT.json'") +w=w.replace("Order boundary diagnostic:","Dependency formal restart:").replace('P04-01 approved 18:00 completion-before-handover diagnostic on current source','P04-01 public formal SaveService Writer and distinct-PID Reader for approved dependency pause/resume across midnight on current source') +w=w.replace("if folder.name=='repro': env['THE_TREE_ORDER_EVIDENCE']=str(OUT/'order-evidence')","if folder.name in ['writer','reader']: env.update(THE_TREE_BOUNDARY_RESTART_EVIDENCE=str(OUT/'restart-evidence'), THE_TREE_BOUNDARY_RESTART_MODE=folder.name, THE_TREE_BOUNDARY_RESTART_INPUT=str(INPUT))") +w=w.replace("[('import',None),('parse',None),('repro',TEST)]","[('import',None),('parse',None),('writer',TEST),('reader',TEST)]") +w=w.replace('len(phases)==3','len(phases)==4').replace('phases=[]; previous={}; error=None;', 'phases=[]; previous={}; error=None; formal_before=None;') +w=w.replace(" row=r.execute_phase("," if phase == 'reader': formal_before = {n:r.inventory(Path(p)) for n,p in r.read(OUT/'restart-evidence/writer.json')['slots'].items()}\n row=r.execute_phase(") +w=w.replace(' passed=error is None'," formal_after = {n:r.inventory(Path(p)) for n,p in r.read(OUT/'restart-evidence/writer.json')['slots'].items()} if (OUT/'restart-evidence/writer.json').exists() else None\n formal_unchanged = formal_before is not None and formal_after == formal_before\n passed=formal_unchanged and error is None") +w=w.replace('whole_goal_accepted=False,unit_accepted=False','formal_before=formal_before,formal_after=formal_after,formal_unchanged=formal_unchanged,whole_goal_accepted=False,unit_accepted=False') +# Guard the raw inputs and QA before/after execution, besides existing source/profile/cache guards. +w=w.replace(' protected = r.default_player(R)'," fixed = list(r.read(INPUT)['whole_typed_inputs'].values()) + [dict(path=str(INPUT),bytes=INPUT.stat().st_size,sha256=r.sha(INPUT)),dict(path=str(QA),bytes=QA.stat().st_size,sha256=r.sha(QA))]\n def fixed_guard():\n for pin in fixed:\n f=Path(pin['path']); assert not f.is_symlink() and f.stat().st_size==pin['bytes'] and r.sha(f)==pin['sha256']\n fixed_guard()\n protected = r.default_player(R)") +w=w.replace(' assert r.source_refs(R)==root',' fixed_guard()\n assert r.source_refs(R)==root').replace('source_adoption=False,QA_overrides=[TEST]','fixed_input_pins=fixed,source_adoption=False,QA_overrides=[TEST]') +W=A/'p04-approved-dependency-formal-native-r01.py';compile(w,str(W),'exec');W.write_text(w);floor=1024**3+Path('/Applications/Godot.app/Contents/MacOS/Godot').stat().st_size+136*1024**2;free=shutil.disk_usage(A).free;assert free>=floor;rec={'scope':'Root formal save/restore acceptance fixture only; no worker or product edit','source_native':str(N),'probe_sha256':sha(Q),'wrapper_sha256':sha(W),'input_manifest_sha256':sha(M),'original_public_formal_pattern':str(base),'original_pattern_sha256':sha(base),'planned_phases':['import','parse','writer','reader'],'free_before':free,'required_free':floor,'estimated_seconds':90,'formal_credit':0};(P/'ADMISSION.json').write_text(json.dumps(rec,indent=2)+'\n');print(rec) diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-dependency-midnight-native-r01.py b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-dependency-midnight-native-r01.py new file mode 100644 index 0000000..13ae52d --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-dependency-midnight-native-r01.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +from pathlib import Path +import hashlib, importlib.util, json, os, shutil, subprocess, sys +sys.dont_write_bytecode = True +R = Path(__file__).resolve().parents[2] +A = R / 'artifacts/original-completion-2026-10-02' +OUT = A / 'p04-approved-dependency-midnight-native-r01' +QA = A / 'p04-approved-dependency-midnight-prep-r01/approved-dependency-midnight.gd' +TEST = 'tests/s3/test_runtime_staff_assignment.gd' +def module(name, path): + spec = importlib.util.spec_from_file_location(name, path) + m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m); return m +def main(): + r = module('order_repro_runner', R / 'tools/run_all_tests.py') + root = r.source_refs(R); source = {n:v['sha256'] for n,v in root.items()} + source_path = A / 'p04-approved-dependency-midnight-prep-r01/SOURCE_MAP.json' + assert source == r.read(source_path) and len(source) == 1338 + protected = r.default_player(R) + docs = {n:r.sha(R / 'docs/plans/original-completion-2026-10-02' / n) for n in ['IMPLEMENTATION_PLAN.md','PROGRESS_INTEGRATION.md','work_packages.json','progress_snapshot.json']} + old = Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/.runtime/P18-01-CODE/build/p18-relationship-evidence') + assert r.read(old / 'runner-ended.json')['passed'] + assert r.read(old / 'runner-input.json')['selected_source_map'] == source + assert shutil.disk_usage(A).free >= 1024**3 + Path('/Applications/Godot.app/Contents/MacOS/Godot').stat().st_size + 136*1024**2 + outer = module('order_literal_owned', r.SUPPORT / 'owned_outer.py') + assert not outer.native.helper['live_engines']() + refs = dict(root); refs[TEST] = dict(path=str(QA), bytes=QA.stat().st_size, sha256=r.sha(QA)) + expected = {n:dict(bytes=p['bytes'],sha256=p['sha256']) for n,p in refs.items()} + selected = dict(root_before=root,map={n:p['sha256'] for n,p in refs.items()},timeout=1200) + assert not OUT.exists(); OUT.mkdir(); stage=OUT/'stage'; stage.mkdir() + for leaf in ['starters','bootstrap']: (OUT/leaf).mkdir() + for n,p in r.read(r.SUPPORT/'bootstrap-scripts.json').items(): + data=p['text'].encode(); assert hashlib.sha256(data).hexdigest()==p['sha256']; (OUT/'bootstrap'/n).write_bytes(data) + for n,p in refs.items(): + dst=stage/n; dst.parent.mkdir(parents=True,exist_ok=True); r.copy_source(Path(p['path']),dst) + assert r.inventory(stage,stage=True)==expected + cache=old/'stage/.godot'; cache_before=r.inventory(cache) + for n in cache_before: + src=cache/n; dst=stage/'.godot'/n; dst.parent.mkdir(parents=True,exist_ok=True) + subprocess.run(['/bin/cp','-c',str(src),str(dst)],check=True); assert src.stat().st_ino != dst.stat().st_ino + assert r.inventory(stage/'.godot')==cache_before + r.write(OUT/'cache-reuse.json',dict(ended_run=str(old),ended_receipt_sha256=r.sha(old/'runner-ended.json'),whole_cache=cache_before,independent_inode=True,ordinary_import_required=True,ordinary_parse_required=True)) + paths=['res://'+n for n in sorted(refs) if n.endswith('.gd')]; r.write(OUT/'parse-paths.json',paths) + markers=module('order_literal_markers',R/'tools/strict_test_markers.py') + contracts=markers.load_contracts(R/'docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json') + contracts[TEST]=dict(test=TEST,template='Midnight boundary diagnostic: checks, failures',required=True) + policy=r.read(r.SUPPORT/'suite-policy.json'); assert TEST not in policy['suite_policies'] + r.write(OUT/'contracts.json',contracts) + r.write(OUT/'runner-input.json',dict(classification='P04-01 approved dependency pause/resume across midnight on current source; snapshots are exact typed evidence and JSON mirrors lose Variant key/value types; no formal save, Windows or whole-unit acceptance',owner_runner_pid=os.getpid(),wrapper_sha256=r.sha(__file__),QA=dict(path=str(QA),sha256=r.sha(QA),bytes=QA.stat().st_size),runner_sha256=r.sha(R/'tools/run_all_tests.py'),source_before=root,selected_source_map=selected['map'],source_map_authority=str(source_path),default_player_before=protected,doc4_before=docs,source_adoption=False,QA_overrides=[TEST],ordinary_disk_floor_bytes=r.MIN_SPACE,functional_watchdog_seconds=1200)) + diagnostics=module('order_literal_diagnostics',r.SUPPORT/'diagnostic_gate.py'); owners=module('order_literal_owners',r.SUPPORT/'ordinary_proof_gate.py'); audio=module('order_literal_audio',r.SUPPORT/'audio_evidence_gate.py') + original=outer.run_phase + def run_phase(argv,folder,timeout,env,**kwargs): + env=dict(env) + if folder.name=='repro': env['THE_TREE_ORDER_EVIDENCE']=str(OUT/'order-evidence') + return original(argv,folder,timeout,env,**kwargs) + outer.run_phase=run_phase + phases=[]; previous={}; error=None; public=(stage/'project.godot').read_bytes() + try: + for phase,test in [('import',None),('parse',None),('repro',TEST)]: + row=r.execute_phase('/Applications/Godot.app/Contents/MacOS/Godot',stage,OUT,phase,test,selected,expected,previous,policy,contracts,paths,public,protected,R,outer,markers,diagnostics,owners,audio) + phases.append(row); r.write(OUT/(phase+'-actual-phase.json'),row) + print(json.dumps(dict(phase=phase,passed=row['passed'],checks=row.get('reported_checks'),error=row.get('validation_error'))),flush=True) + if not row['passed']: + error=phase+' strict phase failure'; break + except BaseException as caught: error=type(caught).__name__+': '+str(caught) + finally: cleanup,cleanup_errors=outer.finish_captured(outer.OWNED) + assert r.source_refs(R)==root and r.default_player(R)==protected + assert {n:r.sha(R/'docs/plans/original-completion-2026-10-02'/n) for n in docs}==docs + assert r.inventory(stage,stage=True)==dict(expected,**previous) and r.inventory(cache)==cache_before + passed=error is None and len(phases)==3 and all(p['passed'] for p in phases) and not cleanup_errors and all(p['engine_ended'] for p in cleanup) + r.write(OUT/'execution.json',dict(passed=passed,error=error,phases=phases,actual_captured_PIDs=[p.pid for p in outer.OWNED],cleanup=cleanup,cleanup_errors=cleanup_errors,all_source_unchanged=True,all_default_player_unchanged=True,doc4_unchanged=True,actual_native=len(outer.OWNED),whole_goal_accepted=False,unit_accepted=False)) + print(json.dumps(dict(passed=passed,error=error,actual_native=len(outer.OWNED))),flush=True) + return 0 if passed else 1 +if __name__=='__main__': raise SystemExit(main()) diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-shift-current-native-r01.py b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-shift-current-native-r01.py new file mode 100644 index 0000000..71c4d6b --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-shift-current-native-r01.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +from pathlib import Path +import hashlib, importlib.util, json, os, shutil, subprocess, sys +sys.dont_write_bytecode = True +R = Path(__file__).resolve().parents[2] +A = R / 'artifacts/original-completion-2026-10-02' +OUT = A / 'p04-approved-shift-current-native-r01' +QA = A / 'p04-approved-shift-current-prep-r01/approved-shift.gd' +TEST = 'tests/s3/test_runtime_staff_assignment.gd' +def module(name, path): + spec = importlib.util.spec_from_file_location(name, path) + m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m); return m +def main(): + r = module('order_repro_runner', R / 'tools/run_all_tests.py') + root = r.source_refs(R); source = {n:v['sha256'] for n,v in root.items()} + source_path = A / 'p04-approved-shift-current-prep-r01/SOURCE_MAP.json' + assert source == r.read(source_path) and len(source) == 1338 + protected = r.default_player(R) + docs = {n:r.sha(R / 'docs/plans/original-completion-2026-10-02' / n) for n in ['IMPLEMENTATION_PLAN.md','PROGRESS_INTEGRATION.md','work_packages.json','progress_snapshot.json']} + old = Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/.runtime/P18-01-CODE/build/p18-relationship-evidence') + assert r.read(old / 'runner-ended.json')['passed'] + assert r.read(old / 'runner-input.json')['selected_source_map'] == source + assert shutil.disk_usage(A).free >= 1024**3 + Path('/Applications/Godot.app/Contents/MacOS/Godot').stat().st_size + 136*1024**2 + outer = module('order_literal_owned', r.SUPPORT / 'owned_outer.py') + assert not outer.native.helper['live_engines']() + refs = dict(root); refs[TEST] = dict(path=str(QA), bytes=QA.stat().st_size, sha256=r.sha(QA)) + expected = {n:dict(bytes=p['bytes'],sha256=p['sha256']) for n,p in refs.items()} + selected = dict(root_before=root,map={n:p['sha256'] for n,p in refs.items()},timeout=1200) + assert not OUT.exists(); OUT.mkdir(); stage=OUT/'stage'; stage.mkdir() + for leaf in ['starters','bootstrap']: (OUT/leaf).mkdir() + for n,p in r.read(r.SUPPORT/'bootstrap-scripts.json').items(): + data=p['text'].encode(); assert hashlib.sha256(data).hexdigest()==p['sha256']; (OUT/'bootstrap'/n).write_bytes(data) + for n,p in refs.items(): + dst=stage/n; dst.parent.mkdir(parents=True,exist_ok=True); r.copy_source(Path(p['path']),dst) + assert r.inventory(stage,stage=True)==expected + cache=old/'stage/.godot'; cache_before=r.inventory(cache) + for n in cache_before: + src=cache/n; dst=stage/'.godot'/n; dst.parent.mkdir(parents=True,exist_ok=True) + subprocess.run(['/bin/cp','-c',str(src),str(dst)],check=True); assert src.stat().st_ino != dst.stat().st_ino + assert r.inventory(stage/'.godot')==cache_before + r.write(OUT/'cache-reuse.json',dict(ended_run=str(old),ended_receipt_sha256=r.sha(old/'runner-ended.json'),whole_cache=cache_before,independent_inode=True,ordinary_import_required=True,ordinary_parse_required=True)) + paths=['res://'+n for n in sorted(refs) if n.endswith('.gd')]; r.write(OUT/'parse-paths.json',paths) + markers=module('order_literal_markers',R/'tools/strict_test_markers.py') + contracts=markers.load_contracts(R/'docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json') + contracts[TEST]=dict(test=TEST,template='Order boundary diagnostic: checks, failures',required=True) + policy=r.read(r.SUPPORT/'suite-policy.json'); assert TEST not in policy['suite_policies'] + r.write(OUT/'contracts.json',contracts) + r.write(OUT/'runner-input.json',dict(classification='P04-01 approved 18:00 completion-before-handover diagnostic on current source; snapshots are exact typed evidence and JSON mirrors lose Variant key/value types; no formal save, Windows or whole-unit acceptance',owner_runner_pid=os.getpid(),wrapper_sha256=r.sha(__file__),QA=dict(path=str(QA),sha256=r.sha(QA),bytes=QA.stat().st_size),runner_sha256=r.sha(R/'tools/run_all_tests.py'),source_before=root,selected_source_map=selected['map'],source_map_authority=str(source_path),default_player_before=protected,doc4_before=docs,source_adoption=False,QA_overrides=[TEST],ordinary_disk_floor_bytes=r.MIN_SPACE,functional_watchdog_seconds=1200)) + diagnostics=module('order_literal_diagnostics',r.SUPPORT/'diagnostic_gate.py'); owners=module('order_literal_owners',r.SUPPORT/'ordinary_proof_gate.py'); audio=module('order_literal_audio',r.SUPPORT/'audio_evidence_gate.py') + original=outer.run_phase + def run_phase(argv,folder,timeout,env,**kwargs): + env=dict(env) + if folder.name=='repro': env['THE_TREE_ORDER_EVIDENCE']=str(OUT/'order-evidence') + return original(argv,folder,timeout,env,**kwargs) + outer.run_phase=run_phase + phases=[]; previous={}; error=None; public=(stage/'project.godot').read_bytes() + try: + for phase,test in [('import',None),('parse',None),('repro',TEST)]: + row=r.execute_phase('/Applications/Godot.app/Contents/MacOS/Godot',stage,OUT,phase,test,selected,expected,previous,policy,contracts,paths,public,protected,R,outer,markers,diagnostics,owners,audio) + phases.append(row); r.write(OUT/(phase+'-actual-phase.json'),row) + print(json.dumps(dict(phase=phase,passed=row['passed'],checks=row.get('reported_checks'),error=row.get('validation_error'))),flush=True) + if not row['passed']: + error=phase+' strict phase failure'; break + except BaseException as caught: error=type(caught).__name__+': '+str(caught) + finally: cleanup,cleanup_errors=outer.finish_captured(outer.OWNED) + assert r.source_refs(R)==root and r.default_player(R)==protected + assert {n:r.sha(R/'docs/plans/original-completion-2026-10-02'/n) for n in docs}==docs + assert r.inventory(stage,stage=True)==dict(expected,**previous) and r.inventory(cache)==cache_before + passed=error is None and len(phases)==3 and all(p['passed'] for p in phases) and not cleanup_errors and all(p['engine_ended'] for p in cleanup) + r.write(OUT/'execution.json',dict(passed=passed,error=error,phases=phases,actual_captured_PIDs=[p.pid for p in outer.OWNED],cleanup=cleanup,cleanup_errors=cleanup_errors,all_source_unchanged=True,all_default_player_unchanged=True,doc4_unchanged=True,actual_native=len(outer.OWNED),whole_goal_accepted=False,unit_accepted=False)) + print(json.dumps(dict(passed=passed,error=error,actual_native=len(outer.OWNED))),flush=True) + return 0 if passed else 1 +if __name__=='__main__': raise SystemExit(main()) diff --git a/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-shift-current-prepare.py b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-shift-current-prepare.py new file mode 100644 index 0000000..1030383 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/p04-approved-shift-current-prepare.py @@ -0,0 +1,8 @@ +from pathlib import Path +import hashlib,importlib.util,json,sys,shutil +sys.dont_write_bytecode=True +R=Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部');A=R/'artifacts/original-completion-2026-10-02';E=R/'docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015';P=A/'p04-approved-shift-current-prep-r01';assert not P.exists();P.mkdir();original=A/'p04-01-shift-end-repro-r03.gd';text=original.read_text();old='\t_expect(wallet_after == wallet_before and _receipts.is_empty(), "shift-end completion must not charge with ended daytime shifts")';new='\t_expect(wallet_after == wallet_before - definition.base_price and _receipts.size() == 1, "approved last DAY interval completes and charges once before handover")';assert text.count(old)==1;text=text.replace(old,new);old='\t_expect(_runtime.inventory_service.available_quantity(facility.local_inventory_id, &"ingredient/basic_meal") == 0 and _runtime.inventory_service.get_reservations(true).size() == 1, "unpaid service retains its real reserved meal")';new='\tvar all_consumed := not service.inventory_reservations.is_empty()\n\tfor reservation_id: StringName in service.inventory_reservations:\n\t\tvar reservation: InventoryReservation = _runtime.inventory_service.get_reservation(reservation_id)\n\t\tif reservation == null or reservation.state != InventoryReservation.State.CONSUMED:\n\t\t\tall_consumed = false\n\t_expect(service.state == ServiceInstance.State.COMPLETED and all_consumed and _runtime.inventory_service.available_quantity(facility.local_inventory_id, &"ingredient/basic_meal") == 0, "completed paid service consumed its own real reserved meal exactly once")';assert text.count(old)==1;text=text.replace(old,new);old='\t_write_var("before", before); _write_var("after", after); _write_var("next", final)';new='\t_expect(_first_receipts.size() == 1 and _receipts.size() == 1, "first pass and snapshot replay each observe exactly one completion payment")\n'+old;assert text.count(old)==1;text=text.replace(old,new);old='\tif file != null: file.store_buffer(var_to_bytes(value)); file.flush(); file.close()';new=old+'\n\tvar json_file := FileAccess.open(_evidence_dir.path_join(label + ".json"), FileAccess.WRITE)\n\t_expect(json_file != null, "write engine JSON projection alongside authoritative typed evidence " + label)\n\tif json_file != null: json_file.store_string(JSON.stringify(value, "\\t")); json_file.flush(); json_file.close()';assert text.count(old)==1;text=text.replace(old,new);text=text.replace('P04-01 original DAY-end exact completion diagnostic;', 'P04-01 owner-approved DAY-end last interval completion diagnostic;');QA=P/'approved-shift.gd';QA.write_text(text) +source=A/'p04-01-midnight-boundary-native-r01.py';wrapper=source.read_text();wrapper=wrapper.replace("OUT = A / 'p04-01-midnight-boundary-native-r01'","OUT = A / 'p04-approved-shift-current-native-r01'").replace("QA = A / 'p04-01-midnight-boundary-r01.gd'","QA = A / 'p04-approved-shift-current-prep-r01/approved-shift.gd'").replace("source_path = A / 'p04-02-paid-completion-source-adoption-r01/source-after.json'","source_path = A / 'p04-approved-shift-current-prep-r01/SOURCE_MAP.json'").replace('assert source == r.read(source_path) and len(source) == 1299','assert source == r.read(source_path) and len(source) == 1338').replace("old = A / 'p04-02-paid-completion-final-full172-native-r01'","old = Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/.runtime/P18-01-CODE/build/p18-relationship-evidence')").replace('Midnight boundary diagnostic: checks, failures','Order boundary diagnostic: checks, failures').replace('P04-01 real original 00:00 daily settlement with actual paid open service boundary diagnostic; expect acceptance predicate to reveal any current defect, never a unit pass','P04-01 approved 18:00 completion-before-handover diagnostic on current source; snapshots are exact typed evidence and JSON mirrors lose Variant key/value types; no formal save, Windows or whole-unit acceptance') +wrapper=wrapper.replace("assert shutil.disk_usage(A).free >= r.MIN_SPACE","assert shutil.disk_usage(A).free >= 1024**3 + Path('/Applications/Godot.app/Contents/MacOS/Godot').stat().st_size + 136*1024**2") +assert '1299' not in wrapper;producer=A/'p04-approved-shift-current-native-r01.py';producer.write_text(wrapper);compile(wrapper,str(producer),'exec');spec=importlib.util.spec_from_file_location('root_current_p04_source',R/'tools/run_all_tests.py');m=importlib.util.module_from_spec(spec);spec.loader.exec_module(m);refs=m.source_refs(R);assert len(refs)==1338;source_map={n:x['sha256']for n,x in refs.items()};(P/'SOURCE_MAP.json').write_text(json.dumps(source_map,indent=2)+'\n');old_native=m.read(Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/.runtime/P18-01-CODE/build/p18-relationship-evidence/runner-input.json'));assert old_native['selected_source_map']==source_map +record={'plan_id':'P04-01','owner_approval_sha256':m.sha(E/'D05_OWNER_APPROVAL.json'),'original_negative_probe':{'path':str(original),'sha256':m.sha(original),'untouched':True},'new_probe':{'path':str(QA),'sha256':m.sha(QA)},'wrapper':{'path':str(producer),'sha256':m.sha(producer)},'wrapper_base':{'path':str(source),'sha256':m.sha(source)},'changes':'Two obsolete assertions replaced with the explicit owner-approved 18:00 charge/consume rule; own reservation IDs must be consumed; exact replay payment-count check; engine JSON diagnostic mirrors beside unchanged typed VAR serialization. Product logic, definitions, duration, price and original tests unchanged.','source_map_files':len(refs),'current_cache_full_source_map_identical':True,'planned_native_phases':['import','parse','repro'],'required_free_bytes':1024**3+Path('/Applications/Godot.app/Contents/MacOS/Godot').stat().st_size+136*1024**2,'free_now':shutil.disk_usage(R).free,'fixture_only':True,'formal_original_credit':0};(P/'INPUT_PREPARATION.json').write_text(json.dumps(record,ensure_ascii=False,indent=2)+'\n');print(record) diff --git a/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/CURRENT_MAIN_265_REUSE_PREFLIGHT_R02.json b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/CURRENT_MAIN_265_REUSE_PREFLIGHT_R02.json new file mode 100644 index 0000000..1e9ff37 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/CURRENT_MAIN_265_REUSE_PREFLIGHT_R02.json @@ -0,0 +1,18 @@ +{ + "main_base": "c4bc9b44e9a003193799beb1916b385772dcb1a5", + "submitted": "265ce30f81b1302ca374330f7129f02d6fde4697", + "composition_tree": "ad912da8517141a4ac501503659c2ca93f8a87cb", + "source_files": 1338, + "source_bytes": 67895232, + "differences": [], + "checks": { + "complete_source_map_matches": true, + "marker_matches": true, + "engine_matches": true, + "project_settings_match": true + }, + "all_preliminary_checks_passed": true, + "actual_native_runs": 0, + "scope": "source/settings/marker/engine applicability only; mandatory normal Runner verifier still required on its actual candidate, including policy and proof integrity", + "formal_original_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_APPROVAL_265_R02.json b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_APPROVAL_265_R02.json new file mode 100644 index 0000000..b968635 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_APPROVAL_265_R02.json @@ -0,0 +1,163 @@ +{ + "project": "the-tree-p18-01-model", + "acceptance_completed": 0, + "acceptance_total": 4, + "tasks": [ + { + "id": "P18-01-CODE", + "state": "approved", + "submitted": "265ce30f81b1302ca374330f7129f02d6fde4697", + "candidate": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "main_base": "c4bc9b44e9a003193799beb1916b385772dcb1a5", + "reason": null, + "repairs": 6 + } + ], + "costs": [ + { + "id": "65473b7a1fda4695a5be88c0ca0a1038", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.0847744, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 2, \"cache_creation_input_tokens\": 7162, \"cache_read_input_tokens\": 1752, \"output_tokens\": 1356, \"output_tokens_details\": {\"thinking_tokens\": 261}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 7162, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "b1931a8dcbc24d88bb3cbdce45140e02", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": null + }, + { + "id": "94537f64c44f48ce96c9c0be064260bd", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.0954024, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 2, \"cache_creation_input_tokens\": 8383, \"cache_read_input_tokens\": 1752, \"output_tokens\": 1399, \"output_tokens_details\": {\"thinking_tokens\": 303}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 8383, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "13d58f6cc19f4257a93a6c44e250d81a", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 350265, \"cached_input_tokens\": 304000, \"cache_write_input_tokens\": 0, \"output_tokens\": 2837, \"reasoning_output_tokens\": 212}" + }, + { + "id": "8de134fdf3ad4b288049a4423311af31", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.11981839999999999, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 2, \"cache_creation_input_tokens\": 8700, \"cache_read_input_tokens\": 1752, \"output_tokens\": 2493, \"output_tokens_details\": {\"thinking_tokens\": 589}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 8700, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "aa74e0e182094e83afe2dba1009b31b6", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 743515, \"cached_input_tokens\": 681600, \"cache_write_input_tokens\": 0, \"output_tokens\": 13954, \"reasoning_output_tokens\": 2525}" + }, + { + "id": "bf3bb479771b47c8bfa0e70e1c5e1406", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 1.376984, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 2, \"cache_creation_input_tokens\": 155507, \"cache_read_input_tokens\": 0, \"output_tokens\": 6646, \"output_tokens_details\": {\"thinking_tokens\": 4774}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 155507, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "aa8fa03476f4409483399cf539807991", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.33374919999999997, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 10, \"cache_creation_input_tokens\": 30305, \"cache_read_input_tokens\": 98746, \"output_tokens\": 3576, \"output_tokens_details\": {\"thinking_tokens\": 392}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 30305, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "8017d52100cf4e47a9ddad43def7fa9a", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.171484, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 6, \"cache_creation_input_tokens\": 12979, \"cache_read_input_tokens\": 36140, \"output_tokens\": 3020, \"output_tokens_details\": {\"thinking_tokens\": 483}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 12979, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "ffa4871eb4314957a2f96eb5db0bd175", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 244556, \"cached_input_tokens\": 211584, \"cache_write_input_tokens\": 0, \"output_tokens\": 2097, \"reasoning_output_tokens\": 75}" + }, + { + "id": "0e9c09a4c8fc4e008d3ed53881834291", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.26220579999999993, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 6, \"cache_creation_input_tokens\": 21635, \"cache_read_input_tokens\": 41809, \"output_tokens\": 4037, \"output_tokens_details\": {\"thinking_tokens\": 546}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 21635, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "7c0e4e1e158b41348365dd1189c9b42d", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 1601679, \"cached_input_tokens\": 1524736, \"cache_write_input_tokens\": 0, \"output_tokens\": 13712, \"reasoning_output_tokens\": 2850}" + }, + { + "id": "599fd345beb84437aa91312602a9d5db", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.28089719999999996, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 6, \"cache_creation_input_tokens\": 25493, \"cache_read_input_tokens\": 59646, \"output_tokens\": 3250, \"output_tokens_details\": {\"thinking_tokens\": 164}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 25493, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "b36468a84bd0420cb80a174502258450", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 745860, \"cached_input_tokens\": 685696, \"cache_write_input_tokens\": 0, \"output_tokens\": 10180, \"reasoning_output_tokens\": 1287}" + }, + { + "id": "d002dba19a3440fc97ee2b6bcb5576e7", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 4.903880399999999, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 6, \"cache_creation_input_tokens\": 564693, \"cache_read_input_tokens\": 1116862, \"output_tokens\": 8147, \"output_tokens_details\": {\"thinking_tokens\": 5734}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 564693, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "ca87fa34bfc94fcab936739750d22a24", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": null + }, + { + "id": "697ff21127c94b0ba79d2a4547b671a4", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 668432, \"cached_input_tokens\": 622720, \"cache_write_input_tokens\": 0, \"output_tokens\": 7321, \"reasoning_output_tokens\": 332}" + }, + { + "id": "7b97ad99e9fe4afeafdbec9760717e1a", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 4.745879400000001, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 4, \"cache_creation_input_tokens\": 566183, \"cache_read_input_tokens\": 565697, \"output_tokens\": 5163, \"output_tokens_details\": {\"thinking_tokens\": 3116}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 566183, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + } + ], + "cost_note": "nullは未取得。estimated_cost_usdはAPI請求額とは別。API自動切替無効。" +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_APPROVAL_265_R02.stderr b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_APPROVAL_265_R02.stderr new file mode 100644 index 0000000..e69de29 diff --git a/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_FINAL_R02_NORMAL_INTEGRATE.json b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_FINAL_R02_NORMAL_INTEGRATE.json new file mode 100644 index 0000000..a5a52b0 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_FINAL_R02_NORMAL_INTEGRATE.json @@ -0,0 +1,163 @@ +{ + "project": "the-tree-p18-01-model", + "acceptance_completed": 4, + "acceptance_total": 4, + "tasks": [ + { + "id": "P18-01-CODE", + "state": "completed", + "submitted": "265ce30f81b1302ca374330f7129f02d6fde4697", + "candidate": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "main_base": "c4bc9b44e9a003193799beb1916b385772dcb1a5", + "reason": null, + "repairs": 6 + } + ], + "costs": [ + { + "id": "65473b7a1fda4695a5be88c0ca0a1038", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.0847744, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 2, \"cache_creation_input_tokens\": 7162, \"cache_read_input_tokens\": 1752, \"output_tokens\": 1356, \"output_tokens_details\": {\"thinking_tokens\": 261}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 7162, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "b1931a8dcbc24d88bb3cbdce45140e02", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": null + }, + { + "id": "94537f64c44f48ce96c9c0be064260bd", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.0954024, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 2, \"cache_creation_input_tokens\": 8383, \"cache_read_input_tokens\": 1752, \"output_tokens\": 1399, \"output_tokens_details\": {\"thinking_tokens\": 303}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 8383, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "13d58f6cc19f4257a93a6c44e250d81a", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 350265, \"cached_input_tokens\": 304000, \"cache_write_input_tokens\": 0, \"output_tokens\": 2837, \"reasoning_output_tokens\": 212}" + }, + { + "id": "8de134fdf3ad4b288049a4423311af31", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.11981839999999999, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 2, \"cache_creation_input_tokens\": 8700, \"cache_read_input_tokens\": 1752, \"output_tokens\": 2493, \"output_tokens_details\": {\"thinking_tokens\": 589}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 8700, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "aa74e0e182094e83afe2dba1009b31b6", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 743515, \"cached_input_tokens\": 681600, \"cache_write_input_tokens\": 0, \"output_tokens\": 13954, \"reasoning_output_tokens\": 2525}" + }, + { + "id": "bf3bb479771b47c8bfa0e70e1c5e1406", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 1.376984, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 2, \"cache_creation_input_tokens\": 155507, \"cache_read_input_tokens\": 0, \"output_tokens\": 6646, \"output_tokens_details\": {\"thinking_tokens\": 4774}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 155507, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "aa8fa03476f4409483399cf539807991", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.33374919999999997, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 10, \"cache_creation_input_tokens\": 30305, \"cache_read_input_tokens\": 98746, \"output_tokens\": 3576, \"output_tokens_details\": {\"thinking_tokens\": 392}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 30305, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "8017d52100cf4e47a9ddad43def7fa9a", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.171484, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 6, \"cache_creation_input_tokens\": 12979, \"cache_read_input_tokens\": 36140, \"output_tokens\": 3020, \"output_tokens_details\": {\"thinking_tokens\": 483}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 12979, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "ffa4871eb4314957a2f96eb5db0bd175", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 244556, \"cached_input_tokens\": 211584, \"cache_write_input_tokens\": 0, \"output_tokens\": 2097, \"reasoning_output_tokens\": 75}" + }, + { + "id": "0e9c09a4c8fc4e008d3ed53881834291", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.26220579999999993, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 6, \"cache_creation_input_tokens\": 21635, \"cache_read_input_tokens\": 41809, \"output_tokens\": 4037, \"output_tokens_details\": {\"thinking_tokens\": 546}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 21635, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "7c0e4e1e158b41348365dd1189c9b42d", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 1601679, \"cached_input_tokens\": 1524736, \"cache_write_input_tokens\": 0, \"output_tokens\": 13712, \"reasoning_output_tokens\": 2850}" + }, + { + "id": "599fd345beb84437aa91312602a9d5db", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.28089719999999996, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 6, \"cache_creation_input_tokens\": 25493, \"cache_read_input_tokens\": 59646, \"output_tokens\": 3250, \"output_tokens_details\": {\"thinking_tokens\": 164}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 25493, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "b36468a84bd0420cb80a174502258450", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 745860, \"cached_input_tokens\": 685696, \"cache_write_input_tokens\": 0, \"output_tokens\": 10180, \"reasoning_output_tokens\": 1287}" + }, + { + "id": "d002dba19a3440fc97ee2b6bcb5576e7", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 4.903880399999999, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 6, \"cache_creation_input_tokens\": 564693, \"cache_read_input_tokens\": 1116862, \"output_tokens\": 8147, \"output_tokens_details\": {\"thinking_tokens\": 5734}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 564693, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "ca87fa34bfc94fcab936739750d22a24", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": null + }, + { + "id": "697ff21127c94b0ba79d2a4547b671a4", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 668432, \"cached_input_tokens\": 622720, \"cache_write_input_tokens\": 0, \"output_tokens\": 7321, \"reasoning_output_tokens\": 332}" + }, + { + "id": "7b97ad99e9fe4afeafdbec9760717e1a", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 4.745879400000001, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 4, \"cache_creation_input_tokens\": 566183, \"cache_read_input_tokens\": 565697, \"output_tokens\": 5163, \"output_tokens_details\": {\"thinking_tokens\": 3116}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 566183, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + } + ], + "cost_note": "nullは未取得。estimated_cost_usdはAPI請求額とは別。API自動切替無効。" +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_FINAL_R02_NORMAL_INTEGRATE.stderr b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_FINAL_R02_NORMAL_INTEGRATE.stderr new file mode 100644 index 0000000..e69de29 diff --git a/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_FINAL_R02_PRESERVED_ROOT_RECORDS.json b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_FINAL_R02_PRESERVED_ROOT_RECORDS.json new file mode 100644 index 0000000..3d0c484 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_FINAL_R02_PRESERVED_ROOT_RECORDS.json @@ -0,0 +1,38 @@ +[ + { + "path": "docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/D05_ROOT_CONTEXT_RELOCATION.json", + "sha256": "f85ea0d3b439abf80c2f20e24a35a4c2ca3f165cb4217c6b9ab31c53d65ddcf9" + }, + { + "path": "docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/D05_WORKER_RUN_OUTPUT.json", + "sha256": "4183e2e69998f3d79dc9915aee8f54547b2cfdb8b80cf8bdc32f1aa1d7c50932" + }, + { + "path": "docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/D05_WORKER_RUN_OUTPUT.stderr", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/CURRENT_MAIN_265_REUSE_PREFLIGHT_R02.json", + "sha256": "f666b7052437f41994a6386e2af23ec79ba441c667a9bc04bb38a6f66fe181d5" + }, + { + "path": "docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_APPROVAL_265_R02.json", + "sha256": "2ae2bede2909d0af754482a990bc5072770a14dfa4e582bc6aeadeed540d4c85" + }, + { + "path": "docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_APPROVAL_265_R02.stderr", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_PREPARE_INTEGRATION_265_R02.json", + "sha256": "dc7a41289345865e27526b20d0aec022e347bf1b70002033b62568857f8f0e44" + }, + { + "path": "docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_PREPARE_INTEGRATION_265_R02.stderr", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/PRESERVED_265_MERGED_PROOF_PROMOTION_R02.json", + "sha256": "493ef76cdc0b218018b17783fc7dbf2a844229130d02312d816ef92019abc3c8" + } +] diff --git a/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_PREPARE_INTEGRATION_265_R02.json b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_PREPARE_INTEGRATION_265_R02.json new file mode 100644 index 0000000..8871679 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_PREPARE_INTEGRATION_265_R02.json @@ -0,0 +1,163 @@ +{ + "project": "the-tree-p18-01-model", + "acceptance_completed": 0, + "acceptance_total": 4, + "tasks": [ + { + "id": "P18-01-CODE", + "state": "approval_pending", + "submitted": "265ce30f81b1302ca374330f7129f02d6fde4697", + "candidate": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "main_base": "c4bc9b44e9a003193799beb1916b385772dcb1a5", + "reason": null, + "repairs": 6 + } + ], + "costs": [ + { + "id": "65473b7a1fda4695a5be88c0ca0a1038", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.0847744, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 2, \"cache_creation_input_tokens\": 7162, \"cache_read_input_tokens\": 1752, \"output_tokens\": 1356, \"output_tokens_details\": {\"thinking_tokens\": 261}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 7162, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "b1931a8dcbc24d88bb3cbdce45140e02", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": null + }, + { + "id": "94537f64c44f48ce96c9c0be064260bd", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.0954024, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 2, \"cache_creation_input_tokens\": 8383, \"cache_read_input_tokens\": 1752, \"output_tokens\": 1399, \"output_tokens_details\": {\"thinking_tokens\": 303}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 8383, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "13d58f6cc19f4257a93a6c44e250d81a", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 350265, \"cached_input_tokens\": 304000, \"cache_write_input_tokens\": 0, \"output_tokens\": 2837, \"reasoning_output_tokens\": 212}" + }, + { + "id": "8de134fdf3ad4b288049a4423311af31", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.11981839999999999, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 2, \"cache_creation_input_tokens\": 8700, \"cache_read_input_tokens\": 1752, \"output_tokens\": 2493, \"output_tokens_details\": {\"thinking_tokens\": 589}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 8700, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "aa74e0e182094e83afe2dba1009b31b6", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 743515, \"cached_input_tokens\": 681600, \"cache_write_input_tokens\": 0, \"output_tokens\": 13954, \"reasoning_output_tokens\": 2525}" + }, + { + "id": "bf3bb479771b47c8bfa0e70e1c5e1406", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 1.376984, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 2, \"cache_creation_input_tokens\": 155507, \"cache_read_input_tokens\": 0, \"output_tokens\": 6646, \"output_tokens_details\": {\"thinking_tokens\": 4774}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 155507, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "aa8fa03476f4409483399cf539807991", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.33374919999999997, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 10, \"cache_creation_input_tokens\": 30305, \"cache_read_input_tokens\": 98746, \"output_tokens\": 3576, \"output_tokens_details\": {\"thinking_tokens\": 392}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 30305, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "8017d52100cf4e47a9ddad43def7fa9a", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.171484, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 6, \"cache_creation_input_tokens\": 12979, \"cache_read_input_tokens\": 36140, \"output_tokens\": 3020, \"output_tokens_details\": {\"thinking_tokens\": 483}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 12979, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "ffa4871eb4314957a2f96eb5db0bd175", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 244556, \"cached_input_tokens\": 211584, \"cache_write_input_tokens\": 0, \"output_tokens\": 2097, \"reasoning_output_tokens\": 75}" + }, + { + "id": "0e9c09a4c8fc4e008d3ed53881834291", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.26220579999999993, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 6, \"cache_creation_input_tokens\": 21635, \"cache_read_input_tokens\": 41809, \"output_tokens\": 4037, \"output_tokens_details\": {\"thinking_tokens\": 546}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 21635, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "7c0e4e1e158b41348365dd1189c9b42d", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 1601679, \"cached_input_tokens\": 1524736, \"cache_write_input_tokens\": 0, \"output_tokens\": 13712, \"reasoning_output_tokens\": 2850}" + }, + { + "id": "599fd345beb84437aa91312602a9d5db", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 0.28089719999999996, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 6, \"cache_creation_input_tokens\": 25493, \"cache_read_input_tokens\": 59646, \"output_tokens\": 3250, \"output_tokens_details\": {\"thinking_tokens\": 164}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 25493, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "b36468a84bd0420cb80a174502258450", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 745860, \"cached_input_tokens\": 685696, \"cache_write_input_tokens\": 0, \"output_tokens\": 10180, \"reasoning_output_tokens\": 1287}" + }, + { + "id": "d002dba19a3440fc97ee2b6bcb5576e7", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 4.903880399999999, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 6, \"cache_creation_input_tokens\": 564693, \"cache_read_input_tokens\": 1116862, \"output_tokens\": 8147, \"output_tokens_details\": {\"thinking_tokens\": 5734}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 564693, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + }, + { + "id": "ca87fa34bfc94fcab936739750d22a24", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": null + }, + { + "id": "697ff21127c94b0ba79d2a4547b671a4", + "service": "codex", + "api_cost_usd": null, + "estimated_cost_usd": null, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 668432, \"cached_input_tokens\": 622720, \"cache_write_input_tokens\": 0, \"output_tokens\": 7321, \"reasoning_output_tokens\": 332}" + }, + { + "id": "7b97ad99e9fe4afeafdbec9760717e1a", + "service": "claude", + "api_cost_usd": null, + "estimated_cost_usd": 4.745879400000001, + "subscription_usage": null, + "usage_json": "{\"input_tokens\": 4, \"cache_creation_input_tokens\": 566183, \"cache_read_input_tokens\": 565697, \"output_tokens\": 5163, \"output_tokens_details\": {\"thinking_tokens\": 3116}, \"server_tool_use\": {\"web_search_requests\": 0, \"web_fetch_requests\": 0}, \"service_tier\": \"standard\", \"cache_creation\": {\"ephemeral_1h_input_tokens\": 566183, \"ephemeral_5m_input_tokens\": 0}, \"inference_geo\": \"global\", \"iterations\": [], \"speed\": \"standard\", \"fallback_credit\": null}" + } + ], + "cost_note": "nullは未取得。estimated_cost_usdはAPI請求額とは別。API自動切替無効。" +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_PREPARE_INTEGRATION_265_R02.stderr b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ORDINARY_PREPARE_INTEGRATION_265_R02.stderr new file mode 100644 index 0000000..e69de29 diff --git a/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/PRESERVED_265_MERGED_PROOF_PROMOTION_R02.json b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/PRESERVED_265_MERGED_PROOF_PROMOTION_R02.json new file mode 100644 index 0000000..5050e6d --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/PRESERVED_265_MERGED_PROOF_PROMOTION_R02.json @@ -0,0 +1,17 @@ +{ + "submitted": "265ce30f81b1302ca374330f7129f02d6fde4697", + "current_main_base_at_applicability": "c4bc9b44e9a003193799beb1916b385772dcb1a5", + "composition_tree": "ad912da8517141a4ac501503659c2ca93f8a87cb", + "historical_frozen_preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/.runtime/P18-01-CODE/build/p18-relationship-evidence-historical-265ce30-r06", + "registered_canonical_now": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/.runtime/P18-01-CODE/build/p18-relationship-evidence", + "former_merged_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/.runtime/P18-01-CODE/build/p18-merged-native-evidence-265ce30-r01", + "old_members": 2166, + "merged_members": 2195, + "old_aggregate_before_and_after": "6efa9e3514629b3f5f31354b4cbf7a0296fd33e33498093d5eb07be06d6023b1", + "merged_aggregate_before_and_after": "e5f1fd76e073d8518eafcb7eb92368545a2f156a43cf037be87c3e233306eac7", + "all_bytes_modes_mtimes_preserved": true, + "raw_receipts_rewritten": false, + "native_runs": 0, + "ordinary_verifier_pending": true, + "formal_original_credit": 0 +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ROOT_BACKEND_FORMAL_COMPLETION_265_R02.json b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ROOT_BACKEND_FORMAL_COMPLETION_265_R02.json new file mode 100644 index 0000000..e38be90 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/ROOT_BACKEND_FORMAL_COMPLETION_265_R02.json @@ -0,0 +1,54 @@ +{ + "backend_task": "P18-01-CODE", + "state": "completed", + "backend_acceptance": "4/4 original backend subconditions; not an additional original delivery", + "submitted": "265ce30f81b1302ca374330f7129f02d6fde4697", + "main_integration": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "required_gates": [ + { + "kind": "validation", + "commit": "265ce30f81b1302ca374330f7129f02d6fde4697", + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/85e34dac5e9c484c8cd26a24adaeac99-validation.json", + "sha256": "794128dd5a67df92dae8cf2b8f6874e13f87146f46365cd7b1e6ead78986d1f5", + "passed": true + }, + { + "kind": "review", + "commit": "265ce30f81b1302ca374330f7129f02d6fde4697", + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/7b97ad99e9fe4afeafdbec9760717e1a/result.json", + "sha256": "5ee28a26c40ff054d9e676e3ee053d25939c90dee49fa15c2e1f320f143c2af2", + "passed": true + }, + { + "kind": "integration", + "commit": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/adc3d81ae9a74229842870e3a7a8db48-integration.json", + "sha256": "14f96f451d9ff83bb2e2cdfa4e7db699341d064bceb38b09ca577e4edd5a25eb", + "passed": true + }, + { + "kind": "final", + "commit": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/89f49a6c8baf419794283d77d6b7872e-final.json", + "sha256": "19104852f6d88ec2cbc5888acdd392fb305210855127f974a657e0c36f16d9b7", + "passed": true + } + ], + "native_reused": { + "suites": 7, + "checks": 1839, + "parse_paths": 316, + "whole_selected_source_files": 1338, + "all_owned_ended": true, + "proof_bytes_unchanged": true + }, + "original_P18_01_state": "in_progress", + "original_delivery_credit_added": 0, + "remaining_original_conditions": [ + "original three-axis relationship graph and shield in normal UI with read-model equality", + "approved production initial values and required values", + "exact final full regression and whole-unit independent acceptance", + "applicable same-candidate Windows device acceptance" + ], + "recorded_at": "2026-10-15T14:21:55.726344+00:00" +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/RUNNER_BACKEND_COMPLETION_TRACEABILITY_265_R02.json b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/RUNNER_BACKEND_COMPLETION_TRACEABILITY_265_R02.json new file mode 100644 index 0000000..8686c56 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/RUNNER_BACKEND_COMPLETION_TRACEABILITY_265_R02.json @@ -0,0 +1,128 @@ +{ + "contract": { + "id": "P18-01-CODE", + "title": "原本関係モデル・旧値保全・Runtime保存と読取経路", + "requirement_ids": [ + "P18-01-CODE" + ], + "acceptance_ids": [ + "P18-C-1", + "P18-C-2", + "P18-C-3", + "P18-C-4" + ], + "spec_ref": "docs/spec/acceptance/P18-01-code-r01.json", + "base_commit": "d2a1f80a613e7c77b02b941026bc49c2d85db863", + "worker": "codex", + "allowed_paths": [ + "scripts/relationship/original_relationship_state.gd", + "scripts/relationship/original_relationship_state.gd.uid", + "scripts/relationship/relationship_service.gd", + "autoload/simulation_runtime.gd", + "tests/s4/test_original_relationship_model.gd", + "tests/s4/test_original_relationship_model.gd.uid", + "tests/s4/test_original_relationship_runtime.gd", + "tests/s4/test_original_relationship_runtime.gd.uid", + "tools/run_p18_relationship_tests.py", + "tools/regression/suite-policy.json", + "docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json", + "docs/plans/original-completion-2026-10-02/execution/p18-01-code/**" + ], + "depends_on": [], + "resource_locks": [ + "relationship-model-save", + "simulation-runtime", + "native-godot-owner" + ], + "validation_ids": [ + "p18-model" + ], + "max_repair_attempts": null, + "spec_sha256": "04e9ae701b6ee1e399542564add695ca7fce54499e52dd2e907b1dbdc23a366d" + }, + "implementation_commit": "265ce30f81b1302ca374330f7129f02d6fde4697", + "integration_commit": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "owner": "User explicitly authorized main updates in this thread; exact candidate shown and normal review/integration verified; no specification or budget change", + "evidence": [ + { + "id": 1, + "task_id": "P18-01-CODE", + "kind": "validation", + "commit_sha": "f76ad96990a4d7371b6ab667df0a068cc06be798", + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/2d4d73b8faf24c098d968da7dd1d76cd-validation.json", + "passed": 0 + }, + { + "id": 2, + "task_id": "P18-01-CODE", + "kind": "validation", + "commit_sha": "0084760ee05a97adfcbd783a71161491f3629918", + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/7950c360beba46a58d25176927f4e19e-validation.json", + "passed": 0 + }, + { + "id": 3, + "task_id": "P18-01-CODE", + "kind": "validation", + "commit_sha": "0084760ee05a97adfcbd783a71161491f3629918", + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/407bfc9dab9b4d80bfeca07b86416aa1-validation.json", + "passed": 1 + }, + { + "id": 4, + "task_id": "P18-01-CODE", + "kind": "review", + "commit_sha": "0084760ee05a97adfcbd783a71161491f3629918", + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/bf3bb479771b47c8bfa0e70e1c5e1406/result.json", + "passed": 0 + }, + { + "id": 5, + "task_id": "P18-01-CODE", + "kind": "validation", + "commit_sha": "b7a7cc01d4d0e874e10464c686b7fdeecd9b348c", + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/95d55a31132b470a821481d96307a540-validation.json", + "passed": 1 + }, + { + "id": 6, + "task_id": "P18-01-CODE", + "kind": "review", + "commit_sha": "b7a7cc01d4d0e874e10464c686b7fdeecd9b348c", + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/d002dba19a3440fc97ee2b6bcb5576e7/result.json", + "passed": 0 + }, + { + "id": 7, + "task_id": "P18-01-CODE", + "kind": "validation", + "commit_sha": "265ce30f81b1302ca374330f7129f02d6fde4697", + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/85e34dac5e9c484c8cd26a24adaeac99-validation.json", + "passed": 1 + }, + { + "id": 8, + "task_id": "P18-01-CODE", + "kind": "review", + "commit_sha": "265ce30f81b1302ca374330f7129f02d6fde4697", + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/7b97ad99e9fe4afeafdbec9760717e1a/result.json", + "passed": 1 + }, + { + "id": 9, + "task_id": "P18-01-CODE", + "kind": "integration", + "commit_sha": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/adc3d81ae9a74229842870e3a7a8db48-integration.json", + "passed": 1 + }, + { + "id": 10, + "task_id": "P18-01-CODE", + "kind": "final", + "commit_sha": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/89f49a6c8baf419794283d77d6b7872e-final.json", + "passed": 1 + } + ] +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/thetree-p18-current-composition-reuse-r02.py b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/thetree-p18-current-composition-reuse-r02.py new file mode 100644 index 0000000..0f64dc5 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/thetree-p18-current-composition-reuse-r02.py @@ -0,0 +1,16 @@ +import subprocess,json,hashlib,io +from pathlib import Path +r=Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部');e=r/'docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015';proof=Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/.runtime/P18-01-CODE/build/p18-merged-native-evidence-265ce30-r01');submitted='265ce30f81b1302ca374330f7129f02d6fde4697';git=lambda *args:subprocess.check_output(['git',*args],cwd=r);main=git('rev-parse','main').decode().strip();tree=git('merge-tree','--write-tree',main,submitted).decode().splitlines()[0];entries=[] +for row in git('ls-tree','-rz',tree).split(b'\0'): + if not row:continue + meta,name=row.split(b'\t',1);mode,kind,obj=meta.split();name=name.decode() + if name.split('/')[0] in ['autoload','scripts','scenes','data','tests','assets','tools'] and Path(name).name!='.DS_Store' and '__pycache__' not in Path(name).parts or name in ['project.godot','export_presets.cfg','Makefile','AGENTS.md','docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json']: + assert mode in [b'100644',b'100755'] and kind==b'blob';entries.append((name,obj)) +raw=subprocess.check_output(['git','cat-file','--batch'],input=b'\n'.join(obj for _,obj in entries)+b'\n',cwd=r);f=io.BytesIO(raw);pins={} +for name,obj in entries: + header=f.readline().split();assert header[0]==obj and header[1]==b'blob';n=int(header[2]);body=f.read(n);assert f.read(1)==b'\n';pins[name]={'bytes':n,'sha256':hashlib.sha256(body).hexdigest()} +marker=pins.pop('docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json');receipt=json.loads((proof/'receipt.json').read_text());source=receipt['source_map'];differences=[name for name in sorted(set(pins)|set(source)) if pins.get(name)!=source.get(name)];start=json.loads((proof/'runner-input.json').read_text());engine=Path(start['engine']);h=hashlib.sha256() +with engine.open('rb') as file: + for chunk in iter(lambda:file.read(1024*1024),b''):h.update(chunk) +checks={'complete_source_map_matches':not differences,'marker_matches':marker['sha256']==receipt['marker_contract_sha256'],'engine_matches':h.hexdigest()==receipt['engine_sha256'],'project_settings_match':pins['project.godot']['sha256']==receipt['project_settings_sha256']} +result={'main_base':main,'submitted':submitted,'composition_tree':tree,'source_files':len(pins),'source_bytes':sum(x['bytes'] for x in pins.values()),'differences':differences,'checks':checks,'all_preliminary_checks_passed':all(checks.values()),'actual_native_runs':0,'scope':'source/settings/marker/engine applicability only; mandatory normal Runner verifier still required on its actual candidate, including policy and proof integrity','formal_original_credit':0};(e/'CURRENT_MAIN_265_REUSE_PREFLIGHT_R02.json').write_text(json.dumps(result,ensure_ascii=False,indent=2)+'\n');print(json.dumps(result,ensure_ascii=False));assert all(checks.values()) diff --git a/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/thetree-p18-ordinary-final-r02.py b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/thetree-p18-ordinary-final-r02.py new file mode 100644 index 0000000..eb528da --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/thetree-p18-ordinary-final-r02.py @@ -0,0 +1,24 @@ +from pathlib import Path +import os,subprocess,json,hashlib,shutil +r=Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部');base=Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/.runtime/coordinator-p18-final-r02');assert not base.exists();base.mkdir();rows=[] +assert not subprocess.check_output(['git','diff','--name-only'],cwd=r) and not subprocess.check_output(['git','diff','--cached','--name-only'],cwd=r) +for name in subprocess.check_output(['git','ls-files','--others','--exclude-standard','-z'],cwd=r).split(b'\0'): + if not name:continue + name=name.decode();assert name.startswith('docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/') or name.startswith('docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/');p=r/name;assert p.is_file() and not p.is_symlink();rows.append({'path':name,'sha256':hashlib.sha256(p.read_bytes()).hexdigest()}) +(base/'PRESERVED_ROOT_RECORDS.json').write_text(json.dumps(rows,indent=2)+'\n') +for x in rows: + p=r/x['path'];q=base/'records'/x['path'];q.parent.mkdir(parents=True,exist_ok=True);p.rename(q);assert hashlib.sha256(q.read_bytes()).hexdigest()==x['sha256'] +assert not subprocess.check_output(['git','status','--porcelain'],cwd=r) +env=os.environ.copy();env.update(OWNER_RUNNER_CONTROL='/private/tmp/the-tree-p24-02-control-r02',PYTHONDONTWRITEBYTECODE='1') +try: + with (base/'NORMAL_INTEGRATE.json').open('x') as out,(base/'NORMAL_INTEGRATE.stderr').open('x') as err: + p=subprocess.run(['/Users/korizatou114/Antigravity/環境構築/agent-control/.venv/bin/python','/private/tmp/the-tree-owner-model-cli.py','--project','the-tree-p18-01-model','integrate','P18-01-CODE'],cwd=r,env=env,stdout=out,stderr=err) + print('normal_integrate_exit',p.returncode) + if p.returncode==0: + j=json.loads((base/'NORMAL_INTEGRATE.json').read_text());print({k:v for k,v in j.items() if k in ['project','tasks','acceptance_completed','acceptance_total']}) + else:print((base/'NORMAL_INTEGRATE.stderr').read_text()[-1800:]) +finally: + for x in rows: + original=r/x['path'];stored=base/'records'/x['path'];assert not original.exists();original.parent.mkdir(parents=True,exist_ok=True);stored.rename(original);assert hashlib.sha256(original.read_bytes()).hexdigest()==x['sha256'] + print('Root records restored byte-exact',len(rows)) +raise SystemExit(p.returncode) diff --git a/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/thetree-p18-promote-preserved-merged-proof-r02.py b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/thetree-p18-promote-preserved-merged-proof-r02.py new file mode 100644 index 0000000..bd64b0b --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015/thetree-p18-promote-preserved-merged-proof-r02.py @@ -0,0 +1,17 @@ +from pathlib import Path +import json,hashlib,os +r=Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部');e=r/'docs/plans/original-completion-2026-10-02/execution/p18-01-resume-20261015';b=Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/.runtime/P18-01-CODE/build');a=b/'p18-relationship-evidence';h=b/'p18-relationship-evidence-historical-265ce30-r06';m=b/'p18-merged-native-evidence-265ce30-r01';pre=json.loads((e/'CURRENT_MAIN_265_REUSE_PREFLIGHT_R02.json').read_text());assert pre['all_preliminary_checks_passed'] and a.is_dir() and m.is_dir() and not h.exists() +def inventory(root): + rows=[] + for p in sorted(root.rglob('*')): + assert not p.is_symlink();s=p.stat();row={'path':str(p.relative_to(root)),'type':'directory' if p.is_dir() else 'file','mode':s.st_mode&0o777,'mtime_ns':s.st_mtime_ns} + if p.is_file(): + with p.open('rb') as f:row.update(bytes=s.st_size,sha256=hashlib.file_digest(f,'sha256').hexdigest()) + rows.append(row) + return rows +def digest(rows):return hashlib.sha256(json.dumps(rows,sort_keys=True,separators=(',',':')).encode()).hexdigest() +old=inventory(a);merged=inventory(m);a.rename(h) +try:m.rename(a) +except BaseException:h.rename(a);raise +assert inventory(h)==old and inventory(a)==merged +record={'submitted':pre['submitted'],'current_main_base_at_applicability':pre['main_base'],'composition_tree':pre['composition_tree'],'historical_frozen_preserved':str(h),'registered_canonical_now':str(a),'former_merged_path':str(m),'old_members':len(old),'merged_members':len(merged),'old_aggregate_before_and_after':digest(old),'merged_aggregate_before_and_after':digest(merged),'all_bytes_modes_mtimes_preserved':True,'raw_receipts_rewritten':False,'native_runs':0,'ordinary_verifier_pending':True,'formal_original_credit':0};(e/'PRESERVED_265_MERGED_PROOF_PROMOTION_R02.json').write_text(json.dumps(record,indent=2)+'\n');print(json.dumps(record)) diff --git a/docs/plans/original-completion-2026-10-02/execution/p23-03/ROOT_9A26F9A_NATIVE_OS_R14_CLOUD_LOCATION.json b/docs/plans/original-completion-2026-10-02/execution/p23-03/ROOT_9A26F9A_NATIVE_OS_R14_CLOUD_LOCATION.json new file mode 100644 index 0000000..5f22d97 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p23-03/ROOT_9A26F9A_NATIVE_OS_R14_CLOUD_LOCATION.json @@ -0,0 +1,12 @@ +{ + "classification": "Ended failed P23 R14 raw proof moved to verified Drive parts; restore before raw review, no acceptance credit", + "index": { + "drive_url": "https://drive.google.com/file/d/1eslpvIz5OAubtMwGs3ifWcRlUUeLIvCm/view?usp=drivesdk", + "bytes": 4139, + "sha256": "1a362a5bfa6e185bc7d667f0e3a3be6da0e88fcd1bacbcaa76539f1740d5aee5", + "whole_raw_readback_verified": true + }, + "local_restore_metadata": "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/docs/plans/original-completion-2026-10-02/execution/drive-offload-p23-r14-r10-20261016", + "all_original_files": 6434, + "archive_sha256": "dcc28679f7c7e8df7ce5bcac69d7c631114d5d16f38243a9c29ed8c9bbd9bb7b" +} diff --git a/docs/plans/original-completion-2026-10-02/plan_validation.json b/docs/plans/original-completion-2026-10-02/plan_validation.json index c539078..e4e3cb2 100644 --- a/docs/plans/original-completion-2026-10-02/plan_validation.json +++ b/docs/plans/original-completion-2026-10-02/plan_validation.json @@ -233,7 +233,7 @@ "assets_platform_audit.json": "a9fabd989d03071c6af6dc828fff4f021e1ece9638857c54115997923af68d77", "atomic_denominator_freeze.json": "467e960eb0fe47241edb217f5fa2044f2de304441daf9e51a7b0cb46ffa9194d", "atomic_requirements.json": "44530bb929fcc8c68c06d0d94da66dd04b8db7680af731b5037cd44677502938", - "atomic_requirements_validation.json": "307a09f8a9679a1f0bcdc3bef6443ab169c1ed6d8469eb6b385f8a7ffcdc02ea", + "atomic_requirements_validation.json": "8dc300b099cfd90fda862f138b6a528d01e9c488a2c67fe07a00a92a70f99175", "atomic_semantic_review.json": "e300b57f22ab86aa8029ce97231fcff0d7530fd4a9134988f113a46498ada7ad", "baseline.json": "750bb3d313cc5e2ce0d4c79e563a995abd7a78f991dee1dd75c627877b02cd7b", "build_atomic_requirements.py": "6d6ea9e4216372dbd0f9fed3f885a4481b21a3f539a26f64cf98a6830af984c5", @@ -254,6 +254,6 @@ "validate_facility_value_contracts.py": "91640e2a76cd6cc9186f7b85c0bf379b24b6cac0d48962815235ee628e7ae43e", "validate_plan.py": "23678227d9b3c556f1bd903f4b5b3147c4a82ce5085e10055481026803451b80", "validator_update_checks.json": "f997d0f3de2cea29550840b1d5cb23647d64f81329de46758551e2b6c8fecc27", - "work_packages.json": "c91c444abfdd869f7400d1ea652087769115101adae80be5ed1af0f0695b846c" + "work_packages.json": "a32096f6a761a8da9e3f3ddec1f58c5dc53dd861b6038f973629d4a39860f2b8" } } diff --git a/docs/plans/original-completion-2026-10-02/work_packages.json b/docs/plans/original-completion-2026-10-02/work_packages.json index 595085f..21e78de 100644 --- a/docs/plans/original-completion-2026-10-02/work_packages.json +++ b/docs/plans/original-completion-2026-10-02/work_packages.json @@ -3598,7 +3598,7 @@ }, "legacy_state": "in_progress", "state_scope": "package-level; completed means whole package accepted; partial implementation is not completion", - "current_summary": "読取再監査で登録6pinは5一致/Runtime1更新、旧7差分は4一致/3更新、順序20関数本文と既存39証拠SHA一致。既存P04 Runner提出a19737bの監査を再利用し重複実装/engine起動0。Runtime差分は建設プレビューの共通化だが全1299証拠の現版適用を自動承認しない。D05の依存先休業時停止・予約保持・復帰後1回完了、18:00昼番完了課金後交代はユーザー承認済み(D05_OWNER_APPROVAL.json)。既存証拠の現版適用性と不足境界を実Opusへ判断依頼中、A01は再確認しない。全7領域の境界適用性/独立全条件レビュー/統合final未達、正式0。", + "current_summary": "承認D05をmain5f6bc11/全1338sourceで実測。18:00は完了・25G一回課金時に昼番2人、その後交代0人。依存先休業は日跨ぎ1439→1441で同service/予約・進捗44/45・財布50保持、復帰後1442に完了・財布25・SALE25一回、1443追加0。さらに正式SaveServiceの5状態をWriter3854→別profile/PID Reader3879で保存読込し、公開厨房再開後の全型付き14出力SHAが原nativeと一致、元保存20member不変・Reader20member全SHA一致。全10owned PID通常終了。原7領域の残境界/非ゼロ給与/command再送/EV、raw結合checker完成、独立whole受入・正常統合finalが残り、原成果加点0。repair4編集6件を保持しprobe/Reader重複workerなし。実OpusがC結合層とraw改変負例に範囲を限定しAstraを選択、同タスクの正常dispatchでrepair5 implementing。LLM900秒は許可済みtask-only予算adapterで除去、検証watchdogと登録設定は維持。", "remaining_deliverables": [ { "id": "P04-01", @@ -3847,21 +3847,21 @@ "scope": "Root diagnosis and actual first repair; no original acceptance" } ], - "current_summary": "P04-01の既存8境界27状態の正式保存/別PID受入とFORMAL-LEAVING-01修正採用を維持し、残の停電→復電進行を現採用1299/Runtime2d7e2ceaで補完。元Writerの停止961/復電962正式package各4membersを保持し、fresh Reader A/Bの公開load/Runtime restoreから元beforeの有限Mana reserveを同公開change_resources・同idempotency keyで戻し通常tick。両PIDの962状態は元recovered.var全literal一致、元25G/45分serviceを同予約一回消費/通知1で完了、963通知追加0/全経済snapshot不変/在庫clockのみ963へ更新し全他field不変。20typed/原2保存8members/コピー4保存16members/両commandと通知ID962全帳簿をrootと同1名が独立受入。r03はQA経済時計0保持の誤期待によりReaderA70/2fail・ReaderB未起動であり負履歴を保存し製品不具合へ分類しない。r04は両Reader各70/0・303parse・4owned終了。製品編集0、実engine/全1299一致の最終full172/14721を再利用し重複全回帰なし。原7種更新順序/証拠対応草案を現版に更新したが、D05の依存先休業中停止・予約保持・復帰後1回完了と18:00昼番完了課金後交代はユーザー承認済み、規約凍結/全条件独立受入を残す。正式完了追加0、通常OS/Windows/全ゲーム受入へ拡張しない。", + "current_summary": "承認D05をmain5f6bc11/全1338sourceで実測。18:00は完了・25G一回課金時に昼番2人、その後交代0人。依存先休業は日跨ぎ1439→1441で同service/予約・進捗44/45・財布50保持、復帰後1442に完了・財布25・SALE25一回、1443追加0。さらに正式SaveServiceの5状態をWriter3854→別profile/PID Reader3879で保存読込し、公開厨房再開後の全型付き14出力SHAが原nativeと一致、元保存20member不変・Reader20member全SHA一致。全10owned PID通常終了。原7領域の残境界/非ゼロ給与/command再送/EV、raw結合checker完成、独立whole受入・正常統合finalが残り、原成果加点0。repair4編集6件を保持しprobe/Reader重複workerなし。実OpusがC結合層とraw改変負例に範囲を限定しAstraを選択、同タスクの正常dispatchでrepair5 implementing。LLM900秒は許可済みtask-only予算adapterで除去、検証watchdogと登録設定は維持。", "remaining_conditions": [ "原7種更新順序・証拠対応の原本/承認済み仕様への全条件適合性と規約凍結を最終独立受入する", - "承認済みD05:依存先休業中の進捗・課金停止、予約/serviceID保持、復帰後一回完了を日跨ぎ・正式保存/別PID復元も含めて現版証拠で確認。直接休業D-034と区別する", + "承認D05の依存先休業pause/resume日跨ぎと正式SaveService/別PID復元はmain5f6bc11で実測済み。既存証拠と残の原7領域全条件への適合性・独立whole受入を残す。直接休業D-034と区別する。", "承認済みD05:17:59→18:00昼番の完了・課金後に交代。夜番不在・既存残業タスク・同分再送を現版証拠で確認", "既存39証拠等の適用版・入力・設定・環境を照合して不足境界だけ検証。全条件独立受入と通常統合/final/台帳反映。D05他領域は具体的根拠を確認し一括解決/一括停止にしない" ], - "progress_summary": "読取再監査で登録6pinは5一致/Runtime1更新、旧7差分は4一致/3更新、順序20関数本文と既存39証拠SHA一致。既存P04 Runner提出a19737bの監査を再利用し重複実装/engine起動0。Runtime差分は建設プレビューの共通化だが全1299証拠の現版適用を自動承認しない。D05の依存先休業時停止・予約保持・復帰後1回完了、18:00昼番完了課金後交代はユーザー承認済み(D05_OWNER_APPROVAL.json)。既存証拠の現版適用性と不足境界を実Opusへ判断依頼中、A01は再確認しない。全7領域の境界適用性/独立全条件レビュー/統合final未達、正式0。", + "progress_summary": "承認D05をmain5f6bc11/全1338sourceで実測。18:00は完了・25G一回課金時に昼番2人、その後交代0人。依存先休業は日跨ぎ1439→1441で同service/予約・進捗44/45・財布50保持、復帰後1442に完了・財布25・SALE25一回、1443追加0。さらに正式SaveServiceの5状態をWriter3854→別profile/PID Reader3879で保存読込し、公開厨房再開後の全型付き14出力SHAが原nativeと一致、元保存20member不変・Reader20member全SHA一致。全10owned PID通常終了。原7領域の残境界/非ゼロ給与/command再送/EV、raw結合checker完成、独立whole受入・正常統合finalが残り、原成果加点0。repair4編集6件を保持しprobe/Reader重複workerなし。実OpusがC結合層とraw改変負例に範囲を限定しAstraを選択、同タスクの正常dispatchでrepair5 implementing。LLM900秒は許可済みtask-only予算adapterで除去、検証watchdogと登録設定は維持。", "remaining_gaps": [ - "承認原文4文書を実Opusが読了し同じ既存タスクa19737bの修正開始を判断。Opusは開始時の技術的判断でgpt-6-astraを選択し通常dispatch済み、Runner implementing。使用済み3/max null。製品とengineは対象外、checkerと監査文書のみ。", - "7領域の正確な適用版・入力・設定・環境付きnative境界/保存再開の必要生証拠を揃える。", - "初期always-fail preflightを完成gateとせず、承認原文とraw来歴/保存member一致/必須caseの検証を既存契約範囲で完成させる。", - "最終必要検証・正式独立レビュー・通常統合・台帳反映。個別修正上限はユーザー撤廃済みnull、使用済み2を保持し無断リセットしない。" + "依存先休業日跨ぎと正式保存/別PID復元の現版生証拠をcheckerへ結合する。原サービス/予約保持・課金一回・原保存全member不変・全型付きstate一致を監査し、未収集条件は未達のまま維持。", + "18:00実測は有限条件。未完了serviceの夜番不在/残業、非ゼロ給与決算、正式保存/別PID、command再送、EV予約等の不足と既存証拠適用性を個別確認する。", + "未提出repair4のA/B修正を保持し、C/D/Eの必要範囲を現実のguarded rawから完成する。LLM900秒打切りは実Opus判断と既存上限撤廃指示に沿う専用CLIのP04 implementer限定adapterで除去済み。登録config/digestと検証watchdogは不変。", + "原7領域/安全性3結果/30-88の全条件を満たしてから独立wholeレビュー・登録validate・通常integration/final・台帳反映する。原成果の完了加点0。" ], - "updated_at_jst": "2026-10-15T23:01:10.704363+09:00", + "updated_at_jst": "2026-10-16T01:31:45.380975+09:00", "current_recheck": "execution/p04-01-current-recheck-20261015/recheck.json", "policy_candidate": "execution/p04-01-current-recheck-20261015/D05_POLICY_CANDIDATE.md", "owner_policy_update": { @@ -3869,12 +3869,23 @@ "reference": "docs/plans/original-completion-2026-10-02/execution/p04-01-current-recheck-20261015/D05_OWNER_APPROVAL.json", "scope": "two owner policy selections only; no acceptance credit", "remaining": "condition-specific evidence applicability, missing boundaries, independent review, ordinary integration/final", - "actual_commander": "execution/p04-01-current-recheck-20261015/OPUS_D05_APPROVED_VISIBLE_CONTEXT.json", + "actual_commander": "execution/p04-01-current-recheck-20261015/OPUS_AFTER_REAL_D05_FORMAL_DECISION.json", "runner_state": "implementing", - "repairs": 3, + "repairs": 5, "worker_model": "gpt-6-astra", "model_selected_by": "actual Claude Opus 5.5 run decision", - "run_decision": "execution/p04-01-current-recheck-20261015/OPUS_D05_RUN_DECISION.json" + "run_decision": "execution/p04-01-current-recheck-20261015/OPUS_REPAIR5_C_RUN_DECISION.json", + "submitted": "9767b0a28ca8d252520307dbbac60a1d8cfb87ab", + "registered_validation": "9d724d81f0e74a9f94dfd94cdc6eb5c6", + "root_work_continues": true, + "native_shift_proof": "execution/p04-01-current-recheck-20261015/ROOT_APPROVED_SHIFT_CURRENT_RESULT.json", + "incomplete_checkpoint": "execution/p04-01-current-recheck-20261015/REPAIR4_PRESERVED_WORK.json", + "dependency_midnight_proof": "execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_MIDNIGHT_RESULT.json", + "duplicate_probe_worker_dispatched": false, + "formal_dependency_proof": "execution/p04-01-current-recheck-20261015/ROOT_APPROVED_DEPENDENCY_FORMAL_RESULT.json", + "timeout_adapter": "execution/p04-01-current-recheck-20261015/OWNER_P04_LLM_TIMEOUT_ADAPTER.json", + "actual_run": "cb864ee199f346408370f8944e574eb7", + "current_scope": "trusted raw binding C plus relevant adversarial Python fixtures only; no product/probe duplication or native/full regression" } }, { @@ -8782,7 +8793,7 @@ }, "legacy_state": "planned", "state_scope": "package-level; completed means whole package accepted; partial implementation is not completion", - "current_summary": "独立Opusのb7a7cc0 high1/medium1を受け、同じSolで265ce30へ修正提出。projection/legacy整合を保つ排他route正負対照、通常+実保存復旧の原子拒否、閾値候補8fieldの型検証を追加。既存5試験不変。新版局所影響7/1839・全308parse・9owned終了/正式validate成功。取得済Opusモデル選定と実review指示を再利用し、新規判断を偽造せず。Opus再reviewは実利用枠22:40回復後、実最新main合成native/通常統合finalと原UI/初期値/最終全回帰/whole review/Windowsが残る。原成果加点0。", + "current_summary": "原P18-01内のbackend P18-01-CODEは265ce30の実Opus独立review PASS、1338ソース/設定/marker/engine全一致で既存native7/1839/316parseを再利用し、通常integration/final PASS、main5f6bc11へ統合してRunner4/4 completed。全証拠と旧失敗を保持、重複native0。原P18-01は通常UIの3軸グラフ/盾表示、承認済み本番初期値、最終全回帰・whole独立受入・適用Windows条件が残りin_progress、原88の完了加点0。", "remaining_deliverables": [ { "id": "P18-01", @@ -8829,14 +8840,22 @@ "current_game_acceptance_inferred": false } ], - "updated_at_jst": "2026-10-15T20:12:19.677704+09:00", - "progress_summary": "独立Opusのb7a7cc0 high1/medium1を受け、同じSolで265ce30へ修正提出。projection/legacy整合を保つ排他route正負対照、通常+実保存復旧の原子拒否、閾値候補8fieldの型検証を追加。既存5試験不変。新版局所影響7/1839・全308parse・9owned終了/正式validate成功。取得済Opusモデル選定と実review指示を再利用し、新規判断を偽造せず。Opus再reviewは実利用枠22:40回復後、実最新main合成native/通常統合finalと原UI/初期値/最終全回帰/whole review/Windowsが残る。原成果加点0。", + "updated_at_jst": "2026-10-15T23:21:55.733068+09:00", + "progress_summary": "原P18-01内のbackend P18-01-CODEは265ce30の実Opus独立review PASS、1338ソース/設定/marker/engine全一致で既存native7/1839/316parseを再利用し、通常integration/final PASS、main5f6bc11へ統合してRunner4/4 completed。全証拠と旧失敗を保持、重複native0。原P18-01は通常UIの3軸グラフ/盾表示、承認済み本番初期値、最終全回帰・whole独立受入・適用Windows条件が残りin_progress、原88の完了加点0。", "remaining_gaps": [ - "265ce30の別Opus再reviewで原4backend条件・旧high/mediumとlow処置を確認。", - "実最新main合成ソースの必要native7と通常統合/final。", - "原P18-01の通常UI表示一致、本番初期値承認、最終全回帰、whole review、同一Windows最終適用条件。" + "original three-axis relationship graph and shield in normal UI with read-model equality", + "approved production initial values and required values", + "exact final full regression and whole-unit independent acceptance", + "applicable same-candidate Windows device acceptance" ], - "current_execution": "execution/p18-01-resume-20261015/CURRENT_ACCEPTANCE_AUDIT.json" + "current_execution": "execution/p18-01-resume-20261015/CURRENT_ACCEPTANCE_AUDIT.json", + "current_summary": "原P18-01内のbackend P18-01-CODEは265ce30の実Opus独立review PASS、1338ソース/設定/marker/engine全一致で既存native7/1839/316parseを再利用し、通常integration/final PASS、main5f6bc11へ統合してRunner4/4 completed。全証拠と旧失敗を保持、重複native0。原P18-01は通常UIの3軸グラフ/盾表示、承認済み本番初期値、最終全回帰・whole独立受入・適用Windows条件が残りin_progress、原88の完了加点0。", + "backend_completion": { + "reference": "execution/p18-01-resume-20261015/ROOT_BACKEND_FORMAL_COMPLETION_265_R02.json", + "runner_state": "completed", + "integration_commit": "5f6bc11d6bb6e92d22d787989b219fef3a435bc1", + "original_credit": 0 + } }, { "id": "P18-02",