# AOV 連續首抽最終驗證報告

驗證日期：2026-07-26（Asia/Taipei）

## 已驗證項目

| 項目 | 結果 |
|---|---|
| Python 三個主程式語法與 bytecode 編譯 | 通過 |
| 原本完整單輪流程與三張截圖 | 已由 `Tiramisu64_24` 完整執行結果驗證 |
| 普通載入完成畫面判定 | 刪除 |
| 圖示未下載、名稱仍為固定三項 | 刪除 |
| 1920×1080 縮放＋小幅亮度變動 | 仍判定普通，不會因非 1:1 像素而誤留 |
| 第一張圖額外物品名稱 `BONUS`（故障注入） | 保留 |
| 第一張圖明顯不同獎勵（故障注入） | 保留 |
| 第三張圖左上獎品加上勾號（故障注入） | 保留 |
| 下載箭頭替代第三張圖左上頭像 | 刪除 |
| 單輪子程序主動失敗 | 外層正常記錄並完成該輪，不使 supervisor 崩潰 |
| watchdog 終止無回應程序 | 通過（SIGTERM，exit `-15`） |
| 同時啟動第二個批次 | 被檔案鎖拒絕 |
| 刪除既有受保護引擎 | 被安全閘門拒絕 |
| BlueStacks Manager 精確刪除新空白引擎 | 通過（測試 `Tiramisu64_26`） |
| Manager 視窗移動後精確刪除 | 通過（測試 `Tiramisu64_27`） |
| 刪除測試後原有兩個引擎 | `Tiramisu64` 與 `Tiramisu64_2` 均未改變 |
| `active_round` 重複復原 | 可辨識已入帳輪次，不會重複記錄 |
| HTML 儀表板三張截圖與 evidence 縮圖連結 | 通過 |
| 技能 ZIP 完整性 | `unzip -t` 無錯誤 |

## 自適應雙開增量驗證

| 項目 | 結果 |
|---|---|
| `--parallel` 正式上限 | 僅接受 1 或 2，拒絕 3 |
| 雙 worker 假程序排程 | 通過；同時達到 2 個 active worker，輪次編號固定且不重號 |
| 完成順序不同 | `rounds` 載入與 Dashboard 仍依永久輪次編號排序 |
| 單一 worker 模擬崩潰 | 該輪獨立復原，另一 worker 正常完成 |
| `active_round.json` 遷移 | 通過；轉成 `active_rounds.json` 並精確推斷該輪引擎 |
| 全機 BlueStacks 生命週期鎖 | 三執行緒競爭測試峰值同時進入數為 1 |
| 第二 worker ADB-ready 閘門 | 未 ready 時拒絕；登記 engine 與 ADB ready 後才放行 |
| 自適應資源門檻與五分鐘恢復 | 低記憶體、load、thermal、磁碟情境測試通過 |
| 單開安全相容 | 預設仍為 4 vCPU／4096 MB，其他運行中玩家引擎會被拒絕 |
| 雙開資源設定 | 3 vCPU／3072 MB、第二台延遲 120 秒、至少 26 GiB |
| 多 worker Dashboard | 同時顯示兩個輪次、stage、耗時、PID、ADB、心跳與資源統計 |
| 第 25 輪直向失敗根因 | 確認前景是 BlueStacks Store，不是遊戲；`monkey` 的事件回報為假成功 |
| 遊戲啟動補救 | 改用解析後的 launcher activity、驗證 package、最多三次啟動；錯誤前景模擬於第二次成功 |
| 真實下一輪啟動 | `Tiramisu64_54` 以 `am start -W` 冷啟動成功，第一次即驗證 `mCurrentFocus=com.garena.game.kgtw` 並進入新手流程 |
| Python／JSON／zsh 啟動器語法 | 通過 |

## 安全與容量結論

- 未中獎、失敗或逾時的批次新引擎會刪除；截圖與 log 位於獨立輸出目錄，不受影響。
- 只有任一中獎條件成立才保留引擎。
- 刪除失敗時不會繼續新增引擎，而是原地重試，避免硬碟被失敗引擎填滿。
- 刪除目標必須同時通過：本輪前不存在、精確 engine 名稱、精確 display name、已停止、Manager 搜尋後唯一一列、出現官方確認對話框。
- `fresh-run` 單輪命令本身仍維持「只關閉、不刪除」；只有新的 batch supervisor 會執行上述受限刪除。

## 尚未在此次修改後重跑的項目

尚未在雙開版上完成計畫中的 3 組／6 輪真實遊戲效能驗收。修改期間原單開主管仍在執行，依計畫未強制中斷，因此同一個 `batch.lock` 會阻止雙開主管同時啟動。程式結構、並行隔離、資源閘門、恢復與 Dashboard 已用不建立 BlueStacks 引擎的假 worker 測試；遊戲內流程則沿用既有真實成功輪次。首次真實雙開仍應觀察 6 輪的完成時間、memory pressure、swap 與 thermal 狀態。
