diff --git a/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md b/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md index 699ba24..66b0620 100644 --- a/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md +++ b/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md @@ -1,8 +1,8 @@ # 原本全実装に向けた作業計画 2026年10月改訂 -## P23-02 現着手・次に閉じる1件(2026-10-12・r294証拠統合) +## P23-02 現着手・次に閉じる1件(2026-10-12・r301証拠統合) -P23-02は着手中・次に閉じる1件。30パッケージ/88成果、正式9/着手19/予定60、部分点なし。制作r32と選定済み未採用作業r62を保持。原17条件C01-C09/X1-X8はすべて未受入、Windows実機を要するC08/X8だけブロック。Ctrl保持wheel/左保持dragは延期・未達・免除なし。最新の局所・原S6影響・whole647検証済み実験候補はr290/library291。r285-r02の整数Array符号化/追記・単一先頭削除候補は実校正を通らず、r287の4024/112失敗を拒否記録として保持。r290は型付きINT・空classのscript不在をNILまたはnull OBJECTだけ許す判定修復で、符号化・全4校正・元fallback・記録・閾値・通知・所有処理は親と同一。静的290とbridge compile1/link1・SDK再コンパイル0のhost291を独立有限受理。局所r292-r02は同一library291をactual loadし、原260-r02の同入力/設定/原1299stage/engine/fixture bodyを照合した有効な原結果を再利用、原Budget833行・6,589,288bytes全文一致と整数codec33ケース・4024/0を独立有限受理。整数28ケースは型付き/無型・read-only/可変・int32/int64境界・窓長0/1/2/9/511/512/513・返却bytesの変更隔離を実engine bytesと比較、非整数5ケースは拒否/無変更。説明3箇所の旧対象名による未実行r292拒否は履歴保持し、r02で説明だけ修復・試験基準不変・既存libraryコピー再利用。r293-r04は同一r290/library291で元S6/GameClock24/0、直前r274/library275と同cold646/paused/speed1/同Budget257一時patch/原Pathのwhole各15/0、全11,487,732bytes原oracle同値・3所有PID正常終了・strict/private/source/default/stage/SUPPORT保護復元を独立有限受理。同期時間1214852→1217932usは隣接単発観測のみで、50ms未達・安定利益/P95/D10未証明。料金/重み/閾値/論理時刻/行動/会計/乱数/保存は変更しない。r274/275の純タグ局所278-r04・whole281、同期builtin fallback静的280と他の旧実験詳細は版付き証拠・before/previous_summaryへ保持。全172・通常OS/Windows・性能・採用・単位完成は未受入、未選定・未採用。Gitの実験checkpoint配下に空.gdignoreを置き、Budget class_nameが本体のresource走査へ混ざることを防止。正式完了追加0。次はr290/library291は今回の単発比較で性能改善を示さず追加codecの維持負担があるため不採用とし、次の性能修正元はr274/library275を保持する。r290/library291の局所・原S6影響・全保存同値証拠を保持し、代表同期負荷の必須性能未達を解消する関連修正を1件に絞る。未変更版の性能反復や全回帰を重複せず、関連変更を固めた同一最終版で必須全172・P95/D10・50ms・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。人のCtrl保持ホイールと左ボタン保持ドラッグは延期・未達・免除なし。 +P23-02は着手中・次に閉じる1件。30パッケージ/88成果、正式9/着手19/予定60、部分点なし。制作r32と選定済み未採用作業r62を保持。原17条件C01-C09/X1-X8はすべて未受入、Windows実機C08/X8だけブロック。最新Guest候補r298はNeed mapを同一評価内で共有、exact service/guest/definition ScriptとDictionary guard、原validation・custom fallback・呼出/計算順序を維持。r295は局所296の単一Need測定で速度利益を示さず未採用。r298静的支持と局所299-r02の1657/0、235入力+2callback+6scalar state=243結果全文同値を独立有限受理。INT極値・String/StringName・readonly・入力保持・所有・bool/float/String scalar/stateを確認。r299説明の旧1653表記は未実行拒否記録を保持、r02は説明だけ修復しQA/1657基準不変。r300は同一r274/library275で原S6/GameClock24/0、同Budget257/原Path・cold646/paused/speed1の元Guest対r298 whole各15/0、全11,487,732 bytes原oracle同値・3所有PID正常終了・private/strict/source/default/stages/SUPPORT復元を独立有限受理。同期時間1153117→1167153usは隣接単発観測であり、安定利益/P95/D10/50msを認定しない。Object変換/nested Resource hook/script replacement・一般再入は未受入。料金/重み/閾値/論理時刻/行動/会計/乱数/保存を変更しない。既存実装親r274/library275を保持、r298は未採用。旧codec290の不採用と局所/whole証拠を履歴保持。全172・通常OS/Windows・性能・単位完成は未受入。正式完了追加0。次はr298 GuestServiceは代表whole単発比較で速度利益を示さず、任意補助共有処理を加えるため採用を見送る。r274/library275を保持し、既存の版付きattributionと現在の投影経路を照合して、同期時間を支配する経路投影処理に必要な修正を1件選ぶ。単体helper改善を全体性能へ広げず、小さな候補の追加や未変更版の全回帰を繰り返さない。採用候補を固めた同一最終版で必須全172・50ms/P95/D10・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。手動Ctrl保持wheel/左保持dragは延期・未達・免除なし。 [host_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-lazy-edge-cache-build-actual-independent-review-r141.json)、[protocol](../../../artifacts/original-completion-2026-10-02/p23-02-native-lazy-edge-cache-protocol-actual-independent-review-r143.json)、[public_mutations](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-actual-independent-review-r146.json)、[existing_impact](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-existing-impact-actual-independent-review-r147.json)、[cache_lifetime](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-queue-retention-actual-independent-review-r150.json)、[whole647_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-pair-whole647-actual-independent-review-r151.json)、[residual_diagnostic](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-residual-diagnostic-actual-independent-review-r155.json)、[elevator_index_static](../../../artifacts/original-completion-2026-10-02/p23-02-elevator-connector-index-static-independent-review-r156.json)、[elevator_index_local](../../../artifacts/original-completion-2026-10-02/p23-02-elevator-connector-index-local-actual-independent-review-r160.json)、[elevator_index_impact](../../../artifacts/original-completion-2026-10-02/p23-02-elevator-index-existing-impact-actual-independent-review-r161.json)、[elevator_index_whole647_pair](../../../artifacts/original-completion-2026-10-02/p23-02-elevator-index-pair-whole647-actual-independent-review-r162.json)、[elevator_index_repeated_pair](../../../artifacts/original-completion-2026-10-02/p23-02-elevator-index-repeat-whole647-actual-independent-review-r164.json)、[budget_integer_window_static](../../../artifacts/original-completion-2026-10-02/p23-02-budget-integer-window-static-independent-review-r165.json)、[budget_integer_window_local](../../../artifacts/original-completion-2026-10-02/p23-02-budget-integer-window-local-actual-independent-review-r169.json)、[budget_integer_window_impact](../../../artifacts/original-completion-2026-10-02/p23-02-budget-integer-window-existing-impact-actual-independent-review-r171.json)、[budget_integer_window_pair](../../../artifacts/original-completion-2026-10-02/p23-02-budget-integer-window-pair-whole647-actual-independent-review-r172.json)、[residual_detail](../../../artifacts/original-completion-2026-10-02/p23-02-residual-detail-diagnostic-actual-independent-review-r174.json)、[input_structure](../../../artifacts/original-completion-2026-10-02/p23-02-residual-input-structure-independent-review-r175.json)、[host_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-facility-access-build-actual-independent-review-r181.json)、[local_equivalence](../../../artifacts/original-completion-2026-10-02/p23-02-native-facility-access-local-actual-independent-review-r183.json)、[host_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-build-actual-independent-review-r188.json)、[local_equivalence](../../../artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-local-actual-independent-review-r191.json)、[boundaries](../../../artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-boundaries-actual-independent-review-r195.json)、[whole_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-whole-pair-actual-independent-review-r196.json)、[repeat](../../../artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-repeat-actual-independent-review-r198.json)、[dependency](../../../artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-dependency-actual-independent-review-r200.json)、[impact](../../../artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-original-impact-actual-independent-review-r205.json)、[reconstruction_static](../../../artifacts/original-completion-2026-10-02/p23-02-native-path-reconstruction-static-independent-review-r204.json)、[reconstruction_host](../../../artifacts/original-completion-2026-10-02/p23-02-native-path-reconstruction-build-actual-independent-review-r206.json)、[reconstruction_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-actual-independent-review-r211.json)、[reconstruction_whole_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-whole-pair-actual-independent-review-r214.json)、[travel_ownership_static](../../../artifacts/original-completion-2026-10-02/p23-02-native-travel-ownership-static-independent-review-r216.json)、[travel_ownership_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-travel-ownership-build-actual-independent-review-r217.json)、[travel_ownership_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-travel-ownership-local-actual-independent-review-r220.json)、[travel_ownership_whole_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-travel-ownership-whole-pair-actual-independent-review-r222.json)、[tag_helpers_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-tag-helpers-local-actual-independent-review-r229.json)、[tag_helpers_whole_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-tag-helpers-whole-pair-actual-independent-review-r231.json)、[cache_key_static](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-key-static-independent-review-r233.json)、[cache_key_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-key-build-actual-independent-review-r234.json)、[cache_key_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-key-local-actual-independent-review-r235.json)、[cache_key_whole_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-key-whole-pair-actual-independent-review-r236-r02.json)、[current233_diagnostic](../../../artifacts/original-completion-2026-10-02/p23-02-current-residual-diagnostic-actual-independent-review-r238.json)、[local_names_static](../../../artifacts/original-completion-2026-10-02/p23-02-native-local-names-static-independent-review-r239.json)、[local_names_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-local-names-build-actual-independent-review-r240.json)、[local_names_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-local-names-local-actual-independent-review-r241.json)、[local_names_whole_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-local-names-whole-pair-actual-independent-review-r242.json)、[native_internal_static](../../../artifacts/original-completion-2026-10-02/p23-02-native-internal-diagnostic-static-independent-review-r244.json)、[native_internal_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-internal-diagnostic-build-actual-independent-review-r245-r02.json)、[native_internal_diagnostic](../../../artifacts/original-completion-2026-10-02/p23-02-native-internal-diagnostic-actual-independent-review-r246-r02.json)、[cached_path_static](../../../artifacts/original-completion-2026-10-02/p23-02-native-cached-path-summary-static-independent-review-r248-r02.json)、[cached_path_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-cached-path-summary-build-actual-independent-review-r249.json)、[cached_path_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-cached-path-summary-local-actual-independent-review-r250-r02.json)、[invalid_cache_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-invalid-cached-path-local-actual-independent-review-r251-r02.json)、[cached_path_whole_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-cached-path-whole-pair-actual-independent-review-r253-r02.json)、[budget_callback_diagnostic](../../../artifacts/original-completion-2026-10-02/p23-02-budget-callback-diagnostic-actual-independent-review-r255-r03.json)、[budget_native_static](../../../artifacts/original-completion-2026-10-02/p23-02-native-budget-record-static-independent-review-r257-r04.json)、[budget_native_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-budget-record-build-actual-independent-review-r258-r02.json)、[budget_native_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-budget-record-local-actual-independent-review-r260-r02.json)、[budget_native_impact_whole](../../../artifacts/original-completion-2026-10-02/p23-02-native-budget-impact-whole-actual-independent-review-r262.json)。証拠は各入力版・適用範囲に限定する。 diff --git a/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md b/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md index 1d745ae..9b23136 100644 --- a/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md +++ b/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md @@ -1,8 +1,8 @@ # P00〜P03 進捗台帳への証拠統合 -## P23-02 現着手・次に閉じる1件(2026-10-12・r294証拠統合) +## P23-02 現着手・次に閉じる1件(2026-10-12・r301証拠統合) -P23-02は着手中・次に閉じる1件。30パッケージ/88成果、正式9/着手19/予定60、部分点なし。制作r32と選定済み未採用作業r62を保持。原17条件C01-C09/X1-X8はすべて未受入、Windows実機を要するC08/X8だけブロック。Ctrl保持wheel/左保持dragは延期・未達・免除なし。最新の局所・原S6影響・whole647検証済み実験候補はr290/library291。r285-r02の整数Array符号化/追記・単一先頭削除候補は実校正を通らず、r287の4024/112失敗を拒否記録として保持。r290は型付きINT・空classのscript不在をNILまたはnull OBJECTだけ許す判定修復で、符号化・全4校正・元fallback・記録・閾値・通知・所有処理は親と同一。静的290とbridge compile1/link1・SDK再コンパイル0のhost291を独立有限受理。局所r292-r02は同一library291をactual loadし、原260-r02の同入力/設定/原1299stage/engine/fixture bodyを照合した有効な原結果を再利用、原Budget833行・6,589,288bytes全文一致と整数codec33ケース・4024/0を独立有限受理。整数28ケースは型付き/無型・read-only/可変・int32/int64境界・窓長0/1/2/9/511/512/513・返却bytesの変更隔離を実engine bytesと比較、非整数5ケースは拒否/無変更。説明3箇所の旧対象名による未実行r292拒否は履歴保持し、r02で説明だけ修復・試験基準不変・既存libraryコピー再利用。r293-r04は同一r290/library291で元S6/GameClock24/0、直前r274/library275と同cold646/paused/speed1/同Budget257一時patch/原Pathのwhole各15/0、全11,487,732bytes原oracle同値・3所有PID正常終了・strict/private/source/default/stage/SUPPORT保護復元を独立有限受理。同期時間1214852→1217932usは隣接単発観測のみで、50ms未達・安定利益/P95/D10未証明。料金/重み/閾値/論理時刻/行動/会計/乱数/保存は変更しない。r274/275の純タグ局所278-r04・whole281、同期builtin fallback静的280と他の旧実験詳細は版付き証拠・before/previous_summaryへ保持。全172・通常OS/Windows・性能・採用・単位完成は未受入、未選定・未採用。Gitの実験checkpoint配下に空.gdignoreを置き、Budget class_nameが本体のresource走査へ混ざることを防止。正式完了追加0。次はr290/library291は今回の単発比較で性能改善を示さず追加codecの維持負担があるため不採用とし、次の性能修正元はr274/library275を保持する。r290/library291の局所・原S6影響・全保存同値証拠を保持し、代表同期負荷の必須性能未達を解消する関連修正を1件に絞る。未変更版の性能反復や全回帰を重複せず、関連変更を固めた同一最終版で必須全172・P95/D10・50ms・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。人のCtrl保持ホイールと左ボタン保持ドラッグは延期・未達・免除なし。 +P23-02は着手中・次に閉じる1件。30パッケージ/88成果、正式9/着手19/予定60、部分点なし。制作r32と選定済み未採用作業r62を保持。原17条件C01-C09/X1-X8はすべて未受入、Windows実機C08/X8だけブロック。最新Guest候補r298はNeed mapを同一評価内で共有、exact service/guest/definition ScriptとDictionary guard、原validation・custom fallback・呼出/計算順序を維持。r295は局所296の単一Need測定で速度利益を示さず未採用。r298静的支持と局所299-r02の1657/0、235入力+2callback+6scalar state=243結果全文同値を独立有限受理。INT極値・String/StringName・readonly・入力保持・所有・bool/float/String scalar/stateを確認。r299説明の旧1653表記は未実行拒否記録を保持、r02は説明だけ修復しQA/1657基準不変。r300は同一r274/library275で原S6/GameClock24/0、同Budget257/原Path・cold646/paused/speed1の元Guest対r298 whole各15/0、全11,487,732 bytes原oracle同値・3所有PID正常終了・private/strict/source/default/stages/SUPPORT復元を独立有限受理。同期時間1153117→1167153usは隣接単発観測であり、安定利益/P95/D10/50msを認定しない。Object変換/nested Resource hook/script replacement・一般再入は未受入。料金/重み/閾値/論理時刻/行動/会計/乱数/保存を変更しない。既存実装親r274/library275を保持、r298は未採用。旧codec290の不採用と局所/whole証拠を履歴保持。全172・通常OS/Windows・性能・単位完成は未受入。正式完了追加0。次はr298 GuestServiceは代表whole単発比較で速度利益を示さず、任意補助共有処理を加えるため採用を見送る。r274/library275を保持し、既存の版付きattributionと現在の投影経路を照合して、同期時間を支配する経路投影処理に必要な修正を1件選ぶ。単体helper改善を全体性能へ広げず、小さな候補の追加や未変更版の全回帰を繰り返さない。採用候補を固めた同一最終版で必須全172・50ms/P95/D10・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。手動Ctrl保持wheel/左保持dragは延期・未達・免除なし。 [host_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-lazy-edge-cache-build-actual-independent-review-r141.json)、[protocol](../../../artifacts/original-completion-2026-10-02/p23-02-native-lazy-edge-cache-protocol-actual-independent-review-r143.json)、[public_mutations](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-actual-independent-review-r146.json)、[existing_impact](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-existing-impact-actual-independent-review-r147.json)、[cache_lifetime](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-queue-retention-actual-independent-review-r150.json)、[whole647_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-pair-whole647-actual-independent-review-r151.json)、[residual_diagnostic](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-residual-diagnostic-actual-independent-review-r155.json)、[elevator_index_static](../../../artifacts/original-completion-2026-10-02/p23-02-elevator-connector-index-static-independent-review-r156.json)、[elevator_index_local](../../../artifacts/original-completion-2026-10-02/p23-02-elevator-connector-index-local-actual-independent-review-r160.json)、[elevator_index_impact](../../../artifacts/original-completion-2026-10-02/p23-02-elevator-index-existing-impact-actual-independent-review-r161.json)、[elevator_index_whole647_pair](../../../artifacts/original-completion-2026-10-02/p23-02-elevator-index-pair-whole647-actual-independent-review-r162.json)、[elevator_index_repeated_pair](../../../artifacts/original-completion-2026-10-02/p23-02-elevator-index-repeat-whole647-actual-independent-review-r164.json)、[budget_integer_window_static](../../../artifacts/original-completion-2026-10-02/p23-02-budget-integer-window-static-independent-review-r165.json)、[budget_integer_window_local](../../../artifacts/original-completion-2026-10-02/p23-02-budget-integer-window-local-actual-independent-review-r169.json)、[budget_integer_window_impact](../../../artifacts/original-completion-2026-10-02/p23-02-budget-integer-window-existing-impact-actual-independent-review-r171.json)、[budget_integer_window_pair](../../../artifacts/original-completion-2026-10-02/p23-02-budget-integer-window-pair-whole647-actual-independent-review-r172.json)、[residual_detail](../../../artifacts/original-completion-2026-10-02/p23-02-residual-detail-diagnostic-actual-independent-review-r174.json)、[input_structure](../../../artifacts/original-completion-2026-10-02/p23-02-residual-input-structure-independent-review-r175.json)、[host_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-facility-access-build-actual-independent-review-r181.json)、[local_equivalence](../../../artifacts/original-completion-2026-10-02/p23-02-native-facility-access-local-actual-independent-review-r183.json)、[host_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-build-actual-independent-review-r188.json)、[local_equivalence](../../../artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-local-actual-independent-review-r191.json)、[boundaries](../../../artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-boundaries-actual-independent-review-r195.json)、[whole_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-whole-pair-actual-independent-review-r196.json)、[repeat](../../../artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-repeat-actual-independent-review-r198.json)、[dependency](../../../artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-dependency-actual-independent-review-r200.json)、[impact](../../../artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-original-impact-actual-independent-review-r205.json)、[reconstruction_static](../../../artifacts/original-completion-2026-10-02/p23-02-native-path-reconstruction-static-independent-review-r204.json)、[reconstruction_host](../../../artifacts/original-completion-2026-10-02/p23-02-native-path-reconstruction-build-actual-independent-review-r206.json)、[reconstruction_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-actual-independent-review-r211.json)、[reconstruction_whole_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-whole-pair-actual-independent-review-r214.json)、[travel_ownership_static](../../../artifacts/original-completion-2026-10-02/p23-02-native-travel-ownership-static-independent-review-r216.json)、[travel_ownership_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-travel-ownership-build-actual-independent-review-r217.json)、[travel_ownership_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-travel-ownership-local-actual-independent-review-r220.json)、[travel_ownership_whole_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-travel-ownership-whole-pair-actual-independent-review-r222.json)、[tag_helpers_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-tag-helpers-local-actual-independent-review-r229.json)、[tag_helpers_whole_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-tag-helpers-whole-pair-actual-independent-review-r231.json)、[cache_key_static](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-key-static-independent-review-r233.json)、[cache_key_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-key-build-actual-independent-review-r234.json)、[cache_key_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-key-local-actual-independent-review-r235.json)、[cache_key_whole_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-cache-key-whole-pair-actual-independent-review-r236-r02.json)、[current233_diagnostic](../../../artifacts/original-completion-2026-10-02/p23-02-current-residual-diagnostic-actual-independent-review-r238.json)、[local_names_static](../../../artifacts/original-completion-2026-10-02/p23-02-native-local-names-static-independent-review-r239.json)、[local_names_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-local-names-build-actual-independent-review-r240.json)、[local_names_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-local-names-local-actual-independent-review-r241.json)、[local_names_whole_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-local-names-whole-pair-actual-independent-review-r242.json)、[native_internal_static](../../../artifacts/original-completion-2026-10-02/p23-02-native-internal-diagnostic-static-independent-review-r244.json)、[native_internal_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-internal-diagnostic-build-actual-independent-review-r245-r02.json)、[native_internal_diagnostic](../../../artifacts/original-completion-2026-10-02/p23-02-native-internal-diagnostic-actual-independent-review-r246-r02.json)、[cached_path_static](../../../artifacts/original-completion-2026-10-02/p23-02-native-cached-path-summary-static-independent-review-r248-r02.json)、[cached_path_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-cached-path-summary-build-actual-independent-review-r249.json)、[cached_path_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-cached-path-summary-local-actual-independent-review-r250-r02.json)、[invalid_cache_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-invalid-cached-path-local-actual-independent-review-r251-r02.json)、[cached_path_whole_pair](../../../artifacts/original-completion-2026-10-02/p23-02-native-cached-path-whole-pair-actual-independent-review-r253-r02.json)、[budget_callback_diagnostic](../../../artifacts/original-completion-2026-10-02/p23-02-budget-callback-diagnostic-actual-independent-review-r255-r03.json)、[budget_native_static](../../../artifacts/original-completion-2026-10-02/p23-02-native-budget-record-static-independent-review-r257-r04.json)、[budget_native_build](../../../artifacts/original-completion-2026-10-02/p23-02-native-budget-record-build-actual-independent-review-r258-r02.json)、[budget_native_local](../../../artifacts/original-completion-2026-10-02/p23-02-native-budget-record-local-actual-independent-review-r260-r02.json)、[budget_native_impact_whole](../../../artifacts/original-completion-2026-10-02/p23-02-native-budget-impact-whole-actual-independent-review-r262.json)。証拠は各入力版・適用範囲に限定する。 diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/README.md b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/README.md new file mode 100644 index 0000000..62030b2 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/README.md @@ -0,0 +1,13 @@ +# P23-02 Guest Need local/whole r299–r301 checkpoint + +r298 の有限局所 r299-r02、原 S6 と代表 whole r300、r301 台帳反映の証拠を保存する。候補ソース r295/r298、先行 r296 と静的レビューは隣の guest-need-normalization-r295-r298 checkpoint に保持し重複保存しない。 + +r299 は説明の旧試験数 1653 が残ったため未実行拒否。r299-r02 は説明と参照パスだけ修復し、QA・実行 gate の 1657 条件を維持した。実 Godot 局所は 1657/0、235 inputs+2 custom callback+6 scalar state=243 fixture。全 expected/actual ordered typed bytes 同値を独立レビュー済み。bool/float/String の追加状態・readonly・INT 極値等の列挙条件に限り、Object/Resource hook/script replacement・一般再入は未確認。 + +r300 は同じ r274/library275 と Budget257 を使用し、Guest298 を S6/candidate のみへ適用。原 S6/GameClock 24/0 後、cold646/paused/speed1 の原 Guest と候補 whole 各15/0。両 after647 全11,487,732 bytes が原 oracle と一致。全3 owned engine が正常終了、strict/private・Guest/Budget/project 復元・source/default/D4/SUPPORT/共有親 stage 保全を独立レビュー済み。同期時間 1,153,117→1,167,153 µs は隣接単発観測で、速度利益を示さず、安定した遅化や原因を断定しない。50ms/P95/D10 性能受入なし。 + +r298 は採用を見送る。実装親 r274/library275、制作 r32、選定済み未採用作業 r62 を保持する。次は既存版付き attribution と現在の経路投影処理を照合し、支配処理の必要な修正1件を選ぶ。全回帰の重複・小さな候補の際限ない追加は避ける。 + +正式完了追加0、30パッケージ/88成果、正式9/着手19/予定60、部分点なし。原17条件未受入、Windows C08/X8のみブロック、手動Ctrl保持wheel/左保持dragは延期・免除なし。必須全172、通常OS/x3/小画面/終了、同一Windows配布版実機など残件をr301台帳へ反映した。台帳 validator49/0はゲーム受入を代替しない。 + +manifest は保存コピーと原ファイルのサイズ・SHA256を固定する。大きなJSONはgzip復元後に全文一致を検証。原絶対参照とレビュー時r294文脈を保持し、過去正本は integration-candidate-r301/before 又は Git履歴を参照する。engine/SDK/stage等を備えた単独実行パッケージではない。完全実行証拠はローカル artifacts に残し、保存 GDScript は親 .gdignore で本体resource走査から除外する。 diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/manifest.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/manifest.json new file mode 100644 index 0000000..54851ac --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/manifest.json @@ -0,0 +1,323 @@ +{ + "schema": 1, + "unit": "P23-02", + "status": "declined_trial_and_finite_evidence", + "formal_completion_added": 0, + "entries": [ + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-preexecution-independent-review-r299.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-preexecution-independent-review-r299.json", + "bytes": 12734, + "sha256": "8ebca46556df998665e064e14bf83708b5923955e72edb0807a6209e99d96f0c", + "stored_bytes": 12734, + "stored_sha256": "8ebca46556df998665e064e14bf83708b5923955e72edb0807a6209e99d96f0c", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/input.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299/input.json.gz", + "bytes": 970229, + "sha256": "134dc5a9c3cb82f51a27424467ef48ba31c30482f257f0e37a91dfd6e51768f7", + "stored_bytes": 227557, + "stored_sha256": "8b8a39816f82cf639b07e03098974761758ad649188ed0342195df02f9d019f3", + "encoding": "gzip" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/preexecution-root-verification.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299/preexecution-root-verification.json", + "bytes": 6434, + "sha256": "227e7ab1af48619ebd57a85288b21f04d43445a713bd8007650948cd4eb85849", + "stored_bytes": 6434, + "stored_sha256": "227e7ab1af48619ebd57a85288b21f04d43445a713bd8007650948cd4eb85849", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-preexecution-independent-review-r299-r02.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-preexecution-independent-review-r299-r02.json", + "bytes": 12040, + "sha256": "091dc5eed560939aeb5597e579fd529a4e99ae1332a48547e160eef85d6ae7fe", + "stored_bytes": 12040, + "stored_sha256": "091dc5eed560939aeb5597e579fd529a4e99ae1332a48547e160eef85d6ae7fe", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-actual-independent-review-r299-r02.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-actual-independent-review-r299-r02.json", + "bytes": 23481, + "sha256": "892b47057267c6bd4b839985bcf490ea0bb36474e2cd4e5ad3a9644b6e4331d2", + "stored_bytes": 23481, + "stored_sha256": "892b47057267c6bd4b839985bcf490ea0bb36474e2cd4e5ad3a9644b6e4331d2", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02.py", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02.py", + "bytes": 5550, + "sha256": "5830c5b5c3fd2d7a5220a9aab44591f411550ba12ad345a395af3811bad4a4f7", + "stored_bytes": 5550, + "stored_sha256": "5830c5b5c3fd2d7a5220a9aab44591f411550ba12ad345a395af3811bad4a4f7", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300.py", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300.py", + "bytes": 8498, + "sha256": "4d287d07ede1d8ce1b14a67edc01d7574320064727b01bfd45abb80423eeeef6", + "stored_bytes": 8498, + "stored_sha256": "4d287d07ede1d8ce1b14a67edc01d7574320064727b01bfd45abb80423eeeef6", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-preexecution-independent-review-r300.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-preexecution-independent-review-r300.json", + "bytes": 21063, + "sha256": "40c7a51732529a2a201fb8c617e5e8f833a8d63a7562dc36c71af7123c2a6dec", + "stored_bytes": 21063, + "stored_sha256": "40c7a51732529a2a201fb8c617e5e8f833a8d63a7562dc36c71af7123c2a6dec", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-actual-independent-review-r300.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-actual-independent-review-r300.json", + "bytes": 43229, + "sha256": "05594a0441ee2757b56168e44377251dfd63f5c08ddb031ae1c59f46509f10e7", + "stored_bytes": 43229, + "stored_sha256": "05594a0441ee2757b56168e44377251dfd63f5c08ddb031ae1c59f46509f10e7", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r301.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-current-progress-disposition-r301.json", + "bytes": 58071, + "sha256": "ac64c035130b63ae0a5d0dda247afc5ea07d2c77b57fede7b7558142e5279bfd", + "stored_bytes": 58071, + "stored_sha256": "ac64c035130b63ae0a5d0dda247afc5ea07d2c77b57fede7b7558142e5279bfd", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r301/input.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-progress-integration-candidate-r301/input.json", + "bytes": 10817, + "sha256": "7471f3ec1b5e220ac6487543f2ad4d81d3c32b2b3cecab36070b8d81adbcd604", + "stored_bytes": 10817, + "stored_sha256": "7471f3ec1b5e220ac6487543f2ad4d81d3c32b2b3cecab36070b8d81adbcd604", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-r301/execution.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-progress-integration-r301/execution.json.gz", + "bytes": 535261, + "sha256": "adcebb0e0c31c09ad426f6f5d89cbd6364048f1b7fe17f92e594254cadabc22c", + "stored_bytes": 98799, + "stored_sha256": "a548190f9fa9bf8b9bf4b4b47ce9dfd1006ad3a6a7c9db524180daab24734155", + "encoding": "gzip" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-r301/plan_validation.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-progress-integration-r301/plan_validation.json", + "bytes": 8285, + "sha256": "b8aec785961634699f5ff9d8806582ca9f13e8e3299d394570539061796e0c89", + "stored_bytes": 8285, + "stored_sha256": "b8aec785961634699f5ff9d8806582ca9f13e8e3299d394570539061796e0c89", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/input.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/input.json.gz", + "bytes": 970408, + "sha256": "a6422ee7db963665bd8626d3bbfc8887c65f3a26292355082f46cc1b73c1c5f3", + "stored_bytes": 227649, + "stored_sha256": "c0c76ce7e5a2f2c2d7eee6932a603f0e6d885f8b8529cd5595fba41c6c866a84", + "encoding": "gzip" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/local.gd", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/local.gd", + "bytes": 8749, + "sha256": "3259350158c36e5db0469bce10d75a5bba231e850303ab4a03938da1401886a1", + "stored_bytes": 8749, + "stored_sha256": "3259350158c36e5db0469bce10d75a5bba231e850303ab4a03938da1401886a1", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/guarded.gd", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/guarded.gd", + "bytes": 529, + "sha256": "535a938786caa1c870f319a56ea7f0d2d53ccc197a9ef9345e8b19b9f34f9131", + "stored_bytes": 529, + "stored_sha256": "535a938786caa1c870f319a56ea7f0d2d53ccc197a9ef9345e8b19b9f34f9131", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/original_guest_service.gd", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/original_guest_service.gd", + "bytes": 61426, + "sha256": "88b993d4b71ea1b8684245f1fd925d4cda0f4f64f4a5572345e7d0566df29390", + "stored_bytes": 61426, + "stored_sha256": "88b993d4b71ea1b8684245f1fd925d4cda0f4f64f4a5572345e7d0566df29390", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/custom_definition.gd", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/custom_definition.gd", + "bytes": 281, + "sha256": "d29c18196c89452a0ba6db8ec17d0ac2e75be2b6092533c734288230bc44f0c7", + "stored_bytes": 281, + "stored_sha256": "d29c18196c89452a0ba6db8ec17d0ac2e75be2b6092533c734288230bc44f0c7", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/execution.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/execution.json", + "bytes": 11235, + "sha256": "506dfdeeef07e9b71bbbf17fdab1be4450c214aecedd66e55770bc9f426d1283", + "stored_bytes": 11235, + "stored_sha256": "506dfdeeef07e9b71bbbf17fdab1be4450c214aecedd66e55770bc9f426d1283", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/preexecution-root-verification.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/preexecution-root-verification.json", + "bytes": 6780, + "sha256": "ad2fd2ce14d43929376851edc73fb276bd8bb6d7148b79902b51339f90ad3050", + "stored_bytes": 6780, + "stored_sha256": "ad2fd2ce14d43929376851edc73fb276bd8bb6d7148b79902b51339f90ad3050", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/actual-root-verification.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/actual-root-verification.json", + "bytes": 12674, + "sha256": "05ac885cfcc93cf46a6dedadf3705ae119b43c6659c6d3d68a182dbdd4802eed", + "stored_bytes": 12674, + "stored_sha256": "05ac885cfcc93cf46a6dedadf3705ae119b43c6659c6d3d68a182dbdd4802eed", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/measurement/report.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/measurement/report.json", + "bytes": 1448, + "sha256": "cb007d14600baf2845717e05b8626d45bcdc4533a5f75c5838a7544183c0b1b9", + "stored_bytes": 1448, + "stored_sha256": "cb007d14600baf2845717e05b8626d45bcdc4533a5f75c5838a7544183c0b1b9", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/measurement/evaluation-fixtures.varbytes.zst", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/measurement/evaluation-fixtures.varbytes.zst", + "bytes": 3897, + "sha256": "17c778dbc765c7cc09140e01ac793a461e4a67547513f772099c03e26eed0a23", + "stored_bytes": 3897, + "stored_sha256": "17c778dbc765c7cc09140e01ac793a461e4a67547513f772099c03e26eed0a23", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/input.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/input.json.gz", + "bytes": 1188185, + "sha256": "8a1c470b378c187f7b99396dad9d23ac43e0590fcc546df88c3be675cacb5908", + "stored_bytes": 292156, + "stored_sha256": "c63066db0180e1bfc5d3ba80e646523093414d5ae00132f5b5a784866e1a054c", + "encoding": "gzip" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/whole.gd", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/whole.gd", + "bytes": 4637, + "sha256": "f46859a7cf1e08fd266f25a35c0fb9091f452fe6746d6ebbe43f594944ca29e7", + "stored_bytes": 4637, + "stored_sha256": "f46859a7cf1e08fd266f25a35c0fb9091f452fe6746d6ebbe43f594944ca29e7", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd", + "bytes": 1648, + "sha256": "acbbf7d7575a7c00230a5d0397674a2511a7ec6cbd222d29845bfbdfeb9f778c", + "stored_bytes": 1648, + "stored_sha256": "acbbf7d7575a7c00230a5d0397674a2511a7ec6cbd222d29845bfbdfeb9f778c", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd", + "bytes": 1451, + "sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d", + "stored_bytes": 1451, + "stored_sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd", + "bytes": 1451, + "sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d", + "stored_bytes": 1451, + "stored_sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/execution.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/execution.json", + "bytes": 33275, + "sha256": "4fe6abd9f80b888274b3cbb092e579b5c3841bb41eec618c5b302f4484d01012", + "stored_bytes": 33275, + "stored_sha256": "4fe6abd9f80b888274b3cbb092e579b5c3841bb41eec618c5b302f4484d01012", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/preexecution-root-verification.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/preexecution-root-verification.json", + "bytes": 15796, + "sha256": "52fd13e6d3c044327ca22966022fe3839d52c20bbf55bcb36a0473c6898c1baf", + "stored_bytes": 15796, + "stored_sha256": "52fd13e6d3c044327ca22966022fe3839d52c20bbf55bcb36a0473c6898c1baf", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/actual-root-verification.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/actual-root-verification.json", + "bytes": 29640, + "sha256": "87e072357ed9592fab0e7eacfb4c1222c638560c9f9c1d6e831f7635d7c0e8bb", + "stored_bytes": 29640, + "stored_sha256": "87e072357ed9592fab0e7eacfb4c1222c638560c9f9c1d6e831f7635d7c0e8bb", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/report.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/report.json", + "bytes": 1321, + "sha256": "12343afda6c351f70432b1c6e46d533733d2f2e049c4d182138baaae0ab5a5b6", + "stored_bytes": 1321, + "stored_sha256": "12343afda6c351f70432b1c6e46d533733d2f2e049c4d182138baaae0ab5a5b6", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/report.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/report.json", + "bytes": 1324, + "sha256": "6d01548981cf300c6434d5236a42f205156cd443b9fef366b65255a3e9754812", + "stored_bytes": 1324, + "stored_sha256": "6d01548981cf300c6434d5236a42f205156cd443b9fef366b65255a3e9754812", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/after647.varbytes.zst", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/after647.varbytes.zst", + "bytes": 246720, + "sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880", + "stored_bytes": 246720, + "stored_sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880", + "encoding": "identity" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/after647.varbytes.zst", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/after647.varbytes.zst", + "bytes": 246720, + "sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880", + "stored_bytes": 246720, + "stored_sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880", + "encoding": "identity" + } + ] +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-current-progress-disposition-r301.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-current-progress-disposition-r301.json new file mode 100644 index 0000000..b330e0e --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-current-progress-disposition-r301.json @@ -0,0 +1,836 @@ +{ + "plan_id": "P23-02", + "source_matrix": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r63.json", + "bytes": 6242307, + "sha256": "e70fdb658d2375be1ac28e1733e2bc33e04a3b9b132daa8200fae031570438a1" + }, + "scope": "Original exact17 condition names retained; historical missing details archived without adopting stale-version success as current acceptance", + "production": "r32", + "selected_working_candidate": "r62 unadopted", + "source_candidate": "r298 GuestService plus unchanged r274/library275; finite local299-r02 and S6/whole300, unadopted", + "candidate_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "bytes": 11472, + "sha256": "3e2eaa147e365a74145224d8995bade5b44528d59b5508dc159458555081ed99" + }, + "library": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-build-r275/libtree_numeric_core.macos.template_debug.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "conditions": [ + { + "id": "C01", + "condition": "パン", + "accepted": false, + "historical_missing_conditions": [ + "通常OSでcamera drag/モード切替・位置と対象の維持を確認。", + "制作は独立受理済みr32へ採用済み。r06通常操作証拠は履歴/不変部分の適用範囲に限り、同一採用版への適用性と原全操作条件を確認する。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "原条件全体を同一最終版で検証して受入統合。旧版/局所成功を全条件へ拡張しない。", + "manual_inputs_deferred_not_waived": true + }, + { + "id": "C02", + "condition": "上下スクロール", + "accepted": false, + "historical_missing_conditions": [ + "r06のpan mode wheel上下は営業ON実時間x3と1024x576で有限取得済み。Ctrlzoom・対象保持を最終同候補で確認し、原全受入へ統合。", + "制作は独立受理済みr32へ採用済み。r06通常操作証拠は履歴/不変部分の適用範囲に限り、同一採用版への適用性と原全操作条件を確認する。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "原条件全体を同一最終版で検証して受入統合。旧版/局所成功を全条件へ拡張しない。" + }, + { + "id": "C03", + "condition": "ズーム", + "accepted": false, + "historical_missing_conditions": [ + "r06通常OSの通常wheel上限4.0/下限0.5・追加入力clamp・同じ完成客室click/選択保持・Home復帰は1024x576停止1020で取得し独立受理。全Runtime literal保持。同source全回帰は既受理。残るCtrl-wheel/アンカー適用性と原全条件最終受入を統合。", + "Ctrl通常入力は2つの現API経路で未成立を独立審査。modifier-only拒否/ctrl-right-click後の非修飾wheelを記録し同経路を重複しない。製品guardを変更せず未検証維持。", + "制作は独立受理済みr32へ採用済み。r06通常操作証拠は履歴/不変部分の適用範囲に限り、同一採用版への適用性と原全操作条件を確認する。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "原条件全体を同一最終版で検証して受入統合。旧版/局所成功を全条件へ拡張しない。", + "manual_inputs_deferred_not_waived": true + }, + { + "id": "C04", + "condition": "建設グリッド", + "accepted": false, + "historical_missing_conditions": [ + "r06通常UIでHome後のgrid配置command7 OK、FRONT2セル、350G/資材5、工事995完了と占有、無効UNSUPPORTED/OVERLAP拒否全Runtime literal保持、完成Save1020別PIDLoadは有限取得・独立審査済み。同source最終候補の全回帰172/14759/0を独立受理済み。原条件全体への適用性と残る原操作/Windows等を最終全条件受入へ統合。", + "制作は独立受理済みr32へ採用済み。r06通常操作証拠は履歴/不変部分の適用範囲に限り、同一採用版への適用性と原全操作条件を確認する。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "原条件全体を同一最終版で検証して受入統合。旧版/局所成功を全条件へ拡張しない。" + }, + { + "id": "C05", + "condition": "接続警告", + "accepted": false, + "historical_missing_conditions": [ + "r06通常OSで実入口pathのCONNECTED緑線→対象変更DISCONNECTED破線/amber X/警告→CONNECTED占有地点のPNGとstateを有限取得・独立審査済み。配置可否は到達性と独立に既存規則へ一致。r05 native topology変更根拠は適用条件を限定して保持。同source全回帰172/14759/0を独立受理済み。原11.4への最終全条件受入を統合。", + "制作は独立受理済みr32へ採用済み。r06通常操作証拠は履歴/不変部分の適用範囲に限り、同一採用版への適用性と原全操作条件を確認する。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "原条件全体を同一最終版で検証して受入統合。旧版/局所成功を全条件へ拡張しない。" + }, + { + "id": "C06", + "condition": "HUD配置", + "accepted": false, + "historical_missing_conditions": [ + "実1024x576 clientの上部resource/time/weather/rank、下部layer/build/manage・Load・palette・施設詳細開閉とscroll/zoomの有限画像/操作を取得・独立審査済み。同source全回帰172/14759/0を独立受理済み。試験済み対象範囲の適用性を最終全条件受入へ統合、未試験全modalの成功へ拡張しない。", + "制作は独立受理済みr32へ採用済み。r06通常操作証拠は履歴/不変部分の適用範囲に限り、同一採用版への適用性と原全操作条件を確認する。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "原条件全体を同一最終版で検証して受入統合。旧版/局所成功を全条件へ拡張しない。" + }, + { + "id": "C07", + "condition": "小画面で読めて押せる", + "accepted": false, + "historical_missing_conditions": [ + "r06実Mac client1024x576(CUA画像1024x608 header32)で主要HUD/通常Load/施設クリック/palette/pan wheel/zoom/Home/Gを有限取得・独立審査済み。この寸法はQA入力であり最低仕様値でない。同source全回帰172/14759/0を独立受理済み。原小画面条件の対象操作範囲と最終全条件受入を統合、Windows倍率はC08に残す。", + "制作は独立受理済みr32へ採用済み。r06通常操作証拠は履歴/不変部分の適用範囲に限り、同一採用版への適用性と原全操作条件を確認する。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "原条件全体を同一最終版で検証して受入統合。旧版/局所成功を全条件へ拡張しない。" + }, + { + "id": "C08", + "condition": "Windows表示倍率で読めて押せる", + "accepted": false, + "historical_missing_conditions": [ + "同一対象版Windows実機の表示倍率・実Viewport・読みやすさ・クリック到達性。倍率やD10性能仕様は未確定値を発明しない。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "blocked", + "current_missing": "Windows実機の同一最終配布版・倍率・viewport・操作証拠" + }, + { + "id": "C09", + "condition": "x3時の操作追随", + "accepted": false, + "historical_missing_conditions": [ + "r06小規模営業ON実時間x3の通常操作証拠は履歴/不変適用範囲のみ保持。制作r32と最終採用候補の応答追随・原操作/Windowsを最終受入へ整合する。", + "制作r32全172/14769・限定採用を保持。作業r62の全木36/部分goal14/互換4範囲/全647比較のみ有限受理、r58不変warm証拠のみ条件付き再利用。約2秒同期処理、P95/D10/性能予算、通常OS647以降/x3/終了/小画面/延期保持入力2件/同一Windows実機倍率、同版最終影響・全172が未達。成果単位未完了。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "Latest r298 finite local299-r02 and originalS6/whole300 accepted; single whole tick1167153us, stable gain/P95/D10/50ms/final172/Object Resource script replacement/normal OS/realtime x3/exit/small screen/Windows/original17 unaccepted. Guest candidate unadopted; original r274/library275 implementation parent retained." + }, + { + "id": "X1", + "condition": "原本条件とUI操作が一致", + "accepted": false, + "historical_missing_conditions": [ + "原本11.1/11.4と実OS操作の全9条件対応が必要。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "原条件全体を同一最終版で検証して受入統合。旧版/局所成功を全条件へ拡張しない。" + }, + { + "id": "X2", + "condition": "Runtimeの実利用・会計・行動へ接続", + "accepted": false, + "historical_missing_conditions": [ + "実World/建設command/会計/到達性とpreview/hit/警告を接続。cameraだけの操作は全typed不変を確認。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "原条件全体を同一最終版で検証して受入統合。旧版/局所成功を全条件へ拡張しない。" + }, + { + "id": "X3", + "condition": "途中保存・再起動で再現", + "accepted": false, + "historical_missing_conditions": [ + "P23-01 fresh保存再開を再利用可能だが、今回のcamera/建設/警告に変更がある場合は保存後の座標・選択・対象/後続操作を対象版で確認。camera位置の永続化自体は原文から追加要求しない。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "原条件全体を同一最終版で検証して受入統合。旧版/局所成功を全条件へ拡張しない。" + }, + { + "id": "X4", + "condition": "異常/境界/中断を検証", + "accepted": false, + "historical_missing_conditions": [ + "限界zoom/外部release/focus-lossは151再利用。新上下scroll/警告や小Viewportの境界・中断を必要範囲で追加。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "原条件全体を同一最終版で検証して受入統合。旧版/局所成功を全条件へ拡張しない。" + }, + { + "id": "X5", + "condition": "関連回帰PASS", + "accepted": false, + "historical_missing_conditions": [ + "制作r32の同一source全172/14769のみ別途受理済み。未採用作業r62の同版最終影響試験・全回帰は未実施。固めた正確な最終版で必須検証を実行し、旧版成功を転用しない。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "Latest r298 finite local299-r02 and originalS6/whole300 accepted; single whole tick1167153us, stable gain/P95/D10/50ms/final172/Object Resource script replacement/normal OS/realtime x3/exit/small screen/Windows/original17 unaccepted. Guest candidate unadopted; original r274/library275 implementation parent retained." + }, + { + "id": "X6", + "condition": "要件別ログとソースハッシュを保存", + "accepted": false, + "historical_missing_conditions": [ + "現証拠pinは保存。追加OS/候補のraw・source・環境/設定・receiptが必要。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "原条件全体を同一最終版で検証して受入統合。旧版/局所成功を全条件へ拡張しない。" + }, + { + "id": "X7", + "condition": "既存代表負荷の性能回帰を計測", + "accepted": false, + "historical_missing_conditions": [ + "r06同代表入力のOpsOFF/手動1・3分batch・全typed保存と実描画の有限計測を新実行し独立受理。r05性能値をr06へ転用せず当該版記録。圧縮によるschedule/観測費用を保持。営業ON実時間x3/最大場面/GPU/Windows/P28未受入予算は証明しない。原性能acceptanceへの適用性は残る。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "in_progress", + "current_missing": "Latest r298 finite local299-r02 and originalS6/whole300 accepted; single whole tick1167153us, stable gain/P95/D10/50ms/final172/Object Resource script replacement/normal OS/realtime x3/exit/small screen/Windows/original17 unaccepted. Guest candidate unadopted; original r274/library275 implementation parent retained." + }, + { + "id": "X8", + "condition": "Windows部分実機確認。不可なら未検証を残す", + "accepted": false, + "historical_missing_conditions": [ + "原X8の未検証保持分岐は使用できるが、P23-02固有のWindows表示倍率acceptanceを置換できない。Windows実機条件が未達なら本単位正式完了不可。" + ], + "required_target": "same final selected/adopted candidate and matching Windows distribution; not yet fixed", + "state": "blocked", + "current_missing": "Windows実機の同一最終配布版・倍率・viewport・操作証拠" + } + ], + "finite_evidence": { + "host_build": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-build-actual-independent-review-r188.json", + "bytes": 22485, + "sha256": "e9461bacffca3e04a353a5f5ec44c079119b36944276c958810f6d2b3c917982" + }, + "local_equivalence": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-local-actual-independent-review-r191.json", + "bytes": 27410, + "sha256": "0f2f85b66c884f6dad5c8fe07b870c933de8a331c3929767d0d283e5c8a671c3" + }, + "boundaries": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-boundaries-actual-independent-review-r195.json", + "bytes": 28648, + "sha256": "838041fe102339c2ae400097c45b7c2ed7cd4f01bed24a73791997fe503abd8b" + }, + "whole_pair": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-whole-pair-actual-independent-review-r196.json", + "bytes": 35169, + "sha256": "31978758b7f37684cddc369a263e3e793b34bbcafc29323fe7b78cd4af2a6c4f" + }, + "repeat": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-repeat-actual-independent-review-r198.json", + "bytes": 61491, + "sha256": "242ced8381e1b97a4cf95baaa47296e636cf1671f6c131c5764db53c7299610a" + }, + "dependency": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-dependency-actual-independent-review-r200.json", + "bytes": 26477, + "sha256": "bd5dbdb3418f5c52930fd13ce64c3d63553b0ebe5fa8190ba76d1c0089c0b670" + }, + "impact": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-guest-pipeline-original-impact-actual-independent-review-r205.json", + "bytes": 47542, + "sha256": "1bf3591089ae1cd2611232519f48782f19fcd81a940ea5b9d8e74fb78efaa672" + }, + "reconstruction_static": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-path-reconstruction-static-independent-review-r204.json", + "bytes": 9853, + "sha256": "ba1825e354d780f4dd850121e0855eef7b992ccc34eb09abc78c3bd435fa32f0" + }, + "reconstruction_host": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-path-reconstruction-build-actual-independent-review-r206.json", + "bytes": 22336, + "sha256": "f301618d94f075ad35e34a6ded28f0572290402012b9ea3f0edc8db23107f630" + }, + "reconstruction_local": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-actual-independent-review-r211.json", + "bytes": 59222, + "sha256": "c4cec015ac35bc228828573392dd327f7932e58aab48c8318b41d32d71cc9733" + }, + "reconstruction_whole_pair": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-whole-pair-actual-independent-review-r214.json", + "bytes": 39797, + "sha256": "6f3de61c816a36f69cdb0c5decd63ec4699319c1e5d958a4b4dfce5dd1cb0450" + }, + "travel_ownership_static": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-travel-ownership-static-independent-review-r216.json", + "bytes": 16772, + "sha256": "7d0a81837e46675bdfaf37dee795747106221d108e3e73cdf5a73396933c96ca" + }, + "travel_ownership_build": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-travel-ownership-build-actual-independent-review-r217.json", + "bytes": 23541, + "sha256": "822274a1593357048716cd6ab3955d6fee8030d5b24110f750507a665762b64d" + }, + "travel_ownership_local": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-travel-ownership-local-actual-independent-review-r220.json", + "bytes": 46573, + "sha256": "328a132f9e8e27e5f8855057c293c24234e18a892556499826a12432b8516c47" + }, + "travel_ownership_whole_pair": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-travel-ownership-whole-pair-actual-independent-review-r222.json", + "bytes": 31243, + "sha256": "05658d3b265b18ee1215b1efe5d26dd67b3c092291ba5bcccdf71ef1f4391a39" + }, + "tag_helpers_local": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-tag-helpers-local-actual-independent-review-r229.json", + "bytes": 73403, + "sha256": "52455c2d50dc7ab39cbe82b7eb4a45add7b3a7bc52de6d679377e26d13740c20" + }, + "tag_helpers_whole_pair": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-tag-helpers-whole-pair-actual-independent-review-r231.json", + "bytes": 28386, + "sha256": "061c29335071fdd9fd5927bfa8afb9ba5e70d3e1f2cde670138bab173e3e7316" + }, + "cache_key_static": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-key-static-independent-review-r233.json", + "bytes": 15063, + "sha256": "0230bb7e4504dca15ba09d8533bbee3e8e1146156c64fccf7f73557b0d3f035e" + }, + "cache_key_build": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-key-build-actual-independent-review-r234.json", + "bytes": 22383, + "sha256": "461caceb47c1157e0ab245228e0014ef2158214d1607c8d6955438346233ad43" + }, + "cache_key_local": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-key-local-actual-independent-review-r235.json", + "bytes": 73562, + "sha256": "4b2b3b3d1a5f629b01ab09f4951b852b07c333be7acd7b6f5c4bf763fdf6e1ba" + }, + "cache_key_whole_pair": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-key-whole-pair-actual-independent-review-r236-r02.json", + "bytes": 41166, + "sha256": "c95a1fc70a8904393f63f14a9c8a7d1f78d268f4069b2261357049f59ac518c2" + }, + "current233_diagnostic": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-residual-diagnostic-actual-independent-review-r238.json", + "bytes": 36734, + "sha256": "e41634755f116006c91ad251b48eb8b71286a53a6a687d6f371366f3140cc66d" + }, + "local_names_static": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-static-independent-review-r239.json", + "bytes": 16574, + "sha256": "2f0f7b40135bce4cdcc0eaff11c77917f230f2f456cc0cf6983f5f8d5bffc173" + }, + "local_names_build": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-build-actual-independent-review-r240.json", + "bytes": 23261, + "sha256": "e7038f5e0b5c43ed67498bfb89719a0244d722cbbdce2bbb87cfe865f64b5849" + }, + "local_names_local": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-local-actual-independent-review-r241.json", + "bytes": 62299, + "sha256": "d27c97c4f02cc8922ec09da89554c674367663144e083062819987710a825f0b" + }, + "local_names_whole_pair": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-whole-pair-actual-independent-review-r242.json", + "bytes": 36188, + "sha256": "cebd772e810e63980e12b6249e6527d56a4018f1d0e32d3c61e756f7637c85dc" + }, + "native_internal_static": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-internal-diagnostic-static-independent-review-r244.json", + "bytes": 12750, + "sha256": "14efa12774345de9d84829fe4e078c67f96db8b1d9637e58fcb83e32234403fa" + }, + "native_internal_build": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-internal-diagnostic-build-actual-independent-review-r245-r02.json", + "bytes": 24471, + "sha256": "857e69ce3c7a4f0fe0572c1b2ddf520ac353a0618fff5220817fdf14c264c8af" + }, + "native_internal_diagnostic": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-internal-diagnostic-actual-independent-review-r246-r02.json", + "bytes": 30072, + "sha256": "fe51580fa199aff262f041e33ac9a2217b359a7598cae706ccb5bfe5b8acdc15" + }, + "cached_path_static": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cached-path-summary-static-independent-review-r248-r02.json", + "bytes": 15237, + "sha256": "235d2c105b9f9adaf5edb56e84105fb5a45f31f261e694ba9af1d9177caa0842" + }, + "cached_path_build": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cached-path-summary-build-actual-independent-review-r249.json", + "bytes": 22986, + "sha256": "2194fea2b73ea7e949e7299e8d645b9996dfed53dd9b7c55f92846912db82d6b" + }, + "cached_path_local": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cached-path-summary-local-actual-independent-review-r250-r02.json", + "bytes": 66773, + "sha256": "eb47284789bcf96e7103ee3f308c7ba02e0151916c53ab9540a810d903f07fa3" + }, + "invalid_cache_local": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-invalid-cached-path-local-actual-independent-review-r251-r02.json", + "bytes": 36346, + "sha256": "91ae087447c60dce44bf58b5851ce39958700f063779fa6484eb12bfbf6f5f7f" + }, + "cached_path_whole_pair": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cached-path-whole-pair-actual-independent-review-r253-r02.json", + "bytes": 37005, + "sha256": "f4c2b2c17da88ddf1f4f65bc2aacb53d5e5f062447df46e61bf724f7f3200d3c" + }, + "budget_callback_diagnostic": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-budget-callback-diagnostic-actual-independent-review-r255-r03.json", + "bytes": 26049, + "sha256": "99b58ff2156508d80db87c98faa5cbce18563bbcf57de74a192ec71133f2ec86" + }, + "budget_native_static": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-budget-record-static-independent-review-r257-r04.json", + "bytes": 10125, + "sha256": "9d2e1fd3c5dd528d4cad4de66bf636ea79a67ccb9749af2dcb788ab21c3c0272" + }, + "budget_native_build": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-budget-record-build-actual-independent-review-r258-r02.json", + "bytes": 21448, + "sha256": "af1ef4994f9d38fb60cf10e94ba116a260b6146cef4b719bf563ed0d583e8ed3" + }, + "budget_native_local": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-budget-record-local-actual-independent-review-r260-r02.json", + "bytes": 29240, + "sha256": "2766609c663f0bf408e994267a97265d511e52b61450567aa7939e2c4ab428c9" + }, + "budget_native_impact_whole": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-budget-impact-whole-actual-independent-review-r262.json", + "bytes": 37515, + "sha256": "530a10149df9138948f037937fda669f7f8d3b420a70260b4ecb5c4f96298782" + }, + "walk_edges_host_build": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-walk-edges-build-actual-independent-review-r266-r02.json", + "bytes": 23678, + "sha256": "63eebafd26d536dc5c7bdf9d4dd0880d75fe9f701a7a4da84225cade7d83ff2f" + }, + "walk_edges_failed_build_r266": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-walk-edges-build-actual-independent-review-r266.json", + "bytes": 17339, + "sha256": "48429db6104b26f6c892e5e997562b606c956b494903e4e1a93c944383870e71" + }, + "walk_edges_static_r265_r03": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-walk-edges-static-independent-review-r265-r03.json", + "bytes": 16528, + "sha256": "ee61c1b689b92e12c653701f801b99cccf94ef64e3aeb018c06c7a14259d1778" + }, + "walk_edges_local": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-walk-edges-local-actual-independent-review-r268-r03.json", + "bytes": 42249, + "sha256": "2ef93cc1de37636ddc46ffcd313473d8aa9375e74ce361df1367db3c90fdee66" + }, + "walk_edges_local_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-walk-edges-local-root-verification-r268-r03.json", + "bytes": 34902, + "sha256": "7922c0df867f414a511bf0f4fc7336f73f9632682001efba32c911d137503708" + }, + "walk_edges_impact_whole": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-walk-impact-whole-actual-independent-review-r270.json", + "bytes": 36922, + "sha256": "8d389bbce84c830880c693d32b6860a31ff75e8a7d584f9f4af0492bca5e9c95" + }, + "walk_edges_impact_whole_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-walk-impact-whole-r270/actual-root-verification.json", + "bytes": 30734, + "sha256": "f6f992c92aec12f012037a23e76cc3d78b24ec9a5bbd9b45feb9b013d0e008e9" + }, + "residual_sampling": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-residual-sampling-actual-independent-review-r272-r03.json", + "bytes": 30534, + "sha256": "79b4d014f082a47bda3d9f86713321255be6881aceaefb4de7601d21a48916b7" + }, + "residual_sampling_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-residual-sampling-r272-r03/actual-root-verification.json", + "bytes": 25953, + "sha256": "22462a79745aa07629fa30ee7ad2297db4bdefd2c4a340a2fea30fd4e615ec20" + }, + "residual_symbol_mapping": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-residual-symbol-map-actual-independent-review-r273-r04.json", + "bytes": 14823, + "sha256": "ffd7d7817b7f999bc77c695e567b2b6749b7cb1f6eab78d79aadfdd23c384fdc" + }, + "residual_symbol_mapping_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-residual-symbol-map-r273-r04/actual-root-verification.json", + "bytes": 12383, + "sha256": "8a10686f212c92344f7c90523e8751e7068dd3fa5e174c0d693f59090c376cb1" + }, + "pure_tag_static": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-static-independent-review-r274.json", + "bytes": 8909, + "sha256": "f13ed2a32320d85c02011943633be7a4e01f2409f019fadab8dde1680d58f642" + }, + "pure_tag_static_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-static-root-verification-r274.json", + "bytes": 5150, + "sha256": "8570795a1f86ac90c053d208ccfad2c9966d912c26fe46380a22a2dd946de860" + }, + "pure_tag_host": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-build-actual-independent-review-r275.json", + "bytes": 21552, + "sha256": "54576596f82b8aceca440c1a5514ce811125e977c64c210675feecbb3901929f" + }, + "pure_tag_host_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-build-actual-root-verification-r275.json", + "bytes": 15146, + "sha256": "3216bc889cbde7aaa375060cbbf34457ca97ba49b4785f61ecc88c777a0dd8be" + }, + "pure_tag_local": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-local-actual-independent-review-r278-r04.json", + "bytes": 28145, + "sha256": "671f15fa542465cf6a7e88ee272a2ce67049fffcca2483205f999cfeb2075253" + }, + "pure_tag_local_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-local-r278-r04/actual-root-verification.json", + "bytes": 17143, + "sha256": "00e01cce5240ebd3accddbfc88f8776ac4cd4dfa887df3b8ee319eb16c45913f" + }, + "pure_tag_impact_whole": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-actual-independent-review-r281.json", + "bytes": 46359, + "sha256": "1876c883e898fdfb8c1c4fb84ee5950930719d0e623b3f010fad0312402166b4" + }, + "pure_tag_impact_whole_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281/actual-root-verification.json", + "bytes": 28310, + "sha256": "1d3d3a0d804d508e7daf11551c30997b0ef048660ceaafb814fd7e07104ae292" + }, + "provider_fallback_static": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-provider-fallback-static-independent-review-r280.json", + "bytes": 15586, + "sha256": "c25202cb2b17e74b7c097572b61c8d60f76e9b26074c637de116b29c48faf118" + }, + "provider_fallback_static_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-provider-fallback-static-root-verification-r280.json", + "bytes": 7214, + "sha256": "7928ab71bf6ec7a03762b1ac1705557e7b9729880cec5df043937b266bb2ecdd" + }, + "integer_codec_static": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-static-independent-review-r290.json", + "bytes": 15003, + "sha256": "be6cbb78a30264bb061290685f53edf77b850a9fb815ebdd1c744b2ed99ff7d5" + }, + "integer_codec_static_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-static-root-verification-r290.json", + "bytes": 7670, + "sha256": "88c25fa1a78334302396f70d71acfbb4cc942cea5ffb3ed7b6f5769afc7b6b3a" + }, + "integer_codec_host": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-build-actual-independent-review-r291.json", + "bytes": 39566, + "sha256": "681b686f858c703e6437028b3db51567dd58df3e1956ba84e36995dee0cabf3b" + }, + "integer_codec_host_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-build-root-verification-r291.json", + "bytes": 22646, + "sha256": "6617af23def22877301448fb9843feb41521211a6fcac505b1028a9980631126" + }, + "integer_codec_local": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-local-actual-independent-review-r292-r02.json", + "bytes": 40394, + "sha256": "12482ab52f4eea2534617227cb4676ecfe067591df628f4d5117efad7d66dd49" + }, + "integer_codec_local_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-local-r292-r02/actual-root-verification.json", + "bytes": 21045, + "sha256": "c16933c5137d67f307cdb01f0f8916f95f0e25667d8a1fe8f2bb0659664265b1" + }, + "integer_codec_impact_whole": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-impact-whole-actual-independent-review-r293-r04.json", + "bytes": 59147, + "sha256": "147409de969918719f1682ff3bc537192a28d01837bfda6532ce4d1c292e9059" + }, + "integer_codec_impact_whole_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-impact-whole-r293-r04/actual-root-verification.json", + "bytes": 33521, + "sha256": "61d1c24434347f25abbdb8d257da8eeb16e86307e6560a9a61102cd26f7974cf" + }, + "integer_codec_rejected_local287": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-local-actual-independent-review-r287.json", + "bytes": 28577, + "sha256": "ba871137bb6f4d6c73f34795b76e90fce6b53a2139b647620adf117d44fea0b8" + }, + "integer_codec_rejected_preparation292": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-local-preexecution-independent-review-r292.json", + "bytes": 21378, + "sha256": "b2f9de6e72d6fa4ea4d9f855d461819eda1760c8e7edc387684c1fa181a89af1" + }, + "guest_need_static": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "bytes": 17223, + "sha256": "940dd5f51b55942f07ef7ad091ec557af4d0d7bb07d48c08b6a98bde570f32b2" + }, + "guest_need_static_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json", + "bytes": 9067, + "sha256": "e6f83f624358270199fb6a0d3236db0e20da614443514cba04d66995a671de42" + }, + "guest_need_local": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-actual-independent-review-r299-r02.json", + "bytes": 23481, + "sha256": "892b47057267c6bd4b839985bcf490ea0bb36474e2cd4e5ad3a9644b6e4331d2" + }, + "guest_need_local_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/actual-root-verification.json", + "bytes": 12674, + "sha256": "05ac885cfcc93cf46a6dedadf3705ae119b43c6659c6d3d68a182dbdd4802eed" + }, + "guest_need_impact_whole": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-actual-independent-review-r300.json", + "bytes": 43229, + "sha256": "05594a0441ee2757b56168e44377251dfd63f5c08ddb031ae1c59f46509f10e7" + }, + "guest_need_impact_whole_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/actual-root-verification.json", + "bytes": 29640, + "sha256": "87e072357ed9592fab0e7eacfb4c1222c638560c9f9c1d6e831f7635d7c0e8bb" + }, + "guest_need_rejected_metadata299": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-preexecution-independent-review-r299.json", + "bytes": 12734, + "sha256": "8ebca46556df998665e064e14bf83708b5923955e72edb0807a6209e99d96f0c" + } + }, + "accepted_condition_count": 0, + "remaining_condition_count": 17, + "Windows_only_blocked_ids": [ + "C08", + "X8" + ], + "manual_deferred_not_waived": true, + "unit_accepted": false, + "formal_completion_allowed": false, + "packages": 30, + "delivery_units": 88, + "partial_credit": false, + "test_counts_used_as_completion": false, + "next_action": "r298 GuestServiceは代表whole単発比較で速度利益を示さず、任意補助共有処理を加えるため採用を見送る。r274/library275を保持し、既存の版付きattributionと現在の投影経路を照合して、同期時間を支配する経路投影処理に必要な修正を1件選ぶ。単体helper改善を全体性能へ広げず、小さな候補の追加や未変更版の全回帰を繰り返さない。採用候補を固めた同一最終版で必須全172・50ms/P95/D10・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。手動Ctrl保持wheel/左保持dragは延期・未達・免除なし。", + "source_previous_matrix": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r294.json", + "bytes": 53135, + "sha256": "360747fb5ae1484b3e8b9eee30538ffe5d59a478c607dc55fe9606c42680a614" + }, + "latest_whole_validated_trial": "r298 GuestService finite originalS6/whole300", + "latest_whole_candidate_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "bytes": 11472, + "sha256": "3e2eaa147e365a74145224d8995bade5b44528d59b5508dc159458555081ed99" + }, + "latest_whole_library": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-build-r275/libtree_numeric_core.macos.template_debug.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "next_implementation_parent_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-candidate-r274/input.json", + "bytes": 4511, + "sha256": "6bd46c589bc57ab5afad1d7195f7293ec450aafeed055e394a3a880744666ca3" + }, + "next_implementation_parent_library": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-build-r275/libtree_numeric_core.macos.template_debug.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "rejected_previous_metadata_review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-actual-independent-review-r267.json", + "bytes": 14383, + "sha256": "f70190ec9082ad13a97ab0abf428a196c2b8d089dc3c9a5a33a4b95c3ccfcaa6" + }, + "latest_local_validated_trial": "r298 GuestService finite local299-r02", + "latest_local_candidate_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "bytes": 11472, + "sha256": "3e2eaa147e365a74145224d8995bade5b44528d59b5508dc159458555081ed99" + }, + "latest_local_library": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-build-r275/libtree_numeric_core.macos.template_debug.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "next_implementation_parent": "r274/library275 private candidate: finite local278-r04 and originalS6/whole281 accepted; performance unmet and unadopted", + "latest_instrumented_diagnostic": "r239/library240 r255-r03; original record_sample path_query7586 calls/inclusive135814us/max555us, instrumentedtick1310226us; no CPU/gain/budget acceptance", + "latest_implementation_candidate": "r274/library275 finite local278-r04 and impact/whole281 accepted; performance unmet, unselected and unadopted", + "latest_implementation_candidate_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-candidate-r274/input.json", + "bytes": 4511, + "sha256": "6bd46c589bc57ab5afad1d7195f7293ec450aafeed055e394a3a880744666ca3" + }, + "latest_implementation_library": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-build-r275/libtree_numeric_core.macos.template_debug.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "next_test_candidate": "r298 GuestServiceは代表whole単発比較で速度利益を示さず、任意補助共有処理を加えるため採用を見送る。r274/library275を保持し、既存の版付きattributionと現在の投影経路を照合して、同期時間を支配する経路投影処理に必要な修正を1件選ぶ。単体helper改善を全体性能へ広げず、小さな候補の追加や未変更版の全回帰を繰り返さない。採用候補を固めた同一最終版で必須全172・50ms/P95/D10・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。手動Ctrl保持wheel/左保持dragは延期・未達・免除なし。", + "latest_locally_validated_candidate": "r298 GuestService finite299-r02", + "latest_whole_validated_candidate": "r298 GuestService finite300", + "historical_next_implementation_parent_r276": { + "next_implementation_parent": "r239/library240; r248 adoption declined for benefit not demonstrated", + "next_implementation_parent_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-candidate-r239/input.json", + "bytes": 766007, + "sha256": "e23d6b7c021f468050632bbc7cb386846b3ac0b509746c321871c23922150a35" + }, + "next_implementation_parent_library": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-build-r240/libtree_numeric_core.macos.template_debug.dylib", + "bytes": 334416, + "sha256": "6e1b5efd70a69882da9f72a67129cc53010bc8755d228d1a9ce7d0d1b1039f82" + } + }, + "next_implementation_parent_source": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-candidate-r274/source/tree_numeric_core.cpp", + "bytes": 54002, + "sha256": "ce20a90adb8a410dc1b6cbf607b7bfa8bf21eaef158c5c6bfc7a9bbcc703d2b2" + }, + "latest_residual_sampling": "r265/266 sampled by272-r03 partial OS window; exact-section symbol map273-r04; no CPU ratio/cause/performance acceptance", + "historical_source_candidate_fields_r277": { + "source_candidate": "r248-r02/library249 finite local250-r02/251-r02 and whole253-r02; adoption declined, next implementation parent r239/library240", + "candidate_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cached-path-summary-candidate-r248-r02/input.json", + "bytes": 978265, + "sha256": "c17c89c7bdf4bf6e378081956473253da1618a0183bf2c3e48cb1fed9d2bb551" + }, + "library": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cached-path-summary-build-r249/libtree_numeric_core.macos.template_debug.dylib", + "bytes": 350960, + "sha256": "7bb5898fe0ce8199c1175e5fb642abf8c9365e2f044cdc5807e6f6170a7475d6" + } + }, + "native_trial_stage_status": "shared209/parent239 original1299 preserved; Guest298/Budget257/project transient restored after owned exits; no production298 stage", + "historical_next_implementation_parent_r279": "r274/library275 source-only private candidate: static and host only, no fixture stage yet; local ABI/equivalence next, unadopted", + "historical_candidate_fields_before_r294": { + "source_candidate": "r274/library275 finite local278-r04 and whole281 only; performance unmet and unadopted", + "candidate_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-candidate-r274/input.json", + "bytes": 4511, + "sha256": "6bd46c589bc57ab5afad1d7195f7293ec450aafeed055e394a3a880744666ca3" + }, + "library": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-build-r275/libtree_numeric_core.macos.template_debug.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "latest_implementation_candidate": "r274/library275 finite local278-r04 and impact/whole281 accepted; performance unmet, unselected and unadopted", + "latest_implementation_candidate_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-candidate-r274/input.json", + "bytes": 4511, + "sha256": "6bd46c589bc57ab5afad1d7195f7293ec450aafeed055e394a3a880744666ca3" + }, + "latest_implementation_library": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-build-r275/libtree_numeric_core.macos.template_debug.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "latest_local_validated_trial": "r274/library275 local278-r04 finite tag/callback/ownership only; no general reentry/provider ownership acceptance", + "latest_local_candidate_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-candidate-r274/input.json", + "bytes": 4511, + "sha256": "6bd46c589bc57ab5afad1d7195f7293ec450aafeed055e394a3a880744666ca3" + }, + "latest_local_library": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-build-r275/libtree_numeric_core.macos.template_debug.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "latest_whole_validated_trial": "r274/library275 finite originalS6/whole281", + "latest_whole_candidate_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-candidate-r274/input.json", + "bytes": 4511, + "sha256": "6bd46c589bc57ab5afad1d7195f7293ec450aafeed055e394a3a880744666ca3" + }, + "latest_whole_library": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-build-r275/libtree_numeric_core.macos.template_debug.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "next_implementation_parent": "r274/library275 private candidate: finite local278-r04 and originalS6/whole281 accepted; performance unmet and unadopted", + "next_implementation_parent_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-candidate-r274/input.json", + "bytes": 4511, + "sha256": "6bd46c589bc57ab5afad1d7195f7293ec450aafeed055e394a3a880744666ca3" + }, + "next_implementation_parent_library": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-build-r275/libtree_numeric_core.macos.template_debug.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + } + }, + "declined_trial": { + "candidate_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-candidate-r290/input.json", + "bytes": 6030, + "sha256": "668930b0ed56cda8dfe692323e129575bba29697907727f671778871bd507560" + }, + "library": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-build-r291/libtree_numeric_core.macos.template_debug.dylib", + "bytes": 367552, + "sha256": "ad7ed14b9820005af60c48594387e336df09087f7497007c6ab6f67d5a212e40" + }, + "single_pair": { + "baseline_us": 1214852, + "candidate_us": 1217932, + "ratio": 1.0025352882491037, + "reduction_percent": -0.25352882491035944, + "scope": "One adjacent cold paused speed1 headless observation only; no stable/P95/budget acceptance" + }, + "reason": "No improvement demonstrated in the single adjacent pair; stable performance benefit unproved and optional codec adds maintenance complexity", + "stable_regression_claimed": false, + "candidate_adopted": false + }, + "historical_guest_trial_fields_before_r301": { + "source_candidate": "r290/library291 finite local292-r02 and originalS6/whole293-r04; performance unmet, unselected and unadopted", + "candidate_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-candidate-r290/input.json", + "bytes": 6030, + "sha256": "668930b0ed56cda8dfe692323e129575bba29697907727f671778871bd507560" + }, + "latest_local_validated_trial": "r290/library291 finite Budget+integercodec local292-r02", + "latest_whole_validated_trial": "r290/library291 finite originalS6/whole293-r04", + "next_test_candidate": "One necessary performance change against retained r274/library275 then final-version mandatory validation", + "native_trial_stage_status": "local292-r02 and whole293-r04 reused shared209/parent239 original1299; Budget257 transient and project restored after owned exit; no production290 stage created" + }, + "guest_trial_source": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd", + "bytes": 63639, + "sha256": "5895d5da6488c767685b109ef01f9e2b57f41272d49cc9e3c415865769adc11d" + }, + "guest_trial_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "bytes": 11472, + "sha256": "3e2eaa147e365a74145224d8995bade5b44528d59b5508dc159458555081ed99" + }, + "guest_trial_single_pair": { + "baseline_us": 1153117, + "candidate_us": 1167153, + "ratio": 1.0121722253682843, + "reduction_percent": -1.2172225368284397, + "scope": "One adjacent cold paused speed1 headless observation only; no stable/P95/budget acceptance" + }, + "guest_trial_adopted": false, + "guest_trial_declined": { + "reason": "Representative whole pair did not demonstrate a speed benefit; optional shared-helper complexity is not justified by local-only gain", + "stable_regression_claimed": false, + "single_pair": { + "baseline_us": 1153117, + "candidate_us": 1167153, + "ratio": 1.0121722253682843, + "reduction_percent": -1.2172225368284397, + "scope": "One adjacent cold paused speed1 headless observation only; no stable/P95/budget acceptance" + }, + "candidate_adopted": false + } +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-actual-independent-review-r300.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-actual-independent-review-r300.json new file mode 100644 index 0000000..3fa390c --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-actual-independent-review-r300.json @@ -0,0 +1,584 @@ +{ + "review_id": "p23-02-guest-need-normalization-impact-whole-actual-independent-review-r300", + "finite_s6_impact_accepted": true, + "finite_whole647_equivalence_accepted": true, + "finite_exit_observation_accepted": true, + "finite_pair_observation_accepted": true, + "combined_impact_and_finite_whole_equivalence_accepted": true, + "stable_gain_supported": false, + "stall_budget_met": false, + "performance_accepted": false, + "candidate_adopted": false, + "unit_accepted": false, + "blockers": [], + "evidence_sha256": { + "engine": { + "path": "/Applications/Godot.app/Contents/MacOS/Godot", + "bytes": 351312912, + "sha256": "c7cccbf8fb143e34e02fd6521e09be2c2b974f0d5db080b19071c9c570718ccf" + }, + "helper": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd", + "bytes": 17582, + "sha256": "92d5e1956f4e613e12555d756de4f71fef03678cde159ac68fac3188ce3f336e" + }, + "run_all": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/run_all_tests.py", + "bytes": 26296, + "sha256": "320ca668732b4ff72fc4449998af2327d4e5c527b06896740806aaf0487282b4" + }, + "profile_guard": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd", + "bytes": 2276, + "sha256": "597696c705cc8f0e79a35265ca3ef8df55f7fc3c4e0e5a2ce9a4e20e29e29a6f" + }, + "modified_budget": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-walk-edges-candidate-r265-r03/performance_budget.candidate.gd", + "bytes": 11250, + "sha256": "1010129d3124c3aec037c840a5766a7cdabe60c654999dfb6f23b224140a73f8" + }, + "original_budget": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-candidate-r239/stage/scripts/core/performance_budget.gd", + "bytes": 10355, + "sha256": "742c464d16ab417cbc3c2930d43e508faf5c9f7688da416324ca1150bdb9b6b9" + }, + "original_path": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-candidate-r239/stage/scripts/world/path_service.gd", + "bytes": 132925, + "sha256": "6b7f4e989ea9b09495f814d8ecb294028d10794005966414bf52640e122b0d17" + }, + "fixture": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-single-actor-path-native-r03/diagnostic-measurement/checkpoint646.varbytes.zst", + "bytes": 240032, + "sha256": "1a88f7ed27d1d32102c6fe3a9533221d2565191712ed15b631190479d1d41505" + }, + "oracle": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-report-window-trusted-report-whole647-native-r02/diagnostic-measurement/after647.varbytes.zst", + "bytes": 246720, + "sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880" + }, + "original_s6": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/tests/s6/test_performance_budget.gd", + "bytes": 3968, + "sha256": "1ae5490637d73b519bf9ed0e00bda0e034d5ea0e589493bcf8886e4d1ff63689" + }, + "original_clock": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/autoload/game_clock.gd", + "bytes": 841, + "sha256": "39400634a57ccbf8c584b54a15a259048a95da90b1528330151e45667d65f7f7" + }, + "QA_base": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd", + "bytes": 17582, + "sha256": "92d5e1956f4e613e12555d756de4f71fef03678cde159ac68fac3188ce3f336e" + }, + "whole_original_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cached-path-whole-pair-r253-r02/input.json", + "bytes": 1205935, + "sha256": "b116fd3e0dbad6b84594486dfaa531845e549482493a76dd7333a95dc760453b" + }, + "whole_prior_review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cached-path-whole-pair-actual-independent-review-r253-r02.json", + "bytes": 37005, + "sha256": "f4c2b2c17da88ddf1f4f65bc2aacb53d5e5f062447df46e61bf724f7f3200d3c" + }, + "prior_combined_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-budget-impact-whole-r262/input.json", + "bytes": 972136, + "sha256": "c8e7282ea7125c97eb8f8abe2914e7ecae28d76b368a042855a0ee11ccae68ba" + }, + "prior_combined_review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-budget-impact-whole-actual-independent-review-r262.json", + "bytes": 37515, + "sha256": "530a10149df9138948f037937fda669f7f8d3b420a70260b4ecb5c4f96298782" + }, + "config_baseline": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-local-r278-r04/candidate.gdextension", + "bytes": 323, + "sha256": "04c4311764ab9d75be3df884f960f0944cd474847fb1ca061224ce4c1bc2aef7" + }, + "config_candidate": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-local-r278-r04/candidate.gdextension", + "bytes": 323, + "sha256": "04c4311764ab9d75be3df884f960f0944cd474847fb1ca061224ce4c1bc2aef7" + }, + "new_library": { + "path": "/private/tmp/TheTree-pure-tags-r278-r04-72046c25b9384bcf8ea8ec91123462e1/candidate.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "library_baseline": { + "path": "/private/tmp/TheTree-pure-tags-r278-r04-72046c25b9384bcf8ea8ec91123462e1/candidate.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "library_candidate": { + "path": "/private/tmp/TheTree-pure-tags-r278-r04-72046c25b9384bcf8ea8ec91123462e1/candidate.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "prepare": { + "path": "/private/tmp/thetree-prepare-guest-need-impact-whole-r300.py", + "bytes": 8264, + "sha256": "1e7725744b68b6804537f30814ae3ca9af8309b04a226f9fe44d33d6864abe37" + }, + "runner": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300.py", + "bytes": 8498, + "sha256": "4d287d07ede1d8ce1b14a67edc01d7574320064727b01bfd45abb80423eeeef6" + }, + "QA": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/whole.gd", + "bytes": 4637, + "sha256": "f46859a7cf1e08fd266f25a35c0fb9091f452fe6746d6ebbe43f594944ca29e7" + }, + "QA_original": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281/whole.gd", + "bytes": 4455, + "sha256": "8af18e506a8cf859103c9d2a79f0d31f4d65f9f5d022f2848bbbb4ead21b9fc4" + }, + "prior_driver": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281.py", + "bytes": 7665, + "sha256": "a2f907ff0b3abbefb9df0011d4304bc64169969bbf8324fdb04467c604f00d38" + }, + "prior_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281/input.json", + "bytes": 975133, + "sha256": "cab7c33fad7f013628756bb968d78e0da57d712de3474c31287f4e93f91a21ad" + }, + "prior_review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-actual-independent-review-r281.json", + "bytes": 46359, + "sha256": "1876c883e898fdfb8c1c4fb84ee5950930719d0e623b3f010fad0312402166b4" + }, + "prior_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281/actual-root-verification.json", + "bytes": 28310, + "sha256": "1d3d3a0d804d508e7daf11551c30997b0ef048660ceaafb814fd7e07104ae292" + }, + "local_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/input.json", + "bytes": 970408, + "sha256": "a6422ee7db963665bd8626d3bbfc8887c65f3a26292355082f46cc1b73c1c5f3" + }, + "local_review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-actual-independent-review-r299-r02.json", + "bytes": 23481, + "sha256": "892b47057267c6bd4b839985bcf490ea0bb36474e2cd4e5ad3a9644b6e4331d2" + }, + "local_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/actual-root-verification.json", + "bytes": 12674, + "sha256": "05ac885cfcc93cf46a6dedadf3705ae119b43c6659c6d3d68a182dbdd4802eed" + }, + "local_execution": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/execution.json", + "bytes": 11235, + "sha256": "506dfdeeef07e9b71bbbf17fdab1be4450c214aecedd66e55770bc9f426d1283" + }, + "candidate_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "bytes": 11472, + "sha256": "3e2eaa147e365a74145224d8995bade5b44528d59b5508dc159458555081ed99" + }, + "static_review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "bytes": 17223, + "sha256": "940dd5f51b55942f07ef7ad091ec557af4d0d7bb07d48c08b6a98bde570f32b2" + }, + "static_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json", + "bytes": 9067, + "sha256": "e6f83f624358270199fb6a0d3236db0e20da614443514cba04d66995a671de42" + }, + "original_guest": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/scripts/guest/guest_service.gd", + "bytes": 61414, + "sha256": "56880410e9a00816f9a95d30821982955532de8dd976980934e12016a9f2b21e" + }, + "modified_guest": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd", + "bytes": 63639, + "sha256": "5895d5da6488c767685b109ef01f9e2b57f41272d49cc9e3c415865769adc11d" + }, + "current_matrix": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r294.json", + "bytes": 53135, + "sha256": "360747fb5ae1484b3e8b9eee30538ffe5d59a478c607dc55fe9606c42680a614" + }, + "starter_s6": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd", + "bytes": 1648, + "sha256": "acbbf7d7575a7c00230a5d0397674a2511a7ec6cbd222d29845bfbdfeb9f778c" + }, + "starter_baseline": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd", + "bytes": 1451, + "sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d" + }, + "starter_candidate": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd", + "bytes": 1451, + "sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d" + }, + "input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/input.json", + "bytes": 1188185, + "sha256": "8a1c470b378c187f7b99396dad9d23ac43e0590fcc546df88c3be675cacb5908" + }, + "provider_audit": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-provider-fallback-static-independent-review-r280.json", + "bytes": 15586, + "sha256": "c25202cb2b17e74b7c097572b61c8d60f76e9b26074c637de116b29c48faf118" + }, + "provider_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-provider-fallback-static-root-verification-r280.json", + "bytes": 7214, + "sha256": "7928ab71bf6ec7a03762b1ac1705557e7b9729880cec5df043937b266bb2ecdd" + }, + "preexecution_review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-preexecution-independent-review-r300.json", + "bytes": 21063, + "sha256": "40c7a51732529a2a201fb8c617e5e8f833a8d63a7562dc36c71af7123c2a6dec" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-profile.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-profile.json", + "bytes": 912, + "sha256": "38e4d2a1efa9165acf137baa96e8867487ae65a383811b4be98844149a4baec8" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-phase.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-phase.json", + "bytes": 8284, + "sha256": "4e3507a3f268d346e0994ca360018814793d3685f32987f7a11d531049245e11" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd", + "bytes": 1451, + "sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/input.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/input.json", + "bytes": 1188185, + "sha256": "8a1c470b378c187f7b99396dad9d23ac43e0590fcc546df88c3be675cacb5908" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd", + "bytes": 1451, + "sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/preexecution-root-verification.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/preexecution-root-verification.json", + "bytes": 15796, + "sha256": "52fd13e6d3c044327ca22966022fe3839d52c20bbf55bcb36a0473c6898c1baf" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-phase.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-phase.json", + "bytes": 8270, + "sha256": "e31397a6f3cffb9262c8c868b56faed22a31a2c86cfd293b329714a1ec850e69" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/whole.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/whole.gd", + "bytes": 4637, + "sha256": "f46859a7cf1e08fd266f25a35c0fb9091f452fe6746d6ebbe43f594944ca29e7" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd", + "bytes": 1648, + "sha256": "acbbf7d7575a7c00230a5d0397674a2511a7ec6cbd222d29845bfbdfeb9f778c" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-profile.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-profile.json", + "bytes": 912, + "sha256": "d62309aec9e1d1a9f0d1243aeb72020f1ac12ac1e493c7cd29293bdaff759b9a" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-phase.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-phase.json", + "bytes": 8191, + "sha256": "18a43b63b9d142e75deed541be2393b68d9ad610f48411e153050b483e72a51a" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/execution.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/execution.json", + "bytes": 33275, + "sha256": "4fe6abd9f80b888274b3cbb092e579b5c3841bb41eec618c5b302f4484d01012" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-profile.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-profile.json", + "bytes": 912, + "sha256": "a05fdfba576cb6c91d128f7d20af1e274e28d8a98c05b348c43a40ed28bba605" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/stderr.log": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/stderr.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/ended.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/ended.json", + "bytes": 1827, + "sha256": "380fbc66b677d46266188d0cc846bf006de9d0b8437d0eb5a6245c8091732b70" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/adapter-owned-cleanup.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/adapter-owned-cleanup.json", + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/engine-native.log": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/engine-native.log", + "bytes": 13509, + "sha256": "e60c0072625807a8a698824606a948be3bd3cee9dfca3bac890635a922a23e40" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/stdout.log": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/stdout.log", + "bytes": 13659, + "sha256": "de253f287a81f720b3db1131f721a8be2e3aa69af5fb7562acd14e5af56a1edc" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/started.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/started.json", + "bytes": 2474, + "sha256": "9d8d54af780f2a32492b8aa7821e54dd7539ce0caf35e79d6af00e97aec708fe" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/process.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/process.json", + "bytes": 6825, + "sha256": "49bb520981139437d5c4a92450f5ddc638f013ae4ff046315c7eb071ea2b428e" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/outer-owned-finally.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/outer-owned-finally.json", + "bytes": 964, + "sha256": "040e72a13c7b1a3002d23c1d4b5abe88be8e2ec4ea579fa1f16a9bba35e109c3" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/stderr.log": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/stderr.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/ended.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/ended.json", + "bytes": 1823, + "sha256": "bd32c6c16d82ed141ba710abe3b829c7b5f58320dbe0f74d6ac0ff0049912386" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/adapter-owned-cleanup.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/adapter-owned-cleanup.json", + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/engine-native.log": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/engine-native.log", + "bytes": 13505, + "sha256": "05cdcc2fa37e6be5ff4997da5708db25995a37e840edbcb0c8d97d323c4fc8d6" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/stdout.log": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/stdout.log", + "bytes": 13655, + "sha256": "d41b4a57df20686c0359d037526d3b00817a2a69356be5ae7adb76eb18c2eab3" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/started.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/started.json", + "bytes": 2467, + "sha256": "0cad66d32559b5c7b35ba7ae2dff5588ad4e7e9bbfe3abada83d21aa2adfacad" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/process.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/process.json", + "bytes": 6812, + "sha256": "7994bb9a494fdc8c8238f33a7d7f6296920a7a3f6d0bd757d6f84fe03d511fa5" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/outer-owned-finally.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/outer-owned-finally.json", + "bytes": 964, + "sha256": "d7788042d01c0e2070c2a1592458803131b753a5229039e3e722e84d2e6921db" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-measurement/report.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-measurement/report.json", + "bytes": 174, + "sha256": "90966209a4ba054e1db62c8a2edaa7e90e863ed9e4312c808597da97172ae59f" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/stderr.log": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/stderr.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/ended.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/ended.json", + "bytes": 1798, + "sha256": "db06470b820a92907cdf9358d8f02f42f27b479cc4b0a44d761152041e231811" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/adapter-owned-cleanup.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/adapter-owned-cleanup.json", + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/engine-native.log": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/engine-native.log", + "bytes": 8852, + "sha256": "48462355a59f9eb8adeff6fd771f30345be43074ae8a70cf04abaee1e14e8fa9" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/stdout.log": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/stdout.log", + "bytes": 9002, + "sha256": "436de13cf96db54eb787bf44582826fb9ccc6db327cab189f4b848087dea3510" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/started.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/started.json", + "bytes": 2431, + "sha256": "d295bde78bd230485f26bd88c5899d719b13022e915f48794ae3b2685ede2bf0" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/process.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/process.json", + "bytes": 6739, + "sha256": "c3d2b715a213c276be9ced27d58c16e4dfdec3344425e450989bd18e91ac64d3" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/outer-owned-finally.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/outer-owned-finally.json", + "bytes": 964, + "sha256": "eef48a24e60c7faedccc815bc202c27715fcf1dbe89300b37d303f0562e3ffcd" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/report.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/report.json", + "bytes": 1321, + "sha256": "12343afda6c351f70432b1c6e46d533733d2f2e049c4d182138baaae0ab5a5b6" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/after647.varbytes.zst": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/after647.varbytes.zst", + "bytes": 246720, + "sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/report.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/report.json", + "bytes": 1324, + "sha256": "6d01548981cf300c6434d5236a42f205156cd443b9fef366b65255a3e9754812" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/after647.varbytes.zst": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/after647.varbytes.zst", + "bytes": 246720, + "sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880" + }, + "identical_raw_codec_proof": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-residual-diagnostic-actual-independent-review-r238.json", + "bytes": 36734, + "sha256": "e41634755f116006c91ad251b48eb8b71286a53a6a687d6f371366f3140cc66d" + } + }, + "canonical_doc4_context_pins": { + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md", + "bytes": 492299, + "sha256": "61776f0673770277ab6d182107337ed40a108ff3b5ab2c1a8f29fc4f2c3015ad" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md", + "bytes": 410363, + "sha256": "8b0488910dba35b34da96d7062b9a69d293e70a1963c9c5890ec32b2891baaea" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json", + "bytes": 1184337, + "sha256": "32d80e911910bc762287dc3ddf0ee0ea3072ca2f0158aa2f9f355b9202cfdfeb" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json", + "bytes": 539512, + "sha256": "b417ee1b945dfe4666f3a2f3501f906756826ea88d741bb116f3dd20250c8958" + } + }, + "archival_before_pins": { + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/IMPLEMENTATION_PLAN.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/IMPLEMENTATION_PLAN.md", + "bytes": 492167, + "sha256": "f0a719c77547db888e52bd09be53313a97118d19d46a8948599fef5694716aef" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/PROGRESS_INTEGRATION.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/PROGRESS_INTEGRATION.md", + "bytes": 410231, + "sha256": "674b882256016af3d7072d32a0bdd13f5e0ce2aa374694c37442354d224d8758" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/work_packages.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/work_packages.json", + "bytes": 1175313, + "sha256": "5441490631fbe73baebc95029a75af50ccb71a8962a5b913a710b6763a8ee763" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/progress_snapshot.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/progress_snapshot.json", + "bytes": 521884, + "sha256": "8fd37b051cd48d55bde8dda2947f59918d1c8dbe37831e15951b1324e5218c3d" + } + }, + "observations": { + "phases": [ + { + "mode": "s6", + "pid": 52182, + "checks": 24, + "failures": 0, + "private_profile_conditions": 5, + "owned_normal_exit": 0 + }, + { + "mode": "baseline", + "pid": 52202, + "checks": 15, + "failures": 0, + "private_profile_conditions": 5, + "owned_normal_exit": 0 + }, + { + "mode": "candidate", + "pid": 52242, + "checks": 15, + "failures": 0, + "private_profile_conditions": 5, + "owned_normal_exit": 0 + } + ], + "same_native_library": "r274/library275 all phases", + "same_native_library_sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0", + "Budget257_patch": "all three phases", + "Guest298_patch": "s6/candidate; baseline original", + "independent_zstd_full_original_oracle_comparison": { + "baseline": true, + "candidate": true, + "raw_bytes": 11487732, + "raw_sha256": "9df3c1b6f65dfd8be944cd5cab8c631f7533530dfef3820d9fa5d74a5b1ac30f", + "compressed_bytes": 246720, + "compressed_sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880" + }, + "typed_codec_reuse": { + "proof": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-residual-diagnostic-actual-independent-review-r238.json", + "bytes": 36734, + "sha256": "e41634755f116006c91ad251b48eb8b71286a53a6a687d6f371366f3140cc66d" + }, + "same_raw_hash_and_length": true, + "same_compressed_hash": true, + "nodes": 754415, + "fresh_large_decode": false + }, + "pair": { + "baseline_us": 1153117, + "candidate_us": 1167153, + "ratio": 1.0121722253682843, + "reduction_percent": -1.2172225368284397, + "scope": "One adjacent cold paused speed1 headless observation only; no stable/P95/budget acceptance" + }, + "candidate_longer_us": 14036, + "shared_Guest_Budget_project_restored": true, + "source_default_currentD4_SUPPORT_parent_shared1299_fresh": true + }, + "scope_limits": [ + "S6 original24/GameClock and cold646 pausedspeed1 whole64715 each finite impact/save equivalence only. Same fixed library275 native marker is registration/API evidence, not all-native invocation count or universal guard coverage.", + "Timing1153117→1167153us is one adjacent observation (+14036us/+1.2172225368% longer); no representative whole speed benefit demonstrated. No stable slowdown, componentcause, pureCPU, P95/D10 or50ms acceptance. Both synchronous times exceed50ms.", + "Invalid Object constructors, nested Resource hooks, actual custom script replacement, arbitrary concurrency/general reentry remain untested. Original17/full172/Main/render/normalOS/realtime x3/same Windows/adoption/unit completion remain unaccepted.", + "SourceSHA check of Guest/Path/Budget and unchanged275 config authenticate intended inputs; local299 expanded guard coverage remains its listed domain only.", + "16MiB output cap is post-phase total, not live peak. Prior proof document context remains archival, separate from current294." + ], + "reviewer_execution": { + "engine": 0, + "compiler": 0, + "tests": 0, + "validator": 0, + "author": 0, + "new_agents": 0, + "existing_edits": 0, + "external_zstd_read_only": 3, + "giant_codec_decode": 0 + } +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-preexecution-independent-review-r300.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-preexecution-independent-review-r300.json new file mode 100644 index 0000000..4a90252 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-preexecution-independent-review-r300.json @@ -0,0 +1,327 @@ +{ + "review_id": "p23-02-guest-need-normalization-impact-whole-preexecution-independent-review-r300", + "execution_allowed": true, + "blockers": [], + "evidence_sha256": { + "engine": { + "path": "/Applications/Godot.app/Contents/MacOS/Godot", + "bytes": 351312912, + "sha256": "c7cccbf8fb143e34e02fd6521e09be2c2b974f0d5db080b19071c9c570718ccf" + }, + "helper": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd", + "bytes": 17582, + "sha256": "92d5e1956f4e613e12555d756de4f71fef03678cde159ac68fac3188ce3f336e" + }, + "run_all": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/run_all_tests.py", + "bytes": 26296, + "sha256": "320ca668732b4ff72fc4449998af2327d4e5c527b06896740806aaf0487282b4" + }, + "profile_guard": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd", + "bytes": 2276, + "sha256": "597696c705cc8f0e79a35265ca3ef8df55f7fc3c4e0e5a2ce9a4e20e29e29a6f" + }, + "modified_budget": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-walk-edges-candidate-r265-r03/performance_budget.candidate.gd", + "bytes": 11250, + "sha256": "1010129d3124c3aec037c840a5766a7cdabe60c654999dfb6f23b224140a73f8" + }, + "original_budget": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-candidate-r239/stage/scripts/core/performance_budget.gd", + "bytes": 10355, + "sha256": "742c464d16ab417cbc3c2930d43e508faf5c9f7688da416324ca1150bdb9b6b9" + }, + "original_path": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-candidate-r239/stage/scripts/world/path_service.gd", + "bytes": 132925, + "sha256": "6b7f4e989ea9b09495f814d8ecb294028d10794005966414bf52640e122b0d17" + }, + "fixture": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-single-actor-path-native-r03/diagnostic-measurement/checkpoint646.varbytes.zst", + "bytes": 240032, + "sha256": "1a88f7ed27d1d32102c6fe3a9533221d2565191712ed15b631190479d1d41505" + }, + "oracle": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-report-window-trusted-report-whole647-native-r02/diagnostic-measurement/after647.varbytes.zst", + "bytes": 246720, + "sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880" + }, + "original_s6": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/tests/s6/test_performance_budget.gd", + "bytes": 3968, + "sha256": "1ae5490637d73b519bf9ed0e00bda0e034d5ea0e589493bcf8886e4d1ff63689" + }, + "original_clock": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/autoload/game_clock.gd", + "bytes": 841, + "sha256": "39400634a57ccbf8c584b54a15a259048a95da90b1528330151e45667d65f7f7" + }, + "QA_base": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd", + "bytes": 17582, + "sha256": "92d5e1956f4e613e12555d756de4f71fef03678cde159ac68fac3188ce3f336e" + }, + "whole_original_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cached-path-whole-pair-r253-r02/input.json", + "bytes": 1205935, + "sha256": "b116fd3e0dbad6b84594486dfaa531845e549482493a76dd7333a95dc760453b" + }, + "whole_prior_review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cached-path-whole-pair-actual-independent-review-r253-r02.json", + "bytes": 37005, + "sha256": "f4c2b2c17da88ddf1f4f65bc2aacb53d5e5f062447df46e61bf724f7f3200d3c" + }, + "prior_combined_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-budget-impact-whole-r262/input.json", + "bytes": 972136, + "sha256": "c8e7282ea7125c97eb8f8abe2914e7ecae28d76b368a042855a0ee11ccae68ba" + }, + "prior_combined_review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-budget-impact-whole-actual-independent-review-r262.json", + "bytes": 37515, + "sha256": "530a10149df9138948f037937fda669f7f8d3b420a70260b4ecb5c4f96298782" + }, + "config_baseline": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-local-r278-r04/candidate.gdextension", + "bytes": 323, + "sha256": "04c4311764ab9d75be3df884f960f0944cd474847fb1ca061224ce4c1bc2aef7" + }, + "config_candidate": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-local-r278-r04/candidate.gdextension", + "bytes": 323, + "sha256": "04c4311764ab9d75be3df884f960f0944cd474847fb1ca061224ce4c1bc2aef7" + }, + "new_library": { + "path": "/private/tmp/TheTree-pure-tags-r278-r04-72046c25b9384bcf8ea8ec91123462e1/candidate.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "library_baseline": { + "path": "/private/tmp/TheTree-pure-tags-r278-r04-72046c25b9384bcf8ea8ec91123462e1/candidate.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "library_candidate": { + "path": "/private/tmp/TheTree-pure-tags-r278-r04-72046c25b9384bcf8ea8ec91123462e1/candidate.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + "prepare": { + "path": "/private/tmp/thetree-prepare-guest-need-impact-whole-r300.py", + "bytes": 8264, + "sha256": "1e7725744b68b6804537f30814ae3ca9af8309b04a226f9fe44d33d6864abe37" + }, + "runner": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300.py", + "bytes": 8498, + "sha256": "4d287d07ede1d8ce1b14a67edc01d7574320064727b01bfd45abb80423eeeef6" + }, + "QA": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/whole.gd", + "bytes": 4637, + "sha256": "f46859a7cf1e08fd266f25a35c0fb9091f452fe6746d6ebbe43f594944ca29e7" + }, + "QA_original": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281/whole.gd", + "bytes": 4455, + "sha256": "8af18e506a8cf859103c9d2a79f0d31f4d65f9f5d022f2848bbbb4ead21b9fc4" + }, + "prior_driver": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281.py", + "bytes": 7665, + "sha256": "a2f907ff0b3abbefb9df0011d4304bc64169969bbf8324fdb04467c604f00d38" + }, + "prior_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281/input.json", + "bytes": 975133, + "sha256": "cab7c33fad7f013628756bb968d78e0da57d712de3474c31287f4e93f91a21ad" + }, + "prior_review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-actual-independent-review-r281.json", + "bytes": 46359, + "sha256": "1876c883e898fdfb8c1c4fb84ee5950930719d0e623b3f010fad0312402166b4" + }, + "prior_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281/actual-root-verification.json", + "bytes": 28310, + "sha256": "1d3d3a0d804d508e7daf11551c30997b0ef048660ceaafb814fd7e07104ae292" + }, + "local_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/input.json", + "bytes": 970408, + "sha256": "a6422ee7db963665bd8626d3bbfc8887c65f3a26292355082f46cc1b73c1c5f3" + }, + "local_review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-actual-independent-review-r299-r02.json", + "bytes": 23481, + "sha256": "892b47057267c6bd4b839985bcf490ea0bb36474e2cd4e5ad3a9644b6e4331d2" + }, + "local_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/actual-root-verification.json", + "bytes": 12674, + "sha256": "05ac885cfcc93cf46a6dedadf3705ae119b43c6659c6d3d68a182dbdd4802eed" + }, + "local_execution": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/execution.json", + "bytes": 11235, + "sha256": "506dfdeeef07e9b71bbbf17fdab1be4450c214aecedd66e55770bc9f426d1283" + }, + "candidate_input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "bytes": 11472, + "sha256": "3e2eaa147e365a74145224d8995bade5b44528d59b5508dc159458555081ed99" + }, + "static_review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "bytes": 17223, + "sha256": "940dd5f51b55942f07ef7ad091ec557af4d0d7bb07d48c08b6a98bde570f32b2" + }, + "static_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json", + "bytes": 9067, + "sha256": "e6f83f624358270199fb6a0d3236db0e20da614443514cba04d66995a671de42" + }, + "original_guest": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/scripts/guest/guest_service.gd", + "bytes": 61414, + "sha256": "56880410e9a00816f9a95d30821982955532de8dd976980934e12016a9f2b21e" + }, + "modified_guest": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd", + "bytes": 63639, + "sha256": "5895d5da6488c767685b109ef01f9e2b57f41272d49cc9e3c415865769adc11d" + }, + "current_matrix": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r294.json", + "bytes": 53135, + "sha256": "360747fb5ae1484b3e8b9eee30538ffe5d59a478c607dc55fe9606c42680a614" + }, + "starter_s6": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd", + "bytes": 1648, + "sha256": "acbbf7d7575a7c00230a5d0397674a2511a7ec6cbd222d29845bfbdfeb9f778c" + }, + "starter_baseline": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd", + "bytes": 1451, + "sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d" + }, + "starter_candidate": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd", + "bytes": 1451, + "sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d" + }, + "input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/input.json", + "bytes": 1188185, + "sha256": "8a1c470b378c187f7b99396dad9d23ac43e0590fcc546df88c3be675cacb5908" + }, + "provider_audit": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-provider-fallback-static-independent-review-r280.json", + "bytes": 15586, + "sha256": "c25202cb2b17e74b7c097572b61c8d60f76e9b26074c637de116b29c48faf118" + }, + "provider_root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-provider-fallback-static-root-verification-r280.json", + "bytes": 7214, + "sha256": "7928ab71bf6ec7a03762b1ac1705557e7b9729880cec5df043937b266bb2ecdd" + } + }, + "canonical_doc4_context_pins": { + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md", + "bytes": 492299, + "sha256": "61776f0673770277ab6d182107337ed40a108ff3b5ab2c1a8f29fc4f2c3015ad" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md", + "bytes": 410363, + "sha256": "8b0488910dba35b34da96d7062b9a69d293e70a1963c9c5890ec32b2891baaea" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json", + "bytes": 1184337, + "sha256": "32d80e911910bc762287dc3ddf0ee0ea3072ca2f0158aa2f9f355b9202cfdfeb" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json", + "bytes": 539512, + "sha256": "b417ee1b945dfe4666f3a2f3501f906756826ea88d741bb116f3dd20250c8958" + } + }, + "archival_before_pins": { + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/IMPLEMENTATION_PLAN.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/IMPLEMENTATION_PLAN.md", + "bytes": 492167, + "sha256": "f0a719c77547db888e52bd09be53313a97118d19d46a8948599fef5694716aef" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/PROGRESS_INTEGRATION.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/PROGRESS_INTEGRATION.md", + "bytes": 410231, + "sha256": "674b882256016af3d7072d32a0bdd13f5e0ce2aa374694c37442354d224d8758" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/work_packages.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/work_packages.json", + "bytes": 1175313, + "sha256": "5441490631fbe73baebc95029a75af50ccb71a8962a5b913a710b6763a8ee763" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/progress_snapshot.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/progress_snapshot.json", + "bytes": 521884, + "sha256": "8fd37b051cd48d55bde8dda2947f59918d1c8dbe37831e15951b1324e5218c3d" + } + }, + "allowed_scope": "Three sequential fresh owned engines only: original S6/GameClock24 with r298 GuestService, on full success original GuestService versus r298 cold646 pausedspeed1 whole64715 each; same exact r274/library275/config and Budget257 all phases. One adjacent timing observation.", + "verified_plan": { + "checks": { + "s6": 24, + "baseline_whole": 15, + "candidate_whole": 15, + "whole_derivation": "13 direct check calls+typed exclusive1+wrapper registration1" + }, + "immutable_files_each": 1299, + "budget_transient_all_phases": true, + "Guest_transient_modes": [ + "s6", + "candidate" + ], + "same_library_sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0", + "shared_stage_clone_count": 0, + "compiler_count": 0, + "library_copy_count": 0, + "output_cap_bytes": 16777216, + "output_cap_scope": "post-phase total, not live peak", + "capacity_free_bytes_observed": 1234743296, + "floor_bytes": 536870912, + "runtime_capacity_no_foreign_gate_required": true, + "clock_timing_interval_preserved": true, + "full_oracle_required_bytes": 11487732, + "full_oracle_required_sha256": "9df3c1b6f65dfd8be944cd5cab8c631f7533530dfef3820d9fa5d74a5b1ac30f" + }, + "method_and_lifecycle": [ + "Source/default/current294D4/SUPPORT/shared and immutable parent authenticated fresh. Fixed local299-r02 and static298 review/root gates bind actual candidate; provider280/root authenticated explicitly in this pre receipt.", + "Each phase checks no live engine/floor before transient writes, runs owned90s fresh private profile, requires strict logs/no leaks/markers/counts/owned completion; S6 failure stops all later phases.", + "All owned engines must end before finally restoring Budget/Guest/project; original source inventories checked after each successful phase and final cleanup.", + "Whole candidate fileSHA conjoint with original Path and same Budget is one existing check, not an extra registration count or universal native invocation counter.", + "Original 646 input public restore/fullbytes/pausedspeed/listener/cold cache guarded; after647 full original oracle byte equality required in QA and driver.", + "Prior281/280 current279 contexts retained as C282/before archival, distinct from current294. Existing historical proofs reused only in matching unchanged component scope." + ], + "remaining_limits": [ + "Object constructors, nested Resource hooks, actual custom script replacement/generalreentry still finite coverage gaps; whole success cannot waive them.", + "One exploratory adjacent pair does not prove stablegain/regression, pureCPU/componentcause, P95/D10,50ms/final172/Main/render/normalOS/realtime x3/Windows/adoption/unit completion.", + "Local single/six2000call observations are not representative whole performance acceptance.", + "Review parsed Python text only; actual GDScript parse/load and new whole results remain pending. No original oracle expansion or game execution by reviewer." + ], + "reviewer_execution": { + "engine": 0, + "compiler": 0, + "tests": 0, + "validator": 0, + "author": 0, + "new_agents": 0, + "existing_edits": 0, + "giant_codec_decode": 0 + } +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300.py b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300.py new file mode 100644 index 0000000..2208d2b --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300.py @@ -0,0 +1,65 @@ +# coding: utf-8 +from pathlib import Path +import hashlib,importlib.util,json,os,shutil,subprocess,sys,uuid +sys.dont_write_bytecode=True +R=Path(__file__).resolve().parents[2];A=R/'artifacts/original-completion-2026-10-02';D=R/'docs/plans/original-completion-2026-10-02';O=A/'p23-02-guest-need-normalization-impact-whole-r300';NAMES=['IMPLEMENTATION_PLAN.md','PROGRESS_INTEGRATION.md','work_packages.json','progress_snapshot.json'] +def mod(name,p): + s=importlib.util.spec_from_file_location(name,p);m=importlib.util.module_from_spec(s);s.loader.exec_module(m);return m +def unpack(path):return subprocess.run(['/opt/homebrew/bin/zstd','-d','-q','-c',str(path)],check=True,capture_output=True,timeout=10).stdout +def main(): + r=mod('r281',R/'tools/run_all_tests.py');outer=mod('owned270',r.SUPPORT/'owned_outer.py');plan=r.read(O/'input.json');fixed=plan['pins'];assert not (O/'execution.json').exists() + source=r.source_refs(R);player=r.default_player(R);docs={n:r.sha(D/n) for n in NAMES};assert source==plan['source_before'] and player==plan['default_before'] and docs==plan['doc4_before'] + prepath=A/'p23-02-guest-need-normalization-impact-whole-preexecution-independent-review-r300.json';pre=r.read(prepath);assert pre['execution_allowed'] and not pre['blockers'] + for group in ['evidence_sha256','canonical_doc4_context_pins']: + for key,q in pre[group].items(): + f=Path(q.get('path',key));assert f.stat().st_size==q['bytes'] and r.sha(f)==q['sha256'] + root=r.read(O/'preexecution-root-verification.json');assert root['passed'] and root['review_sha256']==r.sha(prepath) + assert r.read(fixed['local_review']['path'])['finite_local_equivalence_accepted'] + auditpath=A/'p23-02-native-provider-fallback-static-independent-review-r280.json';audit=r.read(auditpath);assert audit['builtin_synchronous_fallback_supported'] and not audit['blockers'] + auditroot=r.read(A/'p23-02-native-provider-fallback-static-root-verification-r280.json');assert auditroot['passed'] and auditroot['review_sha256']==r.sha(auditpath) + stage=Path(plan['stage']);parent=Path(plan['parent']);budget=stage/'scripts/core/performance_budget.gd';original=budget.read_bytes();modified=Path(fixed['modified_budget']['path']).read_bytes();public=(stage/'project.godot').read_bytes();patched=False;guest=stage/'scripts/guest/guest_service.gd';guest_original=guest.read_bytes();guest_modified=Path(fixed['modified_guest']['path']).read_bytes();guest_patched=False + assert hashlib.sha256(original).hexdigest()==plan['original_budget_sha256'] + def protect(): + assert r.source_refs(R)==source and r.default_player(R)==player and {n:r.sha(D/n) for n in NAMES}==docs and r.inventory(r.SUPPORT)==plan['support_inventory'] + assert r.inventory(parent,stage=True)==plan['expected_stage'] and r.inventory(stage,stage=True)==((plan['guest_budget_patched_stage'] if guest_patched else plan['patched_stage']) if patched else plan['expected_stage']) + for key,q in fixed.items(): + f=Path(q['path']) + if f==guest:assert f.read_bytes()==(guest_modified if guest_patched else guest_original) + else:assert f.stat().st_size==q['bytes'] and r.sha(f)==q['sha256'],key + protect();oracle=unpack(fixed['oracle']['path']);assert len(oracle)==11487732 and hashlib.sha256(oracle).hexdigest()=='9df3c1b6f65dfd8be944cd5cab8c631f7533530dfef3820d9fa5d74a5b1ac30f' + phases=[];samples=[];error=None;cleanup=[];cleanup_errors=[] + try: + for mode in ['s6','baseline','candidate']: + protect();assert not outer.native.helper['live_engines']() and shutil.disk_usage(A).free>=plan['capacity_floor_bytes'] + budget.write_bytes(modified);patched=True;guest_patched=mode!='baseline';guest.write_bytes(guest_modified if guest_patched else guest_original) + protect();output=O/(mode+'-measurement');output.mkdir();ident=uuid.uuid4().hex;startup='TheTree-PCK-tests-'+ident+'-budget-startup';profile='TheTree-PCK-tests-'+ident+'-budget-runtime';assert not r.profile_path(startup).exists() and not r.profile_path(profile).exists() + env=r.fresh_environment(os.environ);env.update(THE_TREE_PACK_PROFILE_NAME=profile,THE_TREE_PACK_PROFILE_EXPECTED=str(r.profile_path(profile)),THE_TREE_PACK_PROFILE_REPORT=str(O/(mode+'-profile.json')),THE_TREE_RUNTIME_MONITOR_OUTPUT=str(output),THE_TREE_REPLAY_SNAPSHOT=fixed['fixture']['path'],THE_TREE_CANDIDATE_ORACLE=fixed['oracle']['path'],THE_TREE_PAIRED_CANDIDATE=mode,THE_TREE_PAIRED_SAMPLE=mode,THE_TREE_EXPECTED_BUDGET_SHA=fixed['modified_budget']['sha256'],THE_TREE_EXPECTED_PATH_SHA=fixed['original_path']['sha256'],THE_TREE_EXPECTED_GUEST_SHA=fixed['modified_guest' if guest_patched else 'original_guest']['sha256']) + (stage/'project.godot').write_bytes(r.private_project(public,startup));phase=O/mode;argv=[fixed['engine']['path'],'--headless','--path',str(stage),'--script',fixed['starter_'+mode]['path'],'--verbose','--log-file',str(phase/'engine-native.log')] + result,capture=outer.run_phase(argv,phase,90,env,now_fn=r.now,dump_fn=r.write,sha_fn=r.sha,live_engines_fn=outer.native.helper['live_engines']);row=dict(mode=mode,result=result,capture=capture);phases.append(row);r.write(O/(mode+'-phase.json'),row) + rp=output/'report.json';report=r.read(rp) if rp.exists() else None + if report is not None:samples.append(report) + assert result and result['exit_code']==0 and not result['error_lines'] and not result['timed_out'] and capture['passed'] + logs=''.join((phase/n).read_text() for n in ['stdout.log','stderr.log','engine-native.log']);assert 'Orphan StringName:' not in logs and 'unclaimed string names' not in logs + assert report and report['passed'] and not report['failures'] and report['pid']==result['pid'] + stdout=(phase/'stdout.log').read_text();assert stdout.count('NATIVE_ADAPTER_LIBRARY_REGISTERED')==1 + if mode=='s6':assert report['mode']==mode and report['checks']==24 and stdout.count('PASS: 24 checks')==1 + else: + assert report['candidate']==mode and report['sample']==mode and report['checks']==15 and stdout.count('SDK whole647: 15 checks, 0 failures')==1 + ref=report['after647'];raw=unpack(ref['path']);assert raw==oracle and len(raw)==ref['uncompressed_bytes'] and hashlib.sha256(raw).hexdigest()==ref['uncompressed_sha256'] + r.profile_gate(r.profile_path(profile),O/(mode+'-profile.json'),profile);assert sum(f.stat().st_size for f in O.rglob('*') if f.is_file())<=16*1048576 + (stage/'project.godot').write_bytes(public);budget.write_bytes(original);patched=False;guest.write_bytes(guest_original);guest_patched=False;protect() + except BaseException as caught:error=type(caught).__name__+': '+str(caught) + finally: + cleanup,cleanup_errors=outer.finish_captured(outer.OWNED) + if all(q['engine_ended'] is True for q in cleanup):budget.write_bytes(original);patched=False;guest.write_bytes(guest_original);guest_patched=False;(stage/'project.godot').write_bytes(public) + else:cleanup_errors.append('Budget/project restoration refused while owned child remains live') + guard_errors=[] + try:assert not patched and not guest_patched and guest.read_bytes()==guest_original and budget.read_bytes()==original;protect() + except BaseException as caught:guard_errors.append(type(caught).__name__+': '+str(caught)) + pairs=[] + if len(samples)==3: + before=samples[1]['manual_tick_us'];after=samples[2]['manual_tick_us'];assert before>0 and after>=0;pairs=[dict(baseline_us=before,candidate_us=after,ratio=after/before,reduction_percent=(before-after)*100.0/before,scope='One adjacent cold paused speed1 headless observation only; no stable/P95/budget acceptance')] + passed=error is None and not guard_errors and not cleanup_errors and len(phases)==3 and len(samples)==3 + r.write(O/'execution.json',dict(passed=passed,error=error,guard_errors=guard_errors,phases=phases,samples=samples,pairs=pairs,cleanup=cleanup,cleanup_errors=cleanup_errors,shared_Budget_restored_byteexact=not patched and budget.read_bytes()==original, shared_Guest_restored_byteexact=not guest_patched and guest.read_bytes()==guest_original,input_source_default_doc4_preserved=not guard_errors,candidate_adopted=False,unit_accepted=False,performance_accepted=False,limitations=['r298 GuestService with same library275 original S6/GameClock impact first; only on pass baseline/candidate whole647 equality and one finite timing pair. No stable/P95/D10/50ms/final172/Main/render/OS/realtime x3/Windows/adoption/unit acceptance.'])) + print(json.dumps(dict(passed=passed,error=error,guard_errors=guard_errors,pairs=pairs)),flush=True);return 0 if passed else 1 +if __name__=='__main__':raise SystemExit(main()) diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/actual-root-verification.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/actual-root-verification.json new file mode 100644 index 0000000..38e927b --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/actual-root-verification.json @@ -0,0 +1,493 @@ +{ + "passed": true, + "review_sha256": "05594a0441ee2757b56168e44377251dfd63f5c08ddb031ae1c59f46509f10e7", + "verified_entries": [ + { + "path": "/Applications/Godot.app/Contents/MacOS/Godot", + "bytes": 351312912, + "sha256": "c7cccbf8fb143e34e02fd6521e09be2c2b974f0d5db080b19071c9c570718ccf" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd", + "bytes": 17582, + "sha256": "92d5e1956f4e613e12555d756de4f71fef03678cde159ac68fac3188ce3f336e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/run_all_tests.py", + "bytes": 26296, + "sha256": "320ca668732b4ff72fc4449998af2327d4e5c527b06896740806aaf0487282b4" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd", + "bytes": 2276, + "sha256": "597696c705cc8f0e79a35265ca3ef8df55f7fc3c4e0e5a2ce9a4e20e29e29a6f" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-walk-edges-candidate-r265-r03/performance_budget.candidate.gd", + "bytes": 11250, + "sha256": "1010129d3124c3aec037c840a5766a7cdabe60c654999dfb6f23b224140a73f8" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-candidate-r239/stage/scripts/core/performance_budget.gd", + "bytes": 10355, + "sha256": "742c464d16ab417cbc3c2930d43e508faf5c9f7688da416324ca1150bdb9b6b9" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-candidate-r239/stage/scripts/world/path_service.gd", + "bytes": 132925, + "sha256": "6b7f4e989ea9b09495f814d8ecb294028d10794005966414bf52640e122b0d17" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-single-actor-path-native-r03/diagnostic-measurement/checkpoint646.varbytes.zst", + "bytes": 240032, + "sha256": "1a88f7ed27d1d32102c6fe3a9533221d2565191712ed15b631190479d1d41505" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-report-window-trusted-report-whole647-native-r02/diagnostic-measurement/after647.varbytes.zst", + "bytes": 246720, + "sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/tests/s6/test_performance_budget.gd", + "bytes": 3968, + "sha256": "1ae5490637d73b519bf9ed0e00bda0e034d5ea0e589493bcf8886e4d1ff63689" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/autoload/game_clock.gd", + "bytes": 841, + "sha256": "39400634a57ccbf8c584b54a15a259048a95da90b1528330151e45667d65f7f7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd", + "bytes": 17582, + "sha256": "92d5e1956f4e613e12555d756de4f71fef03678cde159ac68fac3188ce3f336e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cached-path-whole-pair-r253-r02/input.json", + "bytes": 1205935, + "sha256": "b116fd3e0dbad6b84594486dfaa531845e549482493a76dd7333a95dc760453b" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cached-path-whole-pair-actual-independent-review-r253-r02.json", + "bytes": 37005, + "sha256": "f4c2b2c17da88ddf1f4f65bc2aacb53d5e5f062447df46e61bf724f7f3200d3c" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-budget-impact-whole-r262/input.json", + "bytes": 972136, + "sha256": "c8e7282ea7125c97eb8f8abe2914e7ecae28d76b368a042855a0ee11ccae68ba" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-budget-impact-whole-actual-independent-review-r262.json", + "bytes": 37515, + "sha256": "530a10149df9138948f037937fda669f7f8d3b420a70260b4ecb5c4f96298782" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-local-r278-r04/candidate.gdextension", + "bytes": 323, + "sha256": "04c4311764ab9d75be3df884f960f0944cd474847fb1ca061224ce4c1bc2aef7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-local-r278-r04/candidate.gdextension", + "bytes": 323, + "sha256": "04c4311764ab9d75be3df884f960f0944cd474847fb1ca061224ce4c1bc2aef7" + }, + { + "path": "/private/tmp/TheTree-pure-tags-r278-r04-72046c25b9384bcf8ea8ec91123462e1/candidate.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + { + "path": "/private/tmp/TheTree-pure-tags-r278-r04-72046c25b9384bcf8ea8ec91123462e1/candidate.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + { + "path": "/private/tmp/TheTree-pure-tags-r278-r04-72046c25b9384bcf8ea8ec91123462e1/candidate.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + { + "path": "/private/tmp/thetree-prepare-guest-need-impact-whole-r300.py", + "bytes": 8264, + "sha256": "1e7725744b68b6804537f30814ae3ca9af8309b04a226f9fe44d33d6864abe37" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300.py", + "bytes": 8498, + "sha256": "4d287d07ede1d8ce1b14a67edc01d7574320064727b01bfd45abb80423eeeef6" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/whole.gd", + "bytes": 4637, + "sha256": "f46859a7cf1e08fd266f25a35c0fb9091f452fe6746d6ebbe43f594944ca29e7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281/whole.gd", + "bytes": 4455, + "sha256": "8af18e506a8cf859103c9d2a79f0d31f4d65f9f5d022f2848bbbb4ead21b9fc4" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281.py", + "bytes": 7665, + "sha256": "a2f907ff0b3abbefb9df0011d4304bc64169969bbf8324fdb04467c604f00d38" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281/input.json", + "bytes": 975133, + "sha256": "cab7c33fad7f013628756bb968d78e0da57d712de3474c31287f4e93f91a21ad" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-actual-independent-review-r281.json", + "bytes": 46359, + "sha256": "1876c883e898fdfb8c1c4fb84ee5950930719d0e623b3f010fad0312402166b4" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281/actual-root-verification.json", + "bytes": 28310, + "sha256": "1d3d3a0d804d508e7daf11551c30997b0ef048660ceaafb814fd7e07104ae292" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/input.json", + "bytes": 970408, + "sha256": "a6422ee7db963665bd8626d3bbfc8887c65f3a26292355082f46cc1b73c1c5f3" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-actual-independent-review-r299-r02.json", + "bytes": 23481, + "sha256": "892b47057267c6bd4b839985bcf490ea0bb36474e2cd4e5ad3a9644b6e4331d2" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/actual-root-verification.json", + "bytes": 12674, + "sha256": "05ac885cfcc93cf46a6dedadf3705ae119b43c6659c6d3d68a182dbdd4802eed" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/execution.json", + "bytes": 11235, + "sha256": "506dfdeeef07e9b71bbbf17fdab1be4450c214aecedd66e55770bc9f426d1283" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "bytes": 11472, + "sha256": "3e2eaa147e365a74145224d8995bade5b44528d59b5508dc159458555081ed99" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "bytes": 17223, + "sha256": "940dd5f51b55942f07ef7ad091ec557af4d0d7bb07d48c08b6a98bde570f32b2" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json", + "bytes": 9067, + "sha256": "e6f83f624358270199fb6a0d3236db0e20da614443514cba04d66995a671de42" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/scripts/guest/guest_service.gd", + "bytes": 61414, + "sha256": "56880410e9a00816f9a95d30821982955532de8dd976980934e12016a9f2b21e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd", + "bytes": 63639, + "sha256": "5895d5da6488c767685b109ef01f9e2b57f41272d49cc9e3c415865769adc11d" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r294.json", + "bytes": 53135, + "sha256": "360747fb5ae1484b3e8b9eee30538ffe5d59a478c607dc55fe9606c42680a614" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd", + "bytes": 1648, + "sha256": "acbbf7d7575a7c00230a5d0397674a2511a7ec6cbd222d29845bfbdfeb9f778c" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd", + "bytes": 1451, + "sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd", + "bytes": 1451, + "sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/input.json", + "bytes": 1188185, + "sha256": "8a1c470b378c187f7b99396dad9d23ac43e0590fcc546df88c3be675cacb5908" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-provider-fallback-static-independent-review-r280.json", + "bytes": 15586, + "sha256": "c25202cb2b17e74b7c097572b61c8d60f76e9b26074c637de116b29c48faf118" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-provider-fallback-static-root-verification-r280.json", + "bytes": 7214, + "sha256": "7928ab71bf6ec7a03762b1ac1705557e7b9729880cec5df043937b266bb2ecdd" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-preexecution-independent-review-r300.json", + "bytes": 21063, + "sha256": "40c7a51732529a2a201fb8c617e5e8f833a8d63a7562dc36c71af7123c2a6dec" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-profile.json", + "bytes": 912, + "sha256": "38e4d2a1efa9165acf137baa96e8867487ae65a383811b4be98844149a4baec8" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-phase.json", + "bytes": 8284, + "sha256": "4e3507a3f268d346e0994ca360018814793d3685f32987f7a11d531049245e11" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd", + "bytes": 1451, + "sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/input.json", + "bytes": 1188185, + "sha256": "8a1c470b378c187f7b99396dad9d23ac43e0590fcc546df88c3be675cacb5908" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd", + "bytes": 1451, + "sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/preexecution-root-verification.json", + "bytes": 15796, + "sha256": "52fd13e6d3c044327ca22966022fe3839d52c20bbf55bcb36a0473c6898c1baf" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-phase.json", + "bytes": 8270, + "sha256": "e31397a6f3cffb9262c8c868b56faed22a31a2c86cfd293b329714a1ec850e69" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/whole.gd", + "bytes": 4637, + "sha256": "f46859a7cf1e08fd266f25a35c0fb9091f452fe6746d6ebbe43f594944ca29e7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd", + "bytes": 1648, + "sha256": "acbbf7d7575a7c00230a5d0397674a2511a7ec6cbd222d29845bfbdfeb9f778c" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-profile.json", + "bytes": 912, + "sha256": "d62309aec9e1d1a9f0d1243aeb72020f1ac12ac1e493c7cd29293bdaff759b9a" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-phase.json", + "bytes": 8191, + "sha256": "18a43b63b9d142e75deed541be2393b68d9ad610f48411e153050b483e72a51a" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/execution.json", + "bytes": 33275, + "sha256": "4fe6abd9f80b888274b3cbb092e579b5c3841bb41eec618c5b302f4484d01012" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-profile.json", + "bytes": 912, + "sha256": "a05fdfba576cb6c91d128f7d20af1e274e28d8a98c05b348c43a40ed28bba605" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/stderr.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/ended.json", + "bytes": 1827, + "sha256": "380fbc66b677d46266188d0cc846bf006de9d0b8437d0eb5a6245c8091732b70" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/adapter-owned-cleanup.json", + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/engine-native.log", + "bytes": 13509, + "sha256": "e60c0072625807a8a698824606a948be3bd3cee9dfca3bac890635a922a23e40" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/stdout.log", + "bytes": 13659, + "sha256": "de253f287a81f720b3db1131f721a8be2e3aa69af5fb7562acd14e5af56a1edc" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/started.json", + "bytes": 2474, + "sha256": "9d8d54af780f2a32492b8aa7821e54dd7539ce0caf35e79d6af00e97aec708fe" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/process.json", + "bytes": 6825, + "sha256": "49bb520981139437d5c4a92450f5ddc638f013ae4ff046315c7eb071ea2b428e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/outer-owned-finally.json", + "bytes": 964, + "sha256": "040e72a13c7b1a3002d23c1d4b5abe88be8e2ec4ea579fa1f16a9bba35e109c3" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/stderr.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/ended.json", + "bytes": 1823, + "sha256": "bd32c6c16d82ed141ba710abe3b829c7b5f58320dbe0f74d6ac0ff0049912386" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/adapter-owned-cleanup.json", + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/engine-native.log", + "bytes": 13505, + "sha256": "05cdcc2fa37e6be5ff4997da5708db25995a37e840edbcb0c8d97d323c4fc8d6" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/stdout.log", + "bytes": 13655, + "sha256": "d41b4a57df20686c0359d037526d3b00817a2a69356be5ae7adb76eb18c2eab3" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/started.json", + "bytes": 2467, + "sha256": "0cad66d32559b5c7b35ba7ae2dff5588ad4e7e9bbfe3abada83d21aa2adfacad" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/process.json", + "bytes": 6812, + "sha256": "7994bb9a494fdc8c8238f33a7d7f6296920a7a3f6d0bd757d6f84fe03d511fa5" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/outer-owned-finally.json", + "bytes": 964, + "sha256": "d7788042d01c0e2070c2a1592458803131b753a5229039e3e722e84d2e6921db" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-measurement/report.json", + "bytes": 174, + "sha256": "90966209a4ba054e1db62c8a2edaa7e90e863ed9e4312c808597da97172ae59f" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/stderr.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/ended.json", + "bytes": 1798, + "sha256": "db06470b820a92907cdf9358d8f02f42f27b479cc4b0a44d761152041e231811" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/adapter-owned-cleanup.json", + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/engine-native.log", + "bytes": 8852, + "sha256": "48462355a59f9eb8adeff6fd771f30345be43074ae8a70cf04abaee1e14e8fa9" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/stdout.log", + "bytes": 9002, + "sha256": "436de13cf96db54eb787bf44582826fb9ccc6db327cab189f4b848087dea3510" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/started.json", + "bytes": 2431, + "sha256": "d295bde78bd230485f26bd88c5899d719b13022e915f48794ae3b2685ede2bf0" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/process.json", + "bytes": 6739, + "sha256": "c3d2b715a213c276be9ced27d58c16e4dfdec3344425e450989bd18e91ac64d3" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/outer-owned-finally.json", + "bytes": 964, + "sha256": "eef48a24e60c7faedccc815bc202c27715fcf1dbe89300b37d303f0562e3ffcd" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/report.json", + "bytes": 1321, + "sha256": "12343afda6c351f70432b1c6e46d533733d2f2e049c4d182138baaae0ab5a5b6" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/after647.varbytes.zst", + "bytes": 246720, + "sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/report.json", + "bytes": 1324, + "sha256": "6d01548981cf300c6434d5236a42f205156cd443b9fef366b65255a3e9754812" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/after647.varbytes.zst", + "bytes": 246720, + "sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-residual-diagnostic-actual-independent-review-r238.json", + "bytes": 36734, + "sha256": "e41634755f116006c91ad251b48eb8b71286a53a6a687d6f371366f3140cc66d" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md", + "bytes": 492299, + "sha256": "61776f0673770277ab6d182107337ed40a108ff3b5ab2c1a8f29fc4f2c3015ad" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md", + "bytes": 410363, + "sha256": "8b0488910dba35b34da96d7062b9a69d293e70a1963c9c5890ec32b2891baaea" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json", + "bytes": 1184337, + "sha256": "32d80e911910bc762287dc3ddf0ee0ea3072ca2f0158aa2f9f355b9202cfdfeb" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json", + "bytes": 539512, + "sha256": "b417ee1b945dfe4666f3a2f3501f906756826ea88d741bb116f3dd20250c8958" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/IMPLEMENTATION_PLAN.md", + "bytes": 492167, + "sha256": "f0a719c77547db888e52bd09be53313a97118d19d46a8948599fef5694716aef" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/PROGRESS_INTEGRATION.md", + "bytes": 410231, + "sha256": "674b882256016af3d7072d32a0bdd13f5e0ce2aa374694c37442354d224d8758" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/work_packages.json", + "bytes": 1175313, + "sha256": "5441490631fbe73baebc95029a75af50ccb71a8962a5b913a710b6763a8ee763" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/progress_snapshot.json", + "bytes": 521884, + "sha256": "8fd37b051cd48d55bde8dda2947f59918d1c8dbe37831e15951b1324e5218c3d" + } + ], + "unit_accepted": false, + "performance_accepted": false +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd new file mode 100644 index 0000000..584fee3 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd @@ -0,0 +1,16 @@ +extends "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/whole.gd" +const Guard := preload("/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd") +func _initialize() -> void: + if not Guard.activate(): quit(97); return + super._initialize() +func run() -> void: + var loaded := GDExtensionManager.load_extension("/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-local-r278-r04/candidate.gdextension") + var exact_api := false + if loaded == GDExtensionManager.LOAD_STATUS_OK and ClassDB.class_exists(&"TheTreeNumericCore"): + var probe: Variant = ClassDB.instantiate(&"TheTreeNumericCore") + exact_api = probe != null and probe.has_method(&"guest_tree_edge_rows") == true + probe = null + check(loaded == GDExtensionManager.LOAD_STATUS_OK and ClassDB.class_exists(&"TheTreeNumericCore") and exact_api, "exact native extension registered before diagnostic") + if loaded != GDExtensionManager.LOAD_STATUS_OK or not ClassDB.class_exists(&"TheTreeNumericCore") or not exact_api: quit(96); return + print("NATIVE_ADAPTER_LIBRARY_REGISTERED") + super.run() diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/after647.varbytes.zst b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/after647.varbytes.zst new file mode 100644 index 0000000..84c74b4 Binary files /dev/null and b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/after647.varbytes.zst differ diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/report.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/report.json new file mode 100644 index 0000000..014ca22 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/report.json @@ -0,0 +1,32 @@ +{ + "Windows_accepted": false, + "after647": { + "bytes": 246720, + "codec": "zstd", + "field_deletions": 0, + "file_envelope": false, + "full_bytes_roundtrip": true, + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/after647.varbytes.zst", + "sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880", + "uncompressed_bytes": 11487732, + "uncompressed_sha256": "9df3c1b6f65dfd8be944cd5cab8c631f7533530dfef3820d9fa5d74a5b1ac30f" + }, + "cache_hits": 0, + "cache_misses": 9311, + "candidate": "baseline", + "candidate_adopted": false, + "checks": 15, + "failures": [], + "limits": [ + "One sample from an adjacent baseline original GuestService versus r298 GuestService; same r274/library275 pair; fixed cold restored646. Only exploratory pair observation, no stable speedup, percentile or budget acceptance.", + "No Main, rendering, OS input or realtime x3. Timed interval contains builtin production callbacks; snapshot verification and compression occur after timing." + ], + "manual_tick_us": 1153117, + "normal_OS_accepted": false, + "passed": true, + "performance_budget_accepted": false, + "pid": 52202, + "plan_id": "P23-02", + "sample": "baseline", + "unit_accepted": false +} \ No newline at end of file diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd new file mode 100644 index 0000000..584fee3 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd @@ -0,0 +1,16 @@ +extends "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/whole.gd" +const Guard := preload("/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd") +func _initialize() -> void: + if not Guard.activate(): quit(97); return + super._initialize() +func run() -> void: + var loaded := GDExtensionManager.load_extension("/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-local-r278-r04/candidate.gdextension") + var exact_api := false + if loaded == GDExtensionManager.LOAD_STATUS_OK and ClassDB.class_exists(&"TheTreeNumericCore"): + var probe: Variant = ClassDB.instantiate(&"TheTreeNumericCore") + exact_api = probe != null and probe.has_method(&"guest_tree_edge_rows") == true + probe = null + check(loaded == GDExtensionManager.LOAD_STATUS_OK and ClassDB.class_exists(&"TheTreeNumericCore") and exact_api, "exact native extension registered before diagnostic") + if loaded != GDExtensionManager.LOAD_STATUS_OK or not ClassDB.class_exists(&"TheTreeNumericCore") or not exact_api: quit(96); return + print("NATIVE_ADAPTER_LIBRARY_REGISTERED") + super.run() diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/after647.varbytes.zst b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/after647.varbytes.zst new file mode 100644 index 0000000..84c74b4 Binary files /dev/null and b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/after647.varbytes.zst differ diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/report.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/report.json new file mode 100644 index 0000000..d88939b --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/report.json @@ -0,0 +1,32 @@ +{ + "Windows_accepted": false, + "after647": { + "bytes": 246720, + "codec": "zstd", + "field_deletions": 0, + "file_envelope": false, + "full_bytes_roundtrip": true, + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/after647.varbytes.zst", + "sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880", + "uncompressed_bytes": 11487732, + "uncompressed_sha256": "9df3c1b6f65dfd8be944cd5cab8c631f7533530dfef3820d9fa5d74a5b1ac30f" + }, + "cache_hits": 0, + "cache_misses": 9311, + "candidate": "candidate", + "candidate_adopted": false, + "checks": 15, + "failures": [], + "limits": [ + "One sample from an adjacent baseline original GuestService versus r298 GuestService; same r274/library275 pair; fixed cold restored646. Only exploratory pair observation, no stable speedup, percentile or budget acceptance.", + "No Main, rendering, OS input or realtime x3. Timed interval contains builtin production callbacks; snapshot verification and compression occur after timing." + ], + "manual_tick_us": 1167153, + "normal_OS_accepted": false, + "passed": true, + "performance_budget_accepted": false, + "pid": 52242, + "plan_id": "P23-02", + "sample": "candidate", + "unit_accepted": false +} \ No newline at end of file diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/execution.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/execution.json new file mode 100644 index 0000000..282e354 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/execution.json @@ -0,0 +1,740 @@ +{ + "passed": true, + "error": null, + "guard_errors": [], + "phases": [ + { + "mode": "s6", + "result": { + "argv": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/engine-native.log" + ], + "pid": 52182, + "started_utc": "2026-10-11T23:57:56.405605+00:00", + "ended_utc": "2026-10-11T23:57:57.587539+00:00", + "wall_seconds": 1.181522417, + "exit_code": 0, + "helper_exit_code": 0, + "timed_out": false, + "stdout_sha256": "436de13cf96db54eb787bf44582826fb9ccc6db327cab189f4b848087dea3510", + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "error_lines": [], + "owned_popen_ended": true, + "old_helper_engine_ended": true, + "start_receipt_written": true, + "end_receipt_written": true, + "lifecycle_error": null, + "old_helper_lifecycle_error": null, + "actual_start_binding": { + "scope": "isolated diagnostic owned child", + "event": "ENGINE_STARTED", + "actual_pid": 52182, + "owner_pid": 52158, + "command": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/engine-native.log" + ], + "monotonic_ns": 3507648916, + "pid": 52182, + "argv": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/engine-native.log" + ], + "started_utc": "2026-10-11T23:57:56.405605+00:00", + "current_process_identity": { + "pid": 52182, + "ppid": 52158, + "pgid": 52182, + "args": "/Applications/Godot.app/Contents/MacOS/Godot --headless --path /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage --script /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd --verbose --log-file /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/engine-native.log" + }, + "live_identity_exact": true, + "tracked_child_ended_before_initial_probe": false, + "signal_scope": "tracked Popen child only; no external group signal" + }, + "actual_end_binding": { + "scope": "isolated diagnostic owned child", + "event": "ENGINE_ENDED", + "actual_pid": 52182, + "owner_pid": 52158, + "command": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/engine-native.log" + ], + "monotonic_ns": 4682163583, + "exit_code": 0, + "actual_process_exit_code": 0, + "engine_ended": true, + "timed_out": false, + "lifecycle_error": null, + "start_receipt_written": true, + "pid": 52182, + "argv": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6/engine-native.log" + ], + "ended_utc": "2026-10-11T23:57:57.584958+00:00", + "signal_scope": "tracked Popen child only; no external group signal" + }, + "strict_native_diagnostics": { + "errors": [], + "banner_count": 1, + "known_unicode_diagnostic_count": 0, + "unrecognized_unicode_diagnostic_count": 0, + "exit_leak_diagnostic_lines": [] + }, + "external_process_or_group_signals": 0, + "owned_child_process_helper_sha256": "c007e712c281573254faa1233c2ac92e100ab87393256a6dc096b35283e43037", + "adapter_owned_cleanup": { + "owned_child_created": true, + "engine_ended": true, + "actual_process_exit_code": 0, + "attempts": [ + { + "attempt": 1, + "kill_attempted": false, + "wait_timeout_seconds": 5, + "wait_completed": true, + "errors": [], + "poll_before": 0, + "wait_returned_code": 0, + "poll_after": 0 + } + ], + "errors": [] + }, + "adapter_error": null, + "old_helper_bytes_preserved": true, + "helper_wait_None_maps_to_actual_timeout_seconds": 5, + "explicit_helper_wait_timeouts_preserved": true, + "additional_cleanup_wait_timeout_seconds": 5, + "additional_cleanup_max_attempts": 3 + }, + "capture": { + "actual_captured_pids": [ + 52182 + ], + "cleanup": [ + { + "pid": 52182, + "cleanup": { + "owned_child_created": true, + "engine_ended": true, + "actual_process_exit_code": 0, + "attempts": [ + { + "attempt": 1, + "kill_attempted": false, + "wait_timeout_seconds": 5, + "wait_completed": true, + "errors": [], + "poll_before": 0, + "wait_returned_code": 0, + "poll_after": 0 + } + ], + "errors": [] + }, + "outer_cleanup_errors": [], + "engine_ended": true, + "outer_maximum_helper_invocations": 3, + "helper_maximum_waits": 3, + "per_wait_timeout_seconds": 5, + "foreign_process_or_group_signals": 0 + } + ], + "adapter_exception": null, + "all_captured_ended": true, + "outer_cleanup_errors": [], + "foreign_process_or_group_signals": 0, + "all_cleanup_before_outer_receipt": true, + "outer_receipt_written": true, + "outer_receipt_error": null, + "passed": true + } + }, + { + "mode": "baseline", + "result": { + "argv": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/engine-native.log" + ], + "pid": 52202, + "started_utc": "2026-10-11T23:57:59.762349+00:00", + "ended_utc": "2026-10-11T23:58:05.407571+00:00", + "wall_seconds": 5.645183084, + "exit_code": 0, + "helper_exit_code": 0, + "timed_out": false, + "stdout_sha256": "d41b4a57df20686c0359d037526d3b00817a2a69356be5ae7adb76eb18c2eab3", + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "error_lines": [], + "owned_popen_ended": true, + "old_helper_engine_ended": true, + "start_receipt_written": true, + "end_receipt_written": true, + "lifecycle_error": null, + "old_helper_lifecycle_error": null, + "actual_start_binding": { + "scope": "isolated diagnostic owned child", + "event": "ENGINE_STARTED", + "actual_pid": 52202, + "owner_pid": 52158, + "command": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/engine-native.log" + ], + "monotonic_ns": 6864622625, + "pid": 52202, + "argv": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/engine-native.log" + ], + "started_utc": "2026-10-11T23:57:59.762349+00:00", + "current_process_identity": { + "pid": 52202, + "ppid": 52158, + "pgid": 52202, + "args": "/Applications/Godot.app/Contents/MacOS/Godot --headless --path /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage --script /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd --verbose --log-file /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/engine-native.log" + }, + "live_identity_exact": true, + "tracked_child_ended_before_initial_probe": false, + "signal_scope": "tracked Popen child only; no external group signal" + }, + "actual_end_binding": { + "scope": "isolated diagnostic owned child", + "event": "ENGINE_ENDED", + "actual_pid": 52202, + "owner_pid": 52158, + "command": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/engine-native.log" + ], + "monotonic_ns": 12501777583, + "exit_code": 0, + "actual_process_exit_code": 0, + "engine_ended": true, + "timed_out": false, + "lifecycle_error": null, + "start_receipt_written": true, + "pid": 52202, + "argv": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline/engine-native.log" + ], + "ended_utc": "2026-10-11T23:58:05.404628+00:00", + "signal_scope": "tracked Popen child only; no external group signal" + }, + "strict_native_diagnostics": { + "errors": [], + "banner_count": 1, + "known_unicode_diagnostic_count": 0, + "unrecognized_unicode_diagnostic_count": 0, + "exit_leak_diagnostic_lines": [] + }, + "external_process_or_group_signals": 0, + "owned_child_process_helper_sha256": "c007e712c281573254faa1233c2ac92e100ab87393256a6dc096b35283e43037", + "adapter_owned_cleanup": { + "owned_child_created": true, + "engine_ended": true, + "actual_process_exit_code": 0, + "attempts": [ + { + "attempt": 1, + "kill_attempted": false, + "wait_timeout_seconds": 5, + "wait_completed": true, + "errors": [], + "poll_before": 0, + "wait_returned_code": 0, + "poll_after": 0 + } + ], + "errors": [] + }, + "adapter_error": null, + "old_helper_bytes_preserved": true, + "helper_wait_None_maps_to_actual_timeout_seconds": 5, + "explicit_helper_wait_timeouts_preserved": true, + "additional_cleanup_wait_timeout_seconds": 5, + "additional_cleanup_max_attempts": 3 + }, + "capture": { + "actual_captured_pids": [ + 52202 + ], + "cleanup": [ + { + "pid": 52202, + "cleanup": { + "owned_child_created": true, + "engine_ended": true, + "actual_process_exit_code": 0, + "attempts": [ + { + "attempt": 1, + "kill_attempted": false, + "wait_timeout_seconds": 5, + "wait_completed": true, + "errors": [], + "poll_before": 0, + "wait_returned_code": 0, + "poll_after": 0 + } + ], + "errors": [] + }, + "outer_cleanup_errors": [], + "engine_ended": true, + "outer_maximum_helper_invocations": 3, + "helper_maximum_waits": 3, + "per_wait_timeout_seconds": 5, + "foreign_process_or_group_signals": 0 + } + ], + "adapter_exception": null, + "all_captured_ended": true, + "outer_cleanup_errors": [], + "foreign_process_or_group_signals": 0, + "all_cleanup_before_outer_receipt": true, + "outer_receipt_written": true, + "outer_receipt_error": null, + "passed": true + } + }, + { + "mode": "candidate", + "result": { + "argv": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/engine-native.log" + ], + "pid": 52242, + "started_utc": "2026-10-11T23:58:07.503951+00:00", + "ended_utc": "2026-10-11T23:58:13.045973+00:00", + "wall_seconds": 5.541983042, + "exit_code": 0, + "helper_exit_code": 0, + "timed_out": false, + "stdout_sha256": "de253f287a81f720b3db1131f721a8be2e3aa69af5fb7562acd14e5af56a1edc", + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "error_lines": [], + "owned_popen_ended": true, + "old_helper_engine_ended": true, + "start_receipt_written": true, + "end_receipt_written": true, + "lifecycle_error": null, + "old_helper_lifecycle_error": null, + "actual_start_binding": { + "scope": "isolated diagnostic owned child", + "event": "ENGINE_STARTED", + "actual_pid": 52242, + "owner_pid": 52158, + "command": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/engine-native.log" + ], + "monotonic_ns": 14605616916, + "pid": 52242, + "argv": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/engine-native.log" + ], + "started_utc": "2026-10-11T23:58:07.503951+00:00", + "current_process_identity": { + "pid": 52242, + "ppid": 52158, + "pgid": 52242, + "args": "/Applications/Godot.app/Contents/MacOS/Godot --headless --path /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage --script /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd --verbose --log-file /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/engine-native.log" + }, + "live_identity_exact": true, + "tracked_child_ended_before_initial_probe": false, + "signal_scope": "tracked Popen child only; no external group signal" + }, + "actual_end_binding": { + "scope": "isolated diagnostic owned child", + "event": "ENGINE_ENDED", + "actual_pid": 52242, + "owner_pid": 52158, + "command": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/engine-native.log" + ], + "monotonic_ns": 20140548833, + "exit_code": 0, + "actual_process_exit_code": 0, + "engine_ended": true, + "timed_out": false, + "lifecycle_error": null, + "start_receipt_written": true, + "pid": 52242, + "argv": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate/engine-native.log" + ], + "ended_utc": "2026-10-11T23:58:13.043429+00:00", + "signal_scope": "tracked Popen child only; no external group signal" + }, + "strict_native_diagnostics": { + "errors": [], + "banner_count": 1, + "known_unicode_diagnostic_count": 0, + "unrecognized_unicode_diagnostic_count": 0, + "exit_leak_diagnostic_lines": [] + }, + "external_process_or_group_signals": 0, + "owned_child_process_helper_sha256": "c007e712c281573254faa1233c2ac92e100ab87393256a6dc096b35283e43037", + "adapter_owned_cleanup": { + "owned_child_created": true, + "engine_ended": true, + "actual_process_exit_code": 0, + "attempts": [ + { + "attempt": 1, + "kill_attempted": false, + "wait_timeout_seconds": 5, + "wait_completed": true, + "errors": [], + "poll_before": 0, + "wait_returned_code": 0, + "poll_after": 0 + } + ], + "errors": [] + }, + "adapter_error": null, + "old_helper_bytes_preserved": true, + "helper_wait_None_maps_to_actual_timeout_seconds": 5, + "explicit_helper_wait_timeouts_preserved": true, + "additional_cleanup_wait_timeout_seconds": 5, + "additional_cleanup_max_attempts": 3 + }, + "capture": { + "actual_captured_pids": [ + 52242 + ], + "cleanup": [ + { + "pid": 52242, + "cleanup": { + "owned_child_created": true, + "engine_ended": true, + "actual_process_exit_code": 0, + "attempts": [ + { + "attempt": 1, + "kill_attempted": false, + "wait_timeout_seconds": 5, + "wait_completed": true, + "errors": [], + "poll_before": 0, + "wait_returned_code": 0, + "poll_after": 0 + } + ], + "errors": [] + }, + "outer_cleanup_errors": [], + "engine_ended": true, + "outer_maximum_helper_invocations": 3, + "helper_maximum_waits": 3, + "per_wait_timeout_seconds": 5, + "foreign_process_or_group_signals": 0 + } + ], + "adapter_exception": null, + "all_captured_ended": true, + "outer_cleanup_errors": [], + "foreign_process_or_group_signals": 0, + "all_cleanup_before_outer_receipt": true, + "outer_receipt_written": true, + "outer_receipt_error": null, + "passed": true + } + } + ], + "samples": [ + { + "checks": 24, + "failures": 0, + "mode": "s6", + "original_s6_test_unchanged": true, + "passed": true, + "performance_accepted": false, + "pid": 52182, + "unit_accepted": false + }, + { + "Windows_accepted": false, + "after647": { + "bytes": 246720, + "codec": "zstd", + "field_deletions": 0, + "file_envelope": false, + "full_bytes_roundtrip": true, + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-measurement/after647.varbytes.zst", + "sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880", + "uncompressed_bytes": 11487732, + "uncompressed_sha256": "9df3c1b6f65dfd8be944cd5cab8c631f7533530dfef3820d9fa5d74a5b1ac30f" + }, + "cache_hits": 0, + "cache_misses": 9311, + "candidate": "baseline", + "candidate_adopted": false, + "checks": 15, + "failures": [], + "limits": [ + "One sample from an adjacent baseline original GuestService versus r298 GuestService; same r274/library275 pair; fixed cold restored646. Only exploratory pair observation, no stable speedup, percentile or budget acceptance.", + "No Main, rendering, OS input or realtime x3. Timed interval contains builtin production callbacks; snapshot verification and compression occur after timing." + ], + "manual_tick_us": 1153117, + "normal_OS_accepted": false, + "passed": true, + "performance_budget_accepted": false, + "pid": 52202, + "plan_id": "P23-02", + "sample": "baseline", + "unit_accepted": false + }, + { + "Windows_accepted": false, + "after647": { + "bytes": 246720, + "codec": "zstd", + "field_deletions": 0, + "file_envelope": false, + "full_bytes_roundtrip": true, + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-measurement/after647.varbytes.zst", + "sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880", + "uncompressed_bytes": 11487732, + "uncompressed_sha256": "9df3c1b6f65dfd8be944cd5cab8c631f7533530dfef3820d9fa5d74a5b1ac30f" + }, + "cache_hits": 0, + "cache_misses": 9311, + "candidate": "candidate", + "candidate_adopted": false, + "checks": 15, + "failures": [], + "limits": [ + "One sample from an adjacent baseline original GuestService versus r298 GuestService; same r274/library275 pair; fixed cold restored646. Only exploratory pair observation, no stable speedup, percentile or budget acceptance.", + "No Main, rendering, OS input or realtime x3. Timed interval contains builtin production callbacks; snapshot verification and compression occur after timing." + ], + "manual_tick_us": 1167153, + "normal_OS_accepted": false, + "passed": true, + "performance_budget_accepted": false, + "pid": 52242, + "plan_id": "P23-02", + "sample": "candidate", + "unit_accepted": false + } + ], + "pairs": [ + { + "baseline_us": 1153117, + "candidate_us": 1167153, + "ratio": 1.0121722253682843, + "reduction_percent": -1.2172225368284397, + "scope": "One adjacent cold paused speed1 headless observation only; no stable/P95/budget acceptance" + } + ], + "cleanup": [ + { + "pid": 52182, + "cleanup": { + "owned_child_created": true, + "engine_ended": true, + "actual_process_exit_code": 0, + "attempts": [ + { + "attempt": 1, + "kill_attempted": false, + "wait_timeout_seconds": 5, + "wait_completed": true, + "errors": [], + "poll_before": 0, + "wait_returned_code": 0, + "poll_after": 0 + } + ], + "errors": [] + }, + "outer_cleanup_errors": [], + "engine_ended": true, + "outer_maximum_helper_invocations": 3, + "helper_maximum_waits": 3, + "per_wait_timeout_seconds": 5, + "foreign_process_or_group_signals": 0 + }, + { + "pid": 52202, + "cleanup": { + "owned_child_created": true, + "engine_ended": true, + "actual_process_exit_code": 0, + "attempts": [ + { + "attempt": 1, + "kill_attempted": false, + "wait_timeout_seconds": 5, + "wait_completed": true, + "errors": [], + "poll_before": 0, + "wait_returned_code": 0, + "poll_after": 0 + } + ], + "errors": [] + }, + "outer_cleanup_errors": [], + "engine_ended": true, + "outer_maximum_helper_invocations": 3, + "helper_maximum_waits": 3, + "per_wait_timeout_seconds": 5, + "foreign_process_or_group_signals": 0 + }, + { + "pid": 52242, + "cleanup": { + "owned_child_created": true, + "engine_ended": true, + "actual_process_exit_code": 0, + "attempts": [ + { + "attempt": 1, + "kill_attempted": false, + "wait_timeout_seconds": 5, + "wait_completed": true, + "errors": [], + "poll_before": 0, + "wait_returned_code": 0, + "poll_after": 0 + } + ], + "errors": [] + }, + "outer_cleanup_errors": [], + "engine_ended": true, + "outer_maximum_helper_invocations": 3, + "helper_maximum_waits": 3, + "per_wait_timeout_seconds": 5, + "foreign_process_or_group_signals": 0 + } + ], + "cleanup_errors": [], + "shared_Budget_restored_byteexact": true, + "shared_Guest_restored_byteexact": true, + "input_source_default_doc4_preserved": true, + "candidate_adopted": false, + "unit_accepted": false, + "performance_accepted": false, + "limitations": [ + "r298 GuestService with same library275 original S6/GameClock impact first; only on pass baseline/candidate whole647 equality and one finite timing pair. No stable/P95/D10/50ms/final172/Main/render/OS/realtime x3/Windows/adoption/unit acceptance." + ] +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/input.json.gz b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/input.json.gz new file mode 100644 index 0000000..9854cf2 Binary files /dev/null and b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/input.json.gz differ diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/preexecution-root-verification.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/preexecution-root-verification.json new file mode 100644 index 0000000..e43fadf --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/preexecution-root-verification.json @@ -0,0 +1,273 @@ +{ + "passed": true, + "review_sha256": "40c7a51732529a2a201fb8c617e5e8f833a8d63a7562dc36c71af7123c2a6dec", + "verified_entries": [ + { + "path": "/Applications/Godot.app/Contents/MacOS/Godot", + "bytes": 351312912, + "sha256": "c7cccbf8fb143e34e02fd6521e09be2c2b974f0d5db080b19071c9c570718ccf" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd", + "bytes": 17582, + "sha256": "92d5e1956f4e613e12555d756de4f71fef03678cde159ac68fac3188ce3f336e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/run_all_tests.py", + "bytes": 26296, + "sha256": "320ca668732b4ff72fc4449998af2327d4e5c527b06896740806aaf0487282b4" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd", + "bytes": 2276, + "sha256": "597696c705cc8f0e79a35265ca3ef8df55f7fc3c4e0e5a2ce9a4e20e29e29a6f" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-walk-edges-candidate-r265-r03/performance_budget.candidate.gd", + "bytes": 11250, + "sha256": "1010129d3124c3aec037c840a5766a7cdabe60c654999dfb6f23b224140a73f8" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-candidate-r239/stage/scripts/core/performance_budget.gd", + "bytes": 10355, + "sha256": "742c464d16ab417cbc3c2930d43e508faf5c9f7688da416324ca1150bdb9b6b9" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-candidate-r239/stage/scripts/world/path_service.gd", + "bytes": 132925, + "sha256": "6b7f4e989ea9b09495f814d8ecb294028d10794005966414bf52640e122b0d17" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-single-actor-path-native-r03/diagnostic-measurement/checkpoint646.varbytes.zst", + "bytes": 240032, + "sha256": "1a88f7ed27d1d32102c6fe3a9533221d2565191712ed15b631190479d1d41505" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-report-window-trusted-report-whole647-native-r02/diagnostic-measurement/after647.varbytes.zst", + "bytes": 246720, + "sha256": "684ba40e9f649b7dd4bfc620185d7cd18bae3111c3b4038e48aaad5a9168d880" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/tests/s6/test_performance_budget.gd", + "bytes": 3968, + "sha256": "1ae5490637d73b519bf9ed0e00bda0e034d5ea0e589493bcf8886e4d1ff63689" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/autoload/game_clock.gd", + "bytes": 841, + "sha256": "39400634a57ccbf8c584b54a15a259048a95da90b1528330151e45667d65f7f7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd", + "bytes": 17582, + "sha256": "92d5e1956f4e613e12555d756de4f71fef03678cde159ac68fac3188ce3f336e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cached-path-whole-pair-r253-r02/input.json", + "bytes": 1205935, + "sha256": "b116fd3e0dbad6b84594486dfaa531845e549482493a76dd7333a95dc760453b" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cached-path-whole-pair-actual-independent-review-r253-r02.json", + "bytes": 37005, + "sha256": "f4c2b2c17da88ddf1f4f65bc2aacb53d5e5f062447df46e61bf724f7f3200d3c" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-budget-impact-whole-r262/input.json", + "bytes": 972136, + "sha256": "c8e7282ea7125c97eb8f8abe2914e7ecae28d76b368a042855a0ee11ccae68ba" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-budget-impact-whole-actual-independent-review-r262.json", + "bytes": 37515, + "sha256": "530a10149df9138948f037937fda669f7f8d3b420a70260b4ecb5c4f96298782" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-local-r278-r04/candidate.gdextension", + "bytes": 323, + "sha256": "04c4311764ab9d75be3df884f960f0944cd474847fb1ca061224ce4c1bc2aef7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-local-r278-r04/candidate.gdextension", + "bytes": 323, + "sha256": "04c4311764ab9d75be3df884f960f0944cd474847fb1ca061224ce4c1bc2aef7" + }, + { + "path": "/private/tmp/TheTree-pure-tags-r278-r04-72046c25b9384bcf8ea8ec91123462e1/candidate.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + { + "path": "/private/tmp/TheTree-pure-tags-r278-r04-72046c25b9384bcf8ea8ec91123462e1/candidate.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + { + "path": "/private/tmp/TheTree-pure-tags-r278-r04-72046c25b9384bcf8ea8ec91123462e1/candidate.dylib", + "bytes": 367520, + "sha256": "386d579d32b5660ccc1ed50d4c59f6a772a8360c7070241886354bfcade46cc0" + }, + { + "path": "/private/tmp/thetree-prepare-guest-need-impact-whole-r300.py", + "bytes": 8264, + "sha256": "1e7725744b68b6804537f30814ae3ca9af8309b04a226f9fe44d33d6864abe37" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300.py", + "bytes": 8498, + "sha256": "4d287d07ede1d8ce1b14a67edc01d7574320064727b01bfd45abb80423eeeef6" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/whole.gd", + "bytes": 4637, + "sha256": "f46859a7cf1e08fd266f25a35c0fb9091f452fe6746d6ebbe43f594944ca29e7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281/whole.gd", + "bytes": 4455, + "sha256": "8af18e506a8cf859103c9d2a79f0d31f4d65f9f5d022f2848bbbb4ead21b9fc4" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281.py", + "bytes": 7665, + "sha256": "a2f907ff0b3abbefb9df0011d4304bc64169969bbf8324fdb04467c604f00d38" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281/input.json", + "bytes": 975133, + "sha256": "cab7c33fad7f013628756bb968d78e0da57d712de3474c31287f4e93f91a21ad" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-actual-independent-review-r281.json", + "bytes": 46359, + "sha256": "1876c883e898fdfb8c1c4fb84ee5950930719d0e623b3f010fad0312402166b4" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-impact-whole-r281/actual-root-verification.json", + "bytes": 28310, + "sha256": "1d3d3a0d804d508e7daf11551c30997b0ef048660ceaafb814fd7e07104ae292" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/input.json", + "bytes": 970408, + "sha256": "a6422ee7db963665bd8626d3bbfc8887c65f3a26292355082f46cc1b73c1c5f3" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-actual-independent-review-r299-r02.json", + "bytes": 23481, + "sha256": "892b47057267c6bd4b839985bcf490ea0bb36474e2cd4e5ad3a9644b6e4331d2" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/actual-root-verification.json", + "bytes": 12674, + "sha256": "05ac885cfcc93cf46a6dedadf3705ae119b43c6659c6d3d68a182dbdd4802eed" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/execution.json", + "bytes": 11235, + "sha256": "506dfdeeef07e9b71bbbf17fdab1be4450c214aecedd66e55770bc9f426d1283" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "bytes": 11472, + "sha256": "3e2eaa147e365a74145224d8995bade5b44528d59b5508dc159458555081ed99" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "bytes": 17223, + "sha256": "940dd5f51b55942f07ef7ad091ec557af4d0d7bb07d48c08b6a98bde570f32b2" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json", + "bytes": 9067, + "sha256": "e6f83f624358270199fb6a0d3236db0e20da614443514cba04d66995a671de42" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/scripts/guest/guest_service.gd", + "bytes": 61414, + "sha256": "56880410e9a00816f9a95d30821982955532de8dd976980934e12016a9f2b21e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd", + "bytes": 63639, + "sha256": "5895d5da6488c767685b109ef01f9e2b57f41272d49cc9e3c415865769adc11d" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r294.json", + "bytes": 53135, + "sha256": "360747fb5ae1484b3e8b9eee30538ffe5d59a478c607dc55fe9606c42680a614" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd", + "bytes": 1648, + "sha256": "acbbf7d7575a7c00230a5d0397674a2511a7ec6cbd222d29845bfbdfeb9f778c" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/baseline-guarded.gd", + "bytes": 1451, + "sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/candidate-guarded.gd", + "bytes": 1451, + "sha256": "9e70ed42d37c9a92fe69435cb219e3d438d6e42fe903e0472d9651e99f21f08d" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/input.json", + "bytes": 1188185, + "sha256": "8a1c470b378c187f7b99396dad9d23ac43e0590fcc546df88c3be675cacb5908" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-provider-fallback-static-independent-review-r280.json", + "bytes": 15586, + "sha256": "c25202cb2b17e74b7c097572b61c8d60f76e9b26074c637de116b29c48faf118" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-provider-fallback-static-root-verification-r280.json", + "bytes": 7214, + "sha256": "7928ab71bf6ec7a03762b1ac1705557e7b9729880cec5df043937b266bb2ecdd" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md", + "bytes": 492299, + "sha256": "61776f0673770277ab6d182107337ed40a108ff3b5ab2c1a8f29fc4f2c3015ad" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md", + "bytes": 410363, + "sha256": "8b0488910dba35b34da96d7062b9a69d293e70a1963c9c5890ec32b2891baaea" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json", + "bytes": 1184337, + "sha256": "32d80e911910bc762287dc3ddf0ee0ea3072ca2f0158aa2f9f355b9202cfdfeb" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json", + "bytes": 539512, + "sha256": "b417ee1b945dfe4666f3a2f3501f906756826ea88d741bb116f3dd20250c8958" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/IMPLEMENTATION_PLAN.md", + "bytes": 492167, + "sha256": "f0a719c77547db888e52bd09be53313a97118d19d46a8948599fef5694716aef" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/PROGRESS_INTEGRATION.md", + "bytes": 410231, + "sha256": "674b882256016af3d7072d32a0bdd13f5e0ce2aa374694c37442354d224d8758" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/work_packages.json", + "bytes": 1175313, + "sha256": "5441490631fbe73baebc95029a75af50ccb71a8962a5b913a710b6763a8ee763" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r282/before/progress_snapshot.json", + "bytes": 521884, + "sha256": "8fd37b051cd48d55bde8dda2947f59918d1c8dbe37831e15951b1324e5218c3d" + } + ], + "unit_accepted": false, + "performance_accepted": false +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd new file mode 100644 index 0000000..121362e --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/s6-guarded.gd @@ -0,0 +1,18 @@ +extends "res://tests/s6/test_performance_budget.gd" +const Guard := preload("/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd") +func _initialize() -> void: + if not Guard.activate(): quit(97); return + var loaded := GDExtensionManager.load_extension("/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-local-r278-r04/candidate.gdextension") + if loaded != GDExtensionManager.LOAD_STATUS_OK or not ClassDB.class_exists(&"TheTreeNumericCore"): quit(96); return + var probe: Variant = ClassDB.instantiate(&"TheTreeNumericCore") + if probe == null or not probe.has_method(&"performance_record_sample") or not probe.has_method(&"guest_tree_edge_rows"): quit(96); return + probe = null + if FileAccess.get_sha256("res://scripts/core/performance_budget.gd") != OS.get_environment("THE_TREE_EXPECTED_BUDGET_SHA"): quit(98); return + if FileAccess.get_sha256("res://scripts/guest/guest_service.gd") != OS.get_environment("THE_TREE_EXPECTED_GUEST_SHA"): quit(98); return + print("NATIVE_ADAPTER_LIBRARY_REGISTERED") + super._initialize() +func _run() -> void: + super._run() + var f := FileAccess.open(OS.get_environment("THE_TREE_RUNTIME_MONITOR_OUTPUT").path_join("report.json"), FileAccess.WRITE) + if f == null: quit(98); return + f.store_string(JSON.stringify({"mode":"s6", "pid":OS.get_process_id(), "checks":_checks, "failures":_failures, "passed":_failures == 0, "original_s6_test_unchanged":true, "unit_accepted":false, "performance_accepted":false}, "\t")); f.close() diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/whole.gd b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/whole.gd new file mode 100644 index 0000000..02edf9a --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-impact-whole-r300/whole.gd @@ -0,0 +1,38 @@ +extends "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd" +# One sample of an adjacent r274/library275 original GuestService versus r298 GuestService with same library275 pair. Only the synchronous tick is timed. +func run() -> void: + output = OS.get_environment("THE_TREE_RUNTIME_MONITOR_OUTPUT") + var input_path := OS.get_environment("THE_TREE_REPLAY_SNAPSHOT") + var candidate := OS.get_environment("THE_TREE_PAIRED_CANDIDATE") + if not output.is_absolute_path() or not input_path.is_absolute_path() or candidate not in ["baseline","candidate"]: quit(98); return + var original := FileAccess.get_file_as_bytes(input_path).decompress(11411840, FileAccess.COMPRESSION_ZSTD) + var initial: Dictionary = bytes_to_var(original) + runtime = root.get_node("SimulationRuntime") + clock = root.get_node("GameClock") + runtime.initialize(clock, root.get_node("GameState"), int(initial[&"systems"][&"runtime"][&"world_seed"])) + check(runtime.restore_snapshot(initial), "fixed646 public restore") + check(var_to_bytes(runtime.create_snapshot()) == original, "complete input bytes identical") + check(clock.absolute_minute == 646 and clock.paused and clock.speed == 1, "same paused646 speed1") + var path_listeners: Array = runtime.path_service.get_signal_connection_list(&"path_query_measured") + check(path_listeners.size() == 1 and path_listeners[0]["callable"] == Callable(runtime, "_on_path_query_measured") and int(path_listeners[0]["flags"]) == 0, "only builtin path listener") + check(clock.performance_budget.get_signal_connection_list(&"budget_exceeded").is_empty(), "no external budget listener") + check(clock.get_signal_connection_list(&"tick_phase_started").is_empty() and clock.get_signal_connection_list(&"tick_completed").is_empty(), "no phase or completion instrumentation") + check(runtime.path_service.cache_hits == 0 and runtime.path_service.cache_misses == 0 and runtime.path_service.cached_path_count() == 0, "same cold derived cache") + check(runtime.path_service._query_batch.is_empty() and runtime.path_service._guest_tree_workspace.is_empty() and runtime.path_service._guest_step_connector_memo.is_empty(), "same cold tree/native-edge/step workspace") + check(runtime._guest_access_batch_can_select(), "both candidates active fast guard") + check(runtime.path_service.get_script().get_source_code().sha256_text() == OS.get_environment("THE_TREE_EXPECTED_PATH_SHA") and FileAccess.get_sha256("res://scripts/core/performance_budget.gd") == OS.get_environment("THE_TREE_EXPECTED_BUDGET_SHA") and FileAccess.get_sha256("res://scripts/guest/guest_service.gd") == OS.get_environment("THE_TREE_EXPECTED_GUEST_SHA"), "actual loaded original Path, same Budget and expected GuestService sources") + var started := Time.get_ticks_usec() + clock.advance_minutes(1) + var elapsed := Time.get_ticks_usec() - started + check(clock.absolute_minute == 647 and clock.paused, "tick returns at paused647") + var after: Dictionary = runtime.create_snapshot() + var oracle := FileAccess.get_file_as_bytes(OS.get_environment("THE_TREE_CANDIDATE_ORACLE")).decompress(11487732, FileAccess.COMPRESSION_ZSTD) + check(var_to_bytes(after) == oracle, "complete after647 equals pinned r32 oracle") + var after_pin := typed("after647", after) + check(after_pin["uncompressed_sha256"] == "9df3c1b6f65dfd8be944cd5cab8c631f7533530dfef3820d9fa5d74a5b1ac30f", "complete output digest identical") + var report := {"plan_id":"P23-02", "candidate":candidate, "sample":OS.get_environment("THE_TREE_PAIRED_SAMPLE"), "pid":OS.get_process_id(), "manual_tick_us":elapsed, "after647":after_pin, "cache_hits":runtime.path_service.cache_hits, "cache_misses":runtime.path_service.cache_misses, "checks":checks, "failures":failures, "passed":failures.is_empty(), "unit_accepted":false, "performance_budget_accepted":false, "normal_OS_accepted":false, "Windows_accepted":false, "candidate_adopted":false, "limits":["One sample from an adjacent baseline original GuestService versus r298 GuestService; same r274/library275 pair; fixed cold restored646. Only exploratory pair observation, no stable speedup, percentile or budget acceptance.", "No Main, rendering, OS input or realtime x3. Timed interval contains builtin production callbacks; snapshot verification and compression occur after timing."]} + var file := FileAccess.open(output.path_join("report.json"), FileAccess.WRITE) + if file == null: quit(98); return + file.store_string(JSON.stringify(report, "\t")); file.close() + print("SDK whole647: %d checks, %d failures" % [checks, failures.size()]) + quit(0 if failures.is_empty() else 1) diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-actual-independent-review-r299-r02.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-actual-independent-review-r299-r02.json new file mode 100644 index 0000000..827fb41 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-actual-independent-review-r299-r02.json @@ -0,0 +1,336 @@ +{ + "review_id": "p23-02-guest-need-normalization-local-actual-independent-review-r299-r02", + "finite_local_equivalence_accepted": true, + "finite_callback_fallback_equivalence_accepted": true, + "finite_scalar_state_equivalence_accepted": true, + "finite_exit_observation_accepted": true, + "blockers": [], + "evidence_sha256": { + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/scripts/guest/guest_service.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/scripts/guest/guest_service.gd", + "bytes": 61414, + "sha256": "56880410e9a00816f9a95d30821982955532de8dd976980934e12016a9f2b21e" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd", + "bytes": 63639, + "sha256": "5895d5da6488c767685b109ef01f9e2b57f41272d49cc9e3c415865769adc11d" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/original_guest_service.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/original_guest_service.gd", + "bytes": 61426, + "sha256": "88b993d4b71ea1b8684245f1fd925d4cda0f4f64f4a5572345e7d0566df29390" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/custom_definition.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/custom_definition.gd", + "bytes": 281, + "sha256": "d29c18196c89452a0ba6db8ec17d0ac2e75be2b6092533c734288230bc44f0c7" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/local.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/local.gd", + "bytes": 8749, + "sha256": "3259350158c36e5db0469bce10d75a5bba231e850303ab4a03938da1401886a1" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/guarded.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/guarded.gd", + "bytes": 529, + "sha256": "535a938786caa1c870f319a56ea7f0d2d53ccc197a9ef9345e8b19b9f34f9131" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/run_all_tests.py": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/run_all_tests.py", + "bytes": 26296, + "sha256": "320ca668732b4ff72fc4449998af2327d4e5c527b06896740806aaf0487282b4" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/regression/owned_outer.py": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/regression/owned_outer.py", + "bytes": 4177, + "sha256": "c2e3483b76db1a3ff940f23f88ea0083fc78736e874ebcdb385d766dde8866e7" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r295.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r295.json", + "bytes": 9244, + "sha256": "0954f512e6065c26ffc7d06c087fe973379a48c9cebef6752f19ec52d24f59d8" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r295/input.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r295/input.json", + "bytes": 4366, + "sha256": "f592b9895d9253be9e7f829cd88888fe166e77e00959570f7d4a7f0c3c169489" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd", + "bytes": 17582, + "sha256": "92d5e1956f4e613e12555d756de4f71fef03678cde159ac68fac3188ce3f336e" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd", + "bytes": 2276, + "sha256": "597696c705cc8f0e79a35265ca3ef8df55f7fc3c4e0e5a2ce9a4e20e29e29a6f" + }, + "/Applications/Godot.app/Contents/MacOS/Godot": { + "path": "/Applications/Godot.app/Contents/MacOS/Godot", + "bytes": 351312912, + "sha256": "c7cccbf8fb143e34e02fd6521e09be2c2b974f0d5db080b19071c9c570718ccf" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299.py": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02.py", + "bytes": 5550, + "sha256": "5830c5b5c3fd2d7a5220a9aab44591f411550ba12ad345a395af3811bad4a4f7" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "bytes": 11472, + "sha256": "3e2eaa147e365a74145224d8995bade5b44528d59b5508dc159458555081ed99" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "bytes": 17223, + "sha256": "940dd5f51b55942f07ef7ad091ec557af4d0d7bb07d48c08b6a98bde570f32b2" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json", + "bytes": 9067, + "sha256": "e6f83f624358270199fb6a0d3236db0e20da614443514cba04d66995a671de42" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-preexecution-independent-review-r299-r02.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-preexecution-independent-review-r299-r02.json", + "bytes": 12040, + "sha256": "091dc5eed560939aeb5597e579fd529a4e99ae1332a48547e160eef85d6ae7fe" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/custom_definition.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/custom_definition.gd", + "bytes": 281, + "sha256": "d29c18196c89452a0ba6db8ec17d0ac2e75be2b6092533c734288230bc44f0c7" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/input.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/input.json", + "bytes": 970408, + "sha256": "a6422ee7db963665bd8626d3bbfc8887c65f3a26292355082f46cc1b73c1c5f3" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/preexecution-root-verification.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/preexecution-root-verification.json", + "bytes": 6780, + "sha256": "ad2fd2ce14d43929376851edc73fb276bd8bb6d7148b79902b51339f90ad3050" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/original_guest_service.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/original_guest_service.gd", + "bytes": 61426, + "sha256": "88b993d4b71ea1b8684245f1fd925d4cda0f4f64f4a5572345e7d0566df29390" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/guarded.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/guarded.gd", + "bytes": 529, + "sha256": "535a938786caa1c870f319a56ea7f0d2d53ccc197a9ef9345e8b19b9f34f9131" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/local.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/local.gd", + "bytes": 8749, + "sha256": "3259350158c36e5db0469bce10d75a5bba231e850303ab4a03938da1401886a1" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/execution.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/execution.json", + "bytes": 11235, + "sha256": "506dfdeeef07e9b71bbbf17fdab1be4450c214aecedd66e55770bc9f426d1283" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/profile.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/profile.json", + "bytes": 907, + "sha256": "dcca4b223d5ac04c9c5a19e0a6d4275a53b714d8267f04a8a634e5aaed91bc01" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/phase.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/phase.json", + "bytes": 8152, + "sha256": "f36993b6899266072337bcb30c563221093f9fcf9437d6206bef6eaa33e8f116" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/measurement/evaluation-fixtures.varbytes.zst": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/measurement/evaluation-fixtures.varbytes.zst", + "bytes": 3897, + "sha256": "17c778dbc765c7cc09140e01ac793a461e4a67547513f772099c03e26eed0a23" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/measurement/report.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/measurement/report.json", + "bytes": 1448, + "sha256": "cb007d14600baf2845717e05b8626d45bcdc4533a5f75c5838a7544183c0b1b9" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/stderr.log": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/stderr.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/ended.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/ended.json", + "bytes": 1788, + "sha256": "d4ac6a9b40fc8eed154af1f339df55c19e0dc804db083e51f84d35c32500b91d" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/adapter-owned-cleanup.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/adapter-owned-cleanup.json", + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/engine-native.log": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/engine-native.log", + "bytes": 7741, + "sha256": "668bb38f55507e92b5d9e8ce19ce64f1c7f5ba0eb5bcd09a2e9dcfc491a2bedf" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/stdout.log": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/stdout.log", + "bytes": 7891, + "sha256": "1def5e7eb5aab39181b057c19ba8bf3f263e0517bd6619de82797338cb7084ce" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/started.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/started.json", + "bytes": 2416, + "sha256": "cada6bb18d69f0f5133523d650ffc5ccd6c4aef9df6958959cc9262cd71930cd" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/process.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/process.json", + "bytes": 6716, + "sha256": "e2570650e3812025f8decf5c319e107403229df61878d592263aeefbf7439ddc" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/outer-owned-finally.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/outer-owned-finally.json", + "bytes": 964, + "sha256": "d13f8ba4855f8b9d8efda5a8ae9651b8b1c6005842b16289bf2c826cef544cf1" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p28-ai-r03-typed-difference-independent-review-r01/finite_variant_codec.py": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p28-ai-r03-typed-difference-independent-review-r01/finite_variant_codec.py", + "bytes": 5438, + "sha256": "8c7077b53e28da4054bdf7dd88e82de02a51149269a8fce59bae0e74f95b4734" + } + }, + "canonical_doc4_context_pins": { + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md", + "bytes": 492299, + "sha256": "61776f0673770277ab6d182107337ed40a108ff3b5ab2c1a8f29fc4f2c3015ad" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md", + "bytes": 410363, + "sha256": "8b0488910dba35b34da96d7062b9a69d293e70a1963c9c5890ec32b2891baaea" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json", + "bytes": 1184337, + "sha256": "32d80e911910bc762287dc3ddf0ee0ea3072ca2f0158aa2f9f355b9202cfdfeb" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json", + "bytes": 539512, + "sha256": "b417ee1b945dfe4666f3a2f3501f906756826ea88d741bb116f3dd20250c8958" + } + }, + "observations": { + "engine_pid": 50494, + "owned_normal_exit": 0, + "checks": 1657, + "failures": 0, + "inputs": 235, + "custom_callbacks": 2, + "scalar_state_cases": 6, + "fixtures": 243, + "raw_bytes": 421672, + "raw_sha256": "b2795c3d7e30f6724c2e7e0c7b63a098890f55ea6a1658aab405f57f40babe9d", + "compressed_bytes": 3897, + "compressed_sha256": "17c778dbc765c7cc09140e01ac793a461e4a67547513f772099c03e26eed0a23", + "codec": { + "nodes": 28933, + "headers": { + "28": 688, + "27": 2156, + "4": 1338, + "21": 14088, + "65538": 288, + "2": 10352, + "1": 16, + "0": 1, + "3": 6 + }, + "file_envelope_bytes": 0, + "all_bytes_roundtrip": true + }, + "independent_expected_actual_all_typed_spans_equal": 243, + "scalar_states": [ + { + "field": "need", + "value_type": 3, + "value": 42.5 + }, + { + "field": "need", + "value_type": 4, + "value": "42" + }, + { + "field": "need", + "value_type": 1, + "value": false + }, + { + "field": "preference", + "value_type": 3, + "value": 42.5 + }, + { + "field": "preference", + "value_type": 4, + "value": "42" + }, + { + "field": "preference", + "value_type": 1, + "value": false + } + ], + "private_profile_conditions": 5, + "timings": [ + { + "calls": 2000, + "elapsed_us": 28978, + "mode": "original", + "shape": "single_need" + }, + { + "calls": 2000, + "elapsed_us": 28980, + "mode": "candidate", + "shape": "single_need" + }, + { + "calls": 2000, + "elapsed_us": 42569, + "mode": "original", + "shape": "six_needs" + }, + { + "calls": 2000, + "elapsed_us": 36709, + "mode": "candidate", + "shape": "six_needs" + } + ], + "stable_gain_supported": false, + "performance_accepted": false, + "candidate_adopted": false, + "whole647_accepted": false, + "unit_accepted": false + }, + "scope_limits": [ + "r298 exact GDScript local evaluate/rank scope only. All243 stored ordered typed result expected/actual bytes compared independently; snapshots/errors/input/readonly/fresh Dictionary/guard observations derive from successful fixed QA assertions, not independent extra snapshot records.", + "235 inputs include canonical224 and11 extras;6 state cases test needs/preference weights float42.5,String42,boolfalse;2 custom definition preference callbacks preserve eager default mutation paths.", + "Object constructor errors, nested Resource callback hooks, actual custom script replacement, arbitrary overrides/concurrency/general reentry remain untested. No whole/final172/OS/Windows/original17/adoption/completion acceptance.", + "Single_need index50 versus six_needs index164 each2000calls fixed original-first in one engine: single28978→28980 and six42569→36709us. No representative whole tick, pureCPU, stablegain/regression, P95/D10 or50ms inference.", + "Shared GuestService/project original restored; parent original1299/source/default/current294D4/SUPPORT authenticated fresh. Output16MiB is post-phase, not live peak.", + "Old r299 metadata rejection retained by accepted r02pre fixed evidence; old r296 finite result is historical r295 scope and not expanded r298 proof." + ], + "reviewer_execution": { + "engine": 0, + "compiler": 0, + "tests": 0, + "validator": 0, + "author": 0, + "new_agents": 0, + "existing_edits": 0, + "external_zstd_read_only": 1, + "finite_codec_read_only": 1 + } +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-preexecution-independent-review-r299-r02.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-preexecution-independent-review-r299-r02.json new file mode 100644 index 0000000..92c4815 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-preexecution-independent-review-r299-r02.json @@ -0,0 +1,154 @@ +{ + "review_id": "p23-02-guest-need-normalization-local-preexecution-independent-review-r299-r02", + "execution_allowed": true, + "blockers": [], + "evidence_sha256": { + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/scripts/guest/guest_service.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/scripts/guest/guest_service.gd", + "bytes": 61414, + "sha256": "56880410e9a00816f9a95d30821982955532de8dd976980934e12016a9f2b21e" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd", + "bytes": 63639, + "sha256": "5895d5da6488c767685b109ef01f9e2b57f41272d49cc9e3c415865769adc11d" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/original_guest_service.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/original_guest_service.gd", + "bytes": 61426, + "sha256": "88b993d4b71ea1b8684245f1fd925d4cda0f4f64f4a5572345e7d0566df29390" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/custom_definition.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/custom_definition.gd", + "bytes": 281, + "sha256": "d29c18196c89452a0ba6db8ec17d0ac2e75be2b6092533c734288230bc44f0c7" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/local.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/local.gd", + "bytes": 8749, + "sha256": "3259350158c36e5db0469bce10d75a5bba231e850303ab4a03938da1401886a1" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/guarded.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/guarded.gd", + "bytes": 529, + "sha256": "535a938786caa1c870f319a56ea7f0d2d53ccc197a9ef9345e8b19b9f34f9131" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/run_all_tests.py": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/run_all_tests.py", + "bytes": 26296, + "sha256": "320ca668732b4ff72fc4449998af2327d4e5c527b06896740806aaf0487282b4" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/regression/owned_outer.py": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/regression/owned_outer.py", + "bytes": 4177, + "sha256": "c2e3483b76db1a3ff940f23f88ea0083fc78736e874ebcdb385d766dde8866e7" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r295.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r295.json", + "bytes": 9244, + "sha256": "0954f512e6065c26ffc7d06c087fe973379a48c9cebef6752f19ec52d24f59d8" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r295/input.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r295/input.json", + "bytes": 4366, + "sha256": "f592b9895d9253be9e7f829cd88888fe166e77e00959570f7d4a7f0c3c169489" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd", + "bytes": 17582, + "sha256": "92d5e1956f4e613e12555d756de4f71fef03678cde159ac68fac3188ce3f336e" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd", + "bytes": 2276, + "sha256": "597696c705cc8f0e79a35265ca3ef8df55f7fc3c4e0e5a2ce9a4e20e29e29a6f" + }, + "/Applications/Godot.app/Contents/MacOS/Godot": { + "path": "/Applications/Godot.app/Contents/MacOS/Godot", + "bytes": 351312912, + "sha256": "c7cccbf8fb143e34e02fd6521e09be2c2b974f0d5db080b19071c9c570718ccf" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299.py": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02.py", + "bytes": 5550, + "sha256": "5830c5b5c3fd2d7a5220a9aab44591f411550ba12ad345a395af3811bad4a4f7" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "bytes": 11472, + "sha256": "3e2eaa147e365a74145224d8995bade5b44528d59b5508dc159458555081ed99" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "bytes": 17223, + "sha256": "940dd5f51b55942f07ef7ad091ec557af4d0d7bb07d48c08b6a98bde570f32b2" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json", + "bytes": 9067, + "sha256": "e6f83f624358270199fb6a0d3236db0e20da614443514cba04d66995a671de42" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/input.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/input.json", + "bytes": 970408, + "sha256": "a6422ee7db963665bd8626d3bbfc8887c65f3a26292355082f46cc1b73c1c5f3" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-preexecution-independent-review-r299.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-preexecution-independent-review-r299.json", + "bytes": 12734, + "sha256": "8ebca46556df998665e064e14bf83708b5923955e72edb0807a6209e99d96f0c" + } + }, + "canonical_doc4_context_pins": { + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md", + "bytes": 492299, + "sha256": "61776f0673770277ab6d182107337ed40a108ff3b5ab2c1a8f29fc4f2c3015ad" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md", + "bytes": 410363, + "sha256": "8b0488910dba35b34da96d7062b9a69d293e70a1963c9c5890ec32b2891baaea" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json", + "bytes": 1184337, + "sha256": "32d80e911910bc762287dc3ddf0ee0ea3072ca2f0158aa2f9f355b9202cfdfeb" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json", + "bytes": 539512, + "sha256": "b417ee1b945dfe4666f3a2f3501f906756826ea88d741bb116f3dd20250c8958" + } + }, + "allowed_scope": "Exactly one owned90s engine for r298 evaluate/rank finite local235+2callbacks+6scalar state,243typed rows,1657checks and four2000-call helper observations; no compiler/SDK/clone/whole/adoption/unit acceptance.", + "repair_review": { + "old_r299_refusal_retained": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-preexecution-independent-review-r299.json", + "bytes": 12734, + "sha256": "8ebca46556df998665e064e14bf83708b5923955e72edb0807a6209e99d96f0c" + }, + "metadata_count_corrected": "1653→1657 assertions", + "QA_driver_inverse_exact": true, + "baseline_class_name_retained": "GuestServiceOriginalR299", + "input_conditions_and_inventories_unchanged": true, + "case_checks_derivation": "1619+4*5+6*3=1657;235+2+6=243", + "fresh_capacity_bytes": 1101742080, + "runtime_capacity_and_no_foreign_gate_required": true, + "accepted_previous_static_scope_reused": true + }, + "limits": [ + "Invalid Object constructor behavior, nested Resource counterhooks, custom script replacement and general reentry are not in this proposal; expanded r298 static support does not accept those runtime boundaries.", + "Each of four2000call timings is fixed-order one-process helper observation only; no whole tick, stable gain, P95/D10,50ms,adoption,original17 or unit completion claim.", + "16MiB output restriction is post-phase, not live peak; final capacity gate remains mandatory." + ], + "reviewer_execution": { + "engine": 0, + "compiler": 0, + "tests": 0, + "validator": 0, + "author": 0, + "existing_edits": 0, + "new_agents": 0 + } +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-preexecution-independent-review-r299.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-preexecution-independent-review-r299.json new file mode 100644 index 0000000..b9d42e8 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-preexecution-independent-review-r299.json @@ -0,0 +1,190 @@ +{ + "review_id": "p23-02-guest-need-normalization-local-preexecution-independent-review-r299", + "execution_allowed": false, + "blockers": [ + { + "id": "B1", + "kind": "metadata_check_count_inconsistent", + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/input.json", + "field": "limits[0]", + "actual": "1653 assertions", + "required": "1657 assertions", + "reason": "Pinned plan expected_checks/count_derivation and independently derived QA total are 1657; limits wrongly labels scope as1653. Preserve original unexecuted revision and repair description in separate revision. No criteria relaxation needed." + } + ], + "evidence_sha256": { + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/scripts/guest/guest_service.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/scripts/guest/guest_service.gd", + "bytes": 61414, + "sha256": "56880410e9a00816f9a95d30821982955532de8dd976980934e12016a9f2b21e" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd", + "bytes": 63639, + "sha256": "5895d5da6488c767685b109ef01f9e2b57f41272d49cc9e3c415865769adc11d" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/original_guest_service.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/original_guest_service.gd", + "bytes": 61426, + "sha256": "88b993d4b71ea1b8684245f1fd925d4cda0f4f64f4a5572345e7d0566df29390" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/custom_definition.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/custom_definition.gd", + "bytes": 281, + "sha256": "d29c18196c89452a0ba6db8ec17d0ac2e75be2b6092533c734288230bc44f0c7" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/local.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/local.gd", + "bytes": 8741, + "sha256": "92745d21d6bae5926f12321b8c01699d3157f75be931f71b835a26b9f5dde834" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/guarded.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/guarded.gd", + "bytes": 525, + "sha256": "1b8d7ac4ce2036f6174eae49366f2f1239a6918b77344667255ff209a07b875e" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/run_all_tests.py": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/run_all_tests.py", + "bytes": 26296, + "sha256": "320ca668732b4ff72fc4449998af2327d4e5c527b06896740806aaf0487282b4" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/regression/owned_outer.py": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/regression/owned_outer.py", + "bytes": 4177, + "sha256": "c2e3483b76db1a3ff940f23f88ea0083fc78736e874ebcdb385d766dde8866e7" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r295.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r295.json", + "bytes": 9244, + "sha256": "0954f512e6065c26ffc7d06c087fe973379a48c9cebef6752f19ec52d24f59d8" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r295/input.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r295/input.json", + "bytes": 4366, + "sha256": "f592b9895d9253be9e7f829cd88888fe166e77e00959570f7d4a7f0c3c169489" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd", + "bytes": 17582, + "sha256": "92d5e1956f4e613e12555d756de4f71fef03678cde159ac68fac3188ce3f336e" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd", + "bytes": 2276, + "sha256": "597696c705cc8f0e79a35265ca3ef8df55f7fc3c4e0e5a2ce9a4e20e29e29a6f" + }, + "/Applications/Godot.app/Contents/MacOS/Godot": { + "path": "/Applications/Godot.app/Contents/MacOS/Godot", + "bytes": 351312912, + "sha256": "c7cccbf8fb143e34e02fd6521e09be2c2b974f0d5db080b19071c9c570718ccf" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299.py": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299.py", + "bytes": 5542, + "sha256": "e3e2e7878a704618b1f01f4783f00831c98844b61dc47a98288bc6cea897078e" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "bytes": 11472, + "sha256": "3e2eaa147e365a74145224d8995bade5b44528d59b5508dc159458555081ed99" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "bytes": 17223, + "sha256": "940dd5f51b55942f07ef7ad091ec557af4d0d7bb07d48c08b6a98bde570f32b2" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json", + "bytes": 9067, + "sha256": "e6f83f624358270199fb6a0d3236db0e20da614443514cba04d66995a671de42" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/input.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/input.json", + "bytes": 970229, + "sha256": "134dc5a9c3cb82f51a27424467ef48ba31c30482f257f0e37a91dfd6e51768f7" + } + }, + "canonical_doc4_context_pins": { + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md", + "bytes": 492299, + "sha256": "61776f0673770277ab6d182107337ed40a108ff3b5ab2c1a8f29fc4f2c3015ad" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md", + "bytes": 410363, + "sha256": "8b0488910dba35b34da96d7062b9a69d293e70a1963c9c5890ec32b2891baaea" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json", + "bytes": 1184337, + "sha256": "32d80e911910bc762287dc3ddf0ee0ea3072ca2f0158aa2f9f355b9202cfdfeb" + }, + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json", + "bytes": 539512, + "sha256": "b417ee1b945dfe4666f3a2f3501f906756826ea88d741bb116f3dd20250c8958" + } + }, + "supported_static_portions": { + "candidate_input_cases": 235, + "custom_callbacks": 2, + "scalar_state_cases": 6, + "typed_fixture_rows": 243, + "expected_checks": 1657, + "derivation": "1619 + 4 scalar inputs ×5 +6 scalar state cases ×3", + "helper_microbenchmarks": [ + [ + "single_need", + 50, + "original", + 2000 + ], + [ + "single_need", + 50, + "candidate", + 2000 + ], + [ + "six_needs", + 164, + "original", + 2000 + ], + [ + "six_needs", + 164, + "candidate", + 2000 + ] + ], + "script_guard_target": "r298 only", + "baseline_inverse_original": true, + "inventories_each": 1299, + "transient_file": "GuestService only plus private project", + "fresh_capacity_bytes": 1110573056, + "capacity_runtime_gate_required": true, + "other_concrete_blockers_found": false + }, + "verified_scope": [ + "New QA scalar state locals explicitly use Variant; no newly detected conditional typed literal or startup autoload inheritance issue. Same Resource-only custom definition as accepted296 retained.", + "Nested readonly restored after duplicate and original snapshot/result/input/freshdict comparisons retained; scalar states reset both services after each fixture.", + "Driver preserves accepted296 owned90s/private5/strict3logs/no foreign engine/admission/source/default/doc/SUPPORT/stage protection and only adds new report/timing payload validation.", + "No execution yet; all source/default/currentD4/SUPPORT/shared and immutable parent inventory authenticated." + ], + "remaining_limits": [ + "Invalid Object constructor behavior, nested Resource counterhooks, custom script replacement and general reentry are not in this proposal; expanded r298 static support does not accept those runtime boundaries.", + "Each of four2000call timings is fixed-order one-process helper observation only; no whole tick, stable gain, P95/D10,50ms,adoption,original17 or unit completion claim.", + "16MiB output restriction is post-phase, not live peak; final capacity gate remains mandatory." + ], + "reviewer_execution": { + "engine": 0, + "compiler": 0, + "tests": 0, + "validator": 0, + "author": 0, + "new_agents": 0, + "existing_edits": 0 + } +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02.py b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02.py new file mode 100644 index 0000000..b91bb70 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02.py @@ -0,0 +1,44 @@ +# coding: utf-8 +from pathlib import Path +import hashlib,importlib.util,json,os,shutil,sys,uuid +sys.dont_write_bytecode=True +R=Path(__file__).resolve().parents[2];A=R/'artifacts/original-completion-2026-10-02';D=R/'docs/plans/original-completion-2026-10-02';O=A/'p23-02-guest-need-normalization-local-r299-r02' +def mod(name,path): + s=importlib.util.spec_from_file_location(name,path);m=importlib.util.module_from_spec(s);s.loader.exec_module(m);return m +def main(): + r=mod('r299',R/'tools/run_all_tests.py');outer=mod('outer299',r.SUPPORT/'owned_outer.py');plan=r.read(O/'input.json');assert not (O/'execution.json').exists() + prepath=A/'p23-02-guest-need-normalization-local-preexecution-independent-review-r299-r02.json';pre=r.read(prepath);assert pre['execution_allowed'] and not pre['blockers'] + for group in ['evidence_sha256','canonical_doc4_context_pins']: + for key,q in pre[group].items(): + p=Path(q.get('path',key));assert p.stat().st_size==q['bytes'] and r.sha(p)==q['sha256'] + root=r.read(O/'preexecution-root-verification.json');assert root['passed'] and root['review_sha256']==r.sha(prepath) + stage=Path(plan['stage']);parent=Path(plan['parent']);guest=Path(plan['guest_source']);original=guest.read_bytes();modified=Path(plan['modified_guest']).read_bytes();public=(stage/'project.godot').read_bytes();patched=False + def protect(): + assert r.source_refs(R)==plan['source_before'] and r.default_player(R)==plan['default_before'];assert {n:r.sha(D/n) for n in plan['doc4_before']}==plan['doc4_before'];assert r.inventory(r.SUPPORT)==plan['support_inventory'] + assert r.inventory(parent,stage=True)==plan['expected_stage'];assert r.inventory(stage,stage=True)==(plan['patched_stage'] if patched else plan['expected_stage']) + for key,q in plan['pins'].items(): + p=Path(q['path']) + if p==guest:assert p.read_bytes()==(modified if patched else original) + else:assert p.stat().st_size==q['bytes'] and r.sha(p)==q['sha256'],key + protect();assert not outer.native.helper['live_engines']();assert shutil.disk_usage(A).free>=plan['capacity_floor_bytes']+plan['output_budget_bytes'] + error=None;phase=None;report=None;cleanup=[];cleanup_errors=[] + try: + guest.write_bytes(modified);patched=True;protect();output=O/'measurement';output.mkdir();ident=uuid.uuid4().hex;startup='TheTree-PCK-tests-'+ident+'-needs-startup';profile='TheTree-PCK-tests-'+ident+'-needs-runtime';assert not r.profile_path(startup).exists() and not r.profile_path(profile).exists() + env=r.fresh_environment(os.environ);env.update(THE_TREE_PACK_PROFILE_NAME=profile,THE_TREE_PACK_PROFILE_EXPECTED=str(r.profile_path(profile)),THE_TREE_PACK_PROFILE_REPORT=str(O/'profile.json'),THE_TREE_RUNTIME_MONITOR_OUTPUT=str(output)) + (stage/'project.godot').write_bytes(r.private_project(public,startup));argv=[plan['engine_path'],'--headless','--path',str(stage),'--script',str(O/'guarded.gd'),'--verbose','--log-file',str(O/'engine/engine-native.log')] + result,capture=outer.run_phase(argv,O/'engine',plan['timeout_seconds'],env,now_fn=r.now,dump_fn=r.write,sha_fn=r.sha,live_engines_fn=outer.native.helper['live_engines']);phase=dict(result=result,capture=capture);r.write(O/'phase.json',phase) + rp=output/'report.json';report=r.read(rp) if rp.exists() else None;assert result and result['exit_code']==0 and not result['error_lines'] and not result['timed_out'] and capture['passed'];assert report and report['passed'] and not report['failures'] and report['checks']==plan['expected_checks'] and report['cases']==plan['local_cases'] and report['callback_cases']==2 and report['scalar_state_cases']==plan['scalar_state_cases'] and report['fixture_rows']==plan['fixture_rows'] and report['pid']==result['pid'] + assert [(q['shape'],q['mode'],q['calls']) for q in report['timings']]==[(shape,mode,plan['microbenchmark_calls_each']) for shape in ['single_need','six_needs'] for mode in ['original','candidate']] + logs=''.join((O/'engine'/n).read_text() for n in ['stdout.log','stderr.log','engine-native.log']);assert 'Orphan StringName:' not in logs and 'unclaimed string names' not in logs;r.profile_gate(r.profile_path(profile),O/'profile.json',profile) + assert sum(p.stat().st_size for p in O.rglob('*') if p.is_file())<=plan['output_budget_bytes'];(stage/'project.godot').write_bytes(public);guest.write_bytes(original);patched=False;protect() + except BaseException as caught:error=type(caught).__name__+': '+str(caught) + finally: + cleanup,cleanup_errors=outer.finish_captured(outer.OWNED) + if all(q['engine_ended'] is True for q in cleanup):guest.write_bytes(original);patched=False;(stage/'project.godot').write_bytes(public) + else:cleanup_errors.append('Restoration refused while owned child remains live') + guard_errors=[] + try:assert guest.read_bytes()==original and not patched;protect() + except BaseException as caught:guard_errors.append(type(caught).__name__+': '+str(caught)) + passed=error is None and not guard_errors and not cleanup_errors and phase is not None and report is not None + r.write(O/'execution.json',dict(passed=passed,error=error,guard_errors=guard_errors,phase=phase,report=report,cleanup=cleanup,cleanup_errors=cleanup_errors,source_default_doc4_support_stage_preserved=not guard_errors,guest_project_restored_byteexact=not patched,compiler_runs=0,unit_accepted=False,performance_accepted=False,candidate_adopted=False));print(json.dumps(dict(passed=passed,error=error,guard_errors=guard_errors,timings=report.get('timings') if report else None)),flush=True);return 0 if passed else 1 +if __name__=='__main__':raise SystemExit(main()) diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/actual-root-verification.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/actual-root-verification.json new file mode 100644 index 0000000..0fa5ba9 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/actual-root-verification.json @@ -0,0 +1,218 @@ +{ + "passed": true, + "review_sha256": "892b47057267c6bd4b839985bcf490ea0bb36474e2cd4e5ad3a9644b6e4331d2", + "verified_entries": [ + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/scripts/guest/guest_service.gd", + "bytes": 61414, + "sha256": "56880410e9a00816f9a95d30821982955532de8dd976980934e12016a9f2b21e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd", + "bytes": 63639, + "sha256": "5895d5da6488c767685b109ef01f9e2b57f41272d49cc9e3c415865769adc11d" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/original_guest_service.gd", + "bytes": 61426, + "sha256": "88b993d4b71ea1b8684245f1fd925d4cda0f4f64f4a5572345e7d0566df29390" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/custom_definition.gd", + "bytes": 281, + "sha256": "d29c18196c89452a0ba6db8ec17d0ac2e75be2b6092533c734288230bc44f0c7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/local.gd", + "bytes": 8749, + "sha256": "3259350158c36e5db0469bce10d75a5bba231e850303ab4a03938da1401886a1" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/guarded.gd", + "bytes": 529, + "sha256": "535a938786caa1c870f319a56ea7f0d2d53ccc197a9ef9345e8b19b9f34f9131" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/run_all_tests.py", + "bytes": 26296, + "sha256": "320ca668732b4ff72fc4449998af2327d4e5c527b06896740806aaf0487282b4" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/regression/owned_outer.py", + "bytes": 4177, + "sha256": "c2e3483b76db1a3ff940f23f88ea0083fc78736e874ebcdb385d766dde8866e7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r295.json", + "bytes": 9244, + "sha256": "0954f512e6065c26ffc7d06c087fe973379a48c9cebef6752f19ec52d24f59d8" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r295/input.json", + "bytes": 4366, + "sha256": "f592b9895d9253be9e7f829cd88888fe166e77e00959570f7d4a7f0c3c169489" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd", + "bytes": 17582, + "sha256": "92d5e1956f4e613e12555d756de4f71fef03678cde159ac68fac3188ce3f336e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd", + "bytes": 2276, + "sha256": "597696c705cc8f0e79a35265ca3ef8df55f7fc3c4e0e5a2ce9a4e20e29e29a6f" + }, + { + "path": "/Applications/Godot.app/Contents/MacOS/Godot", + "bytes": 351312912, + "sha256": "c7cccbf8fb143e34e02fd6521e09be2c2b974f0d5db080b19071c9c570718ccf" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02.py", + "bytes": 5550, + "sha256": "5830c5b5c3fd2d7a5220a9aab44591f411550ba12ad345a395af3811bad4a4f7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "bytes": 11472, + "sha256": "3e2eaa147e365a74145224d8995bade5b44528d59b5508dc159458555081ed99" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "bytes": 17223, + "sha256": "940dd5f51b55942f07ef7ad091ec557af4d0d7bb07d48c08b6a98bde570f32b2" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json", + "bytes": 9067, + "sha256": "e6f83f624358270199fb6a0d3236db0e20da614443514cba04d66995a671de42" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-preexecution-independent-review-r299-r02.json", + "bytes": 12040, + "sha256": "091dc5eed560939aeb5597e579fd529a4e99ae1332a48547e160eef85d6ae7fe" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/custom_definition.gd", + "bytes": 281, + "sha256": "d29c18196c89452a0ba6db8ec17d0ac2e75be2b6092533c734288230bc44f0c7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/input.json", + "bytes": 970408, + "sha256": "a6422ee7db963665bd8626d3bbfc8887c65f3a26292355082f46cc1b73c1c5f3" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/preexecution-root-verification.json", + "bytes": 6780, + "sha256": "ad2fd2ce14d43929376851edc73fb276bd8bb6d7148b79902b51339f90ad3050" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/original_guest_service.gd", + "bytes": 61426, + "sha256": "88b993d4b71ea1b8684245f1fd925d4cda0f4f64f4a5572345e7d0566df29390" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/guarded.gd", + "bytes": 529, + "sha256": "535a938786caa1c870f319a56ea7f0d2d53ccc197a9ef9345e8b19b9f34f9131" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/local.gd", + "bytes": 8749, + "sha256": "3259350158c36e5db0469bce10d75a5bba231e850303ab4a03938da1401886a1" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/execution.json", + "bytes": 11235, + "sha256": "506dfdeeef07e9b71bbbf17fdab1be4450c214aecedd66e55770bc9f426d1283" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/profile.json", + "bytes": 907, + "sha256": "dcca4b223d5ac04c9c5a19e0a6d4275a53b714d8267f04a8a634e5aaed91bc01" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/phase.json", + "bytes": 8152, + "sha256": "f36993b6899266072337bcb30c563221093f9fcf9437d6206bef6eaa33e8f116" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/measurement/evaluation-fixtures.varbytes.zst", + "bytes": 3897, + "sha256": "17c778dbc765c7cc09140e01ac793a461e4a67547513f772099c03e26eed0a23" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/measurement/report.json", + "bytes": 1448, + "sha256": "cb007d14600baf2845717e05b8626d45bcdc4533a5f75c5838a7544183c0b1b9" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/stderr.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/ended.json", + "bytes": 1788, + "sha256": "d4ac6a9b40fc8eed154af1f339df55c19e0dc804db083e51f84d35c32500b91d" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/adapter-owned-cleanup.json", + "bytes": 351, + "sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/engine-native.log", + "bytes": 7741, + "sha256": "668bb38f55507e92b5d9e8ce19ce64f1c7f5ba0eb5bcd09a2e9dcfc491a2bedf" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/stdout.log", + "bytes": 7891, + "sha256": "1def5e7eb5aab39181b057c19ba8bf3f263e0517bd6619de82797338cb7084ce" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/started.json", + "bytes": 2416, + "sha256": "cada6bb18d69f0f5133523d650ffc5ccd6c4aef9df6958959cc9262cd71930cd" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/process.json", + "bytes": 6716, + "sha256": "e2570650e3812025f8decf5c319e107403229df61878d592263aeefbf7439ddc" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/outer-owned-finally.json", + "bytes": 964, + "sha256": "d13f8ba4855f8b9d8efda5a8ae9651b8b1c6005842b16289bf2c826cef544cf1" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p28-ai-r03-typed-difference-independent-review-r01/finite_variant_codec.py", + "bytes": 5438, + "sha256": "8c7077b53e28da4054bdf7dd88e82de02a51149269a8fce59bae0e74f95b4734" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md", + "bytes": 492299, + "sha256": "61776f0673770277ab6d182107337ed40a108ff3b5ab2c1a8f29fc4f2c3015ad" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md", + "bytes": 410363, + "sha256": "8b0488910dba35b34da96d7062b9a69d293e70a1963c9c5890ec32b2891baaea" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json", + "bytes": 1184337, + "sha256": "32d80e911910bc762287dc3ddf0ee0ea3072ca2f0158aa2f9f355b9202cfdfeb" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json", + "bytes": 539512, + "sha256": "b417ee1b945dfe4666f3a2f3501f906756826ea88d741bb116f3dd20250c8958" + } + ], + "unit_accepted": false, + "performance_accepted": false +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/custom_definition.gd b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/custom_definition.gd new file mode 100644 index 0000000..06ac6ff --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/custom_definition.gd @@ -0,0 +1,9 @@ +extends "res://scripts/guest/guest_definition.gd" +var watched_guest: Variant +var watched_candidate: Dictionary +var calls := 0 +func preference_for(_tags: Variant) -> int: + calls += 1 + watched_guest.needs[&"hunger"] = 99 + watched_candidate[&"need_relief"][&"hunger"] = 80 + return 13 diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/execution.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/execution.json new file mode 100644 index 0000000..33f501b --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/execution.json @@ -0,0 +1,278 @@ +{ + "passed": true, + "error": null, + "guard_errors": [], + "phase": { + "result": { + "argv": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/engine-native.log" + ], + "pid": 50494, + "started_utc": "2026-10-11T23:52:58.334167+00:00", + "ended_utc": "2026-10-11T23:52:59.896502+00:00", + "wall_seconds": 1.5617887910000001, + "exit_code": 0, + "helper_exit_code": 0, + "timed_out": false, + "stdout_sha256": "1def5e7eb5aab39181b057c19ba8bf3f263e0517bd6619de82797338cb7084ce", + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "error_lines": [], + "owned_popen_ended": true, + "old_helper_engine_ended": true, + "start_receipt_written": true, + "end_receipt_written": true, + "lifecycle_error": null, + "old_helper_lifecycle_error": null, + "actual_start_binding": { + "scope": "isolated diagnostic owned child", + "event": "ENGINE_STARTED", + "actual_pid": 50494, + "owner_pid": 50472, + "command": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/engine-native.log" + ], + "monotonic_ns": 2684569250, + "pid": 50494, + "argv": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/engine-native.log" + ], + "started_utc": "2026-10-11T23:52:58.334167+00:00", + "current_process_identity": { + "pid": 50494, + "ppid": 50472, + "pgid": 50494, + "args": "/Applications/Godot.app/Contents/MacOS/Godot --headless --path /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage --script /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/guarded.gd --verbose --log-file /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/engine-native.log" + }, + "live_identity_exact": true, + "tracked_child_ended_before_initial_probe": false, + "signal_scope": "tracked Popen child only; no external group signal" + }, + "actual_end_binding": { + "scope": "isolated diagnostic owned child", + "event": "ENGINE_ENDED", + "actual_pid": 50494, + "owner_pid": 50472, + "command": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/engine-native.log" + ], + "monotonic_ns": 4239951333, + "exit_code": 0, + "actual_process_exit_code": 0, + "engine_ended": true, + "timed_out": false, + "lifecycle_error": null, + "start_receipt_written": true, + "pid": 50494, + "argv": [ + "/Applications/Godot.app/Contents/MacOS/Godot", + "--headless", + "--path", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage", + "--script", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/guarded.gd", + "--verbose", + "--log-file", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/engine/engine-native.log" + ], + "ended_utc": "2026-10-11T23:52:59.894251+00:00", + "signal_scope": "tracked Popen child only; no external group signal" + }, + "strict_native_diagnostics": { + "errors": [], + "banner_count": 1, + "known_unicode_diagnostic_count": 0, + "unrecognized_unicode_diagnostic_count": 0, + "exit_leak_diagnostic_lines": [] + }, + "external_process_or_group_signals": 0, + "owned_child_process_helper_sha256": "c007e712c281573254faa1233c2ac92e100ab87393256a6dc096b35283e43037", + "adapter_owned_cleanup": { + "owned_child_created": true, + "engine_ended": true, + "actual_process_exit_code": 0, + "attempts": [ + { + "attempt": 1, + "kill_attempted": false, + "wait_timeout_seconds": 5, + "wait_completed": true, + "errors": [], + "poll_before": 0, + "wait_returned_code": 0, + "poll_after": 0 + } + ], + "errors": [] + }, + "adapter_error": null, + "old_helper_bytes_preserved": true, + "helper_wait_None_maps_to_actual_timeout_seconds": 5, + "explicit_helper_wait_timeouts_preserved": true, + "additional_cleanup_wait_timeout_seconds": 5, + "additional_cleanup_max_attempts": 3 + }, + "capture": { + "actual_captured_pids": [ + 50494 + ], + "cleanup": [ + { + "pid": 50494, + "cleanup": { + "owned_child_created": true, + "engine_ended": true, + "actual_process_exit_code": 0, + "attempts": [ + { + "attempt": 1, + "kill_attempted": false, + "wait_timeout_seconds": 5, + "wait_completed": true, + "errors": [], + "poll_before": 0, + "wait_returned_code": 0, + "poll_after": 0 + } + ], + "errors": [] + }, + "outer_cleanup_errors": [], + "engine_ended": true, + "outer_maximum_helper_invocations": 3, + "helper_maximum_waits": 3, + "per_wait_timeout_seconds": 5, + "foreign_process_or_group_signals": 0 + } + ], + "adapter_exception": null, + "all_captured_ended": true, + "outer_cleanup_errors": [], + "foreign_process_or_group_signals": 0, + "all_cleanup_before_outer_receipt": true, + "outer_receipt_written": true, + "outer_receipt_error": null, + "passed": true + } + }, + "report": { + "callback_cases": 2, + "candidate_adopted": false, + "cases": 235, + "checks": 1657, + "failures": [], + "fixture_rows": 243, + "fixtures": { + "bytes": 3897, + "codec": "zstd", + "field_deletions": 0, + "file_envelope": false, + "full_bytes_roundtrip": true, + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/measurement/evaluation-fixtures.varbytes.zst", + "sha256": "17c778dbc765c7cc09140e01ac793a461e4a67547513f772099c03e26eed0a23", + "uncompressed_bytes": 421672, + "uncompressed_sha256": "b2795c3d7e30f6724c2e7e0c7b63a098890f55ea6a1658aab405f57f40babe9d" + }, + "limits": [ + "One process finite builtin and custom-preference observations only. Adjacent single/six-Need helper microbenchmarks is not representative whole-tick, stable gain, P95/D10/50ms, full regression, OS or Windows acceptance." + ], + "passed": true, + "performance_accepted": false, + "pid": 50494, + "scalar_state_cases": 6, + "timings": [ + { + "calls": 2000, + "elapsed_us": 28978, + "mode": "original", + "shape": "single_need" + }, + { + "calls": 2000, + "elapsed_us": 28980, + "mode": "candidate", + "shape": "single_need" + }, + { + "calls": 2000, + "elapsed_us": 42569, + "mode": "original", + "shape": "six_needs" + }, + { + "calls": 2000, + "elapsed_us": 36709, + "mode": "candidate", + "shape": "six_needs" + } + ], + "unit_accepted": false + }, + "cleanup": [ + { + "pid": 50494, + "cleanup": { + "owned_child_created": true, + "engine_ended": true, + "actual_process_exit_code": 0, + "attempts": [ + { + "attempt": 1, + "kill_attempted": false, + "wait_timeout_seconds": 5, + "wait_completed": true, + "errors": [], + "poll_before": 0, + "wait_returned_code": 0, + "poll_after": 0 + } + ], + "errors": [] + }, + "outer_cleanup_errors": [], + "engine_ended": true, + "outer_maximum_helper_invocations": 3, + "helper_maximum_waits": 3, + "per_wait_timeout_seconds": 5, + "foreign_process_or_group_signals": 0 + } + ], + "cleanup_errors": [], + "source_default_doc4_support_stage_preserved": true, + "guest_project_restored_byteexact": true, + "compiler_runs": 0, + "unit_accepted": false, + "performance_accepted": false, + "candidate_adopted": false +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/guarded.gd b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/guarded.gd new file mode 100644 index 0000000..bda5868 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/guarded.gd @@ -0,0 +1,5 @@ +extends "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/local.gd" +const Guard := preload("/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd") +func _initialize() -> void: + if not Guard.activate(): quit(97); return + super._initialize() diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/input.json.gz b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/input.json.gz new file mode 100644 index 0000000..fcab784 Binary files /dev/null and b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/input.json.gz differ diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/local.gd b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/local.gd new file mode 100644 index 0000000..fde32bd --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/local.gd @@ -0,0 +1,109 @@ +extends "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd" +const Original = preload("/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/original_guest_service.gd") +const Candidate = preload("res://scripts/guest/guest_service.gd") +const CustomDefinition = preload("/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/custom_definition.gd") +func setup(service: Variant) -> Variant: + var definition: Variant = service.create_definition(&"test", {&"preference_weights": {&"dining": 3}, &"risk_tolerance": 40}) + check(definition != null, "definition registered") + var guest: Variant = service.spawn_guest(&"g", &"test", 0, {&"wallet_gold": 120, &"credit_limit_gold": 40}) + check(guest != null, "guest registered") + return guest +func run() -> void: + output = OS.get_environment("THE_TREE_RUNTIME_MONITOR_OUTPUT") + if not output.is_absolute_path(): quit(98); return + var original: Variant = Original.new() + var candidate: Variant = Candidate.new() + var og: Variant = setup(original) + var cg: Variant = setup(candidate) + var fixtures: Array = [] + var needs: Array[StringName] = [&"hunger", &"sleep", &"hygiene", &"medical", &"leisure", &"intimacy"] + var inputs: Array[Dictionary] = [] + for magnitude: int in [-9223372036854775807 - 1, -1, 0, 1, 99, 100, 101, 9223372036854775807]: + for selected: int in range(7): + for string_keys: bool in [false, true]: + for readonly: bool in [false, true]: + var relief: Dictionary = {} + for ni: int in range(6): + if selected == 6 or ni == selected: relief[String(needs[ni]) if string_keys else needs[ni]] = magnitude + if readonly: relief.make_read_only() + inputs.append({&"facility_id": &"f", &"facility_tags": [&"dining"], &"need_relief": relief, &"expected_quality": 80, &"estimated_total_gold": 15, &"travel_minutes": 2, &"expected_wait": 3}) + for extra: Dictionary in [{&"preference": true}, {&"expected_quality": "42"}, {&"risk_level": "3"}, {&"price_burden": false}, {&"need_relief": 45}, {&"need_relief": null}, {&"need_relief": {&"unknown": 1}}, {&"need_effects": {&"hunger": 2.5}}, {&"expected_quality": 12.5}, {&"preference": 7, &"urgency": 9}, {&"instance_id": "fallback", &"facility_id": "", &"tags": ["dining"]}]: + var row: Dictionary = {&"facility_id": &"f", &"need_relief": {&"hunger": 80}} + row.merge(extra, true); inputs.append(row) + for index: int in range(inputs.size()): + var left: Dictionary = inputs[index].duplicate(true) + var right: Dictionary = inputs[index].duplicate(true) + if index < 224: + if index % 2 == 1: + left[&"need_relief"].make_read_only(); right[&"need_relief"].make_read_only() + check(left[&"need_relief"].is_read_only() == (index % 2 == 1) and right[&"need_relief"].is_read_only() == (index % 2 == 1), "actual nested readonly shape " + str(index)) + if index % 8 == 7: + left.make_read_only(); right.make_read_only() + var lb: PackedByteArray = var_to_bytes(left) + var rb: PackedByteArray = var_to_bytes(right) + var expected: Dictionary = original.evaluate_candidate(&"g", left) + var actual: Dictionary = candidate.evaluate_candidate(&"g", right) + check(var_to_bytes(expected) == var_to_bytes(actual), "full ordered evaluate " + str(index)) + check(original.last_error == candidate.last_error, "error observation " + str(index)) + check(var_to_bytes(left) == lb and var_to_bytes(right) == rb, "input unchanged " + str(index)) + check(var_to_bytes(original.create_snapshot()) == var_to_bytes(candidate.create_snapshot()), "full service state " + str(index)) + if index < 224: check(candidate._can_share_candidate_need_map(cg, candidate.get_definition(&"test"), right), "exact builtin shared guard " + str(index)) + check(not is_same(actual, right) and not is_same(actual, expected), "fresh returned dictionary " + str(index)) + fixtures.append({"input": right, "expected": expected, "actual": actual}) + var ranking: Array = inputs.slice(0, 20) + check(var_to_bytes(original.rank_candidates(&"g", ranking)) == var_to_bytes(candidate.rank_candidates(&"g", ranking)), "full ranked ties/order") + for explicit: bool in [false, true]: + var osvc: Variant = Original.new(); var csvc: Variant = Candidate.new() + var od: Variant = CustomDefinition.new().configure(&"callback", {}) + var cd: Variant = CustomDefinition.new().configure(&"callback", {}) + check(osvc.register_definition(od) and csvc.register_definition(cd), "custom definitions registered") + var oguest: Variant = osvc.spawn_guest(&"g", &"callback", 0) + var cguest: Variant = csvc.spawn_guest(&"g", &"callback", 0) + var left: Dictionary = {&"facility_id": &"f", &"need_relief": {&"hunger": 10}} + if explicit: left[&"preference"] = 7 + var right: Dictionary = left.duplicate(true) + od.watched_guest = oguest; od.watched_candidate = left + cd.watched_guest = cguest; cd.watched_candidate = right + check(not csvc._can_share_candidate_need_map(cguest, cd, right), "custom preference fallback") + var expected: Dictionary = osvc.evaluate_candidate(&"g", left) + var actual: Dictionary = csvc.evaluate_candidate(&"g", right) + check(var_to_bytes(expected) == var_to_bytes(actual), "callback full ordered result") + check(od.calls == 1 and cd.calls == 1, "original eager default callback position") + check(var_to_bytes(left) == var_to_bytes(right) and var_to_bytes(osvc.create_snapshot()) == var_to_bytes(csvc.create_snapshot()), "callback input/full state equality") + fixtures.append({"callback_explicit": explicit, "expected": expected, "actual": actual}) + for field: String in ["need", "preference"]: + for value: Variant in [42.5, "42", false]: + var saved: Variant = og.needs[&"hunger"] if field == "need" else original.get_definition(&"test").preference_weights[&"dining"] + if field == "need": + og.needs[&"hunger"] = value; cg.needs[&"hunger"] = value + else: + original.get_definition(&"test").preference_weights[&"dining"] = value + candidate.get_definition(&"test").preference_weights[&"dining"] = value + var row: Dictionary = {&"facility_id": &"f", &"facility_tags": [&"dining"], &"need_relief": {&"hunger": 80}} + var expected: Dictionary = original.evaluate_candidate(&"g", row) + var actual: Dictionary = candidate.evaluate_candidate(&"g", row) + check(var_to_bytes(expected) == var_to_bytes(actual), "expanded guard scalar result") + check(candidate._can_share_candidate_need_map(cg, candidate.get_definition(&"test"), row), "expanded guard scalar selected") + check(var_to_bytes(original.create_snapshot()) == var_to_bytes(candidate.create_snapshot()), "expanded guard scalar full state") + fixtures.append({"scalar_field": field, "value": value, "expected": expected, "actual": actual}) + if field == "need": + og.needs[&"hunger"] = saved; cg.needs[&"hunger"] = saved + else: + original.get_definition(&"test").preference_weights[&"dining"] = saved + candidate.get_definition(&"test").preference_weights[&"dining"] = saved + var times: Array[Dictionary] = [] + for shape: String in ["single_need", "six_needs"]: + var scalar: Dictionary = inputs[50 if shape == "single_need" else 164].duplicate(true) + for mode: String in ["original", "candidate"]: + var service: Variant = original if mode == "original" else candidate + var start: int = Time.get_ticks_usec() + for index: int in range(2000): service.evaluate_candidate(&"g", scalar) + times.append({"shape": shape, "mode": mode, "calls": 2000, "elapsed_us": Time.get_ticks_usec() - start}) + + var bytes_pin: Dictionary = typed("evaluation-fixtures", fixtures) + var report: Dictionary = {"checks": checks, "failures": failures, "passed": failures.is_empty(), "pid": OS.get_process_id(), "cases": inputs.size(), "callback_cases": 2, "scalar_state_cases": 6, "fixture_rows": fixtures.size(), "fixtures": bytes_pin, "timings": times, "unit_accepted": false, "performance_accepted": false, "candidate_adopted": false, "limits": ["One process finite builtin and custom-preference observations only. Adjacent single/six-Need helper microbenchmarks is not representative whole-tick, stable gain, P95/D10/50ms, full regression, OS or Windows acceptance."]} + var file: FileAccess = FileAccess.open(output.path_join("report.json"), FileAccess.WRITE) + if file == null: quit(98); return + file.store_string(JSON.stringify(report, "\t")); file.close() + print("Guest Need normalization local: %d checks, %d failures" % [checks, failures.size()]) + quit(0 if failures.is_empty() else 1) diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/measurement/evaluation-fixtures.varbytes.zst b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/measurement/evaluation-fixtures.varbytes.zst new file mode 100644 index 0000000..e1295ea Binary files /dev/null and b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/measurement/evaluation-fixtures.varbytes.zst differ diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/measurement/report.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/measurement/report.json new file mode 100644 index 0000000..7541af7 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/measurement/report.json @@ -0,0 +1,53 @@ +{ + "callback_cases": 2, + "candidate_adopted": false, + "cases": 235, + "checks": 1657, + "failures": [], + "fixture_rows": 243, + "fixtures": { + "bytes": 3897, + "codec": "zstd", + "field_deletions": 0, + "file_envelope": false, + "full_bytes_roundtrip": true, + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/measurement/evaluation-fixtures.varbytes.zst", + "sha256": "17c778dbc765c7cc09140e01ac793a461e4a67547513f772099c03e26eed0a23", + "uncompressed_bytes": 421672, + "uncompressed_sha256": "b2795c3d7e30f6724c2e7e0c7b63a098890f55ea6a1658aab405f57f40babe9d" + }, + "limits": [ + "One process finite builtin and custom-preference observations only. Adjacent single/six-Need helper microbenchmarks is not representative whole-tick, stable gain, P95/D10/50ms, full regression, OS or Windows acceptance." + ], + "passed": true, + "performance_accepted": false, + "pid": 50494, + "scalar_state_cases": 6, + "timings": [ + { + "calls": 2000, + "elapsed_us": 28978, + "mode": "original", + "shape": "single_need" + }, + { + "calls": 2000, + "elapsed_us": 28980, + "mode": "candidate", + "shape": "single_need" + }, + { + "calls": 2000, + "elapsed_us": 42569, + "mode": "original", + "shape": "six_needs" + }, + { + "calls": 2000, + "elapsed_us": 36709, + "mode": "candidate", + "shape": "six_needs" + } + ], + "unit_accepted": false +} \ No newline at end of file diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/original_guest_service.gd b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/original_guest_service.gd new file mode 100644 index 0000000..dd17ad0 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/original_guest_service.gd @@ -0,0 +1,1688 @@ +class_name GuestServiceOriginalR299 +extends RefCounted + +## Deterministic guest needs, decisions and lifecycle authority. +## +## Facility, path and economy integrations intentionally cross Dictionary and +## Callable boundaries. GuestService therefore remains independently testable +## and cannot accidentally mutate another service's private state. + +signal guest_spawned(guest: GuestRuntime) +signal guest_state_changed(guest_id: StringName, old_state: int, new_state: int, reason: StringName) +signal guest_queue_abandoned(guest_id: StringName, facility_id: StringName, request_id: StringName) +signal guest_recovery_started(guest_id: StringName, recovery_kind: StringName, target_cell: Vector3i) +signal guest_despawned(guest_id: StringName, persistent_record: Dictionary) + +const GuestDefinitionType = preload("res://scripts/guest/guest_definition.gd") +const GuestRuntimeType = preload("res://scripts/guest/guest_runtime.gd") + +const SNAPSHOT_VERSION := 2 +const MAX_TRANSITIONS_PER_TICK := 4 +const PATH_FAILURE_LIMIT := 3 +const STUCK_REPLAN_MINUTES := 60 +const DEFAULT_WAIT_HARD_LIMIT := 120 +const DEFAULT_EXIT_THRESHOLD := 15 +const PRIMARY_NEEDS: Array[StringName] = [&"hunger", &"sleep", &"leisure", &"intimacy"] + +const NEED_IDS: Array[StringName] = [ + &"hunger", + &"sleep", + &"hygiene", + &"medical", + &"leisure", + &"intimacy", +] +const LEGACY_NEED_IDS: Array[StringName] = [ + &"hunger", + &"rest", + &"fun", + &"social", + &"safety", +] + +var current_minute := -1 +var last_error := "" + +var _definitions: Dictionary = {} +var _guests: Dictionary = {} +var _persistent_records: Dictionary = {} +var _decision_rejections: Dictionary = {} +var _diagnostics: Array[Dictionary] = [] +var _sorted_guest_ids_cache: Array[StringName] = [] +var _guest_order_dirty := true +var _pending_spawn_notifications: Dictionary = {} +var _external_mutation_blocked := false + + +func register_definition(definition: Variant) -> bool: + if definition == null or not definition is GuestDefinition: + return _fail("Guest definition has an invalid type.") + var typed_definition: GuestDefinition = definition + if not typed_definition.is_valid(): + return _fail("Guest definition is invalid.") + if _definitions.has(typed_definition.guest_type_id): + return _fail("Duplicate guest definition: %s" % typed_definition.guest_type_id) + _definitions[typed_definition.guest_type_id] = typed_definition + last_error = "" + return true + + +func create_definition(guest_type_id: StringName, options: Dictionary = {}) -> GuestDefinition: + var definition := GuestDefinitionType.new().configure(guest_type_id, options) + return definition if register_definition(definition) else null + + +func get_definition(guest_type_id: StringName) -> GuestDefinition: + return _definitions.get(guest_type_id) as GuestDefinition + + +func get_definitions() -> Array[GuestDefinition]: + var result: Array[GuestDefinition] = [] + for guest_type_id: StringName in _sorted_ids(_definitions.keys()): + result.append(_definitions[guest_type_id]) + return result + + +func register_guest(guest: Variant, emit_notification := true) -> bool: + if _external_mutation_blocked: + return _fail("Guest mutation is blocked while committed notifications are delivered.") + if guest == null or not guest is GuestRuntime: + return _fail("Guest runtime has an invalid type.") + var runtime: GuestRuntime = guest + if not runtime.is_valid(): + return _fail("Guest runtime is invalid.") + if not _definitions.has(runtime.guest_type_id): + return _fail("Guest runtime references an unknown definition.") + if _guests.has(runtime.guest_id) or _persistent_records.has(runtime.guest_id): + return _fail("Duplicate guest id: %s" % runtime.guest_id) + _guests[runtime.guest_id] = runtime + _guest_order_dirty = true + if emit_notification: + guest_spawned.emit(runtime) + else: + _pending_spawn_notifications[runtime.guest_id] = true + last_error = "" + return true + + +func spawn_guest( + guest_id: StringName, + guest_type_id: StringName, + absolute_minute: int, + options: Dictionary = {}, + emit_notification := true +) -> GuestRuntime: + var definition := get_definition(guest_type_id) + if definition == null or absolute_minute < 0: + _fail("A known definition and non-negative spawn minute are required.") + return null + var runtime_options := options.duplicate(true) + if not _has_value(runtime_options, &"wallet_gold"): + runtime_options[&"wallet_gold"] = definition.wealth_min + if not _has_value(runtime_options, &"credit_limit_gold"): + runtime_options[&"credit_limit_gold"] = definition.credit_limit_gold + if not _has_value(runtime_options, &"patience_remaining"): + runtime_options[&"patience_remaining"] = definition.base_patience + if not _has_value(runtime_options, &"state"): + runtime_options[&"state"] = GuestRuntimeType.State.SPAWNING + if not _has_value(runtime_options, &"state_entered_at"): + runtime_options[&"state_entered_at"] = absolute_minute + if not _has_value(runtime_options, &"planned_exit_at"): + runtime_options[&"planned_exit_at"] = absolute_minute + 720 + var runtime := GuestRuntimeType.new().configure(guest_id, guest_type_id, runtime_options) + if not register_guest(runtime, emit_notification): + return null + return runtime + + +func commit_guest_spawned_notification(guest_id: StringName) -> bool: + if not _pending_spawn_notifications.has(guest_id) or not _guests.has(guest_id): + return _fail("Guest has no pending spawn notification: %s" % guest_id) + _pending_spawn_notifications.erase(guest_id) + guest_spawned.emit(_guests[guest_id] as GuestRuntime) + last_error = "" + return true + + +func discard_guest_spawned_notification(guest_id: StringName) -> bool: + if not _pending_spawn_notifications.has(guest_id): + return false + _pending_spawn_notifications.erase(guest_id) + return true + + +func has_pending_guest_spawned_notification(guest_id: StringName) -> bool: + return _pending_spawn_notifications.has(guest_id) + + +func set_external_mutation_blocked(blocked: bool) -> void: + _external_mutation_blocked = blocked + + +func has_guest(guest_id: StringName) -> bool: + return _guests.has(guest_id) + + +func get_guest(guest_id: StringName) -> GuestRuntime: + return _guests.get(guest_id) as GuestRuntime + + +func get_guests() -> Array[GuestRuntime]: + var result: Array[GuestRuntime] = [] + for guest_id: StringName in _ordered_guest_ids(): + result.append(_guests[guest_id]) + return result + + +func guest_count() -> int: + return _guests.size() + + +func get_persistent_record(guest_id: StringName) -> Dictionary: + if not _persistent_records.has(guest_id): + return {} + return (_persistent_records[guest_id] as Dictionary).duplicate(true) + + +func get_diagnostics() -> Array[Dictionary]: + return _diagnostics.duplicate(true) + + +func advance_one_minute( + absolute_minute: int, + context_by_guest: Dictionary = {} +) -> Dictionary: + if absolute_minute < 0 or absolute_minute <= current_minute: + return _error_result("Guest minute must advance monotonically.") + var ordered_guest_ids := _ordered_guest_ids() + # The common no-context tick has no external values to validate or isolate. + # Avoid allocating one duplicated context plus a resolved-context entry per + # Guest while retaining the same deterministic order and report contract. + if context_by_guest.is_empty(): + return _advance_with_shared_need_context( + absolute_minute, + ordered_guest_ids, + {} + ) + var resolved_contexts: Dictionary = {} + var default_context: Dictionary = {} + var raw_default: Variant = _value(context_by_guest, &"default", {}) + if raw_default is Dictionary: + default_context = raw_default + # Production supplies one common default context. Validate it once, then + # share the same read-only Dictionary across the population. Any per-Guest + # override keeps using the all-context preflight below, preserving atomic + # rejection and the malformed-override contract. + if context_by_guest.size() == 1 and _has_value(context_by_guest, &"default"): + # Historically an unused default was not validated when the population + # was empty. Preserve that edge case and the first-Guest error wording. + if not ordered_guest_ids.is_empty(): + var default_error := _need_context_error(default_context) + if not default_error.is_empty(): + return _error_result( + "Invalid Need context for %s: %s" % [ + ordered_guest_ids[0], + default_error, + ] + ) + return _advance_with_shared_need_context( + absolute_minute, + ordered_guest_ids, + default_context + ) + for guest_id: StringName in ordered_guest_ids: + var context := default_context + var raw_context: Variant = null + var has_guest_context := false + if context_by_guest.has(guest_id): + has_guest_context = true + raw_context = context_by_guest[guest_id] + else: + var string_guest_id := String(guest_id) + if context_by_guest.has(string_guest_id): + has_guest_context = true + raw_context = context_by_guest[string_guest_id] + if raw_context is Dictionary: + context = raw_context + elif has_guest_context: + # Preserve the original contract: a malformed per-guest override + # suppresses the default context rather than inheriting it. + context = {} + var context_error := _need_context_error(context) + if not context_error.is_empty(): + return _error_result("Invalid Need context for %s: %s" % [guest_id, context_error]) + resolved_contexts[guest_id] = context.duplicate(true) + + ## All contexts are preflighted before mutating any guest, so a malformed + ## batched update cannot partially advance the population or the minute. + var reports: Array[Dictionary] = [] + for guest_id: StringName in ordered_guest_ids: + var context: Dictionary = resolved_contexts[guest_id] + var guest: GuestRuntime = _guests[guest_id] + var definition: GuestDefinition = _definitions.get(guest.guest_type_id) as GuestDefinition + if definition == null: + reports.append(_error_result("Guest definition is missing.")) + else: + reports.append(_update_needs_runtime(guest, definition, context)) + current_minute = absolute_minute + last_error = "" + return { + &"ok": true, + &"minute": absolute_minute, + &"guest_reports": reports, + } + + +func _advance_with_shared_need_context( + absolute_minute: int, + ordered_guest_ids: Array[StringName], + context: Dictionary +) -> Dictionary: + var reports: Array[Dictionary] = [] + for guest_id: StringName in ordered_guest_ids: + var guest: GuestRuntime = _guests[guest_id] + var definition: GuestDefinition = _definitions.get( + guest.guest_type_id + ) as GuestDefinition + if definition == null: + reports.append(_error_result("Guest definition is missing.")) + else: + reports.append(_update_needs_runtime(guest, definition, context)) + current_minute = absolute_minute + last_error = "" + return { + &"ok": true, + &"minute": absolute_minute, + &"guest_reports": reports, + } + + +func update_needs(guest_id: StringName, context: Dictionary = {}) -> Dictionary: + var guest := get_guest(guest_id) + if guest == null: + return _error_result("Unknown guest: %s" % guest_id) + var definition := get_definition(guest.guest_type_id) + if definition == null: + return _error_result("Guest definition is missing.") + var context_error := _need_context_error(context) + if not context_error.is_empty(): + return _error_result("Invalid Need context: %s" % context_error) + last_error = "" + return _update_needs_runtime(guest, definition, context) + + +func _update_needs_runtime( + guest: GuestRuntime, + definition: GuestDefinition, + context: Dictionary +) -> Dictionary: + var before_hunger := int(guest.needs[&"hunger"]) + var before_sleep := int(guest.needs[&"sleep"]) + var before_hygiene := int(guest.needs[&"hygiene"]) + var before_medical := int(guest.needs[&"medical"]) + var before_leisure := int(guest.needs[&"leisure"]) + var before_intimacy := int(guest.needs[&"intimacy"]) + var delta_hunger := int(definition.need_rates[&"hunger"]) + var delta_sleep := int(definition.need_rates[&"sleep"]) + var delta_hygiene := int(definition.need_rates[&"hygiene"]) + var delta_medical := int(definition.need_rates[&"medical"]) + var delta_leisure := int(definition.need_rates[&"leisure"]) + var delta_intimacy := int(definition.need_rates[&"intimacy"]) + + ## State effects are accumulated first; every Need is clamped exactly once. + if guest.state == GuestRuntimeType.State.MOVING \ + or guest.state == GuestRuntimeType.State.REPLANNING: + delta_hunger += 2 + delta_sleep += 2 + elif guest.state == GuestRuntimeType.State.QUEUING: + delta_hunger += 1 + + if context.is_empty(): + if guest.state != GuestRuntimeType.State.RECEIVING_SERVICE: + delta_leisure += 1 + else: + if bool(_value(context, &"work_like_activity", false)): + delta_sleep += 1 + if bool(_value( + context, + &"unstimulated", + guest.state != GuestRuntimeType.State.RECEIVING_SERVICE + )): + delta_leisure += 1 + delta_hygiene += int(_value(context, &"dirt", 0)) + delta_medical += int(_value(context, &"injury", 0)) + delta_medical += int(_value(context, &"illness", 0)) + if definition.adult_verified: + var intimacy_key := &"intimacy_night" \ + if bool(_value(context, &"is_night", false)) \ + else &"intimacy_day" + delta_intimacy += int(_value(context, intimacy_key, 0)) + var raw_effects: Variant = _value(context, &"need_effects", {}) + var normalized_effects: Dictionary = _normalized_partial_need_map(raw_effects) + delta_hunger += int(normalized_effects.get(&"hunger", 0)) + delta_sleep += int(normalized_effects.get(&"sleep", 0)) + delta_hygiene += int(normalized_effects.get(&"hygiene", 0)) + delta_medical += int(normalized_effects.get(&"medical", 0)) + delta_leisure += int(normalized_effects.get(&"leisure", 0)) + delta_intimacy += int(normalized_effects.get(&"intimacy", 0)) + + var after_hunger := clampi(before_hunger + delta_hunger, 0, 100) + var after_sleep := clampi(before_sleep + delta_sleep, 0, 100) + var after_hygiene := clampi(before_hygiene + delta_hygiene, 0, 100) + var after_medical := clampi(before_medical + delta_medical, 0, 100) + var after_leisure := clampi(before_leisure + delta_leisure, 0, 100) + var after_intimacy := clampi(before_intimacy + delta_intimacy, 0, 100) + guest.needs[&"hunger"] = after_hunger + guest.needs[&"sleep"] = after_sleep + guest.needs[&"hygiene"] = after_hygiene + guest.needs[&"medical"] = after_medical + guest.needs[&"leisure"] = after_leisure + guest.needs[&"intimacy"] = after_intimacy + return { + &"ok": true, + &"guest_id": String(guest.guest_id), + &"before": { + "hunger": before_hunger, + "hygiene": before_hygiene, + "intimacy": before_intimacy, + "leisure": before_leisure, + "medical": before_medical, + "sleep": before_sleep, + }, + &"deltas": { + "hunger": delta_hunger, + "hygiene": delta_hygiene, + "intimacy": delta_intimacy, + "leisure": delta_leisure, + "medical": delta_medical, + "sleep": delta_sleep, + }, + &"after": { + "hunger": after_hunger, + "hygiene": after_hygiene, + "intimacy": after_intimacy, + "leisure": after_leisure, + "medical": after_medical, + "sleep": after_sleep, + }, + } + + +## Returns canonical candidate copies in facility_id order. Supported canonical +## fields are documented by the filtering helpers below; aliases allow existing +## FacilityService projections to be adapted without a hard dependency. +func extract_candidates( + guest_id: StringName, + facilities: Array, + context: Dictionary = {} +) -> Array[Dictionary]: + var guest := get_guest(guest_id) + if guest == null: + _fail("Unknown guest: %s" % guest_id) + return [] + var definition := get_definition(guest.guest_type_id) + if definition == null: + _fail("Guest definition is missing.") + return [] + var ordered: Array[Dictionary] = [] + for raw_candidate: Variant in facilities: + if not raw_candidate is Dictionary: + continue + var candidate: Dictionary = raw_candidate.duplicate(true) + var facility_id := _facility_id(candidate) + if facility_id.is_empty(): + continue + candidate[&"facility_id"] = facility_id + ordered.append(candidate) + ordered.sort_custom( + func(a: Dictionary, b: Dictionary) -> bool: + return String(a[&"facility_id"]) < String(b[&"facility_id"]) + ) + + var accepted: Array[Dictionary] = [] + var rejected: Array[Dictionary] = [] + for candidate: Dictionary in ordered: + var reason := _candidate_rejection_reason(guest, definition, candidate, context) + if reason.is_empty(): + accepted.append(candidate) + else: + rejected.append({ + &"facility_id": String(candidate[&"facility_id"]), + &"reason": String(reason), + }) + _decision_rejections[guest_id] = rejected + last_error = "" + return accepted + + +func get_last_candidate_rejections(guest_id: StringName) -> Array[Dictionary]: + return (_decision_rejections.get(guest_id, []) as Array).duplicate(true) + + +func evaluate_candidate(guest_id: StringName, candidate: Dictionary) -> Dictionary: + var guest := get_guest(guest_id) + if guest == null: + return _error_result("Unknown guest: %s" % guest_id) + var definition := get_definition(guest.guest_type_id) + if definition == null: + return _error_result("Guest definition is missing.") + if not _candidate_need_maps_are_valid(candidate): + return _error_result("Candidate Need map is invalid.") + var need_relief := _need_relief(guest, candidate) + var preference := int(_value( + candidate, + &"preference", + definition.preference_for(_value(candidate, &"facility_tags", _value(candidate, &"tags", []))) + )) + var expected_quality := int(_value( + candidate, + &"expected_quality", + _value(candidate, &"quality", 0) + )) + var novelty := int(_value( + candidate, + &"novelty", + 0 if guest.visited_facility_ids.has(_facility_id(candidate)) else 10 + )) + var group_fit := int(_value(candidate, &"group_fit", 0)) + var price_burden := int(_value(candidate, &"price_burden", _price_burden(guest, candidate))) + var travel_minutes := maxi(int(_value(candidate, &"travel_minutes", 0)), 0) + var wait_minutes := maxi(int(_value( + candidate, + &"wait_minutes", + _value(candidate, &"expected_wait", 0) + )), 0) + var risk := maxi(int(_value(candidate, &"risk", _value(candidate, &"risk_level", 0))), 0) + var default_risk_sensitivity := (100 - definition.risk_tolerance + 24) / 25 + var risk_sensitivity := maxi(int(_value( + candidate, + &"risk_sensitivity", + default_risk_sensitivity + )), 0) + var repetition_penalty := int(_value( + candidate, + &"repetition_penalty", + 10 if guest.visited_facility_ids.has(_facility_id(candidate)) else 0 + )) + var urgency := int(_value(candidate, &"urgency", _candidate_urgency(guest, candidate))) + var utility := ( + need_relief * 8 + + preference * 5 + + expected_quality * 3 + + novelty * 2 + + group_fit * 2 + - price_burden * 5 + - travel_minutes * 2 + - wait_minutes * 3 + - risk * risk_sensitivity + - repetition_penalty + ) + var result := candidate.duplicate(true) + result[&"facility_id"] = _facility_id(candidate) + result[&"need_priority"] = _primary_need_priority(guest, candidate) + result[&"utility"] = utility + result[&"urgency"] = urgency + result[&"travel_minutes"] = travel_minutes + result[&"utility_terms"] = { + &"need_relief": need_relief, + &"preference": preference, + &"expected_quality": expected_quality, + &"novelty": novelty, + &"group_fit": group_fit, + &"price_burden": price_burden, + &"travel_minutes": travel_minutes, + &"wait_minutes": wait_minutes, + &"risk": risk, + &"risk_sensitivity": risk_sensitivity, + &"repetition_penalty": repetition_penalty, + } + return result + + +func rank_candidates(guest_id: StringName, candidates: Array) -> Array[Dictionary]: + var ranked: Array[Dictionary] = [] + for raw_candidate: Variant in candidates: + if raw_candidate is Dictionary: + var evaluated := evaluate_candidate(guest_id, raw_candidate) + if bool(evaluated.get(&"ok", true)): + ranked.append(evaluated) + ranked.sort_custom(_candidate_precedes) + return ranked + + +func select_best_candidate( + guest_id: StringName, + candidates: Array, + exit_threshold: int = DEFAULT_EXIT_THRESHOLD +) -> Dictionary: + var ranked := rank_candidates(guest_id, candidates) + for candidate: Dictionary in ranked: + if int(candidate[&"utility"]) >= exit_threshold: + return candidate.duplicate(true) + return {} + + +func decide( + guest_id: StringName, + facilities: Array, + absolute_minute: int, + context: Dictionary = {} +) -> Dictionary: + var guest := get_guest(guest_id) + if guest == null: + return _error_result("Unknown guest: %s" % guest_id) + var filtered := extract_candidates(guest_id, facilities, context) + var ranked := rank_candidates(guest_id, filtered) + var threshold := int(_value(context, &"exit_threshold", DEFAULT_EXIT_THRESHOLD)) + var reserve_callback: Callable = _value(context, &"reserve_callback", Callable()) + for candidate: Dictionary in ranked: + if int(candidate[&"utility"]) < threshold: + continue + if reserve_callback.is_valid(): + var reservation_result: Variant = reserve_callback.call( + guest_id, + candidate[&"facility_id"], + candidate.duplicate(true) + ) + if not _callback_succeeded(reservation_result): + continue + if not _transition_is_available(guest, GuestRuntimeType.State.MOVING, absolute_minute): + return _error_result("Guest cannot enter MOVING in this tick.") + guest.target_facility_id = candidate[&"facility_id"] + guest.path_handle = _copy(_value(candidate, &"path_handle", null)) + _apply_transition(guest, GuestRuntimeType.State.MOVING, absolute_minute, &"FACILITY_SELECTED") + last_error = "" + return { + &"ok": true, + &"action": &"MOVE_TO_FACILITY", + &"candidate": candidate.duplicate(true), + } + if not _transition_is_available(guest, GuestRuntimeType.State.LEAVING, absolute_minute): + return _error_result("Guest cannot enter LEAVING in this tick.") + guest.target_facility_id = &"" + guest.path_handle = null + guest.exit_reason = StringName(_value(context, &"exit_reason", &"NO_SUITABLE_FACILITY")) + _apply_transition(guest, GuestRuntimeType.State.LEAVING, absolute_minute, guest.exit_reason) + last_error = "" + return {&"ok": true, &"action": &"LEAVE", &"candidate": {}} + + +func transition_guest( + guest_id: StringName, + new_state: int, + absolute_minute: int, + reason: StringName = &"" +) -> Dictionary: + var guest := get_guest(guest_id) + if guest == null: + return _error_result("Unknown guest: %s" % guest_id) + if new_state < GuestRuntimeType.State.SPAWNING or new_state > GuestRuntimeType.State.INCAPACITATED: + return _error_result("Unknown guest state.") + if guest.state == new_state: + return {&"ok": true, &"changed": false, &"state": new_state} + if not _is_allowed_transition(guest.state, new_state): + return _error_result( + "Invalid guest transition: %s -> %s" % [ + GuestRuntimeType.State.keys()[guest.state], + GuestRuntimeType.State.keys()[new_state], + ] + ) + if not _transition_is_available(guest, new_state, absolute_minute): + _force_loop_guard(guest, absolute_minute) + return { + &"ok": false, + &"changed": true, + &"loop_guard": true, + &"state": guest.state, + } + _apply_transition(guest, new_state, absolute_minute, reason) + last_error = "" + return {&"ok": true, &"changed": true, &"state": new_state} + + +func enter_queue( + guest_id: StringName, + facility_id: StringName, + request_id: StringName, + absolute_minute: int, + initial_patience: int = -1, + enqueue_callback: Callable = Callable() +) -> Dictionary: + var guest := get_guest(guest_id) + if guest == null or facility_id.is_empty() or request_id.is_empty(): + return _error_result("Guest, facility and request are required for queue entry.") + if not _transition_is_available(guest, GuestRuntimeType.State.QUEUING, absolute_minute): + return _error_result("Guest cannot enter QUEUING in this tick.") + if enqueue_callback.is_valid(): + var external_result: Variant = enqueue_callback.call(guest_id, facility_id, request_id) + if not _callback_succeeded(external_result): + return _error_result("Facility queue rejected the guest.") + var definition := get_definition(guest.guest_type_id) + var resolved_patience := initial_patience + if resolved_patience < 0: + resolved_patience = definition.base_patience if definition != null else 0 + guest.target_facility_id = facility_id + guest.queue_request_id = request_id + guest.patience_remaining = maxi(resolved_patience, 0) + _apply_transition(guest, GuestRuntimeType.State.QUEUING, absolute_minute, &"QUEUE_ENTERED") + last_error = "" + return {&"ok": true, &"patience_remaining": guest.patience_remaining} + + +## Closure asks the guest to choose again, without charging a patience penalty. +## The callback releases the owning facility request and inventory reservations. +func release_queue_for_replanning( + guest_id: StringName, + absolute_minute: int, + release_callback: Callable = Callable() +) -> Dictionary: + if _external_mutation_blocked: + return _error_result("Guest mutation is blocked while committed notifications are delivered.") + var guest := get_guest(guest_id) + if guest == null or guest.state != GuestRuntimeType.State.QUEUING: + return _error_result("Guest is not in a queue.") + if not _transition_is_available(guest, GuestRuntimeType.State.DECIDING, absolute_minute): + return _error_result("Guest cannot atomically replan the queue in this tick.") + var facility_id := guest.target_facility_id + var request_id := guest.queue_request_id + if facility_id.is_empty() or request_id.is_empty(): + return _error_result("Queued guest is missing a facility or request.") + if release_callback.is_valid(): + var external_result: Variant = release_callback.call(guest_id, facility_id, request_id) + if not _callback_succeeded(external_result): + return _error_result("Facility queue removal failed; guest state was not changed.") + guest.target_facility_id = &"" + guest.queue_request_id = &"" + guest.path_handle = null + _apply_transition(guest, GuestRuntimeType.State.DECIDING, absolute_minute, &"FACILITY_CLOSED") + last_error = "" + return { + &"ok": true, + &"facility_id": facility_id, + &"request_id": request_id, + &"patience_remaining": guest.patience_remaining, + } + + +func tick_queue_patience( + guest_id: StringName, + absolute_minute: int, + recovery: int = 0, + leave_queue_callback: Callable = Callable() +) -> Dictionary: + var guest := get_guest(guest_id) + if guest == null or guest.state != GuestRuntimeType.State.QUEUING: + return _error_result("Guest is not in a queue.") + var next_patience := maxi(guest.patience_remaining - 1 + recovery, 0) + if next_patience > 0: + guest.patience_remaining = next_patience + last_error = "" + return {&"ok": true, &"abandoned": false, &"patience_remaining": next_patience} + ## Preflight every internal mutation before invoking the external queue owner. + if not _transition_is_available(guest, GuestRuntimeType.State.ABANDONING, absolute_minute): + return _error_result("Guest cannot atomically abandon the queue in this tick.") + var facility_id := guest.target_facility_id + var request_id := guest.queue_request_id + if leave_queue_callback.is_valid(): + var external_result: Variant = leave_queue_callback.call( + guest_id, + facility_id, + request_id + ) + if not _callback_succeeded(external_result): + return _error_result("Facility queue removal failed; guest state was not changed.") + guest.patience_remaining = 0 + guest.target_facility_id = &"" + guest.queue_request_id = &"" + guest.path_handle = null + _apply_transition(guest, GuestRuntimeType.State.ABANDONING, absolute_minute, &"PATIENCE_EXHAUSTED") + guest_queue_abandoned.emit(guest_id, facility_id, request_id) + last_error = "" + return {&"ok": true, &"abandoned": true, &"patience_remaining": 0} + + +func begin_service( + guest_id: StringName, + facility_id: StringName, + service_id: StringName, + absolute_minute: int +) -> Dictionary: + var guest := get_guest(guest_id) + if guest == null or facility_id.is_empty() or service_id.is_empty(): + return _error_result("Guest, facility and service are required.") + if not _transition_is_available(guest, GuestRuntimeType.State.RECEIVING_SERVICE, absolute_minute): + return _error_result("Guest cannot begin service in this tick.") + guest.target_facility_id = facility_id + guest.current_service_id = service_id + guest.queue_request_id = &"" + _apply_transition(guest, GuestRuntimeType.State.RECEIVING_SERVICE, absolute_minute, &"SERVICE_STARTED") + last_error = "" + return {&"ok": true, &"service_id": service_id} + + +func interrupt_service( + guest_id: StringName, + service_id: StringName, + absolute_minute: int, + interrupt_callback: Callable = Callable() +) -> Dictionary: + var guest := get_guest(guest_id) + if guest == null or service_id.is_empty(): + return _error_result("Guest and service are required.") + if guest.interrupted_service_ids.has(service_id): + return {&"ok": true, &"replayed": true, &"service_id": service_id} + if guest.current_service_id != service_id: + return _error_result("Guest is not receiving the specified service.") + if not _transition_is_available(guest, GuestRuntimeType.State.INTERRUPTED, absolute_minute): + return _error_result("Guest cannot enter INTERRUPTED in this tick.") + if interrupt_callback.is_valid(): + var external_result: Variant = interrupt_callback.call(guest_id, service_id) + if not _callback_succeeded(external_result): + return _error_result("Service interruption callback failed.") + guest.interrupted_service_ids.append(service_id) + guest.interrupted_service_ids.sort_custom( + func(a: StringName, b: StringName) -> bool: return String(a) < String(b) + ) + guest.current_service_id = &"" + _apply_transition(guest, GuestRuntimeType.State.INTERRUPTED, absolute_minute, &"FACILITY_STOPPED") + last_error = "" + return {&"ok": true, &"replayed": false, &"service_id": service_id} + + +func complete_service( + guest_id: StringName, + service_id: StringName, + absolute_minute: int, + satisfaction_sample: int, + need_effects: Dictionary = {} +) -> Dictionary: + var guest := get_guest(guest_id) + if guest == null or guest.current_service_id != service_id: + return _error_result("Guest is not receiving the specified service.") + var normalized_effects: Variant = _normalized_partial_need_map(need_effects) + if not normalized_effects is Dictionary: + return _error_result("Service Need effects must use canonical integer Need IDs.") + if not _transition_is_available(guest, GuestRuntimeType.State.DECIDING, absolute_minute): + return _error_result("Guest cannot complete service in this tick.") + var sample := clampi(satisfaction_sample, 0, 100) + guest.satisfaction_total += sample + guest.satisfaction_samples += 1 + for need_id: StringName in NEED_IDS: + var effect := int(normalized_effects.get(need_id, 0)) + guest.needs[need_id] = clampi(int(guest.needs[need_id]) + effect, 0, 100) + if not guest.target_facility_id.is_empty() \ + and not guest.visited_facility_ids.has(guest.target_facility_id): + guest.visited_facility_ids.append(guest.target_facility_id) + guest.visited_facility_ids.sort_custom( + func(a: StringName, b: StringName) -> bool: return String(a) < String(b) + ) + guest.current_service_id = &"" + guest.queue_request_id = &"" + guest.target_facility_id = &"" + _apply_transition(guest, GuestRuntimeType.State.DECIDING, absolute_minute, &"SERVICE_COMPLETED") + last_error = "" + return {&"ok": true, &"satisfaction_sample": sample} + + +func record_path_failure( + guest_id: StringName, + absolute_minute: int, + recovery_targets: Array = [], + reachability_callback: Callable = Callable() +) -> Dictionary: + var guest := get_guest(guest_id) + if guest == null: + return _error_result("Unknown guest: %s" % guest_id) + guest.path_failure_count += 1 + if guest.path_failure_count < PATH_FAILURE_LIMIT: + if guest.state != GuestRuntimeType.State.REPLANNING: + var transition := transition_guest( + guest_id, + GuestRuntimeType.State.REPLANNING, + absolute_minute, + &"PATH_INVALID" + ) + if not bool(transition.get(&"ok", false)): + return transition + last_error = "" + return { + &"ok": true, + &"recovery_started": false, + &"failure_count": guest.path_failure_count, + } + + var selected := _select_recovery_target(guest, recovery_targets, reachability_callback) + if selected.is_empty(): + ## A virtual emergency egress is preferable to leaving an entity stranded. + selected = { + &"kind": &"emergency_despawn", + &"cell": guest.current_cell, + &"path_handle": {&"virtual_evacuation": true}, + } + if not _transition_is_available(guest, GuestRuntimeType.State.LEAVING, absolute_minute): + return _error_result("Guest cannot enter safe recovery in this tick.") + guest.recovery_kind = StringName(_value(selected, &"kind", &"emergency_exit")) + guest.recovery_target_cell = _vector3i(_value(selected, &"cell", guest.current_cell)) + guest.path_handle = _copy(_value(selected, &"path_handle", { + &"recovery": true, + &"target_cell": guest.recovery_target_cell, + })) + guest.target_facility_id = &"" + guest.queue_request_id = &"" + guest.current_service_id = &"" + guest.exit_reason = &"PATH_RECOVERY" + _apply_transition(guest, GuestRuntimeType.State.LEAVING, absolute_minute, &"PATH_FAILURE_LIMIT") + _diagnostics.append({ + &"code": &"GUEST_PATH_RECOVERY", + &"guest_id": String(guest_id), + &"minute": absolute_minute, + &"failure_count": guest.path_failure_count, + &"recovery_kind": String(guest.recovery_kind), + &"target_cell": _cell_to_array(guest.recovery_target_cell), + }) + guest_recovery_started.emit(guest_id, guest.recovery_kind, guest.recovery_target_cell) + last_error = "" + return { + &"ok": true, + &"recovery_started": true, + &"failure_count": guest.path_failure_count, + &"recovery_kind": guest.recovery_kind, + &"target_cell": guest.recovery_target_cell, + } + + +func record_path_success(guest_id: StringName, cell: Vector3i, absolute_minute: int) -> bool: + var guest := get_guest(guest_id) + if guest == null or absolute_minute < 0: + return _fail("A valid guest and minute are required.") + guest.current_cell = cell + guest.last_progress_cell = cell + guest.last_progress_at = absolute_minute + guest.path_failure_count = 0 + guest.recovery_kind = &"" + last_error = "" + return true + + +func note_movement( + guest_id: StringName, + cell: Vector3i, + absolute_minute: int, + recovery_targets: Array = [], + reachability_callback: Callable = Callable() +) -> Dictionary: + var guest := get_guest(guest_id) + if guest == null: + return _error_result("Unknown guest: %s" % guest_id) + if cell != guest.last_progress_cell: + record_path_success(guest_id, cell, absolute_minute) + return {&"ok": true, &"progressed": true, &"replanned": false} + guest.current_cell = cell + if absolute_minute - guest.last_progress_at < STUCK_REPLAN_MINUTES: + return {&"ok": true, &"progressed": false, &"replanned": false} + guest.last_progress_at = absolute_minute + var result := record_path_failure( + guest_id, + absolute_minute, + recovery_targets, + reachability_callback + ) + result[&"progressed"] = false + result[&"replanned"] = true + return result + + +func begin_leaving( + guest_id: StringName, + absolute_minute: int, + reason: StringName +) -> Dictionary: + var guest := get_guest(guest_id) + if guest == null: + return _error_result("Unknown guest: %s" % guest_id) + if not _transition_is_available(guest, GuestRuntimeType.State.LEAVING, absolute_minute): + return _error_result("Guest cannot begin leaving in this tick.") + guest.target_facility_id = &"" + guest.queue_request_id = &"" + guest.current_service_id = &"" + guest.exit_reason = reason + _apply_transition(guest, GuestRuntimeType.State.LEAVING, absolute_minute, reason) + last_error = "" + return {&"ok": true} + + +func despawn_guest(guest_id: StringName, absolute_minute: int) -> Dictionary: + var guest := get_guest(guest_id) + if guest == null: + return _error_result("Unknown guest: %s" % guest_id) + if guest.state != GuestRuntimeType.State.LEAVING \ + and guest.state != GuestRuntimeType.State.DESPAWNING: + return _error_result("Only a leaving guest can despawn.") + if guest.state != GuestRuntimeType.State.DESPAWNING: + if not _transition_is_available(guest, GuestRuntimeType.State.DESPAWNING, absolute_minute): + return _error_result("Guest cannot enter DESPAWNING in this tick.") + _apply_transition(guest, GuestRuntimeType.State.DESPAWNING, absolute_minute, &"EXIT_REACHED") + var record := { + &"guest_id": String(guest.guest_id), + &"guest_type_id": String(guest.guest_type_id), + &"debt_gold": guest.debt_gold, + &"unresolved_incident_ids": _names_to_strings(guest.unresolved_incident_ids), + &"outstanding_reservation_ids": _names_to_strings(guest.outstanding_reservation_ids), + } + _persistent_records[guest_id] = record + _guests.erase(guest_id) + _pending_spawn_notifications.erase(guest_id) + _guest_order_dirty = true + _decision_rejections.erase(guest_id) + guest_despawned.emit(guest_id, record.duplicate(true)) + last_error = "" + return {&"ok": true, &"persistent_record": record.duplicate(true)} + + +func create_snapshot() -> Dictionary: + var saved_definitions: Array[Dictionary] = [] + for guest_type_id: StringName in _sorted_ids(_definitions.keys()): + saved_definitions.append((_definitions[guest_type_id] as GuestDefinition).create_snapshot()) + var saved_guests: Array[Dictionary] = [] + for guest_id: StringName in _ordered_guest_ids(): + saved_guests.append((_guests[guest_id] as GuestRuntime).create_snapshot()) + var saved_records: Array[Dictionary] = [] + for guest_id: StringName in _sorted_ids(_persistent_records.keys()): + saved_records.append((_persistent_records[guest_id] as Dictionary).duplicate(true)) + return { + &"version": SNAPSHOT_VERSION, + &"current_minute": current_minute, + &"definitions": saved_definitions, + &"guests": saved_guests, + &"persistent_records": saved_records, + &"diagnostics": _diagnostics.duplicate(true), + } + + +func restore_snapshot(snapshot: Dictionary) -> bool: + var raw_version: Variant = snapshot.get(&"version", snapshot.get("version", null)) + if not raw_version is int or int(raw_version) not in [1, SNAPSHOT_VERSION]: + return _fail("Unsupported GuestService snapshot version.") + var prepared: Variant = snapshot.duplicate(true) + if int(raw_version) == 1: + prepared = _migrate_v1_snapshot(snapshot) + if not prepared is Dictionary: + return _fail("GuestService v1 Need schema is invalid or mixed.") + var candidate: Dictionary = prepared + if not candidate.get(&"definitions", null) is Array \ + or not candidate.get(&"guests", null) is Array \ + or not candidate.get(&"persistent_records", null) is Array \ + or not candidate.get(&"diagnostics", null) is Array: + return _fail("GuestService snapshot arrays are missing.") + var next_minute := int(candidate.get(&"current_minute", -2)) + if next_minute < -1: + return _fail("GuestService snapshot minute is invalid.") + + ## Parse into temporary containers. Live state is replaced only after every + ## cross-reference and invariant has been validated. + var next_definitions: Dictionary = {} + for raw_definition: Variant in candidate[&"definitions"]: + if not raw_definition is Dictionary: + return _fail("Guest definition snapshot has an invalid type.") + var definition := GuestDefinitionType.from_snapshot(raw_definition) + if definition == null or next_definitions.has(definition.guest_type_id): + return _fail("Guest definition snapshot is invalid or duplicated.") + next_definitions[definition.guest_type_id] = definition + + var next_guests: Dictionary = {} + for raw_guest: Variant in candidate[&"guests"]: + if not raw_guest is Dictionary: + return _fail("Guest runtime snapshot has an invalid type.") + var guest := GuestRuntimeType.from_snapshot(raw_guest) + if guest == null or next_guests.has(guest.guest_id): + return _fail("Guest runtime snapshot is invalid or duplicated.") + if not next_definitions.has(guest.guest_type_id): + return _fail("Guest runtime snapshot references an unknown definition.") + next_guests[guest.guest_id] = guest + + var next_records: Dictionary = {} + for raw_record: Variant in candidate[&"persistent_records"]: + if not raw_record is Dictionary or not _persistent_record_is_valid(raw_record): + return _fail("Persistent guest record is invalid.") + var record_id := StringName(raw_record.get(&"guest_id", "")) + if next_records.has(record_id) or next_guests.has(record_id): + return _fail("Persistent guest id is duplicated or still active.") + next_records[record_id] = raw_record.duplicate(true) + + var next_diagnostics: Array[Dictionary] = [] + for raw_diagnostic: Variant in candidate[&"diagnostics"]: + if not raw_diagnostic is Dictionary: + return _fail("Guest diagnostic snapshot has an invalid type.") + next_diagnostics.append(raw_diagnostic.duplicate(true)) + + _definitions = next_definitions + _guests = next_guests + _guest_order_dirty = true + _persistent_records = next_records + _decision_rejections = {} + _diagnostics = next_diagnostics + _pending_spawn_notifications.clear() + _external_mutation_blocked = false + current_minute = next_minute + last_error = "" + return true + + +func validate_invariants() -> Dictionary: + var errors: Array[String] = [] + for guest_type_id: StringName in _sorted_ids(_definitions.keys()): + var definition: GuestDefinition = _definitions[guest_type_id] + if not definition.is_valid() or definition.guest_type_id != guest_type_id: + errors.append("Invalid definition: %s" % guest_type_id) + for guest_id: StringName in _sorted_ids(_guests.keys()): + var guest: GuestRuntime = _guests[guest_id] + if not guest.is_valid() or guest.guest_id != guest_id: + errors.append("Invalid runtime: %s" % guest_id) + elif not _definitions.has(guest.guest_type_id): + errors.append("Unknown guest type for: %s" % guest_id) + if _persistent_records.has(guest_id): + errors.append("Guest is both active and persisted: %s" % guest_id) + for guest_id: StringName in _sorted_ids(_persistent_records.keys()): + if not _persistent_record_is_valid(_persistent_records[guest_id]): + errors.append("Invalid persistent record: %s" % guest_id) + return {&"valid": errors.is_empty(), &"errors": errors} + + +func _migrate_v1_snapshot(snapshot: Dictionary) -> Variant: + var definitions: Variant = snapshot.get(&"definitions", snapshot.get("definitions", null)) + var guests: Variant = snapshot.get(&"guests", snapshot.get("guests", null)) + if not definitions is Array or not guests is Array: + return null + var migrated := snapshot.duplicate(true) + for index: int in range(definitions.size()): + var raw_definition: Variant = definitions[index] + if not raw_definition is Dictionary: + return null + var translated_rates: Variant = _translate_v1_need_map( + _value(raw_definition, &"need_rates", null) + ) + if not translated_rates is Dictionary: + return null + migrated[&"definitions"][index][&"need_rates"] = translated_rates + for index: int in range(guests.size()): + var raw_guest: Variant = guests[index] + if not raw_guest is Dictionary: + return null + var translated_needs: Variant = _translate_v1_need_map( + _value(raw_guest, &"needs", null) + ) + if not translated_needs is Dictionary: + return null + migrated[&"guests"][index][&"needs"] = translated_needs + migrated[&"version"] = SNAPSHOT_VERSION + return migrated + + +static func _translate_v1_need_map(source: Variant) -> Variant: + if not source is Dictionary or source.size() != LEGACY_NEED_IDS.size(): + return null + var legacy: Dictionary = {} + for raw_key: Variant in source: + if not raw_key is String and not raw_key is StringName: + return null + var legacy_id := StringName(raw_key) + if not LEGACY_NEED_IDS.has(legacy_id) or legacy.has(legacy_id): + return null + var raw_value: Variant = source[raw_key] + if not raw_value is int: + return null + legacy[legacy_id] = raw_value + if legacy.size() != LEGACY_NEED_IDS.size(): + return null + return { + &"hunger": legacy[&"hunger"], + &"sleep": legacy[&"rest"], + &"hygiene": 0, + &"medical": legacy[&"safety"], + &"leisure": legacy[&"fun"], + &"intimacy": legacy[&"social"], + } + + +func _need_context_error(context: Dictionary) -> String: + for field_id: StringName in [ + &"dirt", + &"injury", + &"illness", + &"intimacy_day", + &"intimacy_night", + ]: + if not _has_value(context, field_id): + continue + var raw_value: Variant = _value(context, field_id, null) + if not raw_value is int or int(raw_value) < 0 or int(raw_value) > 100: + return "%s must be an integer from 0 through 100." % field_id + for field_id: StringName in [&"is_night", &"work_like_activity", &"unstimulated"]: + if _has_value(context, field_id) and not _value(context, field_id, null) is bool: + return "%s must be boolean." % field_id + if _has_value(context, &"need_effects"): + var effects: Variant = _normalized_partial_need_map( + _value(context, &"need_effects", null) + ) + if not effects is Dictionary: + return "need_effects must contain only canonical integer Need IDs." + return "" + + +static func _normalized_partial_need_map(source: Variant) -> Variant: + if not source is Dictionary or source.size() > NEED_IDS.size(): + return null + var result: Dictionary = {} + for raw_key: Variant in source: + if not raw_key is String and not raw_key is StringName: + return null + var need_id := StringName(raw_key) + if not NEED_IDS.has(need_id) or result.has(need_id): + return null + var raw_value: Variant = source[raw_key] + if not raw_value is int: + return null + result[need_id] = raw_value + return result + + +static func _candidate_need_maps_are_valid(candidate: Dictionary) -> bool: + for field_id: StringName in [&"need_relief", &"need_effects"]: + if not _has_value(candidate, field_id): + continue + var raw_value: Variant = _value(candidate, field_id, null) + if field_id == &"need_relief" and raw_value is int: + continue + if not _normalized_partial_need_map(raw_value) is Dictionary: + return false + return true + + +func _candidate_rejection_reason( + guest: GuestRuntime, + definition: GuestDefinition, + candidate: Dictionary, + context: Dictionary +) -> StringName: + if not _candidate_need_maps_are_valid(candidate): + return &"INVALID_NEED_MAP" + if not bool(_value(candidate, &"inputs_available", true)): + return &"MISSING_INPUTS" + var adult_only := bool(_value( + candidate, + &"adult_only", + _value(candidate, &"requires_adult_verified", false) + )) + if adult_only: + if not definition.adult_verified: + return &"ADULT_NOT_VERIFIED" + if not bool(_value(context, &"adult_content_enabled", true)): + return &"CONTENT_FILTERED" + var required_tags := _name_array(_value(candidate, &"required_guest_tags", [])) + for tag: StringName in required_tags: + if not definition.tags.has(tag): + return &"MISSING_PERMISSION" + var forbidden_tags := _name_array(_value(candidate, &"forbidden_guest_tags", [])) + for tag: StringName in forbidden_tags: + if definition.tags.has(tag): + return &"FORBIDDEN_GUEST_TAG" + var allowed_types := _name_array(_value(candidate, &"allowed_guest_types", [])) + if not allowed_types.is_empty() and not allowed_types.has(guest.guest_type_id): + return &"GUEST_TYPE_NOT_ALLOWED" + if not bool(_value(candidate, &"is_open", _value(candidate, &"open", true))) \ + and not bool(_value(candidate, &"open_at_arrival", false)): + return &"FACILITY_CLOSED" + if not _candidate_is_reachable(guest, candidate, context): + return &"UNREACHABLE" + var travel_minutes := maxi(int(_value(candidate, &"travel_minutes", 0)), 0) + var decision_minute := int(_value(context, &"absolute_minute", current_minute)) + if decision_minute >= 0 and decision_minute + travel_minutes > guest.planned_exit_at: + return &"ETA_AFTER_EXIT" + if not _candidate_is_affordable(guest, definition, candidate): + return &"CANNOT_PAY" + var wait_minutes := maxi(int(_value( + candidate, + &"wait_minutes", + _value(candidate, &"expected_wait", 0) + )), 0) + var hard_limit := maxi(int(_value( + candidate, + &"wait_hard_limit", + _value(context, &"wait_hard_limit", DEFAULT_WAIT_HARD_LIMIT) + )), 0) + if wait_minutes >= hard_limit: + return &"WAIT_HARD_LIMIT" + var risk_level := clampi(int(_value(candidate, &"risk_level", _value(candidate, &"risk", 0))), 0, 100) + if risk_level > definition.risk_tolerance: + return &"RISK_REFUSED" + var illegal_level := clampi(int(_value(candidate, &"illegal_level", 0)), 0, 100) + if illegal_level > 100 - definition.legal_sensitivity \ + and not bool(_value(candidate, &"legal_permission_override", false)): + return &"ILLEGALITY_REFUSED" + var quality := clampi(int(_value(candidate, &"expected_quality", _value(candidate, &"quality", 0))), 0, 100) + var minimum_quality := clampi(int(_value(candidate, &"minimum_quality", definition.minimum_quality)), 0, 100) + if quality < minimum_quality: + return &"QUALITY_TOO_LOW" + return &"" + + +func _candidate_is_reachable( + guest: GuestRuntime, + candidate: Dictionary, + context: Dictionary +) -> bool: + var callback: Callable = _value(context, &"reachability_callback", Callable()) + if callback.is_valid(): + return _callback_succeeded(callback.call(guest, candidate.duplicate(true), context)) + return bool(_value(candidate, &"reachable", true)) + + +func _candidate_is_affordable( + guest: GuestRuntime, + definition: GuestDefinition, + candidate: Dictionary +) -> bool: + var price := _candidate_price(candidate) + var cash_available := guest.wallet_gold + var respect_reserve := bool(_value( + candidate, + &"respect_survival_reserve", + _candidate_is_discretionary(candidate) + )) + if respect_reserve: + cash_available = maxi(cash_available - _survival_reserve(guest, definition), 0) + if price <= cash_available: + return true + if not bool(_value(candidate, &"credit_allowed", _value(candidate, &"allow_credit", false))): + return false + var remaining_credit := maxi(guest.credit_limit_gold - guest.debt_gold, 0) + return price - cash_available <= remaining_credit + + +func _candidate_is_discretionary(candidate: Dictionary) -> bool: + if bool(_value(candidate, &"discretionary", false)): + return true + var category := StringName(_value(candidate, &"service_category", &"")) + if category in [&"leisure", &"entertainment", &"gambling", &"intimacy", &"tourism"]: + return true + var facility_tags := _name_array(_value( + candidate, + &"facility_tags", + _value(candidate, &"tags", []) + )) + for tag: StringName in [&"leisure", &"entertainment", &"gambling", &"adult", &"intimacy"]: + if facility_tags.has(tag): + return true + return false + + +func _survival_reserve(guest: GuestRuntime, definition: GuestDefinition) -> int: + if guest.max_addiction() >= 75: + return 0 + if definition.tags.has(&"spendthrift"): + return guest.wallet_gold / 10 + if definition.tags.has(&"frugal"): + return guest.wallet_gold / 2 + return guest.wallet_gold * 3 / 10 + + +func _candidate_price(candidate: Dictionary) -> int: + return maxi(int(_value( + candidate, + &"estimated_total_gold", + _value(candidate, &"price_gold", _value(candidate, &"quoted_price", 0)) + )), 0) + + +func _price_burden(guest: GuestRuntime, candidate: Dictionary) -> int: + var price := _candidate_price(candidate) + var purchasing_power := maxi(guest.wallet_gold + maxi(guest.credit_limit_gold - guest.debt_gold, 0), 1) + return clampi((price * 100 + purchasing_power - 1) / purchasing_power, 0, 100) + + +func _need_relief(guest: GuestRuntime, candidate: Dictionary) -> int: + var raw_relief: Variant = _value(candidate, &"need_relief", 0) + if raw_relief is int: + return maxi(int(raw_relief), 0) + if not raw_relief is Dictionary: + return 0 + var normalized: Dictionary = _normalized_partial_need_map(raw_relief) + var best := 0 + for need_id: StringName in NEED_IDS: + var relief := maxi(int(normalized.get(need_id, 0)), 0) + best = maxi(best, relief * int(guest.needs[need_id]) / 100) + return best + + +func _candidate_urgency(guest: GuestRuntime, candidate: Dictionary) -> int: + var raw_relief: Variant = _value(candidate, &"need_relief", {}) + if not raw_relief is Dictionary: + return 0 + var normalized: Dictionary = _normalized_partial_need_map(raw_relief) + var result := 0 + for need_id: StringName in NEED_IDS: + if int(normalized.get(need_id, 0)) > 0: + result = maxi(result, int(guest.needs[need_id])) + return result + + +func _primary_need_priority(guest: GuestRuntime, candidate: Dictionary) -> int: + var relief: Variant = _value(candidate, &"need_relief", {}) + if not relief is Dictionary: + return 0 + var normalized: Dictionary = _normalized_partial_need_map(relief) + var priority := 0 + for need: StringName in PRIMARY_NEEDS: + if int(normalized.get(need, 0)) > 0: + priority = maxi(priority, int(guest.needs[need])) + return priority + + +func get_observation(guest_id: StringName) -> Dictionary: + var guest := get_guest(guest_id) + if guest == null: + return {} + var highest := 0 + var primary: Array[StringName] = [] + for need: StringName in PRIMARY_NEEDS: + var value := int(guest.needs[need]) + if value > highest: + highest = value + primary.clear() + if value == highest and value > 0: + primary.append(need) + var observed_needs: Dictionary = {} + for need: StringName in NEED_IDS: + observed_needs[need] = guest.needs[need] + return {&"guest_id": guest.guest_id, &"state": guest.state, &"needs": observed_needs, + &"primary_needs": primary, &"target_facility_id": guest.target_facility_id, + &"wallet_gold": guest.wallet_gold, &"patience": guest.patience_remaining} + + +func _candidate_precedes(a: Dictionary, b: Dictionary) -> bool: + var a_priority := int(a.get(&"need_priority", 0)) + var b_priority := int(b.get(&"need_priority", 0)) + if a_priority != b_priority: + return a_priority > b_priority + var a_utility := int(a[&"utility"]) + var b_utility := int(b[&"utility"]) + if a_utility != b_utility: + return a_utility > b_utility + var a_urgency := int(a[&"urgency"]) + var b_urgency := int(b[&"urgency"]) + if a_urgency != b_urgency: + return a_urgency > b_urgency + var a_travel := int(a[&"travel_minutes"]) + var b_travel := int(b[&"travel_minutes"]) + if a_travel != b_travel: + return a_travel < b_travel + return String(a[&"facility_id"]) < String(b[&"facility_id"]) + + +func _select_recovery_target( + guest: GuestRuntime, + targets: Array, + reachability_callback: Callable +) -> Dictionary: + var ordered: Array[Dictionary] = [] + for raw_target: Variant in targets: + if raw_target is Dictionary: + var target: Dictionary = raw_target.duplicate(true) + target[&"kind"] = StringName(_value(target, &"kind", &"emergency_exit")) + target[&"cell"] = _vector3i(_value(target, &"cell", guest.current_cell)) + ordered.append(target) + ordered.sort_custom( + func(a: Dictionary, b: Dictionary) -> bool: + var a_priority := _recovery_priority(StringName(a[&"kind"])) + var b_priority := _recovery_priority(StringName(b[&"kind"])) + if a_priority != b_priority: + return a_priority < b_priority + return _cell_precedes(a[&"cell"], b[&"cell"]) + ) + for target: Dictionary in ordered: + var reachable := bool(_value(target, &"reachable", true)) + if reachability_callback.is_valid(): + reachable = _callback_succeeded(reachability_callback.call( + guest.current_cell, + target[&"cell"], + guest.guest_id, + target.duplicate(true) + )) + if reachable: + return target + return {} + + +func _recovery_priority(kind: StringName) -> int: + match kind: + &"guidance", &"guidance_point": + return 0 + &"entrance", &"main_entrance": + return 1 + &"emergency_exit", &"emergency_egress": + return 2 + _: + return 3 + + +func _transition_is_available(guest: GuestRuntime, new_state: int, minute: int) -> bool: + if minute < 0 or not _is_allowed_transition(guest.state, new_state): + return false + var count := guest.transitions_this_tick if guest.transition_tick == minute else 0 + return count < MAX_TRANSITIONS_PER_TICK + + +func _apply_transition( + guest: GuestRuntime, + new_state: int, + absolute_minute: int, + reason: StringName +) -> void: + var old_state := guest.state + if guest.transition_tick != absolute_minute: + guest.transition_tick = absolute_minute + guest.transitions_this_tick = 0 + guest.transitions_this_tick += 1 + guest.state = new_state as GuestRuntime.State + guest.state_entered_at = absolute_minute + guest_state_changed.emit(guest.guest_id, old_state, new_state, reason) + + +func _force_loop_guard(guest: GuestRuntime, absolute_minute: int) -> void: + var old_state := guest.state + guest.state = GuestRuntimeType.State.DECIDING + guest.state_entered_at = absolute_minute + guest.transition_tick = absolute_minute + guest.transitions_this_tick = MAX_TRANSITIONS_PER_TICK + guest.target_facility_id = &"" + guest.queue_request_id = &"" + guest.current_service_id = &"" + guest.path_handle = null + _diagnostics.append({ + &"code": &"AI_LOOP_GUARD", + &"guest_id": String(guest.guest_id), + &"minute": absolute_minute, + }) + guest_state_changed.emit( + guest.guest_id, + old_state, + GuestRuntimeType.State.DECIDING, + &"AI_LOOP_GUARD" + ) + + +func _is_allowed_transition(from_state: int, to_state: int) -> bool: + if from_state == to_state: + return true + if to_state in [ + GuestRuntimeType.State.LEAVING, + GuestRuntimeType.State.FLEEING, + GuestRuntimeType.State.INCAPACITATED, + ]: + return from_state != GuestRuntimeType.State.DESPAWNING + match from_state: + GuestRuntimeType.State.SPAWNING: + return to_state in [GuestRuntimeType.State.ENTERING, GuestRuntimeType.State.DECIDING] + GuestRuntimeType.State.ENTERING: + return to_state in [GuestRuntimeType.State.DECIDING, GuestRuntimeType.State.MOVING] + GuestRuntimeType.State.DECIDING: + return to_state in [GuestRuntimeType.State.MOVING, GuestRuntimeType.State.QUEUING] + GuestRuntimeType.State.MOVING: + return to_state in [ + GuestRuntimeType.State.QUEUING, + GuestRuntimeType.State.RECEIVING_SERVICE, + GuestRuntimeType.State.DECIDING, + GuestRuntimeType.State.REPLANNING, + ] + GuestRuntimeType.State.QUEUING: + return to_state in [ + GuestRuntimeType.State.RECEIVING_SERVICE, + GuestRuntimeType.State.ABANDONING, + GuestRuntimeType.State.DECIDING, + ] + GuestRuntimeType.State.RECEIVING_SERVICE: + return to_state in [GuestRuntimeType.State.DECIDING, GuestRuntimeType.State.INTERRUPTED] + GuestRuntimeType.State.REPLANNING: + return to_state in [GuestRuntimeType.State.MOVING, GuestRuntimeType.State.DECIDING] + GuestRuntimeType.State.ABANDONING, GuestRuntimeType.State.INTERRUPTED: + return to_state == GuestRuntimeType.State.DECIDING + GuestRuntimeType.State.FLEEING: + return to_state in [GuestRuntimeType.State.LEAVING, GuestRuntimeType.State.DESPAWNING] + GuestRuntimeType.State.LEAVING: + return to_state == GuestRuntimeType.State.DESPAWNING + _: + return false + + +static func _callback_succeeded(result: Variant) -> bool: + if result == null: + return true + if result is bool: + return result + if result is Dictionary: + return bool(result.get(&"ok", result.get("ok", result.get(&"success", result.get("success", false))))) + if result is Object and result.has_method("is_success"): + return bool(result.call("is_success")) + return false + + +static func _persistent_record_is_valid(record: Dictionary) -> bool: + if StringName(record.get(&"guest_id", "")).is_empty(): + return false + if StringName(record.get(&"guest_type_id", "")).is_empty(): + return false + if int(record.get(&"debt_gold", -1)) < 0: + return false + return record.get(&"unresolved_incident_ids", null) is Array \ + and record.get(&"outstanding_reservation_ids", null) is Array + + +static func _facility_id(candidate: Dictionary) -> StringName: + return StringName(_value( + candidate, + &"facility_id", + _value(candidate, &"instance_id", &"") + )) + + +static func _name_array(source: Variant) -> Array[StringName]: + var result: Array[StringName] = [] + if not source is Array: + return result + for raw_value: Variant in source: + var value := StringName(raw_value) + if not value.is_empty() and not result.has(value): + result.append(value) + result.sort_custom(func(a: StringName, b: StringName) -> bool: return String(a) < String(b)) + return result + + +static func _sorted_ids(source: Array) -> Array[StringName]: + var result: Array[StringName] = [] + for raw_value: Variant in source: + result.append(StringName(raw_value)) + result.sort_custom(func(a: StringName, b: StringName) -> bool: return String(a) < String(b)) + return result + + +func _ordered_guest_ids() -> Array[StringName]: + if _guest_order_dirty: + _sorted_guest_ids_cache = _sorted_ids(_guests.keys()) + _guest_order_dirty = false + return _sorted_guest_ids_cache + + +static func _value(source: Dictionary, key: StringName, fallback: Variant) -> Variant: + if source.has(key): + return source[key] + var string_key := String(key) + return source[string_key] if source.has(string_key) else fallback + + +static func _has_value(source: Dictionary, key: StringName) -> bool: + return source.has(key) or source.has(String(key)) + + +static func _need_report(values: Dictionary) -> Dictionary: + # Matches _string_key_dictionary's canonical lexical key order without + # allocating and sorting a six-key array for every guest and minute. + return { + "hunger": int(values[&"hunger"]), + "hygiene": int(values[&"hygiene"]), + "intimacy": int(values[&"intimacy"]), + "leisure": int(values[&"leisure"]), + "medical": int(values[&"medical"]), + "sleep": int(values[&"sleep"]), + } + + +static func _copy(value: Variant) -> Variant: + if value is Array or value is Dictionary: + return value.duplicate(true) + return value + + +static func _vector3i(value: Variant) -> Vector3i: + if value is Vector3i: + return value + if value is Array and value.size() == 3: + return Vector3i(int(value[0]), int(value[1]), int(value[2])) + return Vector3i.ZERO + + +static func _cell_to_array(cell: Vector3i) -> Array[int]: + return [cell.x, cell.y, cell.z] + + +static func _cell_precedes(a: Vector3i, b: Vector3i) -> bool: + if a.z != b.z: + return a.z < b.z + if a.y != b.y: + return a.y < b.y + return a.x < b.x + + +static func _names_to_strings(source: Array[StringName]) -> Array[String]: + var result: Array[String] = [] + for value: StringName in source: + result.append(String(value)) + return result + + +static func _string_key_dictionary(source: Dictionary) -> Dictionary: + var result: Dictionary = {} + var keys: Array = source.keys() + keys.sort_custom(func(a: Variant, b: Variant) -> bool: return String(a) < String(b)) + for raw_key: Variant in keys: + result[String(raw_key)] = source[raw_key] + return result + + +func _fail(message: String) -> bool: + last_error = message + return false + + +func _error_result(message: String) -> Dictionary: + last_error = message + return {&"ok": false, &"error": message} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/preexecution-root-verification.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/preexecution-root-verification.json new file mode 100644 index 0000000..968586c --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299-r02/preexecution-root-verification.json @@ -0,0 +1,123 @@ +{ + "passed": true, + "review_sha256": "091dc5eed560939aeb5597e579fd529a4e99ae1332a48547e160eef85d6ae7fe", + "verified_entries": [ + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/scripts/guest/guest_service.gd", + "bytes": 61414, + "sha256": "56880410e9a00816f9a95d30821982955532de8dd976980934e12016a9f2b21e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd", + "bytes": 63639, + "sha256": "5895d5da6488c767685b109ef01f9e2b57f41272d49cc9e3c415865769adc11d" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/original_guest_service.gd", + "bytes": 61426, + "sha256": "88b993d4b71ea1b8684245f1fd925d4cda0f4f64f4a5572345e7d0566df29390" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/custom_definition.gd", + "bytes": 281, + "sha256": "d29c18196c89452a0ba6db8ec17d0ac2e75be2b6092533c734288230bc44f0c7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/local.gd", + "bytes": 8749, + "sha256": "3259350158c36e5db0469bce10d75a5bba231e850303ab4a03938da1401886a1" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/guarded.gd", + "bytes": 529, + "sha256": "535a938786caa1c870f319a56ea7f0d2d53ccc197a9ef9345e8b19b9f34f9131" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/run_all_tests.py", + "bytes": 26296, + "sha256": "320ca668732b4ff72fc4449998af2327d4e5c527b06896740806aaf0487282b4" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/regression/owned_outer.py", + "bytes": 4177, + "sha256": "c2e3483b76db1a3ff940f23f88ea0083fc78736e874ebcdb385d766dde8866e7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r295.json", + "bytes": 9244, + "sha256": "0954f512e6065c26ffc7d06c087fe973379a48c9cebef6752f19ec52d24f59d8" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r295/input.json", + "bytes": 4366, + "sha256": "f592b9895d9253be9e7f829cd88888fe166e77e00959570f7d4a7f0c3c169489" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd", + "bytes": 17582, + "sha256": "92d5e1956f4e613e12555d756de4f71fef03678cde159ac68fac3188ce3f336e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd", + "bytes": 2276, + "sha256": "597696c705cc8f0e79a35265ca3ef8df55f7fc3c4e0e5a2ce9a4e20e29e29a6f" + }, + { + "path": "/Applications/Godot.app/Contents/MacOS/Godot", + "bytes": 351312912, + "sha256": "c7cccbf8fb143e34e02fd6521e09be2c2b974f0d5db080b19071c9c570718ccf" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02.py", + "bytes": 5550, + "sha256": "5830c5b5c3fd2d7a5220a9aab44591f411550ba12ad345a395af3811bad4a4f7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "bytes": 11472, + "sha256": "3e2eaa147e365a74145224d8995bade5b44528d59b5508dc159458555081ed99" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "bytes": 17223, + "sha256": "940dd5f51b55942f07ef7ad091ec557af4d0d7bb07d48c08b6a98bde570f32b2" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json", + "bytes": 9067, + "sha256": "e6f83f624358270199fb6a0d3236db0e20da614443514cba04d66995a671de42" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/input.json", + "bytes": 970408, + "sha256": "a6422ee7db963665bd8626d3bbfc8887c65f3a26292355082f46cc1b73c1c5f3" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-preexecution-independent-review-r299.json", + "bytes": 12734, + "sha256": "8ebca46556df998665e064e14bf83708b5923955e72edb0807a6209e99d96f0c" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md", + "bytes": 492299, + "sha256": "61776f0673770277ab6d182107337ed40a108ff3b5ab2c1a8f29fc4f2c3015ad" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md", + "bytes": 410363, + "sha256": "8b0488910dba35b34da96d7062b9a69d293e70a1963c9c5890ec32b2891baaea" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json", + "bytes": 1184337, + "sha256": "32d80e911910bc762287dc3ddf0ee0ea3072ca2f0158aa2f9f355b9202cfdfeb" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json", + "bytes": 539512, + "sha256": "b417ee1b945dfe4666f3a2f3501f906756826ea88d741bb116f3dd20250c8958" + } + ], + "unit_accepted": false, + "performance_accepted": false +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299/input.json.gz b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299/input.json.gz new file mode 100644 index 0000000..45849af Binary files /dev/null and b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299/input.json.gz differ diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299/preexecution-root-verification.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299/preexecution-root-verification.json new file mode 100644 index 0000000..ee7863f --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-guest-need-normalization-local-r299/preexecution-root-verification.json @@ -0,0 +1,118 @@ +{ + "passed": true, + "review_sha256": "8ebca46556df998665e064e14bf83708b5923955e72edb0807a6209e99d96f0c", + "verified_entries": [ + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-reconstruction-local-r209/stage/scripts/guest/guest_service.gd", + "bytes": 61414, + "sha256": "56880410e9a00816f9a95d30821982955532de8dd976980934e12016a9f2b21e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd", + "bytes": 63639, + "sha256": "5895d5da6488c767685b109ef01f9e2b57f41272d49cc9e3c415865769adc11d" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/original_guest_service.gd", + "bytes": 61426, + "sha256": "88b993d4b71ea1b8684245f1fd925d4cda0f4f64f4a5572345e7d0566df29390" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/custom_definition.gd", + "bytes": 281, + "sha256": "d29c18196c89452a0ba6db8ec17d0ac2e75be2b6092533c734288230bc44f0c7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/local.gd", + "bytes": 8741, + "sha256": "92745d21d6bae5926f12321b8c01699d3157f75be931f71b835a26b9f5dde834" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/guarded.gd", + "bytes": 525, + "sha256": "1b8d7ac4ce2036f6174eae49366f2f1239a6918b77344667255ff209a07b875e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/run_all_tests.py", + "bytes": 26296, + "sha256": "320ca668732b4ff72fc4449998af2327d4e5c527b06896740806aaf0487282b4" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/tools/regression/owned_outer.py", + "bytes": 4177, + "sha256": "c2e3483b76db1a3ff940f23f88ea0083fc78736e874ebcdb385d766dde8866e7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r295.json", + "bytes": 9244, + "sha256": "0954f512e6065c26ffc7d06c087fe973379a48c9cebef6752f19ec52d24f59d8" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r295/input.json", + "bytes": 4366, + "sha256": "f592b9895d9253be9e7f829cd88888fe166e77e00959570f7d4a7f0c3c169489" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-build-preview-monitor-compressed-r06.gd", + "bytes": 17582, + "sha256": "92d5e1956f4e613e12555d756de4f71fef03678cde159ac68fac3188ce3f336e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-cache-public-mutations-r144/profile_guard.gd", + "bytes": 2276, + "sha256": "597696c705cc8f0e79a35265ca3ef8df55f7fc3c4e0e5a2ce9a4e20e29e29a6f" + }, + { + "path": "/Applications/Godot.app/Contents/MacOS/Godot", + "bytes": 351312912, + "sha256": "c7cccbf8fb143e34e02fd6521e09be2c2b974f0d5db080b19071c9c570718ccf" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299.py", + "bytes": 5542, + "sha256": "e3e2e7878a704618b1f01f4783f00831c98844b61dc47a98288bc6cea897078e" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "bytes": 11472, + "sha256": "3e2eaa147e365a74145224d8995bade5b44528d59b5508dc159458555081ed99" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "bytes": 17223, + "sha256": "940dd5f51b55942f07ef7ad091ec557af4d0d7bb07d48c08b6a98bde570f32b2" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json", + "bytes": 9067, + "sha256": "e6f83f624358270199fb6a0d3236db0e20da614443514cba04d66995a671de42" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299/input.json", + "bytes": 970229, + "sha256": "134dc5a9c3cb82f51a27424467ef48ba31c30482f257f0e37a91dfd6e51768f7" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md", + "bytes": 492299, + "sha256": "61776f0673770277ab6d182107337ed40a108ff3b5ab2c1a8f29fc4f2c3015ad" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/PROGRESS_INTEGRATION.md", + "bytes": 410363, + "sha256": "8b0488910dba35b34da96d7062b9a69d293e70a1963c9c5890ec32b2891baaea" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/work_packages.json", + "bytes": 1184337, + "sha256": "32d80e911910bc762287dc3ddf0ee0ea3072ca2f0158aa2f9f355b9202cfdfeb" + }, + { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/progress_snapshot.json", + "bytes": 539512, + "sha256": "b417ee1b945dfe4666f3a2f3501f906756826ea88d741bb116f3dd20250c8958" + } + ], + "unit_accepted": false, + "performance_accepted": false +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-progress-integration-candidate-r301/input.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-progress-integration-candidate-r301/input.json new file mode 100644 index 0000000..c0941d2 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-progress-integration-candidate-r301/input.json @@ -0,0 +1,103 @@ +{ + "before": { + "IMPLEMENTATION_PLAN.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r301/before/IMPLEMENTATION_PLAN.md", + "bytes": 492299, + "sha256": "61776f0673770277ab6d182107337ed40a108ff3b5ab2c1a8f29fc4f2c3015ad" + }, + "PROGRESS_INTEGRATION.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r301/before/PROGRESS_INTEGRATION.md", + "bytes": 410363, + "sha256": "8b0488910dba35b34da96d7062b9a69d293e70a1963c9c5890ec32b2891baaea" + }, + "work_packages.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r301/before/work_packages.json", + "bytes": 1184337, + "sha256": "32d80e911910bc762287dc3ddf0ee0ea3072ca2f0158aa2f9f355b9202cfdfeb" + }, + "progress_snapshot.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r301/before/progress_snapshot.json", + "bytes": 539512, + "sha256": "b417ee1b945dfe4666f3a2f3501f906756826ea88d741bb116f3dd20250c8958" + } + }, + "after": { + "IMPLEMENTATION_PLAN.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r301/after/IMPLEMENTATION_PLAN.md", + "bytes": 491547, + "sha256": "a308e552d656cbb13f80fddf094bcc4d417193cafd5487693ff9f742fdd5eaf7" + }, + "PROGRESS_INTEGRATION.md": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r301/after/PROGRESS_INTEGRATION.md", + "bytes": 409611, + "sha256": "2dbcf78463a9bc01fe4701ae2d4cd6c2010a32d7c7068f5e7c92383ba57d07ea" + }, + "work_packages.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r301/after/work_packages.json", + "bytes": 1185667, + "sha256": "06f5f9c37e382c8ec1612962466b837392390b38657a042739b46b8c72d001ce" + }, + "progress_snapshot.json": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r301/after/progress_snapshot.json", + "bytes": 547774, + "sha256": "b61ae8f18990aab0ea91457907bd73faa07bbcd10f5f8e8fc92e0db47c213c47" + } + }, + "proofs": [ + { + "review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "bytes": 17223, + "sha256": "940dd5f51b55942f07ef7ad091ec557af4d0d7bb07d48c08b6a98bde570f32b2" + }, + "root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json", + "bytes": 9067, + "sha256": "e6f83f624358270199fb6a0d3236db0e20da614443514cba04d66995a671de42" + } + }, + { + "review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-actual-independent-review-r299-r02.json", + "bytes": 23481, + "sha256": "892b47057267c6bd4b839985bcf490ea0bb36474e2cd4e5ad3a9644b6e4331d2" + }, + "root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/actual-root-verification.json", + "bytes": 12674, + "sha256": "05ac885cfcc93cf46a6dedadf3705ae119b43c6659c6d3d68a182dbdd4802eed" + } + }, + { + "review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-actual-independent-review-r300.json", + "bytes": 43229, + "sha256": "05594a0441ee2757b56168e44377251dfd63f5c08ddb031ae1c59f46509f10e7" + }, + "root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/actual-root-verification.json", + "bytes": 29640, + "sha256": "87e072357ed9592fab0e7eacfb4c1222c638560c9f9c1d6e831f7635d7c0e8bb" + } + } + ], + "matrix": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r301.json", + "bytes": 58071, + "sha256": "ac64c035130b63ae0a5d0dda247afc5ea07d2c77b57fede7b7558142e5279bfd" + }, + "author": { + "path": "/private/tmp/thetree-integrate-guest-need-r301.py", + "bytes": 11882, + "sha256": "563e69c028ced2ff5978dc5ea3eafc58dd49f703f6df4f3fa1061a2c6284f39e" + }, + "counts": { + "completed": 9, + "in_progress": 19, + "planned": 60 + }, + "summary_before": "P23-02は着手中・次に閉じる1件。30パッケージ/88成果、正式9/着手19/予定60、部分点なし。制作r32と選定済み未採用作業r62を保持。原17条件C01-C09/X1-X8はすべて未受入、Windows実機を要するC08/X8だけブロック。Ctrl保持wheel/左保持dragは延期・未達・免除なし。最新の局所・原S6影響・whole647検証済み実験候補はr290/library291。r285-r02の整数Array符号化/追記・単一先頭削除候補は実校正を通らず、r287の4024/112失敗を拒否記録として保持。r290は型付きINT・空classのscript不在をNILまたはnull OBJECTだけ許す判定修復で、符号化・全4校正・元fallback・記録・閾値・通知・所有処理は親と同一。静的290とbridge compile1/link1・SDK再コンパイル0のhost291を独立有限受理。局所r292-r02は同一library291をactual loadし、原260-r02の同入力/設定/原1299stage/engine/fixture bodyを照合した有効な原結果を再利用、原Budget833行・6,589,288bytes全文一致と整数codec33ケース・4024/0を独立有限受理。整数28ケースは型付き/無型・read-only/可変・int32/int64境界・窓長0/1/2/9/511/512/513・返却bytesの変更隔離を実engine bytesと比較、非整数5ケースは拒否/無変更。説明3箇所の旧対象名による未実行r292拒否は履歴保持し、r02で説明だけ修復・試験基準不変・既存libraryコピー再利用。r293-r04は同一r290/library291で元S6/GameClock24/0、直前r274/library275と同cold646/paused/speed1/同Budget257一時patch/原Pathのwhole各15/0、全11,487,732bytes原oracle同値・3所有PID正常終了・strict/private/source/default/stage/SUPPORT保護復元を独立有限受理。同期時間1214852→1217932usは隣接単発観測のみで、50ms未達・安定利益/P95/D10未証明。料金/重み/閾値/論理時刻/行動/会計/乱数/保存は変更しない。r274/275の純タグ局所278-r04・whole281、同期builtin fallback静的280と他の旧実験詳細は版付き証拠・before/previous_summaryへ保持。全172・通常OS/Windows・性能・採用・単位完成は未受入、未選定・未採用。Gitの実験checkpoint配下に空.gdignoreを置き、Budget class_nameが本体のresource走査へ混ざることを防止。正式完了追加0。次はr290/library291は今回の単発比較で性能改善を示さず追加codecの維持負担があるため不採用とし、次の性能修正元はr274/library275を保持する。r290/library291の局所・原S6影響・全保存同値証拠を保持し、代表同期負荷の必須性能未達を解消する関連修正を1件に絞る。未変更版の性能反復や全回帰を重複せず、関連変更を固めた同一最終版で必須全172・P95/D10・50ms・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。人のCtrl保持ホイールと左ボタン保持ドラッグは延期・未達・免除なし。", + "summary_after": "P23-02は着手中・次に閉じる1件。30パッケージ/88成果、正式9/着手19/予定60、部分点なし。制作r32と選定済み未採用作業r62を保持。原17条件C01-C09/X1-X8はすべて未受入、Windows実機C08/X8だけブロック。最新Guest候補r298はNeed mapを同一評価内で共有、exact service/guest/definition ScriptとDictionary guard、原validation・custom fallback・呼出/計算順序を維持。r295は局所296の単一Need測定で速度利益を示さず未採用。r298静的支持と局所299-r02の1657/0、235入力+2callback+6scalar state=243結果全文同値を独立有限受理。INT極値・String/StringName・readonly・入力保持・所有・bool/float/String scalar/stateを確認。r299説明の旧1653表記は未実行拒否記録を保持、r02は説明だけ修復しQA/1657基準不変。r300は同一r274/library275で原S6/GameClock24/0、同Budget257/原Path・cold646/paused/speed1の元Guest対r298 whole各15/0、全11,487,732 bytes原oracle同値・3所有PID正常終了・private/strict/source/default/stages/SUPPORT復元を独立有限受理。同期時間1153117→1167153usは隣接単発観測であり、安定利益/P95/D10/50msを認定しない。Object変換/nested Resource hook/script replacement・一般再入は未受入。料金/重み/閾値/論理時刻/行動/会計/乱数/保存を変更しない。既存実装親r274/library275を保持、r298は未採用。旧codec290の不採用と局所/whole証拠を履歴保持。全172・通常OS/Windows・性能・単位完成は未受入。正式完了追加0。次はr298 GuestServiceは代表whole単発比較で速度利益を示さず、任意補助共有処理を加えるため採用を見送る。r274/library275を保持し、既存の版付きattributionと現在の投影経路を照合して、同期時間を支配する経路投影処理に必要な修正を1件選ぶ。単体helper改善を全体性能へ広げず、小さな候補の追加や未変更版の全回帰を繰り返さない。採用候補を固めた同一最終版で必須全172・50ms/P95/D10・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。手動Ctrl保持wheel/左保持dragは延期・未達・免除なし。", + "formal_completed_added": 0, + "unit_accepted": false +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-progress-integration-r301/execution.json.gz b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-progress-integration-r301/execution.json.gz new file mode 100644 index 0000000..de6722c Binary files /dev/null and b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-progress-integration-r301/execution.json.gz differ diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-progress-integration-r301/plan_validation.json b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-progress-integration-r301/plan_validation.json new file mode 100644 index 0000000..dac87d0 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/guest-need-local-whole-r299-r301/p23-02-progress-integration-r301/plan_validation.json @@ -0,0 +1,259 @@ +{ + "plan_date_jst": "2026-10-02", + "scope": "planning consistency and static baseline reconciliation; not game acceptance", + "passed": true, + "checks": [ + { + "name": "all30_unique_package_ids", + "passed": true + }, + { + "name": "unique_delivery_ids", + "passed": true + }, + { + "name": "delivery_scope_and_acceptance", + "passed": true + }, + { + "name": "valid_delivery_states", + "passed": true + }, + { + "name": "completed_delivery_requires_evidence", + "passed": true + }, + { + "name": "linked_delivery_evidence_exists", + "passed": true + }, + { + "name": "known_dependency_ids", + "passed": true + }, + { + "name": "dependency_graph_acyclic", + "passed": true + }, + { + "name": "all75_original_groups_once", + "passed": true + }, + { + "name": "feature71_schedule4", + "passed": true + }, + { + "name": "coverage_known_packages", + "passed": true + }, + { + "name": "coverage_known_delivery_ids", + "passed": true + }, + { + "name": "coverage_exact_package_deliveries", + "passed": true + }, + { + "name": "package_and_requirement_mapping_agree", + "passed": true + }, + { + "name": "source_lines_preserved", + "passed": true + }, + { + "name": "old_status_not_promoted", + "passed": true + }, + { + "name": "all10_facility_supplements", + "passed": true + }, + { + "name": "P09_owns10_supplements", + "passed": true + }, + { + "name": "all10_pending_decision_groups", + "passed": true + }, + { + "name": "known_decision_references", + "passed": true + }, + { + "name": "all5_confirmed_decisions", + "passed": true + }, + { + "name": "confirmed_decision_references_exist", + "passed": true + }, + { + "name": "valid_package_states", + "passed": true + }, + { + "name": "new_completed_packages_require_evidence", + "passed": true + }, + { + "name": "acceptance_conditions_not_claimed_results", + "passed": true + }, + { + "name": "initial_revision_history_preserved", + "passed": true + }, + { + "name": "progress_contract8_views", + "passed": true + }, + { + "name": "progress_no_partial_credit", + "passed": true + }, + { + "name": "frozen_denominator_has_register", + "passed": true + }, + { + "name": "known_denominator_matches_frozen_register", + "passed": true + }, + { + "name": "progress_register_pin_matches", + "passed": true + }, + { + "name": "evidence_index_register_pin_matches", + "passed": true + }, + { + "name": "progress_index_pin_matches", + "passed": true + }, + { + "name": "known_counts_match_freeze", + "passed": true + }, + { + "name": "unresolved_final_denominator_not_reported_as_total", + "passed": true + }, + { + "name": "static_leads_not_whole_atom_acceptance", + "passed": true + }, + { + "name": "declared_limited_views_whole_atoms_unreviewed", + "passed": true + }, + { + "name": "regression_evidence_pin_matches", + "passed": true + }, + { + "name": "regression_source_time_scope_preserved", + "passed": true + }, + { + "name": "P01_P03_not_whole_package_completed", + "passed": true + }, + { + "name": "progress_schedule_excluded", + "passed": true + }, + { + "name": "baseline_materials_exist", + "passed": true + }, + { + "name": "retained_regression155_12310", + "passed": true + }, + { + "name": "new_game_tests_not_claimed", + "passed": true + }, + { + "name": "all_package_headings", + "passed": true + }, + { + "name": "all_group_rows", + "passed": true + }, + { + "name": "all_delivery_ids_in_document", + "passed": true + }, + { + "name": "encyclopedia_and_hero_rival_scope", + "passed": true + }, + { + "name": "current_native_and_longplay_not_claimed", + "passed": true + } + ], + "failed_checks": [], + "packages": 30, + "remaining_delivery_units": 88, + "current_package_state_counts": { + "completed": 1, + "in_progress": 25, + "planned": 4 + }, + "initial_snapshot_checked": false, + "historical_source_bytes_compared": false, + "covered_original_groups": 75, + "missing_original_group_ids": [], + "facility_supplements": 10, + "atomic_denominator": null, + "known_condition_denominator": 1291, + "final_denominator_established": false, + "total_game_implementation_percent": null, + "total_game_acceptance_percent": null, + "new_game_execution_count": 0, + "document_sha256": { + "ASSETS_PLATFORM_AUDIT.md": "a3a4b8ca0fb39a9abf88692285d26aa879815e092352ba304ef2758e71da50bd", + "ATOMIC_REGISTER.md": "6070143b85b7c3b9b73d7c9768d88d2dae4d20407ad54a563cb6ffd74f2373ae", + "ATOMIC_SEMANTIC_REVIEW.md": "c156b1fb57c2b4a900f27a19049510f3e9616e723d5edb3417f50d733de5be48", + "IMPLEMENTATION_PLAN.md": "a308e552d656cbb13f80fddf094bcc4d417193cafd5487693ff9f742fdd5eaf7", + "IMPORT_UNICODE_AUDIT.md": "88b2382bfbb3411fece8be7e6004ba21d8bf6a47e9d1f3cf573ea6638f79c12f", + "P09_VALUE_CONTRACTS.md": "c5abdc4543e54033b1fcfd0943cba266f664d8c10968965fd36ade40da488a25", + "PERFORMANCE_AUDIT.md": "c75e806acf825fc4a61f773a2cce7e71be335a1e25dbb15d98091097e8dc47c1", + "PROGRESS_INTEGRATION.md": "2dbcf78463a9bc01fe4701ae2d4cd6c2010a32d7c7068f5e7c92383ba57d07ea", + "REVIEW.md": "6665259dfd53be86e113aee502818104dbdb5497da9c817790a24338a4689316", + "RUNTIME_SAVE_AUDIT.md": "e88ae014c6154c7aaade5835afc2113f79ee4a4ca5a015c28a4976f8ead68883", + "assets_platform_audit.json": "a9fabd989d03071c6af6dc828fff4f021e1ece9638857c54115997923af68d77", + "atomic_denominator_freeze.json": "467e960eb0fe47241edb217f5fa2044f2de304441daf9e51a7b0cb46ffa9194d", + "atomic_requirements.json": "44530bb929fcc8c68c06d0d94da66dd04b8db7680af731b5037cd44677502938", + "atomic_requirements_validation.json": "8dc300b099cfd90fda862f138b6a528d01e9c488a2c67fe07a00a92a70f99175", + "atomic_semantic_review.json": "e300b57f22ab86aa8029ce97231fcff0d7530fd4a9134988f113a46498ada7ad", + "baseline.json": "750bb3d313cc5e2ce0d4c79e563a995abd7a78f991dee1dd75c627877b02cd7b", + "build_atomic_requirements.py": "6d6ea9e4216372dbd0f9fed3f885a4481b21a3f539a26f64cf98a6830af984c5", + "build_facility_value_contracts.py": "35027b23ce75ce9e4e0cdfc5132fd2eb771ba9f598d97750d7ecf9ecb257f769", + "current_evidence_links.json": "db1837bcc8497201134297e312f4b266a297102285307ec3075d4e23632e26c2", + "decisions.json": "ad0673051b0fa601e525f05128e0b11e2dddd9d4bae6a3e0170bbf47da35efe9", + "facility_value_contracts.json": "447388ba03a29bfac25f2bcd068665aedbb07ba7641ce86f2db93d44f4c9f326", + "facility_value_contracts_validation.json": "bf490a9ca585c48fc318e76c4a069ef244827d828d46e6415399f7710590dd16", + "performance_audit.json": "0b630b15a392c3e0366f1362bfe4ddacb968f915f54549f82e4d6fa315384762", + "progress_contract.json": "ccbdfce8c8365d5c13f59531955708834cce45acd0e136561c95295dfdb5df77", + "progress_snapshot.json": "b61ae8f18990aab0ea91457907bd73faa07bbcd10f5f8e8fc92e0db47c213c47", + "progress_validator_guard_checks.json": "72ee513fcf1cad85c24bfd0a4b472f425f6acf117928ece0f6b41e29018da627", + "progress_validator_guard_checks.r01.json": "14c26adffa5a1938241db4912e50ea54b660641ee6fee2e412d467dce14d0519", + "requirement_coverage.json": "8b5788b22ae8f49ea7e5cf048a5f0d82b54f6f193623465e0b70496b5aadd09d", + "runtime_save_audit.json": "0c0c3724371c99bc9a2a80378b30d51fec7d3d9499da02e0d6dfeaf99f01de00", + "source_atomic_coverage.json": "2ab7b9e6a2536ef248d4f7ccd695bf75a082b47018aca7a5a1b6b706fe1907bc", + "validate_atomic_requirements.py": "5b2d0b7d72cb124830fbb0a12d1434e6db698148cc5263d33fd5bd7c2953a1e0", + "validate_facility_value_contracts.py": "91640e2a76cd6cc9186f7b85c0bf379b24b6cac0d48962815235ee628e7ae43e", + "validate_plan.py": "23678227d9b3c556f1bd903f4b5b3147c4a82ce5085e10055481026803451b80", + "validator_update_checks.json": "f997d0f3de2cea29550840b1d5cb23647d64f81329de46758551e2b6c8fecc27", + "work_packages.json": "06f5f9c37e382c8ec1612962466b837392390b38657a042739b46b8c72d001ce" + } +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/p23-02-progress-integration-actual-independent-review-r301.json.gz b/docs/plans/original-completion-2026-10-02/checkpoints/p23-02-progress-integration-actual-independent-review-r301.json.gz new file mode 100644 index 0000000..020712d Binary files /dev/null and b/docs/plans/original-completion-2026-10-02/checkpoints/p23-02-progress-integration-actual-independent-review-r301.json.gz differ diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/p23-02-progress-integration-root-verification-r301.json.gz b/docs/plans/original-completion-2026-10-02/checkpoints/p23-02-progress-integration-root-verification-r301.json.gz new file mode 100644 index 0000000..aefaaf1 Binary files /dev/null and b/docs/plans/original-completion-2026-10-02/checkpoints/p23-02-progress-integration-root-verification-r301.json.gz differ diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/r301-commit-review-manifest.json b/docs/plans/original-completion-2026-10-02/checkpoints/r301-commit-review-manifest.json new file mode 100644 index 0000000..f2e510e --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/r301-commit-review-manifest.json @@ -0,0 +1,22 @@ +{ + "unit": "P23-02", + "formal_completion_added": 0, + "entries": [ + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-actual-independent-review-r301.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/p23-02-progress-integration-actual-independent-review-r301.json.gz", + "bytes": 38167, + "sha256": "0aefd18bc6d12b9f50dae3faf7d53f7120c384906708bab519a506e8432a5dd6", + "stored_bytes": 5180, + "stored_sha256": "4530048c950356d54f1bd61f6930ebc4f7a7e878220359b4422f9243df4d2661" + }, + { + "source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-root-verification-r301.json", + "checkpoint": "docs/plans/original-completion-2026-10-02/checkpoints/p23-02-progress-integration-root-verification-r301.json.gz", + "bytes": 22266, + "sha256": "9e3003128c83fd85ae95c01b27c69510fc1373a05d8762e4b8bda127694dfeaa", + "stored_bytes": 3624, + "stored_sha256": "53aa2b0c163d0f23b995e910ee7c8e89439238f809284876d5bf5fea12202343" + } + ] +} diff --git a/docs/plans/original-completion-2026-10-02/progress_snapshot.json b/docs/plans/original-completion-2026-10-02/progress_snapshot.json index 32c90b4..53424f0 100644 --- a/docs/plans/original-completion-2026-10-02/progress_snapshot.json +++ b/docs/plans/original-completion-2026-10-02/progress_snapshot.json @@ -5327,7 +5327,7 @@ { "id": "C09", "conditions": [ - "Latest r290/library291 finite local292-r02 and original S6/whole293-r04 accepted. Single whole tick1217932us; 50ms未達. Stable gain/P95/D10/50ms final performance, final172, general reentry/provider ownership, normal OS/realtime x3/exit/small-screen/same Windows and original17 remain unaccepted. Old287 codec failure and 292 metadata rejection retained; experimental codec declined, next implementation parent r274/library275 retained; no stable regression claim or adoption.", + "Latest r298 finite local299-r02 and originalS6/whole300 accepted; single whole tick1167153us, stable gain/P95/D10/50ms/final172/Object Resource script replacement/normal OS/realtime x3/exit/small screen/Windows/original17 unaccepted. Guest candidate unadopted; original r274/library275 implementation parent retained.", "原詳細・旧版条件はhistorical fieldsと旧matrixへ保持。" ], "historical_conditions": [ @@ -5378,7 +5378,7 @@ { "id": "cross-cutting-final-candidate", "conditions": [ - "原17条件を同一最終版で受入。最新版付き有限証拠と未達はr294 matrixへ保持。" + "原17条件を同一最終版で受入。最新版付き有限証拠と未達はr301 matrixへ保持。" ], "historical_conditions": [ "P23-02は着手中・次に閉じる1件。30パッケージ/88成果、正式9/着手19/予定60、部分点なし。制作r32と選定済み未採用作業r62を保持。原17条件C01-C09/X1-X8はすべて未受入、Windows実機を要するC08/X8だけブロック。Ctrl保持wheel/左保持dragは延期・未達・免除なし。最新局所/whole647検証済み実験候補はr274/library275(局所r278-r04、原S6影響/全保存同値r281を有限受理)で、単一同期1139564usは50ms未達・安定利益/P95/D10未証明。未変更版の性能反復と全回帰を増やさない。r272-r02はOS Call graphが空で診断未受入として履歴保持。r272-r03は実sampler開始banner後にreleaseし16threadの部分窓を採取、18/0・正常終了・全11,487,732bytes原oracle同値・source/default/stage/SUPPORT保護/復元を有限受理。r273-r04は既存object/SDKから別link1回、採取版と全14sectionsの配置/内容一致を独立確認し415native frameを88関数へ唯一範囲対応。重複inclusiveの行カウントからCPU比率・恒常原因・速度利益を推定しない。新候補r274/library275は原Runtimeの純粋なNeed relief/categoryタグ判定2メソッドだけを元call位置で直接翻訳、六key挿入順・全値/分岐優先を保持、毎回fresh Dictionary・memoなし。各位置のbuiltin/typed guardと元dynamic fallbackを静的受理し、SDK再コンパイル0・bridge compile1/link1・arm64 host build/strict/owned/保護を有限受理。r278-r04は同一library275をactual loadし、原15境界・タグ1028入力・実callback script変更2経路の局所比較を独立有限受理。全ordered typed候補・各入力の記録Path効果・独立所有を比較し、全Runtimeは原15境界とタグ空/全のみ比較。ticksはstairs150で実切替、pricingは元料金呼出中に実切替し元helper位置のdynamic fallback/countを確認。7358/0・strict0・所有PID16599正常終了・private/制作source/default/共有と親stage保護。r278早期継承拒否、r02 callback未到達の4失敗/SCRIPT ERROR/欠測、r03期待件数拒否は履歴保持。r280は元provider9関数の呼出を監査し、exact builtin・wellformed typed・同期処理内のfallback後context再利用を限定静的支持。並行変更/invalidObject/free/samepath偽装/一般再入所有は未認定。r281は同一274/library275で原S6影響24/0、直前265/266と同cold646/paused/speed1/同Budget257/原Pathのwhole各15/0・全11,487,732bytes原oracle同値・3所有PID正常終了・strict/private/全入力保護復元を独立有限受理。同期時間は直前1169815→新1139564usの隣接単発観測のみで、50ms未達・安定利益/P95/D10未証明。全172・通常OS/Windows・性能・採用・単位完成は未受入、未選定・未採用。料金/重み/閾値/論理時刻/通知順/行動/会計/乱数/保存は変更しない。旧実験の詳細は既存版付き証拠・過去snapshot・今回before/previous_summaryへ保持。正式完了追加0。次はr274/library275の局所・原S6影響・全保存同値証拠を保持し、代表同期処理の50ms未達を解消する必要な関連修正を1件選ぶ。関連変更を固めた同一最終版で必須全172・P95/D10・50ms・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。人のCtrl保持ホイールと左ボタン保持ドラッグは後回し・免除なし。" @@ -5401,7 +5401,7 @@ "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-01-layer-root-review-r02/related-regression-reuse.json", "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-01-layer-root-review-r02/representative-performance-reuse.json" ], - "progress_evidence": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r294.json", + "progress_evidence": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r301.json", "target_candidate_stage": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-single-index-lookup-candidate-r62/stage", "production_adopted": true, "working_candidate_adopted": false, @@ -5450,27 +5450,36 @@ "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-static-independent-review-r290.json", "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-build-actual-independent-review-r291.json", "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-local-actual-independent-review-r292-r02.json", - "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-impact-whole-actual-independent-review-r293-r04.json" + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-impact-whole-actual-independent-review-r293-r04.json", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-actual-independent-review-r299-r02.json", + "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-actual-independent-review-r300.json" ], "unselected_trial_accepted_as_unit": false, - "acceptance_matrix_reference": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r294.json", + "acceptance_matrix_reference": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r301.json", "next_implementation_parent_stage": null, "historical_native_trial_stage_r276": { "unselected_trial_candidate_stage": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-candidate-r239/stage", "next_implementation_parent_stage": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-local-names-candidate-r239/stage" }, - "unselected_trial_candidate_source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-candidate-r290/source/tree_numeric_core.cpp", - "unselected_trial_candidate_input": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-candidate-r290/input.json", - "unselected_trial_candidate_library": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-build-r291/libtree_numeric_core.macos.template_debug.dylib", + "unselected_trial_candidate_source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/source/guest_service.gd", + "unselected_trial_candidate_input": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-candidate-r298/input.json", + "unselected_trial_candidate_library": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-build-r275/libtree_numeric_core.macos.template_debug.dylib", "next_implementation_parent_source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-candidate-r274/source/tree_numeric_core.cpp", "next_implementation_parent_input": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-candidate-r274/input.json", - "native_trial_stage_status": "local292-r02 and whole293-r04 reused shared209/parent239 original1299; Budget257 transient and project restored after owned exit; no production290 stage created", + "native_trial_stage_status": "shared209/parent239 original1299 preserved; Guest298/Budget257/project transient restored after owned exits; no production298 stage", "historical_trial_source_fields_before_r294": { "unselected_trial_candidate_source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-candidate-r274/source", "unselected_trial_candidate_input": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-candidate-r274/input.json", "unselected_trial_candidate_library": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-build-r275/libtree_numeric_core.macos.template_debug.dylib", "next_implementation_parent_source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-candidate-r274/source", "next_implementation_parent_input": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-pure-tag-projection-candidate-r274/input.json" + }, + "historical_trial_source_fields_before_r301": { + "unselected_trial_candidate_source": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-candidate-r290/source/tree_numeric_core.cpp", + "unselected_trial_candidate_input": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-candidate-r290/input.json", + "unselected_trial_candidate_library": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-build-r291/libtree_numeric_core.macos.template_debug.dylib", + "progress_evidence": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r294.json" } }, "current_P14_01_contract_audit": { @@ -8915,6 +8924,70 @@ "candidate_adopted": false, "formal_completed_added": 0, "unit_accepted": false, + "whole_goal_accepted": false, + "superseded_by": "p23_02_guest_need_normalization_integration_r301" + }, + "p23_02_guest_need_normalization_integration_r301": { + "previous_summary": "P23-02は着手中・次に閉じる1件。30パッケージ/88成果、正式9/着手19/予定60、部分点なし。制作r32と選定済み未採用作業r62を保持。原17条件C01-C09/X1-X8はすべて未受入、Windows実機を要するC08/X8だけブロック。Ctrl保持wheel/左保持dragは延期・未達・免除なし。最新の局所・原S6影響・whole647検証済み実験候補はr290/library291。r285-r02の整数Array符号化/追記・単一先頭削除候補は実校正を通らず、r287の4024/112失敗を拒否記録として保持。r290は型付きINT・空classのscript不在をNILまたはnull OBJECTだけ許す判定修復で、符号化・全4校正・元fallback・記録・閾値・通知・所有処理は親と同一。静的290とbridge compile1/link1・SDK再コンパイル0のhost291を独立有限受理。局所r292-r02は同一library291をactual loadし、原260-r02の同入力/設定/原1299stage/engine/fixture bodyを照合した有効な原結果を再利用、原Budget833行・6,589,288bytes全文一致と整数codec33ケース・4024/0を独立有限受理。整数28ケースは型付き/無型・read-only/可変・int32/int64境界・窓長0/1/2/9/511/512/513・返却bytesの変更隔離を実engine bytesと比較、非整数5ケースは拒否/無変更。説明3箇所の旧対象名による未実行r292拒否は履歴保持し、r02で説明だけ修復・試験基準不変・既存libraryコピー再利用。r293-r04は同一r290/library291で元S6/GameClock24/0、直前r274/library275と同cold646/paused/speed1/同Budget257一時patch/原Pathのwhole各15/0、全11,487,732bytes原oracle同値・3所有PID正常終了・strict/private/source/default/stage/SUPPORT保護復元を独立有限受理。同期時間1214852→1217932usは隣接単発観測のみで、50ms未達・安定利益/P95/D10未証明。料金/重み/閾値/論理時刻/行動/会計/乱数/保存は変更しない。r274/275の純タグ局所278-r04・whole281、同期builtin fallback静的280と他の旧実験詳細は版付き証拠・before/previous_summaryへ保持。全172・通常OS/Windows・性能・採用・単位完成は未受入、未選定・未採用。Gitの実験checkpoint配下に空.gdignoreを置き、Budget class_nameが本体のresource走査へ混ざることを防止。正式完了追加0。次はr290/library291は今回の単発比較で性能改善を示さず追加codecの維持負担があるため不採用とし、次の性能修正元はr274/library275を保持する。r290/library291の局所・原S6影響・全保存同値証拠を保持し、代表同期負荷の必須性能未達を解消する関連修正を1件に絞る。未変更版の性能反復や全回帰を重複せず、関連変更を固めた同一最終版で必須全172・P95/D10・50ms・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。人のCtrl保持ホイールと左ボタン保持ドラッグは延期・未達・免除なし。", + "proofs": [ + { + "review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "bytes": 17223, + "sha256": "940dd5f51b55942f07ef7ad091ec557af4d0d7bb07d48c08b6a98bde570f32b2" + }, + "root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json", + "bytes": 9067, + "sha256": "e6f83f624358270199fb6a0d3236db0e20da614443514cba04d66995a671de42" + } + }, + { + "review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-actual-independent-review-r299-r02.json", + "bytes": 23481, + "sha256": "892b47057267c6bd4b839985bcf490ea0bb36474e2cd4e5ad3a9644b6e4331d2" + }, + "root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/actual-root-verification.json", + "bytes": 12674, + "sha256": "05ac885cfcc93cf46a6dedadf3705ae119b43c6659c6d3d68a182dbdd4802eed" + } + }, + { + "review": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-actual-independent-review-r300.json", + "bytes": 43229, + "sha256": "05594a0441ee2757b56168e44377251dfd63f5c08ddb031ae1c59f46509f10e7" + }, + "root": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/actual-root-verification.json", + "bytes": 29640, + "sha256": "87e072357ed9592fab0e7eacfb4c1222c638560c9f9c1d6e831f7635d7c0e8bb" + } + } + ], + "acceptance_matrix": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r301.json", + "bytes": 58071, + "sha256": "ac64c035130b63ae0a5d0dda247afc5ea07d2c77b57fede7b7558142e5279bfd" + }, + "next_action": "r298 GuestServiceは代表whole単発比較で速度利益を示さず、任意補助共有処理を加えるため採用を見送る。r274/library275を保持し、既存の版付きattributionと現在の投影経路を照合して、同期時間を支配する経路投影処理に必要な修正を1件選ぶ。単体helper改善を全体性能へ広げず、小さな候補の追加や未変更版の全回帰を繰り返さない。採用候補を固めた同一最終版で必須全172・50ms/P95/D10・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。手動Ctrl保持wheel/左保持dragは延期・未達・免除なし。", + "finite_local_accepted": true, + "finite_s6_impact_accepted": true, + "finite_whole647_equivalence_accepted": true, + "single_timing_pair": { + "baseline_us": 1153117, + "candidate_us": 1167153, + "ratio": 1.0121722253682843, + "reduction_percent": -1.2172225368284397, + "scope": "One adjacent cold paused speed1 headless observation only; no stable/P95/budget acceptance" + }, + "stable_gain_supported": false, + "stall_budget_met": false, + "candidate_adopted": false, + "formal_completed_added": 0, + "unit_accepted": false, "whole_goal_accepted": false } } 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 2ccd697..3515bc0 100644 --- a/docs/plans/original-completion-2026-10-02/work_packages.json +++ b/docs/plans/original-completion-2026-10-02/work_packages.json @@ -9405,7 +9405,7 @@ }, "legacy_state": "planned", "state_scope": "package-level; completed means whole package accepted; partial implementation is not completion", - "current_summary": "P23-02は着手中・次に閉じる1件。30パッケージ/88成果、正式9/着手19/予定60、部分点なし。制作r32と選定済み未採用作業r62を保持。原17条件C01-C09/X1-X8はすべて未受入、Windows実機を要するC08/X8だけブロック。Ctrl保持wheel/左保持dragは延期・未達・免除なし。最新の局所・原S6影響・whole647検証済み実験候補はr290/library291。r285-r02の整数Array符号化/追記・単一先頭削除候補は実校正を通らず、r287の4024/112失敗を拒否記録として保持。r290は型付きINT・空classのscript不在をNILまたはnull OBJECTだけ許す判定修復で、符号化・全4校正・元fallback・記録・閾値・通知・所有処理は親と同一。静的290とbridge compile1/link1・SDK再コンパイル0のhost291を独立有限受理。局所r292-r02は同一library291をactual loadし、原260-r02の同入力/設定/原1299stage/engine/fixture bodyを照合した有効な原結果を再利用、原Budget833行・6,589,288bytes全文一致と整数codec33ケース・4024/0を独立有限受理。整数28ケースは型付き/無型・read-only/可変・int32/int64境界・窓長0/1/2/9/511/512/513・返却bytesの変更隔離を実engine bytesと比較、非整数5ケースは拒否/無変更。説明3箇所の旧対象名による未実行r292拒否は履歴保持し、r02で説明だけ修復・試験基準不変・既存libraryコピー再利用。r293-r04は同一r290/library291で元S6/GameClock24/0、直前r274/library275と同cold646/paused/speed1/同Budget257一時patch/原Pathのwhole各15/0、全11,487,732bytes原oracle同値・3所有PID正常終了・strict/private/source/default/stage/SUPPORT保護復元を独立有限受理。同期時間1214852→1217932usは隣接単発観測のみで、50ms未達・安定利益/P95/D10未証明。料金/重み/閾値/論理時刻/行動/会計/乱数/保存は変更しない。r274/275の純タグ局所278-r04・whole281、同期builtin fallback静的280と他の旧実験詳細は版付き証拠・before/previous_summaryへ保持。全172・通常OS/Windows・性能・採用・単位完成は未受入、未選定・未採用。Gitの実験checkpoint配下に空.gdignoreを置き、Budget class_nameが本体のresource走査へ混ざることを防止。正式完了追加0。次はr290/library291は今回の単発比較で性能改善を示さず追加codecの維持負担があるため不採用とし、次の性能修正元はr274/library275を保持する。r290/library291の局所・原S6影響・全保存同値証拠を保持し、代表同期負荷の必須性能未達を解消する関連修正を1件に絞る。未変更版の性能反復や全回帰を重複せず、関連変更を固めた同一最終版で必須全172・P95/D10・50ms・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。人のCtrl保持ホイールと左ボタン保持ドラッグは延期・未達・免除なし。", + "current_summary": "P23-02は着手中・次に閉じる1件。30パッケージ/88成果、正式9/着手19/予定60、部分点なし。制作r32と選定済み未採用作業r62を保持。原17条件C01-C09/X1-X8はすべて未受入、Windows実機C08/X8だけブロック。最新Guest候補r298はNeed mapを同一評価内で共有、exact service/guest/definition ScriptとDictionary guard、原validation・custom fallback・呼出/計算順序を維持。r295は局所296の単一Need測定で速度利益を示さず未採用。r298静的支持と局所299-r02の1657/0、235入力+2callback+6scalar state=243結果全文同値を独立有限受理。INT極値・String/StringName・readonly・入力保持・所有・bool/float/String scalar/stateを確認。r299説明の旧1653表記は未実行拒否記録を保持、r02は説明だけ修復しQA/1657基準不変。r300は同一r274/library275で原S6/GameClock24/0、同Budget257/原Path・cold646/paused/speed1の元Guest対r298 whole各15/0、全11,487,732 bytes原oracle同値・3所有PID正常終了・private/strict/source/default/stages/SUPPORT復元を独立有限受理。同期時間1153117→1167153usは隣接単発観測であり、安定利益/P95/D10/50msを認定しない。Object変換/nested Resource hook/script replacement・一般再入は未受入。料金/重み/閾値/論理時刻/行動/会計/乱数/保存を変更しない。既存実装親r274/library275を保持、r298は未採用。旧codec290の不採用と局所/whole証拠を履歴保持。全172・通常OS/Windows・性能・単位完成は未受入。正式完了追加0。次はr298 GuestServiceは代表whole単発比較で速度利益を示さず、任意補助共有処理を加えるため採用を見送る。r274/library275を保持し、既存の版付きattributionと現在の投影経路を照合して、同期時間を支配する経路投影処理に必要な修正を1件選ぶ。単体helper改善を全体性能へ広げず、小さな候補の追加や未変更版の全回帰を繰り返さない。採用候補を固めた同一最終版で必須全172・50ms/P95/D10・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。手動Ctrl保持wheel/左保持dragは延期・未達・免除なし。", "remaining_deliverables": [ { "id": "P23-01", @@ -14970,9 +14970,58 @@ "scope": "Current17 unaccepted conditions and versioned finite evidence, no partial credit", "linked_at_jst": "2026-10-12T08:19:20.734747+09:00", "current_game_acceptance_inferred": false + }, + { + "path": "artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-independent-review-r298.json", + "sha256_at_integration": "940dd5f51b55942f07ef7ad091ec557af4d0d7bb07d48c08b6a98bde570f32b2", + "scope": "Finite guest static/local/S6/whole647/owned exit per receipt only; no general performance/final172/OS/Windows/adoption/unit acceptance", + "linked_at_jst": "2026-10-12T09:00:02.886305+09:00", + "current_game_acceptance_inferred": false + }, + { + "path": "artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-static-root-verification-r298.json", + "sha256_at_integration": "e6f83f624358270199fb6a0d3236db0e20da614443514cba04d66995a671de42", + "scope": "Finite guest static/local/S6/whole647/owned exit per receipt only; no general performance/final172/OS/Windows/adoption/unit acceptance", + "linked_at_jst": "2026-10-12T09:00:02.886305+09:00", + "current_game_acceptance_inferred": false + }, + { + "path": "artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-actual-independent-review-r299-r02.json", + "sha256_at_integration": "892b47057267c6bd4b839985bcf490ea0bb36474e2cd4e5ad3a9644b6e4331d2", + "scope": "Finite guest static/local/S6/whole647/owned exit per receipt only; no general performance/final172/OS/Windows/adoption/unit acceptance", + "linked_at_jst": "2026-10-12T09:00:02.886305+09:00", + "current_game_acceptance_inferred": false + }, + { + "path": "artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-local-r299-r02/actual-root-verification.json", + "sha256_at_integration": "05ac885cfcc93cf46a6dedadf3705ae119b43c6659c6d3d68a182dbdd4802eed", + "scope": "Finite guest static/local/S6/whole647/owned exit per receipt only; no general performance/final172/OS/Windows/adoption/unit acceptance", + "linked_at_jst": "2026-10-12T09:00:02.886305+09:00", + "current_game_acceptance_inferred": false + }, + { + "path": "artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-actual-independent-review-r300.json", + "sha256_at_integration": "05594a0441ee2757b56168e44377251dfd63f5c08ddb031ae1c59f46509f10e7", + "scope": "Finite guest static/local/S6/whole647/owned exit per receipt only; no general performance/final172/OS/Windows/adoption/unit acceptance", + "linked_at_jst": "2026-10-12T09:00:02.886305+09:00", + "current_game_acceptance_inferred": false + }, + { + "path": "artifacts/original-completion-2026-10-02/p23-02-guest-need-normalization-impact-whole-r300/actual-root-verification.json", + "sha256_at_integration": "87e072357ed9592fab0e7eacfb4c1222c638560c9f9c1d6e831f7635d7c0e8bb", + "scope": "Finite guest static/local/S6/whole647/owned exit per receipt only; no general performance/final172/OS/Windows/adoption/unit acceptance", + "linked_at_jst": "2026-10-12T09:00:02.886305+09:00", + "current_game_acceptance_inferred": false + }, + { + "path": "artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r301.json", + "sha256_at_integration": "ac64c035130b63ae0a5d0dda247afc5ea07d2c77b57fede7b7558142e5279bfd", + "scope": "Current17 unaccepted conditions and versioned finite evidence, no partial credit", + "linked_at_jst": "2026-10-12T09:00:02.886305+09:00", + "current_game_acceptance_inferred": false } ], - "progress_summary": "P23-02は着手中・次に閉じる1件。30パッケージ/88成果、正式9/着手19/予定60、部分点なし。制作r32と選定済み未採用作業r62を保持。原17条件C01-C09/X1-X8はすべて未受入、Windows実機を要するC08/X8だけブロック。Ctrl保持wheel/左保持dragは延期・未達・免除なし。最新の局所・原S6影響・whole647検証済み実験候補はr290/library291。r285-r02の整数Array符号化/追記・単一先頭削除候補は実校正を通らず、r287の4024/112失敗を拒否記録として保持。r290は型付きINT・空classのscript不在をNILまたはnull OBJECTだけ許す判定修復で、符号化・全4校正・元fallback・記録・閾値・通知・所有処理は親と同一。静的290とbridge compile1/link1・SDK再コンパイル0のhost291を独立有限受理。局所r292-r02は同一library291をactual loadし、原260-r02の同入力/設定/原1299stage/engine/fixture bodyを照合した有効な原結果を再利用、原Budget833行・6,589,288bytes全文一致と整数codec33ケース・4024/0を独立有限受理。整数28ケースは型付き/無型・read-only/可変・int32/int64境界・窓長0/1/2/9/511/512/513・返却bytesの変更隔離を実engine bytesと比較、非整数5ケースは拒否/無変更。説明3箇所の旧対象名による未実行r292拒否は履歴保持し、r02で説明だけ修復・試験基準不変・既存libraryコピー再利用。r293-r04は同一r290/library291で元S6/GameClock24/0、直前r274/library275と同cold646/paused/speed1/同Budget257一時patch/原Pathのwhole各15/0、全11,487,732bytes原oracle同値・3所有PID正常終了・strict/private/source/default/stage/SUPPORT保護復元を独立有限受理。同期時間1214852→1217932usは隣接単発観測のみで、50ms未達・安定利益/P95/D10未証明。料金/重み/閾値/論理時刻/行動/会計/乱数/保存は変更しない。r274/275の純タグ局所278-r04・whole281、同期builtin fallback静的280と他の旧実験詳細は版付き証拠・before/previous_summaryへ保持。全172・通常OS/Windows・性能・採用・単位完成は未受入、未選定・未採用。Gitの実験checkpoint配下に空.gdignoreを置き、Budget class_nameが本体のresource走査へ混ざることを防止。正式完了追加0。次はr290/library291は今回の単発比較で性能改善を示さず追加codecの維持負担があるため不採用とし、次の性能修正元はr274/library275を保持する。r290/library291の局所・原S6影響・全保存同値証拠を保持し、代表同期負荷の必須性能未達を解消する関連修正を1件に絞る。未変更版の性能反復や全回帰を重複せず、関連変更を固めた同一最終版で必須全172・P95/D10・50ms・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。人のCtrl保持ホイールと左ボタン保持ドラッグは延期・未達・免除なし。", + "progress_summary": "P23-02は着手中・次に閉じる1件。30パッケージ/88成果、正式9/着手19/予定60、部分点なし。制作r32と選定済み未採用作業r62を保持。原17条件C01-C09/X1-X8はすべて未受入、Windows実機C08/X8だけブロック。最新Guest候補r298はNeed mapを同一評価内で共有、exact service/guest/definition ScriptとDictionary guard、原validation・custom fallback・呼出/計算順序を維持。r295は局所296の単一Need測定で速度利益を示さず未採用。r298静的支持と局所299-r02の1657/0、235入力+2callback+6scalar state=243結果全文同値を独立有限受理。INT極値・String/StringName・readonly・入力保持・所有・bool/float/String scalar/stateを確認。r299説明の旧1653表記は未実行拒否記録を保持、r02は説明だけ修復しQA/1657基準不変。r300は同一r274/library275で原S6/GameClock24/0、同Budget257/原Path・cold646/paused/speed1の元Guest対r298 whole各15/0、全11,487,732 bytes原oracle同値・3所有PID正常終了・private/strict/source/default/stages/SUPPORT復元を独立有限受理。同期時間1153117→1167153usは隣接単発観測であり、安定利益/P95/D10/50msを認定しない。Object変換/nested Resource hook/script replacement・一般再入は未受入。料金/重み/閾値/論理時刻/行動/会計/乱数/保存を変更しない。既存実装親r274/library275を保持、r298は未採用。旧codec290の不採用と局所/whole証拠を履歴保持。全172・通常OS/Windows・性能・単位完成は未受入。正式完了追加0。次はr298 GuestServiceは代表whole単発比較で速度利益を示さず、任意補助共有処理を加えるため採用を見送る。r274/library275を保持し、既存の版付きattributionと現在の投影経路を照合して、同期時間を支配する経路投影処理に必要な修正を1件選ぶ。単体helper改善を全体性能へ広げず、小さな候補の追加や未変更版の全回帰を繰り返さない。採用候補を固めた同一最終版で必須全172・50ms/P95/D10・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。手動Ctrl保持wheel/左保持dragは延期・未達・免除なし。", "remaining_gaps": [ { "id": "C01", @@ -15033,7 +15082,7 @@ { "id": "C09", "conditions": [ - "Latest r290/library291 finite local292-r02 and original S6/whole293-r04 accepted. Single whole tick1217932us; 50ms未達. Stable gain/P95/D10/50ms final performance, final172, general reentry/provider ownership, normal OS/realtime x3/exit/small-screen/same Windows and original17 remain unaccepted. Old287 codec failure and 292 metadata rejection retained; experimental codec declined, next implementation parent r274/library275 retained; no stable regression claim or adoption.", + "Latest r298 finite local299-r02 and originalS6/whole300 accepted; single whole tick1167153us, stable gain/P95/D10/50ms/final172/Object Resource script replacement/normal OS/realtime x3/exit/small screen/Windows/original17 unaccepted. Guest candidate unadopted; original r274/library275 implementation parent retained.", "原詳細・旧版条件はhistorical fieldsと旧matrixへ保持。" ], "historical_conditions_before_r230": [ @@ -15084,12 +15133,12 @@ { "id": "cross-cutting-final-candidate", "conditions": [ - "P23-02は着手中・次に閉じる1件。30パッケージ/88成果、正式9/着手19/予定60、部分点なし。制作r32と選定済み未採用作業r62を保持。原17条件C01-C09/X1-X8はすべて未受入、Windows実機を要するC08/X8だけブロック。Ctrl保持wheel/左保持dragは延期・未達・免除なし。最新の局所・原S6影響・whole647検証済み実験候補はr290/library291。r285-r02の整数Array符号化/追記・単一先頭削除候補は実校正を通らず、r287の4024/112失敗を拒否記録として保持。r290は型付きINT・空classのscript不在をNILまたはnull OBJECTだけ許す判定修復で、符号化・全4校正・元fallback・記録・閾値・通知・所有処理は親と同一。静的290とbridge compile1/link1・SDK再コンパイル0のhost291を独立有限受理。局所r292-r02は同一library291をactual loadし、原260-r02の同入力/設定/原1299stage/engine/fixture bodyを照合した有効な原結果を再利用、原Budget833行・6,589,288bytes全文一致と整数codec33ケース・4024/0を独立有限受理。整数28ケースは型付き/無型・read-only/可変・int32/int64境界・窓長0/1/2/9/511/512/513・返却bytesの変更隔離を実engine bytesと比較、非整数5ケースは拒否/無変更。説明3箇所の旧対象名による未実行r292拒否は履歴保持し、r02で説明だけ修復・試験基準不変・既存libraryコピー再利用。r293-r04は同一r290/library291で元S6/GameClock24/0、直前r274/library275と同cold646/paused/speed1/同Budget257一時patch/原Pathのwhole各15/0、全11,487,732bytes原oracle同値・3所有PID正常終了・strict/private/source/default/stage/SUPPORT保護復元を独立有限受理。同期時間1214852→1217932usは隣接単発観測のみで、50ms未達・安定利益/P95/D10未証明。料金/重み/閾値/論理時刻/行動/会計/乱数/保存は変更しない。r274/275の純タグ局所278-r04・whole281、同期builtin fallback静的280と他の旧実験詳細は版付き証拠・before/previous_summaryへ保持。全172・通常OS/Windows・性能・採用・単位完成は未受入、未選定・未採用。Gitの実験checkpoint配下に空.gdignoreを置き、Budget class_nameが本体のresource走査へ混ざることを防止。正式完了追加0。次はr290/library291は今回の単発比較で性能改善を示さず追加codecの維持負担があるため不採用とし、次の性能修正元はr274/library275を保持する。r290/library291の局所・原S6影響・全保存同値証拠を保持し、代表同期負荷の必須性能未達を解消する関連修正を1件に絞る。未変更版の性能反復や全回帰を重複せず、関連変更を固めた同一最終版で必須全172・P95/D10・50ms・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。人のCtrl保持ホイールと左ボタン保持ドラッグは延期・未達・免除なし。" + "P23-02は着手中・次に閉じる1件。30パッケージ/88成果、正式9/着手19/予定60、部分点なし。制作r32と選定済み未採用作業r62を保持。原17条件C01-C09/X1-X8はすべて未受入、Windows実機C08/X8だけブロック。最新Guest候補r298はNeed mapを同一評価内で共有、exact service/guest/definition ScriptとDictionary guard、原validation・custom fallback・呼出/計算順序を維持。r295は局所296の単一Need測定で速度利益を示さず未採用。r298静的支持と局所299-r02の1657/0、235入力+2callback+6scalar state=243結果全文同値を独立有限受理。INT極値・String/StringName・readonly・入力保持・所有・bool/float/String scalar/stateを確認。r299説明の旧1653表記は未実行拒否記録を保持、r02は説明だけ修復しQA/1657基準不変。r300は同一r274/library275で原S6/GameClock24/0、同Budget257/原Path・cold646/paused/speed1の元Guest対r298 whole各15/0、全11,487,732 bytes原oracle同値・3所有PID正常終了・private/strict/source/default/stages/SUPPORT復元を独立有限受理。同期時間1153117→1167153usは隣接単発観測であり、安定利益/P95/D10/50msを認定しない。Object変換/nested Resource hook/script replacement・一般再入は未受入。料金/重み/閾値/論理時刻/行動/会計/乱数/保存を変更しない。既存実装親r274/library275を保持、r298は未採用。旧codec290の不採用と局所/whole証拠を履歴保持。全172・通常OS/Windows・性能・単位完成は未受入。正式完了追加0。次はr298 GuestServiceは代表whole単発比較で速度利益を示さず、任意補助共有処理を加えるため採用を見送る。r274/library275を保持し、既存の版付きattributionと現在の投影経路を照合して、同期時間を支配する経路投影処理に必要な修正を1件選ぶ。単体helper改善を全体性能へ広げず、小さな候補の追加や未変更版の全回帰を繰り返さない。採用候補を固めた同一最終版で必須全172・50ms/P95/D10・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。手動Ctrl保持wheel/左保持dragは延期・未達・免除なし。" ] } ], - "updated_at_jst": "2026-10-12T08:19:20.734747+09:00", - "acceptance_matrix_reference": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r294.json" + "updated_at_jst": "2026-10-12T09:00:02.886305+09:00", + "acceptance_matrix_reference": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r301.json" }, { "id": "P23-03", @@ -15172,7 +15221,7 @@ ], "cross_cutting_acceptance_scope": "Completion requirements only, not achieved results. Apply each to relevant slices; non-applicable views require a recorded reason.", "initial_revision_state": "in_progress", - "updated_at_jst": "2026-10-12T08:19:20.734747+09:00" + "updated_at_jst": "2026-10-12T09:00:02.886305+09:00" }, { "id": "P24",