@@ -1,45 +1,10 @@
# 當前狀態
# 當前狀態
> 更新時間:2026-06-26
> 更新時間:2026-06-14
> 每次 session 結束必須更新此檔(用 /wiki-update)。
> 每次 session 結束必須更新此檔(用 /wiki-update)。
---
---
## 最新(2026-06-26: issue #1 補對齊 — receiver Zod 追上 contract, PR #3 已 merge)
[PR #3 ](https://github.com/uncle6me-web/kbdb-graph-plugin/pull/3 ) 已 merge 進 main( commit `13db97b` )。對應 [issue #1 ](https://github.com/uncle6me-web/kbdb-graph-plugin/issues/1 ) 總管補對齊 comment。
**起因(契約漂移) ** : T3 的 strict Zod 鏡射【當時】contract; contract 之後升格(ingest#1 向量化規範)加打標欄位 → ingest 照新 contract 送會被 `.strict()` 擋 422。總管裁定方向 A: graph 追上 contract( contract 是凍結單一真相源,實作追它)。
完成:
1. ✅ `contracts/ingest-candidate.json` 副本同步到頂層單一真相源(`InkStoneCo/system-dev/docs/3-specs/mira-dissolve/` )。
2. ✅ Zod 加契約合法新欄位(**保留 `.strict()` **):`NodeSchema` +`id?` /`aliases?` /`embed?` ; `EdgeSchema` +`predicate_embed?` 。
3. ✅ 落地(向量化分工:ingest 打標、base 讀標執行、**graph 不算向量**):`predicate_embed` 透傳進 triplet slot; node 打標(`embed` /`gloss` /`aliases` )存進 entity slot; `id` 作 node 去重鍵(同卡多邊只一筆)。`persistNodes` 拆獨立 action( `src/actions/node-persist.ts` )。
4. ✅ 測試 +4:帶向量化欄位【通過】、`bridge_score` /`clusters` 仍【422】、同 id 去重。
**新增 plugin slot ** (非改表、非改 contract):triplet `predicate_embed` ; entity `embed` /`node_id` 。
驗證:`vitest run` **23 passed ** ;零 SQL / 無 D1·Vectorize·AI; dry-run 乾淨;action ≤100 行。
**過程教訓(已記 mistakes) ** : PR#3 初版從 PR#2 merge 前切 → 混進 PR#2 已做的 template 1.9.x 遷移 40 檔 → 撞 main 衝突。解法=從最新 main 重切、只 cherry-pick 補對齊那筆 code commit、瘦身後 force-push。**補對齊/功能 PR 別混 template 基建遷移。**
---
## 前一筆(2026-06-26: issue #1 T3 — ingest 寫入端 + graph 端 API, PR #2 已 merge)
[PR #2 ](https://github.com/uncle6me-web/kbdb-graph-plugin/pull/2 ) 已 merge( commit `7a29dee` , squash)。
完成:
1. ✅ **wiki 合併 ** :舊 `.claude/wiki/` → `system-dev/wiki/` (導入 system-dev-template)。
2. ✅ **ingest-contract SDD ** ( `docs/3-specs/ingest-contract/` ) + 搬入 `contracts/ingest-candidate.json` ( T3.1/3.8)。
3. ✅ **寫入端 + 取代 ** ( T3.2– 3.5):`POST /triplets/ingest` 、ensureTemplate slot-diff 補丁、`updateRecord` 、idempotency、**先 append 後 deprecate**、active-only 查詢。
4. ✅ **get_source + refresh ** ( T3.6/3.7):`GET /graph/source/:name` 、`POST /graph/refresh` (純被動代轉,未設 `KBDB_INGEST_URL` 時誠實回 `forwarded:false` )、keyword 收斂(3.6d)。
驗證:`vitest run` 19 passed( mock);zero SQL / 無 D1·Vectorize·AI; dry-run 乾淨;action ≤100 行。
> 註:base `PATCH /records/:id` 已就緒(Arcrun #6 closed),ingest deprecate 即用此。
---
## 已完成(2026-06-14:按 leo 鐵律全面改寫 + 獨立成 repo)
## 已完成(2026-06-14:按 leo 鐵律全面改寫 + 獨立成 repo)
HANDOFF 5 項待辦全做完:
HANDOFF 5 項待辦全做完:
@@ -56,24 +21,15 @@ HANDOFF 5 項待辦全做完:
design.md 原本「讀現狀(21 個直接 SQL)推翻鐵律、問要不要共用 D1」是**讀違規現狀推翻規則**的錯。已改正為 **API-as-Wall(走 API,非共用 D1,零建表/零 SQL) ** ,並記進 mistakes.md。
design.md 原本「讀現狀(21 個直接 SQL)推翻鐵律、問要不要共用 D1」是**讀違規現狀推翻規則**的錯。已改正為 **API-as-Wall(走 API,非共用 D1,零建表/零 SQL) ** ,並記進 mistakes.md。
## 正在做 / 阻擋
- ✅ PR #2 ( T3)、PR #3 (補對齊)皆已 merge 進 main。graph repo 端實作面收斂,**本 repo 無剩餘可單獨做的 task**。
- [🔄] 剩三項皆「不在 graph 手上」,等跨 repo 接通 / 部署(見下)。
## 下次 session 第一件事
## 下次 session 第一件事
main 已含 T3 + 補對齊。本 repo 端無待辦——下次動工多半是**新交辦**或**跨 repo 接通就緒後接 MCP 薄殼**。
**實際部署 ** :等基本盤 `arcrun-kbdb` 上線/有網址後,跑 `bash scripts/install.sh` 一次到位
若要實際部署:等基本盤 `arcrun-kbdb` 上線有網址後跑 `bash scripts/install.sh` (自動查 CF subdomain 拼 `KBDB_BASE_URL` → secret → deploy)。現不空跑(避免上線打不到基本盤的殼 )。
(自動查 CF subdomain 拼 `KBDB_BASE_URL` → `wrangler secret put` → `wrangler deploy` )。
現在不空跑部署(避免上線一個打不到基本盤的殼)。
## 待負責人確認 / 跨 repo 接通(全通才結 issue #1)
- **MCP 註冊薄殼** — 圖工具(traverse/neighbors/source/refresh)併入 arcrun `u6u-mcp-server` 。等:總管協調 arcrun, **不另起 graph MCP**;待 Arcrun #7 部署驗。graph 端 HTTP API 已備好。
- **refresh 端到端** — 等:ingest repo( T4)部署 + 設 `KBDB_INGEST_URL` ;未設時誠實回 `forwarded:false` 。
- **semantic normalize** — 仍 exact-only,留接口;等:base embed( Arcrun #7 , code done 待部署)。**補對齊已把向量化打標(embed/predicate_embed/gloss/aliases)落地進 slot 供 base 讀**,base 模組就緒即可接。
## 已知缺口([→arcrun],待基本盤補)
## 已知缺口([→arcrun],待基本盤補)
- base `PATCH /records/:id` ✅ 已就緒(Arcrun #6 closed);但 base 仍無 `DELETE /records/:id` → triplet/entity delete、pending confirm/reject 為 soft(不硬刪) 。
- base 無 `PUT /records/:id` → entity addAlias 用「重建 record」覆寫 。
- 語意搜尋 / embedding 屬基本盤 optional embed 模組,插件只做 keyword/exact( graph 不算向量,鐵律 )。
- base 無 `DELETE /records/:id` → triplet/entity update/delete、pending confirm/reject 為 soft(不硬刪 )。
- arcrun 端 MCP/CLI 的 KBDB 薄殼仍待補;插件目前直打基本盤 HTTP API 。
- 語意搜尋 / embedding 屬基本盤 optional embed 模組,插件只做 keyword/exact 。
- arcrun 端 MCP/CLI 的 KBDB 薄殼仍待補(見 arcrun HANDOFF §2);插件目前直打基本盤 HTTP API。