[總管交辦] WEBHOOKS KV 退休 PR:拆雙寫/fallback/list-union + 移 binding(資料已全在 KBDB) #17
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?
[總管] 依 leo 徹查令(2026-07-07)+ 2026-07-06 釘死政策交辦,cloud-doable。
背景
WEBHOOKS KV 的資料 2026-07-06 已確認全數在 KBDB(workflow-store),只差退休 PR。⚠️ 前次盤點發現 WEBHOOKS 有 3 個消費者(不只 workflow 定義)——動工第一步先重新確認這 3 個消費者是誰、各自讀寫什麼,別只拆 workflow 那條。
任務
POST /webhooks/named/{ns}/{name}/trigger真端點 curl(如 notify_leo)仍通。閘
B 類平台維護 → PR + 總管 review → gated 部署 leo21c → leo dashboard 刪 WEBHOOKS namespace(不可逆,人閘)=第一顆真的能刪掉的 KV。
關聯
#14(CREDENTIALS_KV)、RECIPES→KBDB(另張 issue)。
[總管·票務複驗 2026-08-09 晚] 仍然成立——用今天真的出貨到用戶手上的那顆 worker 反證,不是讀原始碼推測。
2026-08-09 出貨的
arcrun-rag1.4.29(bundle manifest,source: Arcrun@19c82df),裡面
arcrun-cypher-executor這顆 worker 宣告它必須綁這些 KV 才跑得起來:對照這四張票要退休的東西:
#14退休CREDENTIALS_KV→ 還在 requires 裡#16RECIPESKV → KBDB → 還在#17WEBHOOKSKV 退休 → 還在#2credential KV → D1 + Secrets Store → KV 那頭沒拆⇒ 四張全部仍存在,而且不是「程式碼裡還有殘跡」這種軟證據——
是今天新裝的用戶會被要求綁這些 KV,它們活在出貨路徑上。
📌 我把狀態標成
s/backlog(已驗過、確定要做、還沒排進任何 sprint)。這是保守的預設值,不是我對優先序的判斷——這個 repo 的 37 張票原本一張標籤都沒有,
等於在看板上不存在。要往上排的請直接改標,不必回頭問我。
🔴 2026-08-12:這筆債今天出事了,而且系統還在繼續加碼
leo 今天問:「對 KV 的使用有禁令,但卻會把資產放在這裡,這不是違法嗎?」
答案是是。而且不只是舊帳:
① 禁令與票都在,五個星期沒動
2026-07 的政策(
status-archive-2026-07.md:1127):本張與
Arcrun#17/#16就是那次交辦,至今 open。② 系統今天還在往 KV 寫
2026-08-12 的一次
update,那句「重新 seed recipe」又往 KV 寫了 11 個 recipe + 26 個 auth_recipe。⇒ 這不是「存量待遷」,是現行程式碼每次執行都在製造新的存量。
③ 今天付了利息(
Leo/Arcrun#97)一次更新把 worker 重綁到另一組 KV,leo 當下看到的是:
工作流一支都沒有、portal 登出、80 把 recipe 解不出來。
資料沒掉(在原本那幾顆裡),但從他的角度就是「我的東西不見了」。
🔴 如果這兩樣早就在 KBDB,那次重綁一支都不會少。
會消失的只有 session 與執行上下文——而那兩樣本來就該可以消失。
判準(leo 今天給的,比原本的政策更好用)
這東西掉了,使用者要不要重做一次? 要 → 它就不是暫存。
(session 掉了=重登入,不算重做;工作流掉了=要重寫,那就是。)
這一則的用途
不是催進度,是把代價釘在票上——這張票躺著的期間,
它保護的東西真的出事了一次。下一個接手的人要看得到這件事。
🔴 leo 2026-08-12 把這張票的層級拉高了:這不是技術債,是產品能不能成立
為什麼比「客戶資產遺失」更嚴重
⇒ 對那個用戶而言,這不是「資料遺失」,是他的系統無聲退化:
無法描述、無法回報、無法自救,而我們這邊看到的只有「用戶流失」。
這改變了什麼
原本這張票的理由是「長效資料不該放 KV」——一條規約。
現在的理由是:AI 自主生成的東西,使用者沒有心智備份。
系統替使用者累積的能力,保存責任 100% 在系統這一側——
使用者沒有「我記得我有裝過什麼」這個安全網。這條在人寫的世界裡有,在 AI 寫的世界裡沒有。
⇒ 而 2026-08-12 已經真的發生一次(
Leo/Arcrun#97):一次例行更新,工作流全部從視野裡消失。那次是 leo,他看得懂、也查得出來。換成用戶就是無聲的。
因此判準要更嚴
不只是「掉了要不要重做」,還要加一條:
這東西是誰產生的?如果是系統/AI 替使用者產生的,那它的保存標準要比使用者自己輸入的更高
——因為使用者連「它存在過」都不知道。
📐 leo 2026-08-12 給了目標形狀,不必再討論「要不要另外設計一套」
這句話收掉的模糊空間
搬家最容易走歪的地方是「recipe 是基礎設施設定,所以要有專屬的存法」——
不是。recipe 就是一段文字/一份資料,一筆 entry 就是它的家。
工作流(cypher)同理。
⇒ 不新增表、不新增機制、不發明第二種存法(D38:KBDB 三張表打天下,
新型別=seed 一列 template,同
0003_library_map.sql/0004_execution_log_template.sql的手法)。為什麼這個定位一開始就該是對的
它們本來就符合「使用者的內容」的每一個特徵:可以被搜尋、可以被列出、
可以被分享、丟了要重寫。會被放進 KV,是因為當初把它們當成「系統設定」而不是「他的東西」。
⇒ 判斷一樣東西住哪裡,看的是它對使用者是什麼,不是它對系統是什麼。
連帶好處(不是附加價值,是這個定位本來就該有的)
Leo/Arcrun#97今天實撞)給接手的人
目標形狀已經定了,不必再開設計討論。要問的只剩「怎麼搬既有的、怎麼讓舊路徑無縫」——
那是遷移題,不是設計題。