[總管收錄] 引擎級發現:if_control 無法真擋分支(IF edge 不帶 condition、branch 輸出 executor 不讀)——filter+FOREACH 才是可用的閘 #5
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
[總管] T-cockpit 收件匣施工實測撞出(2026-07-04,subagent 端到端證據在 workflow inbox_receive 開發過程):
if_control零件的 branch 輸出 executor 不讀——此引擎版本 if_control 無法真擋分支(分支照走)。filter零件 + FOREACH 空集合空跑=真閘(inbox_receive 的 chat_id 防護即用此法,負面測試 count:0 驗證通過)。建議:① 修 executor 讀 IF condition/branch,或 ② 明文廢 if_control 導引到 filter 模式(零件退役照三源 SOP)。現況=用戶照直覺用 if_control 會拿到假防護(比沒有更危險)。
08-01 複核:◐ 半通——根治程式碼已寫好且測試全綠,但還沒進 main,故不關
已完成的部分(證據):commit
323ccc8「步驟5 缺口①:引擎通用具名分支邊(ON_TRUE/ON_FALSE/ON_BRANCH)=Arcrun#5 根治」ON_BRANCH通用機制(ON_TRUE/ON_FALSE是布林路語法糖,底層同一條)graph-executor加readBranch(),依data.branch → branch → data.result → result四層相容switch(N 路)、try_catch(try/catch)與if_control同病同解,不留「為 switch 再改一次」的債lib/branch-hints.ts:查詢零件時自帶branch_hint,四條回應路徑全 wiretests/conditional-edges.test.ts16 項全綠(195 passed)為什麼還不能關:
⇒ 修復目前只在分支上,未 merge 進 main、未部署。依 CP 判準「code 寫完沒部署不准標 ✅」,本 issue 維持 open。
關閉條件:
batch/step3456-20260801(或feat/step5-conditional-edges)merge 進 main + gated 部署後,貼 live 實例兩條邊實測輸出即可關。✅ 結案(2026-08-09 逐票查核)
這張票描述的問題現在已經不存在。
證據
`cypher-executor/src/types.ts:161` 定義 `ON_TRUE|ON_FALSE|ON_BRANCH`;`graph-executor.ts:494` 有 `case ON_TRUE`。commit `323ccc8` 明寫「Arcrun#5 根治」。(總管親自 grep 複驗)
查核方式:讀現行程式碼實證,非讀票面推測。總管另抽驗過同批中三張(#5/#58/#59),全部屬實。
如果我判錯了,重開就是——關錯票的成本遠低於留著一堆假的待辦,而假待辦會讓 leo 看不出還剩什麼。
[總管·票務複驗 2026-08-09 晚] ✅ 關票——問題已不存在,證據是我自己跑出來的。
cypher-executor/src/graph-executor.ts:494/502/510→case 'ON_TRUE'/case 'ON_FALSE'/case 'ON_BRANCH'三條具名分支邊已在引擎裡處理。⇒ 「IF edge 不帶 condition、branch 輸出 executor 不讀」已根治。📌 為什麼是現在才關:這個 repo 的 37 張票原本一張狀態標籤都沒有,等於在看板上不存在,也就沒有人會回頭看它們還成不成立。今晚做了一次全面驗傷,只有實際跑指令驗到問題真的消失的才關;查不出來的一律留著並標明卡在哪。
如果我判錯了(例如你要的其實比程式碼裡這些更多),直接重開這張票,我不會有意見。