main 的 status.md 之前停在 2026-06-14(PR#2 squash 只搬檔未帶 wiki 內容更新)。 補齊三段歷史 + 更新現狀(兩 PR 已 merge、本 repo 無剩餘 task、三項跨 repo 待接)。 mistakes 記:補對齊/功能 PR 別混 template 基建遷移(PR#3 撞衝突的教訓)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
6.1 KiB
當前狀態
更新時間:2026-06-26 每次 session 結束必須更新此檔(用 /wiki-update)。
最新(2026-06-26:issue #1 補對齊 — receiver Zod 追上 contract,PR #3 已 merge)
PR #3 已 merge 進 main(commit 13db97b)。對應 issue #1 總管補對齊 comment。
起因(契約漂移):T3 的 strict Zod 鏡射【當時】contract;contract 之後升格(ingest#1 向量化規範)加打標欄位 → ingest 照新 contract 送會被 .strict() 擋 422。總管裁定方向 A:graph 追上 contract(contract 是凍結單一真相源,實作追它)。
完成:
- ✅
contracts/ingest-candidate.json副本同步到頂層單一真相源(InkStoneCo/system-dev/docs/3-specs/mira-dissolve/)。 - ✅ Zod 加契約合法新欄位(保留
.strict()):NodeSchema+id?/aliases?/embed?;EdgeSchema+predicate_embed?。 - ✅ 落地(向量化分工:ingest 打標、base 讀標執行、graph 不算向量):
predicate_embed透傳進 triplet slot;node 打標(embed/gloss/aliases)存進 entity slot;id作 node 去重鍵(同卡多邊只一筆)。persistNodes拆獨立 action(src/actions/node-persist.ts)。 - ✅ 測試 +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 已 merge(commit 7a29dee,squash)。
完成:
- ✅ wiki 合併:舊
.claude/wiki/→system-dev/wiki/(導入 system-dev-template)。 - ✅ ingest-contract SDD(
docs/3-specs/ingest-contract/)+ 搬入contracts/ingest-candidate.json(T3.1/3.8)。 - ✅ 寫入端 + 取代(T3.2–3.5):
POST /triplets/ingest、ensureTemplate slot-diff 補丁、updateRecord、idempotency、先 append 後 deprecate、active-only 查詢。 - ✅ 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)
HANDOFF 5 項待辦全做完:
- ✅ 改寫成走基本盤 API(核心):21 個違規直接 SQL action 全改走
src/lib/kbdb-client.ts。寫 triplet=POST /records(template=triplet);查圖=取 triplet records 在插件層記憶體組鄰接表跑演算法(不靠 DB VIEW)。entity 正規化降級 exact match。 - ✅ 刪所有 migrations(插件零建表)+ 清基本盤 action/route(block-*/entry-crud/record-crud/tag/profile/admin/partner/convert/tasks/personality)。
- ✅ 獨立成 repo:
git init+ 推 publicuncle6me-web/kbdb-graph-plugin(無 Actions)。 - ✅ 裁剪 CLAUDE.md:移除 KBDB v3 基本盤規範,只留 graph 插件 + 🔒 鐵律 + 安裝契約。
- ✅ 部署繞開 GitHub:
scripts/install.sh(wrangler 直推),無 .github/workflows。
驗證:wrangler deploy --dry-run 通過(bundle 無 D1/AI/Vectorize);vitest run 10 passed(mock client);全違規掃描零命中;所有 action ≤100 行。
同場修正的 SDD 錯誤判斷
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 第一件事
main 已含 T3 + 補對齊。本 repo 端無待辦——下次動工多半是新交辦或跨 repo 接通就緒後接 MCP 薄殼。
若要實際部署:等基本盤 arcrun-kbdb 上線有網址後跑 bash scripts/install.sh(自動查 CF subdomain 拼 KBDB_BASE_URL → secret → 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],待基本盤補)
- base
PATCH /records/:id✅ 已就緒(Arcrun #6 closed);但 base 仍無DELETE /records/:id→ triplet/entity delete、pending confirm/reject 為 soft(不硬刪)。 - 語意搜尋 / embedding 屬基本盤 optional embed 模組,插件只做 keyword/exact(graph 不算向量,鐵律)。
- arcrun 端 MCP/CLI 的 KBDB 薄殼仍待補;插件目前直打基本盤 HTTP API。