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 e50e088..699ba24 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・r282証拠統合) +## P23-02 現着手・次に閉じる1件(2026-10-12・r294証拠統合) -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保持ホイールと左ボタン保持ドラッグは後回し・免除なし。 +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保持ホイールと左ボタン保持ドラッグは延期・未達・免除なし。 [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 68428a8..1d745ae 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・r282証拠統合) +## P23-02 現着手・次に閉じる1件(2026-10-12・r294証拠統合) -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保持ホイールと左ボタン保持ドラッグは後回し・免除なし。 +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保持ホイールと左ボタン保持ドラッグは延期・未達・免除なし。 [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/.gdignore b/docs/plans/original-completion-2026-10-02/checkpoints/.gdignore new file mode 100644 index 0000000..e69de29 diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/integer-window-codec-r290/README.md b/docs/plans/original-completion-2026-10-02/checkpoints/integer-window-codec-r290/README.md new file mode 100644 index 0000000..da1816e --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/integer-window-codec-r290/README.md @@ -0,0 +1,11 @@ +# P23-02 integer window codec r290 checkpoint + +候補 r290/library291 のソースと有限検証の記録を保存する。今回の比較で性能改善を示さず、追加 codec の維持負担が増えるため不採用。次の性能修正元は r274/library275 を保持する。制作 r32 と選定済み未採用作業 r62 は変更しない。 + +局所 r292-r02 は 4024/0、Budget 833 行の全 6,589,288 bytes が原結果と一致。整数 codec 33 ケースは整数 28 ケースの実 engine bytes と変更隔離、非整数 5 ケースの拒否を確認。原 S6 は 24/0、whole 比較は各 15/0、全 11,487,732 bytes が原 oracle と一致。独立レビュー済みの有限な観測であり、試験件数を成果単位の完了に換算しない。 + +r293-r04 の同期時間は baseline 1,214,852 µs、candidate 1,217,932 µs。隣接単発比較であり、安定した性能差や原因を断定しない。50 ms、P95/D10、必須最終全回帰、通常 OS 操作、同一 Windows 配布版実機、原 17 条件の全受入は未達。P23-02 は着手中、正式完了追加 0。全体は 30 パッケージ / 88 成果単位、正式 9 / 着手 19 / 予定 60。手動 Ctrl 保持 wheel と左保持 drag は延期、免除なし。Windows C08/X8 だけをブロック扱いにする。 + +manifest は原ファイルとコピーのサイズ・SHA256を固定する。大きな JSON 3件(局所・whole 入力と台帳反映の実績記録)は gzip で内容保持を検証した。他のコピーは byte 完全一致。原参照の絶対パスを維持しており、SDK・stage・原 oracle・バイナリを含む単独実行パッケージではない。完全な実行証拠はローカル artifacts に保持し、ここではソース、入力、実績、独立レビュー、root 照合、台帳の参照を保存する。原 r287 の失敗も残す。各レビューは適用時の r282 正本を pin しているので、現 r294 では integration-candidate-r294/before または Git 履歴の版を使って解釈する。 + +Godot 原ソースの MIT 著作権表示を保存する。先行 r285-r02 checkpoint は保持。checkpoint 配下の .gdignore により、保存した GDScript の class_name が本体 resource 走査へ混ざることを防ぐ。 diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/integer-window-codec-r290/manifest.json b/docs/plans/original-completion-2026-10-02/checkpoints/integer-window-codec-r290/manifest.json new file mode 100644 index 0000000..821d648 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/integer-window-codec-r290/manifest.json @@ -0,0 +1,266 @@ +{ + "scope": "Evidence/source checkpoint; declined codec; retained implementation parent r274/library275", + "entries": [ + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-candidate-r290/input.json", + "checkpoint_path": "p23-02-native-integer-window-codec-candidate-r290/input.json", + "encoding": "identity", + "bytes": 6030, + "sha256": "668930b0ed56cda8dfe692323e129575bba29697907727f671778871bd507560", + "stored_bytes": 6030, + "stored_sha256": "668930b0ed56cda8dfe692323e129575bba29697907727f671778871bd507560" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-candidate-r290/source/tree_numeric_core.cpp", + "checkpoint_path": "p23-02-native-integer-window-codec-candidate-r290/source/tree_numeric_core.cpp", + "encoding": "identity", + "bytes": 59737, + "sha256": "f2156411713c341cce25f37728731b38dca6151b56dd9e848afa0531008527a0", + "stored_bytes": 59737, + "stored_sha256": "f2156411713c341cce25f37728731b38dca6151b56dd9e848afa0531008527a0" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-candidate-r290/source/tree_core.hpp", + "checkpoint_path": "p23-02-native-integer-window-codec-candidate-r290/source/tree_core.hpp", + "encoding": "identity", + "bytes": 3299, + "sha256": "be46852fe55aeee4e18996b4d87222662b031fd1b946977c81092f4d0707e480", + "stored_bytes": 3299, + "stored_sha256": "be46852fe55aeee4e18996b4d87222662b031fd1b946977c81092f4d0707e480" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-static-independent-review-r290.json", + "checkpoint_path": "p23-02-native-integer-window-codec-static-independent-review-r290.json", + "encoding": "identity", + "bytes": 15003, + "sha256": "be6cbb78a30264bb061290685f53edf77b850a9fb815ebdd1c744b2ed99ff7d5", + "stored_bytes": 15003, + "stored_sha256": "be6cbb78a30264bb061290685f53edf77b850a9fb815ebdd1c744b2ed99ff7d5" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-static-root-verification-r290.json", + "checkpoint_path": "p23-02-native-integer-window-codec-static-root-verification-r290.json", + "encoding": "identity", + "bytes": 7670, + "sha256": "88c25fa1a78334302396f70d71acfbb4cc942cea5ffb3ed7b6f5769afc7b6b3a", + "stored_bytes": 7670, + "stored_sha256": "88c25fa1a78334302396f70d71acfbb4cc942cea5ffb3ed7b6f5769afc7b6b3a" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-build-actual-independent-review-r291.json", + "checkpoint_path": "p23-02-native-integer-window-codec-build-actual-independent-review-r291.json", + "encoding": "identity", + "bytes": 39566, + "sha256": "681b686f858c703e6437028b3db51567dd58df3e1956ba84e36995dee0cabf3b", + "stored_bytes": 39566, + "stored_sha256": "681b686f858c703e6437028b3db51567dd58df3e1956ba84e36995dee0cabf3b" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-build-root-verification-r291.json", + "checkpoint_path": "p23-02-native-integer-window-codec-build-root-verification-r291.json", + "encoding": "identity", + "bytes": 22646, + "sha256": "6617af23def22877301448fb9843feb41521211a6fcac505b1028a9980631126", + "stored_bytes": 22646, + "stored_sha256": "6617af23def22877301448fb9843feb41521211a6fcac505b1028a9980631126" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-local-actual-independent-review-r287.json", + "checkpoint_path": "p23-02-native-integer-window-codec-local-actual-independent-review-r287.json", + "encoding": "identity", + "bytes": 28577, + "sha256": "ba871137bb6f4d6c73f34795b76e90fce6b53a2139b647620adf117d44fea0b8", + "stored_bytes": 28577, + "stored_sha256": "ba871137bb6f4d6c73f34795b76e90fce6b53a2139b647620adf117d44fea0b8" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-local-actual-independent-review-r292-r02.json", + "checkpoint_path": "p23-02-native-integer-window-codec-local-actual-independent-review-r292-r02.json", + "encoding": "identity", + "bytes": 40394, + "sha256": "12482ab52f4eea2534617227cb4676ecfe067591df628f4d5117efad7d66dd49", + "stored_bytes": 40394, + "stored_sha256": "12482ab52f4eea2534617227cb4676ecfe067591df628f4d5117efad7d66dd49" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-impact-whole-actual-independent-review-r293-r04.json", + "checkpoint_path": "p23-02-native-integer-window-codec-impact-whole-actual-independent-review-r293-r04.json", + "encoding": "identity", + "bytes": 59147, + "sha256": "147409de969918719f1682ff3bc537192a28d01837bfda6532ce4d1c292e9059", + "stored_bytes": 59147, + "stored_sha256": "147409de969918719f1682ff3bc537192a28d01837bfda6532ce4d1c292e9059" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-local-r292-r02.gd", + "checkpoint_path": "p23-02-native-integer-window-codec-local-r292-r02.gd", + "encoding": "identity", + "bytes": 16880, + "sha256": "6e29686f84db92ce977b7f1aedfdae81969626544facb0b0e6e7ca46634c0fb4", + "stored_bytes": 16880, + "stored_sha256": "6e29686f84db92ce977b7f1aedfdae81969626544facb0b0e6e7ca46634c0fb4" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-local-r292-r02.py", + "checkpoint_path": "p23-02-native-integer-window-codec-local-r292-r02.py", + "encoding": "identity", + "bytes": 6976, + "sha256": "ffeb4df73c14adc68baa88a32b486d0ba2805da3495d2fbe1801ba0b4ded4628", + "stored_bytes": 6976, + "stored_sha256": "ffeb4df73c14adc68baa88a32b486d0ba2805da3495d2fbe1801ba0b4ded4628" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-impact-whole-r293-r04.py", + "checkpoint_path": "p23-02-native-integer-window-codec-impact-whole-r293-r04.py", + "encoding": "identity", + "bytes": 7697, + "sha256": "00a127f686f40b60e9d11df30a56eef78e7ca1835bd104d1d45e7c9b7e632345", + "stored_bytes": 7697, + "stored_sha256": "00a127f686f40b60e9d11df30a56eef78e7ca1835bd104d1d45e7c9b7e632345" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-local-r292-r02/actual-root-verification.json", + "checkpoint_path": "p23-02-native-integer-window-codec-local-r292-r02/actual-root-verification.json", + "encoding": "identity", + "bytes": 21045, + "sha256": "c16933c5137d67f307cdb01f0f8916f95f0e25667d8a1fe8f2bb0659664265b1", + "stored_bytes": 21045, + "stored_sha256": "c16933c5137d67f307cdb01f0f8916f95f0e25667d8a1fe8f2bb0659664265b1" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-local-r292-r02/execution.json", + "checkpoint_path": "p23-02-native-integer-window-codec-local-r292-r02/execution.json", + "encoding": "identity", + "bytes": 12718, + "sha256": "5a4b118df6940db957b1c0b788210816303aa5fcb1f4dc8a3a951afce1447929", + "stored_bytes": 12718, + "stored_sha256": "5a4b118df6940db957b1c0b788210816303aa5fcb1f4dc8a3a951afce1447929" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-local-r292-r02/input.json", + "checkpoint_path": "p23-02-native-integer-window-codec-local-r292-r02/input.json.gz", + "encoding": "gzip", + "bytes": 974387, + "sha256": "99722da0e6a2745962da2bc0c58c99a26363e86eb549a3039b06674e15c594b1", + "stored_bytes": 228828, + "stored_sha256": "1f25f9c35324e102d380beb012ecbbca26f6d1f78f4f762648a8a9c15cd78f5b" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-impact-whole-r293-r04/actual-root-verification.json", + "checkpoint_path": "p23-02-native-integer-window-codec-impact-whole-r293-r04/actual-root-verification.json", + "encoding": "identity", + "bytes": 33521, + "sha256": "61d1c24434347f25abbdb8d257da8eeb16e86307e6560a9a61102cd26f7974cf", + "stored_bytes": 33521, + "stored_sha256": "61d1c24434347f25abbdb8d257da8eeb16e86307e6560a9a61102cd26f7974cf" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-impact-whole-r293-r04/execution.json", + "checkpoint_path": "p23-02-native-integer-window-codec-impact-whole-r293-r04/execution.json", + "encoding": "identity", + "bytes": 33451, + "sha256": "44d6c26b797a99e7729d1eb77e725330b2b95bd643876eb41cd11237f2488848", + "stored_bytes": 33451, + "stored_sha256": "44d6c26b797a99e7729d1eb77e725330b2b95bd643876eb41cd11237f2488848" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-impact-whole-r293-r04/input.json", + "checkpoint_path": "p23-02-native-integer-window-codec-impact-whole-r293-r04/input.json.gz", + "encoding": "gzip", + "bytes": 978430, + "sha256": "d6c18c43360b052f76065c8c0cd655ef121ef296bb937126567fc8e7d957e033", + "stored_bytes": 229590, + "stored_sha256": "34942b3594539d24d4b73b428f8c7967db707a8d2068efe2a0b4d5fcff188fa7" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-native-integer-window-codec-impact-whole-r293-r04/whole.gd", + "checkpoint_path": "p23-02-native-integer-window-codec-impact-whole-r293-r04/whole.gd", + "encoding": "identity", + "bytes": 4444, + "sha256": "66317ae90b82e8f8b8631c3458d29b2c7acaebfa5ffca449bb6f8e4b1cbc2d73", + "stored_bytes": 4444, + "stored_sha256": "66317ae90b82e8f8b8631c3458d29b2c7acaebfa5ffca449bb6f8e4b1cbc2d73" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-integer-window-codec-array-source-r289/source.json", + "checkpoint_path": "p23-02-integer-window-codec-array-source-r289/source.json", + "encoding": "identity", + "bytes": 291, + "sha256": "cd89af6dd2258fe71036edf9f92ce6302d823b68c257405e2a56795726e87834", + "stored_bytes": 291, + "stored_sha256": "cd89af6dd2258fe71036edf9f92ce6302d823b68c257405e2a56795726e87834" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-integer-window-codec-array-source-r289/array.cpp", + "checkpoint_path": "p23-02-integer-window-codec-array-source-r289/array.cpp", + "encoding": "identity", + "bytes": 27906, + "sha256": "ad9ebc6db6a962c817e2dbcee7f9c529dccd042090137e00dcf1a0594696f70b", + "stored_bytes": 27906, + "stored_sha256": "ad9ebc6db6a962c817e2dbcee7f9c529dccd042090137e00dcf1a0594696f70b" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-integer-window-codec-array-source-r289/ref-source.json", + "checkpoint_path": "p23-02-integer-window-codec-array-source-r289/ref-source.json", + "encoding": "identity", + "bytes": 306, + "sha256": "633234e67598321413393912f4b52a51b191df5b4adc944d402b10ddd5cc27eb", + "stored_bytes": 306, + "stored_sha256": "633234e67598321413393912f4b52a51b191df5b4adc944d402b10ddd5cc27eb" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-integer-window-codec-array-source-r289/ref_counted.h", + "checkpoint_path": "p23-02-integer-window-codec-array-source-r289/ref_counted.h", + "encoding": "identity", + "bytes": 7628, + "sha256": "05ef9e22f969dd4e93d5682e898b86e0ed646bf6d21a0225de9c7d68193bf074", + "stored_bytes": 7628, + "stored_sha256": "05ef9e22f969dd4e93d5682e898b86e0ed646bf6d21a0225de9c7d68193bf074" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r294.json", + "checkpoint_path": "p23-02-current-progress-disposition-r294.json", + "encoding": "identity", + "bytes": 53135, + "sha256": "360747fb5ae1484b3e8b9eee30538ffe5d59a478c607dc55fe9606c42680a614", + "stored_bytes": 53135, + "stored_sha256": "360747fb5ae1484b3e8b9eee30538ffe5d59a478c607dc55fe9606c42680a614" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-candidate-r294/input.json", + "checkpoint_path": "p23-02-progress-integration-candidate-r294/input.json", + "encoding": "identity", + "bytes": 12748, + "sha256": "f1d821645a60f5ff17ae38dc4cc317bb40c282ba5d49110c9acedf33f94cdb52", + "stored_bytes": 12748, + "stored_sha256": "f1d821645a60f5ff17ae38dc4cc317bb40c282ba5d49110c9acedf33f94cdb52" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-r294/execution.json", + "checkpoint_path": "p23-02-progress-integration-r294/execution.json.gz", + "encoding": "gzip", + "bytes": 535261, + "sha256": "1d9d628f98adfed4126cfbc14fbf0c5e2fa1a912e4f4def48ca7848d34ee6fa5", + "stored_bytes": 98803, + "stored_sha256": "4e7fb9234c71d0e839d4e9cfb0ef9dc865489ed2e03acd6934491835e8c368eb" + }, + { + "original_path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-progress-integration-r294/plan_validation.json", + "checkpoint_path": "p23-02-progress-integration-r294/plan_validation.json", + "encoding": "identity", + "bytes": 8285, + "sha256": "ba4cab2029acc4f4430fd2a8794b01dd3ffdf01bddfcb14986246898a017a881", + "stored_bytes": 8285, + "stored_sha256": "ba4cab2029acc4f4430fd2a8794b01dd3ffdf01bddfcb14986246898a017a881" + }, + { + "original_path": "/private/tmp/thetree-integrate-integer-window-codec-r294.py", + "checkpoint_path": "thetree-integrate-integer-window-codec-r294.py", + "encoding": "identity", + "bytes": 15270, + "sha256": "bc9b10e3f79f287f370c848d7e3026c72e83b2513104cb0657233374e640abe8", + "stored_bytes": 15270, + "stored_sha256": "bc9b10e3f79f287f370c848d7e3026c72e83b2513104cb0657233374e640abe8" + } + ] +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/integer-window-codec-r290/p23-02-current-progress-disposition-r294.json b/docs/plans/original-completion-2026-10-02/checkpoints/integer-window-codec-r290/p23-02-current-progress-disposition-r294.json new file mode 100644 index 0000000..283368c --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/integer-window-codec-r290/p23-02-current-progress-disposition-r294.json @@ -0,0 +1,759 @@ +{ + "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": "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" + }, + "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" + }, + "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 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." + }, + { + "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 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." + }, + { + "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 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." + }, + { + "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" + } + }, + "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": "r290/library291は今回の単発比較で性能改善を示さず追加codecの維持負担があるため不採用とし、次の性能修正元はr274/library275を保持する。r290/library291の局所・原S6影響・全保存同値証拠を保持し、代表同期負荷の必須性能未達を解消する関連修正を1件に絞る。未変更版の性能反復や全回帰を重複せず、関連変更を固めた同一最終版で必須全172・P95/D10・50ms・通常OS/x3/終了/小画面・同一Windows配布版実機と原17条件を満たす。人のCtrl保持ホイールと左ボタン保持ドラッグは延期・未達・免除なし。", + "source_previous_matrix": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p23-02-current-progress-disposition-r282.json", + "bytes": 43837, + "sha256": "b622368694390e214d7d74521cb515968380adadc821f87ca7c6432860e762bd" + }, + "latest_whole_validated_trial": "r290/library291 finite originalS6/whole293-r04", + "latest_whole_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_whole_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" + }, + "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": "r290/library291 finite Budget+integercodec local292-r02", + "latest_local_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_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" + }, + "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": "One necessary performance change against retained r274/library275 then final-version mandatory validation", + "latest_locally_validated_candidate": "r290/library291 finite292-r02", + "latest_whole_validated_candidate": "r290/library291 finite293-r04", + "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": "local292-r02 and whole293-r04 reused shared209/parent239 original1299; Budget257 transient and project restored after owned exit; no production290 stage created", + "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 + } +} diff --git a/docs/plans/original-completion-2026-10-02/checkpoints/integer-window-codec-r290/p23-02-integer-window-codec-array-source-r289/array.cpp b/docs/plans/original-completion-2026-10-02/checkpoints/integer-window-codec-r290/p23-02-integer-window-codec-array-source-r289/array.cpp new file mode 100644 index 0000000..111241a --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/checkpoints/integer-window-codec-r290/p23-02-integer-window-codec-array-source-r289/array.cpp @@ -0,0 +1,970 @@ +/**************************************************************************/ +/* array.cpp */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#include "array.h" + +STATIC_ASSERT_INCOMPLETE_TYPE(class, Dictionary); +STATIC_ASSERT_INCOMPLETE_TYPE(class, Object); +STATIC_ASSERT_INCOMPLETE_TYPE(class, String); + +#include "core/math/math_funcs.h" +#include "core/object/script_language.h" +#include "core/templates/hashfuncs.h" +#include "core/templates/vector.h" +#include "core/variant/callable.h" +#include "core/variant/container_type_validate.h" +#include "core/variant/dictionary.h" + +struct ArrayPrivate { + SafeRefCount refcount; + Vector array; + Variant *read_only = nullptr; // If enabled, a pointer is used to a temporary value that is used to return read-only values. + ContainerTypeValidate typed; + + ArrayPrivate() {} + ArrayPrivate(std::initializer_list p_init) : + array(p_init) {} +}; + +void Array::_ref(const Array &p_from) const { + ArrayPrivate *_fp = p_from._p; + + ERR_FAIL_NULL(_fp); // Should NOT happen. + + if (_fp == _p) { + return; // whatever it is, nothing to do here move along + } + + bool success = _fp->refcount.ref(); + + ERR_FAIL_COND(!success); // should really not happen either + + _unref(); + + _p = _fp; +} + +void Array::_unref() const { + if (!_p) { + return; + } + + if (_p->refcount.unref()) { + if (_p->read_only) { + memdelete(_p->read_only); + } + memdelete(_p); + } + _p = nullptr; +} + +Array::Iterator Array::begin() { + return Iterator(_p->array.ptrw(), _p->read_only); +} + +Array::Iterator Array::end() { + return Iterator(_p->array.ptrw() + _p->array.size(), _p->read_only); +} + +Array::ConstIterator Array::begin() const { + return ConstIterator(_p->array.ptr()); +} + +Array::ConstIterator Array::end() const { + return ConstIterator(_p->array.ptr() + _p->array.size()); +} + +Variant &Array::operator[](int p_idx) { + if (unlikely(_p->read_only)) { + *_p->read_only = _p->array[p_idx]; + return *_p->read_only; + } + return _p->array.write[p_idx]; +} + +const Variant &Array::operator[](int p_idx) const { + return _p->array[p_idx]; +} + +int Array::size() const { + return _p->array.size(); +} + +bool Array::is_empty() const { + return _p->array.is_empty(); +} + +void Array::clear() { + ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); + _p->array.clear(); +} + +bool Array::operator==(const Array &p_array) const { + return recursive_equal(p_array, 0); +} + +bool Array::operator!=(const Array &p_array) const { + return !recursive_equal(p_array, 0); +} + +bool Array::recursive_equal(const Array &p_array, int recursion_count) const { + // Cheap checks + if (_p == p_array._p) { + return true; + } + const Vector &a1 = _p->array; + const Vector &a2 = p_array._p->array; + const int size = a1.size(); + if (size != a2.size()) { + return false; + } + + // Heavy O(n) check + if (recursion_count > MAX_RECURSION) { + ERR_PRINT("Max recursion reached"); + return true; + } + recursion_count++; + for (int i = 0; i < size; i++) { + if (!a1[i].hash_compare(a2[i], recursion_count, false)) { + return false; + } + } + + return true; +} + +bool Array::operator<(const Array &p_array) const { + int a_len = size(); + int b_len = p_array.size(); + + int min_cmp = MIN(a_len, b_len); + + for (int i = 0; i < min_cmp; i++) { + if (operator[](i) < p_array[i]) { + return true; + } else if (p_array[i] < operator[](i)) { + return false; + } + } + + return a_len < b_len; +} + +bool Array::operator<=(const Array &p_array) const { + return !operator>(p_array); +} +bool Array::operator>(const Array &p_array) const { + return p_array < *this; +} +bool Array::operator>=(const Array &p_array) const { + return !operator<(p_array); +} + +uint32_t Array::hash() const { + return recursive_hash(0); +} + +uint32_t Array::recursive_hash(int recursion_count) const { + if (recursion_count > MAX_RECURSION) { + ERR_PRINT("Max recursion reached"); + return 0; + } + + uint32_t h = hash_murmur3_one_32(Variant::ARRAY); + + recursion_count++; + for (int i = 0; i < _p->array.size(); i++) { + h = hash_murmur3_one_32(_p->array[i].recursive_hash(recursion_count), h); + } + return hash_fmix32(h); +} + +void Array::operator=(const Array &p_array) { + if (this == &p_array) { + return; + } + _ref(p_array); +} + +void Array::assign(const Array &p_array) { + const ContainerTypeValidate &typed = _p->typed; + const ContainerTypeValidate &source_typed = p_array._p->typed; + + if (typed == source_typed || typed.type == Variant::NIL || (source_typed.type == Variant::OBJECT && typed.can_reference(source_typed))) { + // from same to same or + // from anything to variants or + // from subclasses to base classes + _p->array = p_array._p->array; + return; + } + + const Variant *source = p_array._p->array.ptr(); + int size = p_array._p->array.size(); + + if ((source_typed.type == Variant::NIL && typed.type == Variant::OBJECT) || (source_typed.type == Variant::OBJECT && source_typed.can_reference(typed))) { + // from variants to objects or + // from base classes to subclasses + for (int i = 0; i < size; i++) { + const Variant &element = source[i]; + if (element.get_type() != Variant::NIL && (element.get_type() != Variant::OBJECT || !typed.validate_object(element, "assign"))) { + ERR_FAIL_MSG(vformat(R"(Unable to convert array index %d from "%s" to "%s".)", i, Variant::get_type_name(element.get_type()), Variant::get_type_name(typed.type))); + } + } + _p->array = p_array._p->array; + return; + } + if (typed.type == Variant::OBJECT || source_typed.type == Variant::OBJECT) { + ERR_FAIL_MSG(vformat(R"(Cannot assign contents of "Array[%s]" to "Array[%s]".)", Variant::get_type_name(source_typed.type), Variant::get_type_name(typed.type))); + } + + Vector array; + array.resize(size); + Variant *data = array.ptrw(); + + if (source_typed.type == Variant::NIL && typed.type != Variant::OBJECT) { + // from variants to primitives + for (int i = 0; i < size; i++) { + const Variant *value = source + i; + if (value->get_type() == typed.type) { + data[i] = *value; + continue; + } + if (!Variant::can_convert_strict(value->get_type(), typed.type)) { + ERR_FAIL_MSG(vformat(R"(Unable to convert array index %d from "%s" to "%s".)", i, Variant::get_type_name(value->get_type()), Variant::get_type_name(typed.type))); + } + Callable::CallError ce; + Variant::construct(typed.type, data[i], &value, 1, ce); + ERR_FAIL_COND_MSG(ce.error, vformat(R"(Unable to convert array index %d from "%s" to "%s".)", i, Variant::get_type_name(value->get_type()), Variant::get_type_name(typed.type))); + } + } else if (Variant::can_convert_strict(source_typed.type, typed.type)) { + // from primitives to different convertible primitives + for (int i = 0; i < size; i++) { + const Variant *value = source + i; + Callable::CallError ce; + Variant::construct(typed.type, data[i], &value, 1, ce); + ERR_FAIL_COND_MSG(ce.error, vformat(R"(Unable to convert array index %d from "%s" to "%s".)", i, Variant::get_type_name(value->get_type()), Variant::get_type_name(typed.type))); + } + } else { + ERR_FAIL_MSG(vformat(R"(Cannot assign contents of "Array[%s]" to "Array[%s]".)", Variant::get_type_name(source_typed.type), Variant::get_type_name(typed.type))); + } + + _p->array = array; +} + +void Array::push_back(const Variant &p_value) { + ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); + Variant value = p_value; + ERR_FAIL_COND(!_p->typed.validate(value, "push_back")); + _p->array.push_back(std::move(value)); +} + +void Array::append_array(const Array &p_array) { + ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); + + if (!is_typed() || _p->typed.can_reference(p_array._p->typed)) { + _p->array.append_array(p_array._p->array); + return; + } + + Vector validated_array = p_array._p->array; + Variant *write = validated_array.ptrw(); + for (int i = 0; i < validated_array.size(); ++i) { + ERR_FAIL_COND(!_p->typed.validate(write[i], "append_array")); + } + + _p->array.append_array(validated_array); +} + +Error Array::resize(int p_new_size) { + ERR_FAIL_COND_V_MSG(_p->read_only, ERR_LOCKED, "Array is in read-only state."); + Variant::Type &variant_type = _p->typed.type; + int old_size = _p->array.size(); + Error err = _p->array.resize_initialized(p_new_size); + if (!err && variant_type != Variant::NIL && variant_type != Variant::OBJECT) { + Variant *write = _p->array.ptrw(); + for (int i = old_size; i < p_new_size; i++) { + VariantInternal::initialize(&write[i], variant_type); + } + } + return err; +} + +Error Array::reserve(int p_new_size) { + ERR_FAIL_COND_V_MSG(_p->read_only, ERR_LOCKED, "Array is in read-only state."); + return _p->array.reserve(p_new_size); +} + +Error Array::insert(int p_pos, const Variant &p_value) { + ERR_FAIL_COND_V_MSG(_p->read_only, ERR_LOCKED, "Array is in read-only state."); + Variant value = p_value; + ERR_FAIL_COND_V(!_p->typed.validate(value, "insert"), ERR_INVALID_PARAMETER); + + if (p_pos < 0) { + // Relative offset from the end. + p_pos = _p->array.size() + p_pos; + } + + ERR_FAIL_INDEX_V_MSG(p_pos, _p->array.size() + 1, ERR_INVALID_PARAMETER, vformat("The calculated index %d is out of bounds (the array has %d elements). Leaving the array untouched.", p_pos, _p->array.size())); + + return _p->array.insert(p_pos, std::move(value)); +} + +void Array::fill(const Variant &p_value) { + ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); + Variant value = p_value; + ERR_FAIL_COND(!_p->typed.validate(value, "fill")); + _p->array.fill(std::move(value)); +} + +void Array::erase(const Variant &p_value) { + ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); + Variant value = p_value; + ERR_FAIL_COND(!_p->typed.validate(value, "erase")); + _p->array.erase(value); +} + +Variant Array::front() const { + ERR_FAIL_COND_V_MSG(_p->array.is_empty(), Variant(), "Can't take value from empty array."); + return operator[](0); +} + +Variant Array::back() const { + ERR_FAIL_COND_V_MSG(_p->array.is_empty(), Variant(), "Can't take value from empty array."); + return operator[](_p->array.size() - 1); +} + +Variant Array::pick_random() const { + ERR_FAIL_COND_V_MSG(_p->array.is_empty(), Variant(), "Can't take value from empty array."); + return operator[](Math::rand() % _p->array.size()); +} + +int Array::find(const Variant &p_value, int p_from) const { + if (_p->array.is_empty()) { + return -1; + } + Variant value = p_value; + ERR_FAIL_COND_V(!_p->typed.validate(value, "find"), -1); + + int ret = -1; + + if (p_from < 0 || size() == 0) { + return ret; + } + + for (int i = p_from; i < size(); i++) { + if (StringLikeVariantComparator::compare(_p->array[i], value)) { + ret = i; + break; + } + } + + return ret; +} + +int Array::find_custom(const Callable &p_callable, int p_from) const { + int ret = -1; + + if (p_from < 0 || size() == 0) { + return ret; + } + + const Variant *argptrs[1]; + + for (int i = p_from; i < size(); i++) { + const Variant &val = _p->array[i]; + argptrs[0] = &val; + Variant res; + Callable::CallError ce; + p_callable.callp(argptrs, 1, res, ce); + if (unlikely(ce.error != Callable::CallError::CALL_OK)) { + ERR_FAIL_V_MSG(ret, vformat("Error calling method from 'find_custom': %s.", Variant::get_callable_error_text(p_callable, argptrs, 1, ce))); + } + + ERR_FAIL_COND_V_MSG(res.get_type() != Variant::Type::BOOL, ret, "Error on method from 'find_custom': Return type of callable must be boolean."); + if (res.operator bool()) { + return i; + } + } + + return ret; +} + +int Array::rfind(const Variant &p_value, int p_from) const { + if (_p->array.is_empty()) { + return -1; + } + Variant value = p_value; + ERR_FAIL_COND_V(!_p->typed.validate(value, "rfind"), -1); + + if (p_from < 0) { + // Relative offset from the end + p_from = _p->array.size() + p_from; + } + if (p_from < 0 || p_from >= _p->array.size()) { + // Limit to array boundaries + p_from = _p->array.size() - 1; + } + + for (int i = p_from; i >= 0; i--) { + if (StringLikeVariantComparator::compare(_p->array[i], value)) { + return i; + } + } + + return -1; +} + +int Array::rfind_custom(const Callable &p_callable, int p_from) const { + if (_p->array.is_empty()) { + return -1; + } + + if (p_from < 0) { + // Relative offset from the end. + p_from = _p->array.size() + p_from; + } + if (p_from < 0 || p_from >= _p->array.size()) { + // Limit to array boundaries. + p_from = _p->array.size() - 1; + } + + const Variant *argptrs[1]; + + for (int i = p_from; i >= 0; i--) { + const Variant &val = _p->array[i]; + argptrs[0] = &val; + Variant res; + Callable::CallError ce; + p_callable.callp(argptrs, 1, res, ce); + if (unlikely(ce.error != Callable::CallError::CALL_OK)) { + ERR_FAIL_V_MSG(-1, vformat("Error calling method from 'rfind_custom': %s.", Variant::get_callable_error_text(p_callable, argptrs, 1, ce))); + } + + ERR_FAIL_COND_V_MSG(res.get_type() != Variant::Type::BOOL, -1, "Error on method from 'rfind_custom': Return type of callable must be boolean."); + if (res.operator bool()) { + return i; + } + } + + return -1; +} + +int Array::count(const Variant &p_value) const { + Variant value = p_value; + ERR_FAIL_COND_V(!_p->typed.validate(value, "count"), 0); + if (_p->array.is_empty()) { + return 0; + } + + int amount = 0; + for (int i = 0; i < _p->array.size(); i++) { + if (StringLikeVariantComparator::compare(_p->array[i], value)) { + amount++; + } + } + + return amount; +} + +bool Array::has(const Variant &p_value) const { + Variant value = p_value; + ERR_FAIL_COND_V(!_p->typed.validate(value, "use 'has'"), false); + + return find(value) != -1; +} + +void Array::remove_at(int p_pos) { + ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); + + if (p_pos < 0) { + // Relative offset from the end. + p_pos = _p->array.size() + p_pos; + } + + ERR_FAIL_INDEX_MSG(p_pos, _p->array.size(), vformat("The calculated index %d is out of bounds (the array has %d elements). Leaving the array untouched.", p_pos, _p->array.size())); + + _p->array.remove_at(p_pos); +} + +void Array::set(int p_idx, const Variant &p_value) { + ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); + Variant value = p_value; + ERR_FAIL_COND(!_p->typed.validate(value, "set")); + + _p->array.write[p_idx] = std::move(value); +} + +const Variant &Array::get(int p_idx) const { + return operator[](p_idx); +} + +Array Array::duplicate(bool p_deep) const { + return recursive_duplicate(p_deep, RESOURCE_DEEP_DUPLICATE_NONE, 0); +} + +Array Array::duplicate_deep(ResourceDeepDuplicateMode p_deep_subresources_mode) const { + return recursive_duplicate(true, p_deep_subresources_mode, 0); +} + +Array Array::recursive_duplicate(bool p_deep, ResourceDeepDuplicateMode p_deep_subresources_mode, int recursion_count) const { + Array new_arr; + new_arr._p->typed = _p->typed; + + if (recursion_count > MAX_RECURSION) { + ERR_PRINT("Max recursion reached"); + return new_arr; + } + + if (p_deep) { + bool is_call_chain_end = recursion_count == 0; + + recursion_count++; + int element_count = size(); + new_arr.resize(element_count); + Variant *write = new_arr._p->array.ptrw(); + for (int i = 0; i < element_count; i++) { + write[i] = get(i).recursive_duplicate(true, p_deep_subresources_mode, recursion_count); + } + + // Variant::recursive_duplicate() may have created a remap cache by now. + if (is_call_chain_end) { + Resource::_teardown_duplicate_from_variant(); + } + } else { + new_arr._p->array = _p->array; + } + + return new_arr; +} + +Array Array::slice(int p_begin, int p_end, int p_step, bool p_deep) const { + Array result; + result._p->typed = _p->typed; + + ERR_FAIL_COND_V_MSG(p_step == 0, result, "Slice step cannot be zero."); + + const int s = size(); + + if (s == 0 || (p_begin < -s && p_step < 0) || (p_begin >= s && p_step > 0)) { + return result; + } + + int begin = CLAMP(p_begin, -s, s - 1); + if (begin < 0) { + begin += s; + } + int end = CLAMP(p_end, -s - 1, s); + if (end < 0) { + end += s; + } + + ERR_FAIL_COND_V_MSG(p_step > 0 && begin > end, result, "Slice step is positive, but bounds are decreasing."); + ERR_FAIL_COND_V_MSG(p_step < 0 && begin < end, result, "Slice step is negative, but bounds are increasing."); + + int result_size = (end - begin) / p_step + (((end - begin) % p_step != 0) ? 1 : 0); + result.resize(result_size); + + Variant *write = result._p->array.ptrw(); + for (int src_idx = begin, dest_idx = 0; dest_idx < result_size; ++dest_idx) { + write[dest_idx] = p_deep ? get(src_idx).duplicate(true) : get(src_idx); + src_idx += p_step; + } + + return result; +} + +Array Array::filter(const Callable &p_callable) const { + Array new_arr; + new_arr.resize(size()); + new_arr._p->typed = _p->typed; + int accepted_count = 0; + + const Variant *argptrs[1]; + Variant *write = new_arr._p->array.ptrw(); + for (int i = 0; i < size(); i++) { + argptrs[0] = &get(i); + + Variant result; + Callable::CallError ce; + p_callable.callp(argptrs, 1, result, ce); + if (ce.error != Callable::CallError::CALL_OK) { + ERR_FAIL_V_MSG(Array(), vformat("Error calling method from 'filter': %s.", Variant::get_callable_error_text(p_callable, argptrs, 1, ce))); + } + + if (result.operator bool()) { + write[accepted_count] = get(i); + accepted_count++; + } + } + + new_arr.resize(accepted_count); + + return new_arr; +} + +Array Array::map(const Callable &p_callable) const { + Array new_arr; + new_arr.resize(size()); + + const Variant *argptrs[1]; + Variant *write = new_arr._p->array.ptrw(); + for (int i = 0; i < size(); i++) { + argptrs[0] = &get(i); + + Callable::CallError ce; + p_callable.callp(argptrs, 1, write[i], ce); + if (ce.error != Callable::CallError::CALL_OK) { + ERR_FAIL_V_MSG(Array(), vformat("Error calling method from 'map': %s.", Variant::get_callable_error_text(p_callable, argptrs, 1, ce))); + } + } + + return new_arr; +} + +Variant Array::reduce(const Callable &p_callable, const Variant &p_accum) const { + int start = 0; + Variant ret = p_accum; + if (ret == Variant() && size() > 0) { + ret = front(); + start = 1; + } + + const Variant *argptrs[2]; + for (int i = start; i < size(); i++) { + argptrs[0] = &ret; + argptrs[1] = &get(i); + + Variant result; + Callable::CallError ce; + p_callable.callp(argptrs, 2, result, ce); + if (ce.error != Callable::CallError::CALL_OK) { + ERR_FAIL_V_MSG(Variant(), vformat("Error calling method from 'reduce': %s.", Variant::get_callable_error_text(p_callable, argptrs, 2, ce))); + } + ret = result; + } + + return ret; +} + +bool Array::any(const Callable &p_callable) const { + const Variant *argptrs[1]; + for (int i = 0; i < size(); i++) { + argptrs[0] = &get(i); + + Variant result; + Callable::CallError ce; + p_callable.callp(argptrs, 1, result, ce); + if (ce.error != Callable::CallError::CALL_OK) { + ERR_FAIL_V_MSG(false, vformat("Error calling method from 'any': %s.", Variant::get_callable_error_text(p_callable, argptrs, 1, ce))); + } + + if (result.operator bool()) { + // Return as early as possible when one of the conditions is `true`. + // This improves performance compared to relying on `filter(...).size() >= 1`. + return true; + } + } + + return false; +} + +bool Array::all(const Callable &p_callable) const { + const Variant *argptrs[1]; + for (int i = 0; i < size(); i++) { + argptrs[0] = &get(i); + + Variant result; + Callable::CallError ce; + p_callable.callp(argptrs, 1, result, ce); + if (ce.error != Callable::CallError::CALL_OK) { + ERR_FAIL_V_MSG(false, vformat("Error calling method from 'all': %s.", Variant::get_callable_error_text(p_callable, argptrs, 1, ce))); + } + + if (!(result.operator bool())) { + // Return as early as possible when one of the inverted conditions is `false`. + // This improves performance compared to relying on `filter(...).size() >= array_size().`. + return false; + } + } + + return true; +} + +struct _ArrayVariantSort { + _FORCE_INLINE_ bool operator()(const Variant &p_l, const Variant &p_r) const { + bool valid = false; + Variant res; + Variant::evaluate(Variant::OP_LESS, p_l, p_r, res, valid); + if (!valid) { + res = false; + } + return res; + } +}; + +void Array::sort() { + ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); + _p->array.sort_custom<_ArrayVariantSort>(); +} + +void Array::sort_custom(const Callable &p_callable) { + ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); + _p->array.sort_custom(p_callable); +} + +void Array::shuffle() { + ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); + const int n = _p->array.size(); + if (n < 2) { + return; + } + Variant *data = _p->array.ptrw(); + for (int i = n - 1; i >= 1; i--) { + const int j = Math::rand() % (i + 1); + SWAP(data[i], data[j]); + } +} + +int Array::bsearch(const Variant &p_value, bool p_before) const { + Variant value = p_value; + ERR_FAIL_COND_V(!_p->typed.validate(value, "binary search"), -1); + return _p->array.span().bisect<_ArrayVariantSort>(value, p_before); +} + +int Array::bsearch_custom(const Variant &p_value, const Callable &p_callable, bool p_before) const { + Variant value = p_value; + ERR_FAIL_COND_V(!_p->typed.validate(value, "custom binary search"), -1); + + return _p->array.bsearch_custom(value, p_before, p_callable); +} + +void Array::reverse() { + ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); + _p->array.reverse(); +} + +void Array::push_front(const Variant &p_value) { + ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); + Variant value = p_value; + ERR_FAIL_COND(!_p->typed.validate(value, "push_front")); + _p->array.insert(0, std::move(value)); +} + +Variant Array::pop_back() { + ERR_FAIL_COND_V_MSG(_p->read_only, Variant(), "Array is in read-only state."); + if (!_p->array.is_empty()) { + const int n = _p->array.size() - 1; + const Variant ret = _p->array.get(n); + _p->array.resize(n); + return ret; + } + return Variant(); +} + +Variant Array::pop_front() { + ERR_FAIL_COND_V_MSG(_p->read_only, Variant(), "Array is in read-only state."); + if (!_p->array.is_empty()) { + const Variant ret = _p->array.get(0); + _p->array.remove_at(0); + return ret; + } + return Variant(); +} + +Variant Array::pop_at(int p_pos) { + ERR_FAIL_COND_V_MSG(_p->read_only, Variant(), "Array is in read-only state."); + if (_p->array.is_empty()) { + // Return `null` without printing an error to mimic `pop_back()` and `pop_front()` behavior. + return Variant(); + } + + if (p_pos < 0) { + // Relative offset from the end + p_pos = _p->array.size() + p_pos; + } + + ERR_FAIL_INDEX_V_MSG( + p_pos, + _p->array.size(), + Variant(), + vformat( + "The calculated index %s is out of bounds (the array has %s elements). Leaving the array untouched and returning `null`.", + p_pos, + _p->array.size())); + + const Variant ret = _p->array.get(p_pos); + _p->array.remove_at(p_pos); + return ret; +} + +Variant Array::min() const { + int array_size = size(); + if (array_size == 0) { + return Variant(); + } + + int min_index = 0; + Variant is_less; + for (int i = 1; i < array_size; i++) { + bool valid; + Variant::evaluate(Variant::OP_LESS, _p->array[i], _p->array[min_index], is_less, valid); + if (!valid) { + return Variant(); //not a valid comparison + } + if (bool(is_less)) { + min_index = i; + } + } + return _p->array[min_index]; +} + +Variant Array::max() const { + int array_size = size(); + if (array_size == 0) { + return Variant(); + } + + int max_index = 0; + Variant is_greater; + for (int i = 1; i < array_size; i++) { + bool valid; + Variant::evaluate(Variant::OP_GREATER, _p->array[i], _p->array[max_index], is_greater, valid); + if (!valid) { + return Variant(); //not a valid comparison + } + if (bool(is_greater)) { + max_index = i; + } + } + return _p->array[max_index]; +} + +const void *Array::id() const { + return _p; +} + +Array::Array(const Array &p_from, uint32_t p_type, const StringName &p_class_name, const Variant &p_script) { + _p = memnew(ArrayPrivate); + _p->refcount.init(); + set_typed(p_type, p_class_name, p_script); + assign(p_from); +} + +void Array::set_typed(const ContainerType &p_element_type) { + set_typed(p_element_type.builtin_type, p_element_type.class_name, p_element_type.script); +} + +void Array::set_typed(uint32_t p_type, const StringName &p_class_name, const Variant &p_script) { + ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state."); + ERR_FAIL_COND_MSG(_p->array.size() > 0, "Type can only be set when array is empty."); + ERR_FAIL_COND_MSG(_p->refcount.get() > 1, "Type can only be set when array has no more than one user."); + ERR_FAIL_COND_MSG(_p->typed.type != Variant::NIL, "Type can only be set once."); + ERR_FAIL_COND_MSG(p_class_name != StringName() && p_type != Variant::OBJECT, "Class names can only be set for type OBJECT"); + Ref