diff --git a/scripts/teardown-instance.mjs b/scripts/teardown-instance.mjs index d0da4e7..d3e91cd 100644 --- a/scripts/teardown-instance.mjs +++ b/scripts/teardown-instance.mjs @@ -32,6 +32,20 @@ * - 中心 KV 清理走 `wrangler kv key`,用的是本機既有的 wrangler OAuth 登入態(不是 CF API * token),因為 INSTALLER_KV 住在另一個帳號(uncle6,官方安裝器所在),本工具沒有那把帳號 * 的 API token。呼叫前務必 `npx wrangler whoami` 確認登入態是 uncle6,不是別的帳號。 + * - 🔴 **偵測不到「不屬於這台實例的 worker 反過來依賴這台實例的 worker」這種形狀** + * (2026-08-14 實撞,兩層咬合):`kbdb-graph-plugin`(不認得,正確被排除、不動)身上有 + * service binding 指著 `arcrun-kbdb`(要刪的)。CF 因此拒絕刪 `arcrun-kbdb`—— + * 本工具當下**只會回報那次 DELETE 呼叫失敗**,不會主動告訴你「有一個外部依賴卡住了」, + * 需要人自己讀錯誤訊息裡的 worker 名字去追。 + * ⇒ **第二層**:kbdb-graph-plugin 被移除後 `arcrun-kbdb` 才刪得掉,但如果選擇「先清掉 + * `arcrun-kbdb` 綁著的資源、留著這顆殼」這條路(半殘留),下次呼叫 `acr init`/`acr update` + * 時,`shared/resource-rule` 的 fail-closed 保護(Arcrun#97 那道)會正確地發現 + * 「這顆 worker 的 binding 指向的資源已經找不到」而**拒絕重裝**(這是它該有的行為,不是 + * bug;但代表**本工具留下的半殘留會讓下一步——重裝——卡住**,不是「拆一半也沒關係」)。 + * ⇒ **結論**:本工具目前不會自動偵測或處理跨 worker 的依賴鏈;遇到「刪不掉、被誰誰誰的 + * service binding 卡住」時,操作者要自己判斷那個「誰誰誰」是不是這台實例的一部分 + * (是 → 一併排入拆除;不是 → 照紅線問人再決定要不要動它),**拆完後如果選了半殘留, + * 要有心理準備下一步的 fail-closed 檢查會擋下重裝**。 * * 用法: * node scripts/teardown-instance.mjs plan --account-id --api-token [--keep w1,w2]