Files
Arcrun/registry/examples/km-wiki-ingest/drainer/DEPRECATED.md
T
kbdb-cc c6932b0088 feat(km-wiki-ingest): 重做成跑在 cypher 上的 workflow(走 cypher binding,汰換 service-binding drainer,D28)
把知識庫 ingest 從 standalone drainer(誤用 Service Bindings)重表達為 cypher workflow:

- workflow.yaml(Phase 0 cron drain):watch_cron→load_cursor→list_cards→pick_card(code)
  →fetch_card→parse_card(code)→upsert_entry→save_cursor→post_envelopes→post_one_envelope。
  線性 pipe,跨-worker 全走 cypher binding(零件節點),零 service binding。
- workflow.delta.yaml(Gitea webhook 穩態):collect_changed(code)→foreach card→fetch/parse/upsert/foreach envelope。
- code/kbdb/graph 接法:code=canonical `code` 零件(arcrun-code);kbdb/graph=http_request 零件打
  /entries/ingest、/triplets/ingest(server 端冪等);Gitea=http_request。
- 平台端最小補丁(各需 gated 部署):
  1) cypher-executor component-loader:WASM_HTTP_RUNNER_IDS 加 'code'(canonical→arcrun-code,cypher binding 正解)。
  2) kbdb base:POST /entries/ingest(page_name+content_hash 冪等 upsert,對稱 graph /triplets/ingest;
     因 flow DSL 無資料條件分支,把 create/patch/skip 冪等推到 server 端)。
- drainer/DEPRECATED.md:標舊 standalone worker 退役計畫(新版穩定後 wrangler delete)。
- DEPLOY.md:部署順序、cron/webhook 掛法、subdomain 對齊、驗收與退役。

本輪不部署(待總管/leo 審架構)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJiLCRUU2o3aSpPEzVCt2o
2026-07-06 12:59:13 +00:00

28 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ⛔ DEPRECATED — 此 standalone drainer 架構錯誤(D28),改用 cypher workflow
**別部署這個。** `arcrun-km-wiki-drainer` 是 standalone Worker,對同帳號 worker 用
**Service Bindings**`SVC_CODE`/`SVC_KBDB`/`SVC_GRAPH`)呼叫 code/kbdb/graph。
leo 拍板(D28):**Service Bindings 一般禁用**,唯一例外是「零件等級:把幾個 wasm 綁成複合零件」。
**工作流/recipe 等級的跨-worker 編排**ingest 串 code+kbdb+graph 正是)→ **走 cypher binding
=跑成 cypher 上的 workflow**。這也是 D27「Arcrun workflow」的本意。
前一 subagent 因 `workflow.yaml` 當時是 skeleton,就抄捷徑自建這個 standalone worker
worker-to-worker 撞 CF 1042 → 又錯用 service binding 補),一步歪步步歪。
## 正解(本目錄上一層)
- `../workflow.yaml`Phase 0 cron drain)+ `../workflow.delta.yaml`Gitea webhook 穩態)
=跑在 cypher-executor 上的 workflow,全走 cypher binding,零 service binding。
- 部署見 `../DEPLOY.md`
## 為什麼 standalone 版當初「看起來能動」卻是錯的
- 它把 1042 歸因成「同帳號 worker-to-worker 必須用 service binding」——**錯**。
cypher-executor 靠 `global_fetch_strictly_public` compat flag 讓 fetch 走公網前門,
sibling worker 呼叫本就通;standalone worker 沒這個 flag 才撞牆,而正解是「別自建 standalone worker
把編排交回 cypher」,不是加 service binding。
- 它還把 URL 寫成 `*.leo21c.workers.dev`,與 cypher 的 `WORKER_SUBDOMAIN=uncle6-me` 不一致。
## 退役步驟
新版全 drain 完 + delta 穩定後:`wrangler delete arcrun-km-wiki-drainer`,再刪本 `drainer/` 目錄。
保留一個週期供逐卡輸出對照。