本專案發布EventAlertMod(EAM)正式服重寫。現有方案代碼作為「行為參考」,只能直接沿用舊架構作為新的架構基礎。
Docs 與最新魔獸爭霸 Wiki API 變更資訊。AGENTS.md 以及其內文指名之 .md 文件為唯一事實與 Facts-of-Truth 參考。.md原檔為唯一基準,不得以HTML作為開發事實參考。./Docs/*.md或./AGENTS.md修改時包含心智圖(Mermaid)、表格、流程圖、映像時,必須執行轉換工具(batch_convert_docs.py),在./docs_html內多產生一個同名的__EAMCODE___檔(例如檔案)。$env:EAM_DOCS_OFFLINE='1'; python .\Tools\batch_convert_docs.py,禁止未經少年欸明確授權就把 Markdown 全文送往外部翻譯服務。在更改程式碼之前,請先閱讀以下文件:
Docs/00_AI_CONTEXT.mdDocs/01_ARCHITECTURE.mdDocs/02_RETAIL_API_BOUNDARIES.mdDocs/03_STATE_SCHEMA.mdDocs/04_MODULE_CONTRACTS.mdDocs/05_PERFORMANCE_GUIDE.mdDocs/06_TEST_PLAN_RETAIL.mdDocs/07_MIGRATION_NOTES.mdDocs/08_AI_PROMPT_EXPORT_SCHEMA.mdDocs/09_KNOWN_LIMITATIONS.mdDocs/10_WARCRAFT_WIKI_12X_API_NOTES.mdDocs/11_WARCRAFT_WIKI_MAIN_MENU_TREE.mdDocs/12_CODE_COMMENTARY_GUIDE.mdDocs/14_PACKAGING_GUIDE.mdDocs/15_DEVELOPMENT_ISSUE_LOG.mdDocs/16_RETAIL_ADDON_OPTIMIZATION_ROADMAP.mdDocs/17_SUBAGENT_WORKFLOW.mdDocs/18_RETAIL_12X_CLASS_SPECIALIZATION_HERO_TALENT_DATABASE.mdDocs/19_AURA_1210_REDUX_BLUEPRINT.mdDocs/20_CDM_BYPASS_FEASIBILITY_STUDY.mdDocs/21_RACI_EXPERTS_MATRIX.mdDocs/22_QC_ROOT_CAUSE_ANALYSIS_GUIDE.mdDocs/23_AURA_CONTAINER_IMPLEMENTATION.mdDocs/24_EXPERT_COUNCIL_REVIEW_20260621.mdDocs/25_RETAIL_API_CHANGE_INTELLIGENCE.mdDocs/26_FLOW_VALIDATION_FRAMEWORK.mdDocs/27_LOCAL_WOW_ENVIRONMENT.md
舊討論脈絡可參考:
DevDocument/ChatGPT/EventAlertMod_ChatGPT_Discussion_Context.md
D:\World of Warcraft;EAM 實體專案根目錄:D:\EventAlertMod。_retail_ 為 12.0.7.68453、_ptr_ 為 12.1.0.68914、_xptr_ 為 12.0.7.68887。版本與 build 會更新,每次實機驗證前仍須重讀執行檔版本。Tools/Test-LocalWoWEnvironment.ps1;該工具以主程式 ProductVersion 斷言 patch train,並檢查 AddOns Reparse Point 仍指向實體專案。斷言失敗時不得繼續部署或實機簽收。_retail_、_ptr_、_xptr_ 的 Interface\AddOns\EventAlertMod 均為 Windows SymbolicLink,目標是 D:\EventAlertMod。所有開發修改只可作用於實體專案根目錄。robocopy /MIR、連結重建或任何可能追蹤 Reparse Point 的遞迴清理;不得把連結當成可替換的插件副本。Get-Item -Force 驗證 LinkType、Target 與 ReparsePoint。若不是連到 D:\EventAlertMod,立即停止並回報。WTF 路徑必須由版本目錄動態組合並先以 Test-Path 驗證;未經任務需要,不讀取或列出 WTF\Account 下的帳號與角色資料。Docs/27_LOCAL_WOW_ENVIRONMENT.md。不支援Classi##秘密/受保護資料規則與安全檢查 Retail 12.x 可能將光環、冷卻、作用、時間、單位或字串資料標記為 Secret / Protected / Display-only。為戰鬥中防禦 Secret/Protected 限制引發 Lua 碰撞或頭部錯誤,實施四大核心檢定 API 規範因數表索引防禦機制:
四大核心檢查功能:
issecretvalue(value):判斷特定值是否受保護之秘密值(Secret Value)。canaccessvalue(value):判斷目前是否有權限存取與讀取該值。canaccesstable(table):判斷整個表格物件可是否被安全讀取(非架構)。issecrettable(table) / hasanysecretvalues(table):檢查表格物件結構本身是否被限製或包含秘密值已。spellId 或 text 等)的密鑰去對任何非安全的嚴重自訂表進行索引操作,否則會立即觸發attempted to index a table that cannot beindexed with Key Secrets錯誤。在自訂表索引進行之前,必須先issecretvalue(key)確認該金鑰匙不是受保護的秘密值,並以canaccesstable(targetTable)檢查表安全性。canaccesstable),再讀取欄位,再確認欄位值是否為秘密(issecretvalue)。若裝備,排程離開戰鬥後刷新。能將光環、冷卻、法術、時間、單位或字串資料標記為秘密/受保護/僅顯示。為防禦戰鬥中因秘密/受保護限制引發Lua崩潰或潰決錯誤,必須四大核心檢驗API規範與表索引防禦機制:
三大核心檢查功能:
issecretvalue(value):判斷特定值是否受保護之秘密值(Secret Value)。canaccessvalue(value):判斷目前是否有權限存取與讀取該值。canaccesstable(table):判斷整個表格物件可是否被安全讀取(非架構)。issecrettable(table):檢查目標表本身是否已被標記為 Secret Table。hasanysecretvalues(table):檢查表中是否包含任何秘密值(Secret Values)。spellId 或 text 等)的密鑰去對任何非安全的嚴重自訂表進行索引操作,否則會立即觸發attempted to index a table that cannot beindexed with Key Secrets錯誤。在自訂表索引進行之前,必須先issecretvalue(key)確認該金鑰匙不是受保護的秘密值,並以canaccesstable(targetTable)檢查表安全性。canaccesstable),再讀取欄位,再確認欄位值是否為秘密(issecretvalue)。InCombatLockdown() 時延遲可能會導致 taint 的結構性變化。forceinsecure、不嘗試清除或繞過污染點、不以第三方變通方式壓制暴雪阻止行動。Docs/15_DEVELOPMENT_ISSUE_LOG.md,並綁定觸發路徑、戰鬥狀態與可重置步驟。OnUpdate手機倒數。CooldownFrame:SetCooldownFromDurationObject() 或 FontString:SetDurationText()。Cooldown:SetCountdownFormatter()、Cooldown:SetCountdownMillisecondsThreshold() 等 12.0.5 後相關能力需以文件與實機確認後使用。工具提示解析只能作為低頻、截圖、明確標記來源的後備:
- 優先使用 C_TooltipInfo 或 Blizzard 支援的顯示項目。
- 可解析靜態說明文字中的明確數值。
- 不解析剩餘時間文字作為事實。
- 不在熱路徑、戰鬥中或每幀執行工具提示抓取。
- 解析結果無法覆寫安全性API事實,只能作為匯出或僅顯示輔助。
- 解析失敗時安靜必須降級,無法產生昏暗計時器。
CreateFrame("Frame", nil, nil)。OnUpdate。C_Timer.After(function() ...)。UNIT_AURA、SPELL_UPDATE_COOLDOWN、OnUpdate、渲染器更新屬於熱路徑。pairs / ipairs;可用穩定數字索引時使用數位循環。table.insert;可用直接索引寫入時使用直接索引。table.concat,避免連續..。table.create用於預期設定:圖表、圖表、流程圖、記錄清單、圖示池、預設範本。table.create、table.freeze、table.isfrozen後備。table.freeze 只用於不可變靜態資料:、枚舉、模式、預設欄位設定檔、契約模組、原型、元表。EAM.API,但僅在確認時不會造成載入順序或測試故障時使用。SetText、SetPoint、SetSize、SetTexture、layout 寫入前先比較後次值。Docs/12_CODE_COMMENTARY_GUIDE.md。_ 匯出。backup/資料夾。__yyyyMMddHHmmss」,例如 AGENTS.md__20260526122904。Docs/15_DEVELOPMENT_ISSUE_LOG.md。eam-retail-p0-review,位置為.codex/skills/eam-retail-p0-review/SKILL.md,用於EAM正式服重寫的P0 Secret/Taint/API/靜態驗證。Docs/15_DEVELOPMENT_ISSUE_LOG.md。Docs/17_SUBAGENT_WORKFLOW.md。1.稽核:讀取完整原始碼樹、TOC、XML、SavedVariables、global、Classic/MOP分支、OnUpdate__EAMCODE_5_ _、光環/cooldownOnUpdate/C_Timer、auraEAMCODED__、ACODE_4_、aCODE_3、auraEAMCODEA__、A__uraEA__3__A__a☺
2. 方案設計:首先模組責任與遷移策略,再開始大規模模組。
3.重寫:建立核心、服務、UI、偵錯模組,取得可用的資料與使用者語意。
4.靜態驗證:執行可用的Lua語法檢查、全域變數搜尋、C_Timer.After閉包搜尋、table.freeze錯誤搜尋。
5. 報告:明確變更變更、未驗證事項、風險與下一步。
Tools/Build-CurseForgePackage.ps1。Tools/Build-CurseForgePackage.ps1 -DevMode。EventAlertMod.toc的##版本符合EventAlertMod_MN_yyyyMMdd。EventAlertMod_MN_yyyyMMdd_HHmmss.zip。Docs/14_PACKAGING_GUIDE.md。相關實踐的最終報告至少已上市:
1.更改檔案。
2.主要架構變更。
3.保留舊的EAM行為。
4. 移除舊的行為。
5. Lua / WoW API 假設。
6. table.create / table.freeze 使用摘要。
7. 秘密/受保護資料處理策略。
8. 已執行靜態驗證。
9. 未執行的驗證。
10.WoW正式服實機測試需要。
11.已知風險。
12.下一個建議任務。
Services 和 UI 目錄下的所有邏輯)中所有編碼硬/英文提示術語與 UI 字符串已完全提取為 EAM.L 中的密鑰。zhTW (繁中)、zhCN (簡中)、enUS (簡中)、koKR (韓文) 與 ruRU (俄文) 五大語系,共144個詞條。UI/Options.lua的篩選選項中引入CLASS_TOKEN_TO_ID映射,優先調用官方嫁接API GetSpecializationInfoForClassID取得最準確的本地化專精名稱,並提供雙軌本地化備份。detectClassPower 與 updatePower 部署密切注意 pcall 隔離與 issecretvalue 防衛機制,防止戰鬥中能量數值差異為秘密表時大小比較造成的 Lua 崩潰。Core/EventRouter.lua的OnEvent核心循環與Core/Scheduler.lua的定時任務回呼回呼參數化pcall容錯,確保單一模組報錯時,不會幹擾或中斷其他模組與定時的執行。C_DurationUtil.CreateDurationTextBinding 與 SetCooldownFromDurationObject 降級通道。Data/SpellArray.lua,為所有13個職業與28個英雄天賦(如暴風雨、神聖、武器惡魔儀式等)配置了最新的武器ID預設監控。issecretvalue 進行防禦性檢查。luac -p 檢查。pcall導致LuaJIT Trace編譯器中止的底層工資,並提供了模組級靜態本地回退機制;AddOn架構師建立了Docs/19_AURA_1210_REDUX_BLUEPRINT.md藍圖,全面規劃了__MEAM__CODE_4) 零點存儲CooldownViewer (冷卻管理器/CDM)作為影子載體以避戰秘密/污染限製完成實現。新建Services/ShadowHostService.lua實踐官方池Hook,並於UI/Renderer.lua中引入寄生渲染讓與級聯排版避讓,100%黑暗中配合架構CPU與Taint。評估研究可參考Docs/20_CDM_BYPASS_FEASIBILITY_STUDY.md。AuraService、完全EAMCODE_1、ItemCooldownService、GroundEffectService與__EAMCODE_全部__,五大資料服務改為驅動事件,不再與Renderer直接連接,而是向至EAM__CO8D__EAM1 86_DED__EAM__CODDE_EAM_CO8DDEAEAM__CODDE_%EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAMCODE___EAMCODE6% EAMCODE_5__%__EAM__CODDE%EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%。Managers/AlertManager.lua統一管理和調度這五類變更事件,使用Scheduler實行同步節流與批量更新(BeginBatch/EndBatch),消除佈局本身。StatePool (如 GroundEffectStatePool 和 TotemStatePool 等),在 acquire狀態對象時綁定releaseFunc,並由AlertManager在渲染後識別多__A__EA__A__3__4D__EAMCO`fstate__EAMCO"__EA安全恢復對象,完成期運行0-分配最大限度降低GC目標。ClipsChildren裁切與FrameLevel顯示導致技能名稱不顯示的問題,實施動態佈局調整。寄生模式下自動將技能名稱(nameText)移至圖示底部並設定高亮顯示圖示底部並設定高亮顯色,同時提權FrameLevel(相對於)hostIcon + 10),解決了「看不見的技能名稱」的痛點。forceinsecure、不嘗試清除或繞過污染點、不以第三方變通方式壓制暴雪阻止行動。Docs/15_DEVELOPMENT_ISSUE_LOG.md,並綁定觸發路徑、戰鬥狀態與可重置步驟。OnUpdate手機倒數。CooldownFrame:SetCooldownFromDurationObject() 或 FontString:SetDurationText()。Cooldown:SetCountdownFormatter()、Cooldown:SetCountdownMillisecondsThreshold() 等 12.0.5 後相關能力需以文件與實機確認後使用。工具提示解析只能作為低頻、截圖、明確標記來源的後備:
C_TooltipInfo 或 Blizzard 支援的顯示項目。CreateFrame("Frame", nil, nil)。OnUpdate。C_Timer.After(function() ...)。UNIT_AURA、SPELL_UPDATE_COOLDOWN、OnUpdate、渲染器更新屬於熱路徑。pairs / ipairs;可用穩定數字索引時使用數位循環。table.insert;可用直接索引寫入時使用直接索引。table.concat,避免連續..。table.create用於預期設定:圖表、圖表、流程圖、記錄清單、圖示池、預設範本。table.create、table.freeze、table.isfrozen後備。table.freeze 只用於不可變靜態資料:、枚舉、模式、預設欄位設定檔、模組合同、原型、元表。EAM.API,但僅在確認時不會造成載入順序或測試故障時使用。SetText、SetPoint、SetSize、SetTexture、layout 寫入前先比較後次值。Docs/12_CODE_COMMENTARY_GUIDE.md。_ 匯出。backup/資料夾。__yyyyMMddHHmmss」,例如 AGENTS.md__20260526122904。Docs/15_DEVELOPMENT_ISSUE_LOG.md。eam-retail-p0-review,位置為.codex/skills/eam-retail-p0-review/SKILL.md,用於EAM正式服重寫的P0 Secret/Taint/API/靜態驗證。Docs/15_DEVELOPMENT_ISSUE_LOG.md。Docs/17_SUBAGENT_WORKFLOW.md。C_Timer.After閉包搜尋、table.freeze錯誤搜尋。Tools/Build-CurseForgePackage.ps1。EventAlertMod.toc 且 ## Version 符合 EventAlertMod_MN_yyyyMMdd(開發版本時,其將覆蓋寫入命名為 DEV 跳過日期校驗)。EventAlertMod_MN_yyyyMMdd_HHmmss.zip,開發版本則為EventAlertMod_DEV_yyyyMMdd_HHmmss.zip。Docs/14_PACKAGING_GUIDE.md。相關實踐的最終報告至少已上市:
1.更改檔案。
2.主要架構變更。
3.保留舊的EAM行為。
4. 移除舊的行為。
5. Lua / WoW API 假設。
6. table.create / table.freeze 使用摘要。
7. 秘密/受保護資料處理策略。
8. 已執行靜態驗證。
9. 未執行的驗證。
10.WoW正式服實機測試需要。
11.已知風險。
12.下一個建議任務。
Services 和 UI 目錄下的所有邏輯)中所有編碼硬/英文提示術語與 UI 字符串已完全提取為 EAM.L 中的密鑰。zhTW (繁中)、zhCN (簡中)、enUS (簡中)、koKR (韓文) 與 ruRU (俄文) 五大語系,共144個詞條。UI/Options.lua的篩選選項中引入CLASS_TOKEN_TO_ID映射,優先調用官方嫁接API GetSpecializationInfoForClassID取得最準確的本地化專精名稱,並提供雙軌本地化備份。detectClassPower 與 updatePower 部署密切注意 pcall 隔離與 issecretvalue 防衛機制,防止戰鬥中能量數值差異為秘密表時大小比較造成的 Lua 崩潰。Core/EventRouter.lua的OnEvent核心循環與Core/Scheduler.lua的定時任務回呼回呼參數化pcall容錯,確保單一模組報錯時,不會幹擾或中斷其他模組與定時的執行。C_DurationUtil.CreateDurationTextBinding 與 SetCooldownFromDurationObject 降級通道。Data/SpellArray.lua,為所有13個職業與28個英雄天賦(如暴風雨、神聖、武器惡魔儀式等)配置了最新的武器ID預設監控。issecretvalue 進行防禦性檢查。luac -p 檢查。pcall導致LuaJIT Trace編譯器中止的底層工資,並提供了模組級靜態本地回退機制;AddOn架構師建立了Docs/19_AURA_1210_REDUX_BLUEPRINT.md藍圖,全面規劃了__MEAM__CODE_4) 零點存儲CooldownViewer (冷卻管理器/CDM)作為影子載體以避戰秘密/污染限製完成實現。新建Services/ShadowHostService.lua實踐官方池Hook,並於UI/Renderer.lua中引入寄生渲染讓與級聯排版避讓,100%黑暗中配合架構CPU與Taint。評估研究可參考Docs/20_CDM_BYPASS_FEASIBILITY_STUDY.md。AuraService、完全EAMCODE_1、ItemCooldownService、GroundEffectService與__EAMCODE_全部__,五大資料服務改為驅動事件,不再與Renderer直接連接,而是向至EAM__CO8D__EAM1 86_DED__EAM__CODDE_EAM_CO8DDEAEAM__CODDE_%EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAMCODE___EAMCODE6% EAMCODE_5__%__EAM__CODDE%EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%。Managers/AlertManager.lua統一管理和調度這五類變更事件,使用Scheduler實行同步節流與批量更新(BeginBatch/EndBatch),消除佈局本身。StatePool (如 GroundEffectStatePool 和 TotemStatePool 等),在 acquire狀態對象時綁定releaseFunc,並由AlertManager在渲染後識別多__A__EA__A__3__4D__EAMCO`fstate__EAMCO"__EA安全恢復對象,完成期運行0-分配最大限度降低GC目標。ClipsChildren裁切與FrameLevel顯示導致技能名稱不顯示的問題,實施動態佈局調整。寄生模式下自動將技能名稱(nameText)移至圖示底部並設定高亮顯示圖示底部並設定高亮顯色,同時提權FrameLevel(相對於)hostIcon + 10),解決了「看不見的技能名稱」的痛點。GroundEffectService 中全面刪除 COMBAT_LOG_EVENT_UNFILTERED 註冊,改為訂閱 UNIT_SPELLCAST_SUCCEEDED 並篩選 unitTarget == "player",100% unitTarget == "player",100% unitTarget == __EAMCODE10%,CO __EAMCODE_3__10%,100%,100%。 EAMDE_0 在雪天等,ClassPowerService 中追加註冊 UNIT_POWER_FREQUENT 事件,使聖能、連擊點更新反應速度達到 0ms 延遲。CooldownService註冊COOLDOWN_VIEWER_SPELL_OVERRIDE_UPDATED,當法術因天賦/狀態覆蓋變更時,即時刷新被覆蓋或原始技能的冷卻,徹底消除覆蓋時消耗/殘留Bug。AlertManager 中監聽 SPELL_ACTIVATION_OVERLAY_GLOW_SHOW 與 SPELL_ACTIVATION_OVERLAY_GLOW_HIDE 快捷列高亮事件,維護本地 glowSpells 表,以 Decorator(裝飾屬性)為形式 Aura / Cooldown 狀態新增 state.overlayGlow_EA_EA__MCO_EA 動態標記。 overlayGlow雙軌顯示金色發光,100%同步官方Proc發光。luac -p 的靜態語法檢查。visibleIcons 恆為 0 和 alertFrame.exists 恆為 false 的統計 Bug。/eam除錯資訊,新增各資料服務的active監控試劑ID清單、記憶體佔用memoryKB、glowSpells發光報表輸出清單、7大警報框底下所有活動圖示的座標與實體:IsShown(5),
-修改靜態語法檢驗:之 2 個診斷模組檔 100% 通過luac -p` 靜態語法檢查。cooldownInfo為nil)時,因infoSafe排除防衛過當而強行在畫面上顯示15個無倒數、無螺旋幾何的空圖示Bug。CooldownService.lua的shouldShow邏輯,增加cooldownInfo存在性防護,無冷卻時直接保持不顯示,恢復精確監控。CooldownService.lua 100% 通過 luac -p 靜態語法檢查。C_TooltipInfo抓取說明中的持續時間(scrapedDur)來建立非秘密的普通DurationObject與分數型計時器(TIMER_NUMERIC),讓器能夠正常渲染倒數。UI/Renderer.lua中維護activeDurationObjects,在統一的onLegacyTimerUpdate系統中每一幀進行突破:IsZero()對抗。一旦爆發,主動觸發與恢復,徹底解決秘密光環殘留Bug。AuraService.lua 與 UI/Renderer.lua 100% 修改 luac -p 靜態語法檢查。AuraService.lua、GroundEffectService.lua、TotemService.lua 的 StatePool.acquire 內,統一安全地綁定state.releaseFunc = Pool.release,並在__EAMCODE_5%」時設定為__EAMCODE_5%」圖示後能成功恢復狀態,解決了隱藏了前期分配資產池網格GC流失的嚴重P0 Bug。durationObj:IsZero() 的 pairs 輪詢與 pcall 檢查。改為在 Renderer.render 啟動時脈時,穿越 timerTokenPool 零分配令牌池取得令牌,並以 Scheduler.after 註冊單次後續任務。onDurationTimerExpired(token)判斷token激活狀態以準確與恢復隱藏。整個計時與恢復流程完全完成0-分配(零堆記憶體配置)與零輪詢CPU幾十,消除了戰鬥微卡頓,且熱路徑100%可被LuaJIT編譯,速度提升數百倍。luac -p 靜態語法檢查。define_subagent定義了EAM_Mock_Sandbox_Expert (MOCK)、EAM_Data_Guard_Expert (DATA)、EAM_DevOps_Release_Expert (DEVOPS) 和 EAM_Combat_Scraper_Expert (EAM_Combat_Scraper_Expert (__EA)CODE7__完成一個全新的專家。Docs/21_RACI_EXPERTS_MATRIX.md擴展專案的RACI職責矩陣,引入「沙盒測試」與「WTF設定檔遷移」兩個全新的任務領域,認識了新增專家的R/A__EAMCODE_4分機定位測試本專案發布EventAlertMod(EAM)正式服重寫。現有方案代碼作為「行為參考」,只能直接沿用舊架構作為新的架構基礎。
Docs 與最新魔獸爭霸 Wiki API 變更資訊。AGENTS.md 以及其內文指名之 .md 文件為唯一事實與 Facts-of-Truth 參考。.md原檔為唯一基準,不得以HTML作為開發事實參考。./Docs/*.md或./AGENTS.md修改時包含心智圖(Mermaid)、表格、流程圖、映像時,必須執行轉換工具(batch_convert_docs.py),在./docs_html內多產生一個同名的__EAMCODE___檔(例如檔案)。$env:EAM_DOCS_OFFLINE='1'; python .\Tools\batch_convert_docs.py,禁止未經少年欸明確授權就把 Markdown 全文送往外部翻譯服務。在更改程式碼之前,請先閱讀以下文件:
Docs/00_AI_CONTEXT.mdDocs/01_ARCHITECTURE.mdDocs/02_RETAIL_API_BOUNDARIES.mdDocs/03_STATE_SCHEMA.mdDocs/04_MODULE_CONTRACTS.mdDocs/05_PERFORMANCE_GUIDE.mdDocs/06_TEST_PLAN_RETAIL.mdDocs/07_MIGRATION_NOTES.mdDocs/08_AI_PROMPT_EXPORT_SCHEMA.mdDocs/09_KNOWN_LIMITATIONS.mdDocs/10_WARCRAFT_WIKI_12X_API_NOTES.mdDocs/11_WARCRAFT_WIKI_MAIN_MENU_TREE.mdDocs/12_CODE_COMMENTARY_GUIDE.mdDocs/14_PACKAGING_GUIDE.mdDocs/15_DEVELOPMENT_ISSUE_LOG.mdDocs/16_RETAIL_ADDON_OPTIMIZATION_ROADMAP.mdDocs/17_SUBAGENT_WORKFLOW.mdDocs/18_RETAIL_12X_CLASS_SPECIALIZATION_HERO_TALENT_DATABASE.mdDocs/19_AURA_1210_REDUX_BLUEPRINT.mdDocs/20_CDM_BYPASS_FEASIBILITY_STUDY.mdDocs/21_RACI_EXPERTS_MATRIX.mdDocs/22_QC_ROOT_CAUSE_ANALYSIS_GUIDE.mdDocs/23_AURA_CONTAINER_IMPLEMENTATION.mdDocs/24_EXPERT_COUNCIL_REVIEW_20260621.mdDocs/25_RETAIL_API_CHANGE_INTELLIGENCE.mdDocs/26_FLOW_VALIDATION_FRAMEWORK.mdDocs/27_LOCAL_WOW_ENVIRONMENT.md
舊討論脈絡可參考:
DevDocument/ChatGPT/EventAlertMod_ChatGPT_Discussion_Context.md
D:\World of Warcraft;EAM 實體專案根目錄:D:\EventAlertMod。_retail_ 為 12.0.7.68453、_ptr_ 為 12.1.0.68914、_xptr_ 為 12.0.7.68887。版本與 build 會更新,每次實機驗證前仍須重讀執行檔版本。Tools/Test-LocalWoWEnvironment.ps1;該工具以主程式 ProductVersion 斷言 patch train,並檢查 AddOns Reparse Point 仍指向實體專案。斷言失敗時不得繼續部署或實機簽收。_retail_、_ptr_、_xptr_ 的 Interface\AddOns\EventAlertMod 均為 Windows SymbolicLink,目標是 D:\EventAlertMod。所有開發修改只可作用於實體專案根目錄。robocopy /MIR、連結重建或任何可能追蹤 Reparse Point 的遞迴清理;不得把連結當成可替換的插件副本。Get-Item -Force 驗證 LinkType、Target 與 ReparsePoint。若不是連到 D:\EventAlertMod,立即停止並回報。WTF 路徑必須由版本目錄動態組合並先以 Test-Path 驗證;未經任務需要,不讀取或列出 WTF\Account 下的帳號與角色資料。Docs/27_LOCAL_WOW_ENVIRONMENT.md。不支援Classi##秘密/受保護資料規則與安全檢查 Retail 12.x 可能將光環、冷卻、作用、時間、單位或字串資料標記為 Secret / Protected / Display-only。為戰鬥中防禦 Secret/Protected 限制引發 Lua 碰撞或頭部錯誤,實施四大核心檢定 API 規範因數表索引防禦機制:
四大核心檢查功能:
issecretvalue(value):判斷特定值是否受保護之秘密值(Secret Value)。canaccessvalue(value):判斷目前是否有權限存取與讀取該值。canaccesstable(table):判斷整個表格物件可是否被安全讀取(非架構)。issecrettable(table) / hasanysecretvalues(table):檢查表格物件結構本身是否被限製或包含秘密值已。spellId 或 text 等)的密鑰去對任何非安全的嚴重自訂表進行索引操作,否則會立即觸發attempted to index a table that cannot beindexed with Key Secrets錯誤。在自訂表索引進行之前,必須先issecretvalue(key)確認該金鑰匙不是受保護的秘密值,並以canaccesstable(targetTable)檢查表安全性。canaccesstable),再讀取欄位,再確認欄位值是否為秘密(issecretvalue)。若裝備,排程離開戰鬥後刷新。能將光環、冷卻、法術、時間、單位或字串資料標記為秘密/受保護/僅顯示。為防禦戰鬥中因秘密/受保護限制引發Lua崩潰或潰決錯誤,必須四大核心檢驗API規範與表索引防禦機制:
三大核心檢查功能:
issecretvalue(value):判斷特定值是否受保護之秘密值(Secret Value)。canaccessvalue(value):判斷目前是否有權限存取與讀取該值。canaccesstable(table):判斷整個表格物件可是否被安全讀取(非架構)。issecrettable(table):檢查目標表本身是否已被標記為 Secret Table。hasanysecretvalues(table):檢查表中是否包含任何秘密值(Secret Values)。spellId 或 text 等)的密鑰去對任何非安全的嚴重自訂表進行索引操作,否則會立即觸發attempted to index a table that cannot beindexed with Key Secrets錯誤。在自訂表索引進行之前,必須先issecretvalue(key)確認該金鑰匙不是受保護的秘密值,並以canaccesstable(targetTable)檢查表安全性。canaccesstable),再讀取欄位,再確認欄位值是否為秘密(issecretvalue)。InCombatLockdown() 時延遲可能會導致 taint 的結構性變化。forceinsecure、不嘗試清除或繞過污染點、不以第三方變通方式壓制暴雪阻止行動。Docs/15_DEVELOPMENT_ISSUE_LOG.md,並綁定觸發路徑、戰鬥狀態與可重置步驟。OnUpdate手機倒數。CooldownFrame:SetCooldownFromDurationObject() 或 FontString:SetDurationText()。Cooldown:SetCountdownFormatter()、Cooldown:SetCountdownMillisecondsThreshold() 等 12.0.5 後相關能力需以文件與實機確認後使用。工具提示解析只能作為低頻、截圖、明確標記來源的後備:
- 優先使用 C_TooltipInfo 或 Blizzard 支援的顯示項目。
- 可解析靜態說明文字中的明確數值。
- 不解析剩餘時間文字作為事實。
- 不在熱路徑、戰鬥中或每幀執行工具提示抓取。
- 解析結果無法覆寫安全性API事實,只能作為匯出或僅顯示輔助。
- 解析失敗時安靜必須降級,無法產生昏暗計時器。
CreateFrame("Frame", nil, nil)。OnUpdate。C_Timer.After(function() ...)。UNIT_AURA、SPELL_UPDATE_COOLDOWN、OnUpdate、渲染器更新屬於熱路徑。pairs / ipairs;可用穩定數字索引時使用數位循環。table.insert;可用直接索引寫入時使用直接索引。table.concat,避免連續..。table.create用於預期設定:圖表、圖表、流程圖、記錄清單、圖示池、預設範本。table.create、table.freeze、table.isfrozen後備。table.freeze 只用於不可變靜態資料:、枚舉、模式、預設欄位設定檔、契約模組、原型、元表。EAM.API,但僅在確認時不會造成載入順序或測試故障時使用。SetText、SetPoint、SetSize、SetTexture、layout 寫入前先比較後次值。Docs/12_CODE_COMMENTARY_GUIDE.md。_ 匯出。backup/資料夾。__yyyyMMddHHmmss」,例如 AGENTS.md__20260526122904。Docs/15_DEVELOPMENT_ISSUE_LOG.md。eam-retail-p0-review,位置為.codex/skills/eam-retail-p0-review/SKILL.md,用於EAM正式服重寫的P0 Secret/Taint/API/靜態驗證。Docs/15_DEVELOPMENT_ISSUE_LOG.md。Docs/17_SUBAGENT_WORKFLOW.md。1.稽核:讀取完整原始碼樹、TOC、XML、SavedVariables、global、Classic/MOP分支、OnUpdate__EAMCODE_5_ _、光環/cooldownOnUpdate/C_Timer、auraEAMCODED__、ACODE_4_、aCODE_3、auraEAMCODEA__、A__uraEA__3__A__a☺
2. 方案設計:首先模組責任與遷移策略,再開始大規模模組。
3.重寫:建立核心、服務、UI、偵錯模組,取得可用的資料與使用者語意。
4.靜態驗證:執行可用的Lua語法檢查、全域變數搜尋、C_Timer.After閉包搜尋、table.freeze錯誤搜尋。
5. 報告:明確變更變更、未驗證事項、風險與下一步。
Tools/Build-CurseForgePackage.ps1。Tools/Build-CurseForgePackage.ps1 -DevMode。EventAlertMod.toc的##版本符合EventAlertMod_MN_yyyyMMdd。EventAlertMod_MN_yyyyMMdd_HHmmss.zip。Docs/14_PACKAGING_GUIDE.md。相關實踐的最終報告至少已上市:
1.更改檔案。
2.主要架構變更。
3.保留舊的EAM行為。
4. 移除舊的行為。
5. Lua / WoW API 假設。
6. table.create / table.freeze 使用摘要。
7. 秘密/受保護資料處理策略。
8. 已執行靜態驗證。
9. 未執行的驗證。
10.WoW正式服實機測試需要。
11.已知風險。
12.下一個建議任務。
Services 和 UI 目錄下的所有邏輯)中所有編碼硬/英文提示術語與 UI 字符串已完全提取為 EAM.L 中的密鑰。zhTW (繁中)、zhCN (簡中)、enUS (簡中)、koKR (韓文) 與 ruRU (俄文) 五大語系,共144個詞條。UI/Options.lua的篩選選項中引入CLASS_TOKEN_TO_ID映射,優先調用官方嫁接API GetSpecializationInfoForClassID取得最準確的本地化專精名稱,並提供雙軌本地化備份。detectClassPower 與 updatePower 部署密切注意 pcall 隔離與 issecretvalue 防衛機制,防止戰鬥中能量數值差異為秘密表時大小比較造成的 Lua 崩潰。Core/EventRouter.lua的OnEvent核心循環與Core/Scheduler.lua的定時任務回呼回呼參數化pcall容錯,確保單一模組報錯時,不會幹擾或中斷其他模組與定時的執行。C_DurationUtil.CreateDurationTextBinding 與 SetCooldownFromDurationObject 降級通道。Data/SpellArray.lua,為所有13個職業與28個英雄天賦(如暴風雨、神聖、武器惡魔儀式等)配置了最新的武器ID預設監控。issecretvalue 進行防禦性檢查。luac -p 檢查。pcall導致LuaJIT Trace編譯器中止的底層工資,並提供了模組級靜態本地回退機制;AddOn架構師建立了Docs/19_AURA_1210_REDUX_BLUEPRINT.md藍圖,全面規劃了__MEAM__CODE_4) 零點存儲CooldownViewer (冷卻管理器/CDM)作為影子載體以避戰秘密/污染限製完成實現。新建Services/ShadowHostService.lua實踐官方池Hook,並於UI/Renderer.lua中引入寄生渲染讓與級聯排版避讓,100%黑暗中配合架構CPU與Taint。評估研究可參考Docs/20_CDM_BYPASS_FEASIBILITY_STUDY.md。AuraService、完全EAMCODE_1、ItemCooldownService、GroundEffectService與__EAMCODE_全部__,五大資料服務改為驅動事件,不再與Renderer直接連接,而是向至EAM__CO8D__EAM1 86_DED__EAM__CODDE_EAM_CO8DDEAEAM__CODDE_%EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAMCODE___EAMCODE6% EAMCODE_5__%__EAM__CODDE%EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%。Managers/AlertManager.lua統一管理和調度這五類變更事件,使用Scheduler實行同步節流與批量更新(BeginBatch/EndBatch),消除佈局本身。StatePool (如 GroundEffectStatePool 和 TotemStatePool 等),在 acquire狀態對象時綁定releaseFunc,並由AlertManager在渲染後識別多__A__EA__A__3__4D__EAMCO`fstate__EAMCO"__EA安全恢復對象,完成期運行0-分配最大限度降低GC目標。ClipsChildren裁切與FrameLevel顯示導致技能名稱不顯示的問題,實施動態佈局調整。寄生模式下自動將技能名稱(nameText)移至圖示底部並設定高亮顯示圖示底部並設定高亮顯色,同時提權FrameLevel(相對於)hostIcon + 10),解決了「看不見的技能名稱」的痛點。forceinsecure、不嘗試清除或繞過污染點、不以第三方變通方式壓制暴雪阻止行動。Docs/15_DEVELOPMENT_ISSUE_LOG.md,並綁定觸發路徑、戰鬥狀態與可重置步驟。OnUpdate手機倒數。CooldownFrame:SetCooldownFromDurationObject() 或 FontString:SetDurationText()。Cooldown:SetCountdownFormatter()、Cooldown:SetCountdownMillisecondsThreshold() 等 12.0.5 後相關能力需以文件與實機確認後使用。工具提示解析只能作為低頻、截圖、明確標記來源的後備:
C_TooltipInfo 或 Blizzard 支援的顯示項目。CreateFrame("Frame", nil, nil)。OnUpdate。C_Timer.After(function() ...)。UNIT_AURA、SPELL_UPDATE_COOLDOWN、OnUpdate、渲染器更新屬於熱路徑。pairs / ipairs;可用穩定數字索引時使用數位循環。table.insert;可用直接索引寫入時使用直接索引。table.concat,避免連續..。table.create用於預期設定:圖表、圖表、流程圖、記錄清單、圖示池、預設範本。table.create、table.freeze、table.isfrozen後備。table.freeze 只用於不可變靜態資料:、枚舉、模式、預設欄位設定檔、模組合同、原型、元表。EAM.API,但僅在確認時不會造成載入順序或測試故障時使用。SetText、SetPoint、SetSize、SetTexture、layout 寫入前先比較後次值。Docs/12_CODE_COMMENTARY_GUIDE.md。_ 匯出。backup/資料夾。__yyyyMMddHHmmss」,例如 AGENTS.md__20260526122904。Docs/15_DEVELOPMENT_ISSUE_LOG.md。eam-retail-p0-review,位置為.codex/skills/eam-retail-p0-review/SKILL.md,用於EAM正式服重寫的P0 Secret/Taint/API/靜態驗證。Docs/15_DEVELOPMENT_ISSUE_LOG.md。Docs/17_SUBAGENT_WORKFLOW.md。C_Timer.After閉包搜尋、table.freeze錯誤搜尋。Tools/Build-CurseForgePackage.ps1。EventAlertMod.toc 且 ## Version 符合 EventAlertMod_MN_yyyyMMdd(開發版本時,其將覆蓋寫入命名為 DEV 跳過日期校驗)。EventAlertMod_MN_yyyyMMdd_HHmmss.zip,開發版本則為EventAlertMod_DEV_yyyyMMdd_HHmmss.zip。Docs/14_PACKAGING_GUIDE.md。相關實踐的最終報告至少已上市:
1.更改檔案。
2.主要架構變更。
3.保留舊的EAM行為。
4. 移除舊的行為。
5. Lua / WoW API 假設。
6. table.create / table.freeze 使用摘要。
7. 秘密/受保護資料處理策略。
8. 已執行靜態驗證。
9. 未執行的驗證。
10.WoW正式服實機測試需要。
11.已知風險。
12.下一個建議任務。
Services 和 UI 目錄下的所有邏輯)中所有編碼硬/英文提示術語與 UI 字符串已完全提取為 EAM.L 中的密鑰。zhTW (繁中)、zhCN (簡中)、enUS (簡中)、koKR (韓文) 與 ruRU (俄文) 五大語系,共144個詞條。UI/Options.lua的篩選選項中引入CLASS_TOKEN_TO_ID映射,優先調用官方嫁接API GetSpecializationInfoForClassID取得最準確的本地化專精名稱,並提供雙軌本地化備份。detectClassPower 與 updatePower 部署密切注意 pcall 隔離與 issecretvalue 防衛機制,防止戰鬥中能量數值差異為秘密表時大小比較造成的 Lua 崩潰。Core/EventRouter.lua的OnEvent核心循環與Core/Scheduler.lua的定時任務回呼回呼參數化pcall容錯,確保單一模組報錯時,不會幹擾或中斷其他模組與定時的執行。C_DurationUtil.CreateDurationTextBinding 與 SetCooldownFromDurationObject 降級通道。Data/SpellArray.lua,為所有13個職業與28個英雄天賦(如暴風雨、神聖、武器惡魔儀式等)配置了最新的武器ID預設監控。issecretvalue 進行防禦性檢查。luac -p 檢查。pcall導致LuaJIT Trace編譯器中止的底層工資,並提供了模組級靜態本地回退機制;AddOn架構師建立了Docs/19_AURA_1210_REDUX_BLUEPRINT.md藍圖,全面規劃了__MEAM__CODE_4) 零點存儲CooldownViewer (冷卻管理器/CDM)作為影子載體以避戰秘密/污染限製完成實現。新建Services/ShadowHostService.lua實踐官方池Hook,並於UI/Renderer.lua中引入寄生渲染讓與級聯排版避讓,100%黑暗中配合架構CPU與Taint。評估研究可參考Docs/20_CDM_BYPASS_FEASIBILITY_STUDY.md。AuraService、完全EAMCODE_1、ItemCooldownService、GroundEffectService與__EAMCODE_全部__,五大資料服務改為驅動事件,不再與Renderer直接連接,而是向至EAM__CO8D__EAM1 86_DED__EAM__CODDE_EAM_CO8DDEAEAM__CODDE_%EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAMCODE___EAMCODE6% EAMCODE_5__%__EAM__CODDE%EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_%__EAM__CODDE_0__EAM__CO8DDEA__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CO8DDE4__EAM__CODDE_%__EAM__CODDE_%。Managers/AlertManager.lua統一管理和調度這五類變更事件,使用Scheduler實行同步節流與批量更新(BeginBatch/EndBatch),消除佈局本身。StatePool (如 GroundEffectStatePool 和 TotemStatePool 等),在 acquire狀態對象時綁定releaseFunc,並由AlertManager在渲染後識別多__A__EA__A__3__4D__EAMCO`fstate__EAMCO"__EA安全恢復對象,完成期運行0-分配最大限度降低GC目標。ClipsChildren裁切與FrameLevel顯示導致技能名稱不顯示的問題,實施動態佈局調整。寄生模式下自動將技能名稱(nameText)移至圖示底部並設定高亮顯示圖示底部並設定高亮顯色,同時提權FrameLevel(相對於)hostIcon + 10),解決了「看不見的技能名稱」的痛點。GroundEffectService 中全面刪除 COMBAT_LOG_EVENT_UNFILTERED 註冊,改為訂閱 UNIT_SPELLCAST_SUCCEEDED 並篩選 unitTarget == "player",100% unitTarget == "player",100% unitTarget == __EAMCODE10%,CO __EAMCODE_3__10%,100%,100%。 EAMDE_0 在雪天等,ClassPowerService 中追加註冊 UNIT_POWER_FREQUENT 事件,使聖能、連擊點更新反應速度達到 0ms 延遲。CooldownService註冊COOLDOWN_VIEWER_SPELL_OVERRIDE_UPDATED,當法術因天賦/狀態覆蓋變更時,即時刷新被覆蓋或原始技能的冷卻,徹底消除覆蓋時消耗/殘留Bug。AlertManager 中監聽 SPELL_ACTIVATION_OVERLAY_GLOW_SHOW 與 SPELL_ACTIVATION_OVERLAY_GLOW_HIDE 快捷列高亮事件,維護本地 glowSpells 表,以 Decorator(裝飾屬性)為形式 Aura / Cooldown 狀態新增 state.overlayGlow_EA_EA__MCO_EA 動態標記。 overlayGlow雙軌顯示金色發光,100%同步官方Proc發光。luac -p 的靜態語法檢查。visibleIcons 恆為 0 和 alertFrame.exists 恆為 false 的統計 Bug。/eam除錯資訊,新增各資料服務的active監控試劑ID清單、記憶體佔用memoryKB、glowSpells發光報表輸出清單、7大警報框底下所有活動圖示的座標與實體:IsShown(5),
-修改靜態語法檢驗:之 2 個診斷模組檔 100% 通過luac -p` 靜態語法檢查。cooldownInfo為nil)時,因infoSafe排除防衛過當而強行在畫面上顯示15個無倒數、無螺旋幾何的空圖示Bug。CooldownService.lua的shouldShow邏輯,增加cooldownInfo存在性防護,無冷卻時直接保持不顯示,恢復精確監控。CooldownService.lua 100% 通過 luac -p 靜態語法檢查。C_TooltipInfo抓取說明中的持續時間(scrapedDur)來建立非秘密的普通DurationObject與分數型計時器(TIMER_NUMERIC),讓器能夠正常渲染倒數。UI/Renderer.lua中維護activeDurationObjects,在統一的onLegacyTimerUpdate系統中每一幀進行突破:IsZero()對抗。一旦爆發,主動觸發與恢復,徹底解決秘密光環殘留Bug。AuraService.lua 與 UI/Renderer.lua 100% 修改 luac -p 靜態語法檢查。AuraService.lua、GroundEffectService.lua、TotemService.lua 的 StatePool.acquire 內,統一安全地綁定state.releaseFunc = Pool.release,並在__EAMCODE_5%」時設定為__EAMCODE_5%」圖示後能成功恢復狀態,解決了隱藏了前期分配資產池網格GC流失的嚴重P0 Bug。durationObj:IsZero() 的 pairs 輪詢與 pcall 檢查。改為在 Renderer.render 啟動時脈時,穿越 timerTokenPool 零分配令牌池取得令牌,並以 Scheduler.after 註冊單次後續任務。onDurationTimerExpired(token)判斷token激活狀態以準確與恢復隱藏。整個計時與恢復流程完全完成0-分配(零堆記憶體配置)與零輪詢CPU幾十,消除了戰鬥微卡頓,且熱路徑100%可被LuaJIT編譯,速度提升數百倍。luac -p 靜態語法檢查。define_subagent定義了EAM_Mock_Sandbox_Expert (MOCK)、EAM_Data_Guard_Expert (DATA)、EAM_DevOps_Release_Expert (DEVOPS) 和 EAM_Combat_Scraper_Expert (EAM_Combat_Scraper_Expert (__EA)CODE7__完成一個全新的專家。Docs/21_RACI_EXPERTS_MATRIX.md擴展專案的RACI職責矩陣,引入「沙盒測試」與「WTF設定檔遷移」兩個全新的任務領域,認識了新增專家的R/A__EAMCODE_4分機定位測試