docs: SDD tasks + wiki 收尾(改寫全完成、推 public repo)
- tasks.md:R-EXT-4 改寫全 ✅、R-EXT-2 獨立 repo ✅、部署現況(待基本盤上線跑 install.sh) - wiki status:改寫完成快照 + 下次第一件事=實際部署 - wiki mistakes:記「讀違規現狀推翻鐵律」「embedding 非插件職責」兩條 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -35,8 +35,20 @@
|
|||||||
|
|
||||||
⚠️ MISTAKE: 假設「核心已在 arcrun」是既成事實
|
⚠️ MISTAKE: 假設「核心已在 arcrun」是既成事實
|
||||||
症狀: 照 HANDOFF 字面以為 arcrun/kbdb 已是 v3 基本盤、插件直接掛上去、共用同一 D1。
|
症狀: 照 HANDOFF 字面以為 arcrun/kbdb 已是 v3 基本盤、插件直接掛上去、共用同一 D1。
|
||||||
正確做法: 讀真身——arcrun/kbdb 其實還是 v2(entries,無 blocks/0005/0007/block-crud),與本插件是不同 D1 庫(arcrun-kbdb vs inkstone-kbdb)。v3 基本盤真身其實在本目錄。動工前用 ls/grep 對真身,不信 HANDOFF 字面。
|
正確做法: 讀真身——arcrun/kbdb 用 entry_type='block' 表達 block(不需獨立 blocks 表),是刻意設計的基本盤。動工前用 ls/grep 對真身,但**對到的是「現狀」不等於「設計依據」**(見下條)。
|
||||||
原因: HANDOFF 寫的是「意圖/計劃」,未必已落地;跨 repo 重整時尤其要核對現況。
|
原因: HANDOFF 寫的是「意圖/計劃」,未必已落地;跨 repo 重整時尤其要核對現況。
|
||||||
|
日期: 2026-06-14(註:本條原結論「v3 真身在本目錄」被 leo 推翻——本目錄那套帶 blocks 表/CREATE TABLE 的「v3」是長歪的違規殘留,已刪)
|
||||||
|
|
||||||
|
⚠️ MISTAKE: 讀違規現狀去推翻鐵律(本 session 最大的錯)
|
||||||
|
症狀: 看到插件現狀「直接 SQL 讀 blocks/entry_values(28×/31×)」,把它當「AGE-on-Postgres 訊號」當設計依據,跑去問「要不要共用 D1、直接 SQL」。
|
||||||
|
正確做法: 現狀的直接 SQL 是【違規的歷史產物】(違反自己 CLAUDE.md「API-as-Wall」),不是設計依據。鐵律 > 現狀。插件絕不碰表、零 SQL、零 migration,全走基本盤 API;新類型只能建 template+slot,不建表(連「插件自建獨立 D1」都不行)。
|
||||||
|
原因: 把「程式碼現在這樣寫」誤當成「所以該這樣設計」。違規代碼會自我合理化。遇到現狀與鐵律衝突 → 改現狀,不是改鐵律。
|
||||||
|
日期: 2026-06-14
|
||||||
|
|
||||||
|
⚠️ MISTAKE: 把 embedding/語意搜尋當插件職責
|
||||||
|
症狀: 插件綁 Vectorize/AI 做 entity 相似度合併、語意 search。
|
||||||
|
正確做法: embedding/語意搜尋是基本盤的 optional embed 模組,不在插件。插件不綁 AI/Vectorize;entity 正規化降級 exact match、search 降級 keyword(GET /entries/search),語意部分標 [→arcrun embed]。
|
||||||
|
原因: 基本盤 = D1 only(免費、無信用卡);embed 是可選加購層。插件混進來會破壞分層。
|
||||||
日期: 2026-06-14
|
日期: 2026-06-14
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
+22
-18
@@ -5,27 +5,31 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 正在做
|
## 已完成(2026-06-14:按 leo 鐵律全面改寫 + 獨立成 repo)
|
||||||
|
|
||||||
- 知識庫骨架建立完成(system-dev-template 接入:SDD + LLM Wiki)。
|
HANDOFF 5 項待辦全做完:
|
||||||
- **HANDOFF 已讀完並整進 SDD**:`docs/3-specs/kbdb-graph-extraction/`(requirements + design + tasks)。
|
|
||||||
- R-EXT-1 邊界初步分類完成(插件 / 基本盤 / 灰色地帶),見該 design.md。
|
1. ✅ **改寫成走基本盤 API**(核心):21 個違規直接 SQL action 全改走 `src/lib/kbdb-client.ts`。寫 triplet=`POST /records`(template=triplet);查圖=取 triplet records 在**插件層記憶體**組鄰接表跑演算法(不靠 DB VIEW)。entity 正規化降級 exact match。
|
||||||
|
2. ✅ **刪所有 migrations**(插件零建表)+ 清基本盤 action/route(block-*/entry-crud/record-crud/tag/profile/admin/partner/convert/tasks/personality)。
|
||||||
|
3. ✅ **獨立成 repo**:`git init` + 推 **public `uncle6me-web/kbdb-graph-plugin`**(無 Actions)。
|
||||||
|
4. ✅ **裁剪 CLAUDE.md**:移除 KBDB v3 基本盤規範,只留 graph 插件 + 🔒 鐵律 + 安裝契約。
|
||||||
|
5. ✅ **部署繞開 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。
|
||||||
|
|
||||||
## 下次 session 第一件事
|
## 下次 session 第一件事
|
||||||
|
|
||||||
讀 `docs/3-specs/kbdb-graph-extraction/tasks.md`。R-EXT-1 邊界 + grep + 讀 arcrun 全局核對都做完。**主阻擋 = 前置議題定案(task 1.4b)**,等 leo/arcrun 答覆三問(見下)。定案後:升 arcrun v3 / 定掛載形態 → 移交 → 裁剪 CLAUDE.md → git init 推 `uncle6me-web/kbdb-graph-plugin`。
|
**實際部署**:等基本盤 `arcrun-kbdb` 上線/有網址後,跑 `bash scripts/install.sh` 一次到位
|
||||||
|
(自動查 CF subdomain 拼 `KBDB_BASE_URL` → `wrangler secret put` → `wrangler deploy`)。
|
||||||
|
現在不空跑部署(避免上線一個打不到基本盤的殼)。
|
||||||
|
|
||||||
**讀 arcrun 後的關鍵翻盤**:兩份 HANDOFF 假設「核心已在 arcrun」其實**尚未落地**——`arcrun/kbdb` 還是 v2(entries,無 blocks/0005/0007/block-crud),且與本插件是**不同 D1 庫**(arcrun-kbdb vs inkstone-kbdb)。**v3 基本盤真身其實在本目錄**。詳見 design.md「全局核對發現」。
|
## 已知缺口([→arcrun],待基本盤補)
|
||||||
|
|
||||||
## 待總管決策(三問已上呈,不是本子 repo 能拍板)
|
- base 無 `PUT /records/:id` → entity addAlias 用「重建 record」覆寫。
|
||||||
|
- base 無 `DELETE /records/:id` → triplet/entity update/delete、pending confirm/reject 為 soft(不硬刪)。
|
||||||
leo 指示「整理成 wiki、由總管決策」。已寫成頂層決策文件:
|
- 語意搜尋 / embedding 屬基本盤 optional embed 模組,插件只做 keyword/exact。
|
||||||
📍 `InkStoneCo/.agents/specs/matrix-rearrange/DECISION-kbdb-v3-baseplane.md`(頂層 tasks Phase 2 task 2.5 已連結)
|
- arcrun 端 MCP/CLI 的 KBDB 薄殼仍待補(見 arcrun HANDOFF §2);插件目前直打基本盤 HTTP API。
|
||||||
|
|
||||||
三問:(1) v3 基本盤怎麼進 arcrun (2) 掛載形態共用 D1 vs 走 API (3) 0005 歸屬。總管答覆後本 repo 才能解除 1.4b / R-EXT-3 阻擋。
|
|
||||||
|
|
||||||
## 已知問題
|
|
||||||
|
|
||||||
- 本目錄目前**無獨立 git**(matrix 降級後脫離),改名後需 `git init`。
|
|
||||||
- `CLAUDE.md` 下半部仍是整套 KBDB v3 規範(含基本盤 Block CRUD),與「只做 graph 插件」新定位不符,待裁剪(HANDOFF 待辦 1 的一部分)。
|
|
||||||
- 上游 bug 未解:`PATCH /blocks/:id` 回 403(見 `docs/5-records/incidents/BUG-2026-05-29-...`)——屬 arcrun/kbdb 基本盤端,非本插件。
|
|
||||||
|
|||||||
@@ -13,8 +13,8 @@
|
|||||||
- [x] 1.4a 讀 arcrun 端真身對齊(2026-06-14):**發現 arcrun/kbdb 還是 v2(entries,無 blocks/0005/0007/block-crud),且兩 repo 是不同 D1 庫**。v3 基本盤真身其實在本目錄。見 design.md「全局核對發現」
|
- [x] 1.4a 讀 arcrun 端真身對齊(2026-06-14):**發現 arcrun/kbdb 還是 v2(entries,無 blocks/0005/0007/block-crud),且兩 repo 是不同 D1 庫**。v3 基本盤真身其實在本目錄。見 design.md「全局核對發現」
|
||||||
- [x] 1.4b 前置議題**總管已答覆**(leo 2026-06-14):→ `InkStoneCo/docs/3-specs/matrix-rearrange/DECISION-kbdb-v3-baseplane.md`。三問消解:基本盤已在 arcrun/kbdb 且設計正確、掛載走 API(非共用 D1)、插件零 migration。**阻擋解除。**
|
- [x] 1.4b 前置議題**總管已答覆**(leo 2026-06-14):→ `InkStoneCo/docs/3-specs/matrix-rearrange/DECISION-kbdb-v3-baseplane.md`。三問消解:基本盤已在 arcrun/kbdb 且設計正確、掛載走 API(非共用 D1)、插件零 migration。**阻擋解除。**
|
||||||
- [x] 1.4c 不需移交/升級 arcrun——基本盤已正確。插件改寫成走 API 即可(見 R-EXT-4)
|
- [x] 1.4c 不需移交/升級 arcrun——基本盤已正確。插件改寫成走 API 即可(見 R-EXT-4)
|
||||||
- [ ] 1.5 裁剪 CLAUDE.md:移除基本盤規範,只留 graph 插件相關
|
- [x] 1.5 裁剪 CLAUDE.md:移除基本盤 v3 規範,只留 graph 插件 + 鐵律 + 安裝契約(2026-06-14)
|
||||||
- [ ] 1.6 清掉殘留:`blocks.ts.bak`、誤入 repo 的 `ruvector.db`(根 + src/routes/ 各一份)、`finally.click` 空檔、`.swarm`
|
- [x] 1.6 清掉殘留:`blocks.ts.bak`、`ruvector.db`×2、`finally.click`、`.swarm`(2026-06-14)
|
||||||
|
|
||||||
## R-EXT-3 定義掛載介面(已定案 2026-06-14)
|
## R-EXT-3 定義掛載介面(已定案 2026-06-14)
|
||||||
|
|
||||||
@@ -26,15 +26,27 @@
|
|||||||
|
|
||||||
> 鐵律:插件零建表、零 migration、零 SQL,只用 API/CLI/MCP。
|
> 鐵律:插件零建表、零 migration、零 SQL,只用 API/CLI/MCP。
|
||||||
|
|
||||||
- [ ] 4.1 寫 `src/lib/kbdb-client.ts`:封裝基本盤 HTTP API(entries/templates/records),指向 `KBDB_BASE_URL` env var。零 `.prepare`
|
- [x] 4.1 `src/lib/kbdb-client.ts`:封裝基本盤 HTTP API,指向 `KBDB_BASE_URL`。零 `.prepare`(2026-06-14)
|
||||||
- [ ] 4.2 wrangler.toml:移除 D1/Vectorize 綁定(插件不碰 DB),加 `KBDB_BASE_URL` var(先留空)
|
- [x] 4.2 wrangler.toml:移除 D1/Vectorize/AI 綁定,加 `KBDB_BASE_URL` var(留空,安裝時 AI 填)
|
||||||
- [ ] 4.3 改寫 `triplet-crud`(拆 < 100 行):create/query/get/update/delete/stats → API
|
- [x] 4.3 改寫 `triplet-crud`(拆 triplet-cluster):create/query/get → API
|
||||||
- [ ] 4.4 改寫 `triplet-extract`/`triplet-entities`/`triplet-stats`/`triplet-update` → API
|
- [x] 4.4 改寫 `triplet-extract`/`triplet-entities`/`triplet-stats`/`triplet-update`/`triplet-embed` → API/薄殼
|
||||||
- [ ] 4.5 改寫 `graph-{nodes,path,traverse}`:取 triplet records → 插件層組圖
|
- [x] 4.5 改寫 `graph-{nodes,path,traverse}`:取 triplet records → 插件層記憶體組圖
|
||||||
- [ ] 4.6 改寫 `entity-{crud,normalize,graph-embed}`:template='entity' + records API;無 vectorize 時降級 exact
|
- [x] 4.6 改寫 `entity-{crud,normalize,graph-embed}` + 拆 `entity-pending`:template='entity',無 vectorize 降級 exact
|
||||||
- [ ] 4.7 改寫 `search-query`/`search-*`:`GET /entries/search`(keyword);語意搜尋標記待 embed 模組
|
- [x] 4.7 改寫 `search-query`(→keywordSearch)/`search-suggest`/`search-embed`(stub):keyword;語意標 `[→arcrun embed]`
|
||||||
- [ ] 4.8 刪違規 migrations(0001/0002/0005/0007 等含 CREATE TABLE)+ 清基本盤 action/route(block-*/entry-crud/record-crud/tag/profile/admin/...)
|
- [x] 4.8 刪所有 migrations + 清基本盤 action/route(block-*/entry-crud/record-crud/tag/profile/admin/partner/convert/tasks/personality)
|
||||||
- [ ] 4.9 改測試走 mock client;標記 base 缺口(PUT/DELETE record、vectorize)為 `[→arcrun]`
|
- [x] 4.9 測試改走 `tests/mock-client.ts`(10 passed);base 缺口(PUT/DELETE record、vectorize)標 `[→arcrun]`
|
||||||
|
|
||||||
|
## R-EXT-2 獨立成 repo(2026-06-14 完成)
|
||||||
|
|
||||||
|
- [x] 2.2 `.gitignore`(排除 *.db/.env/.dev.vars/node_modules/.wrangler/.bak/.swarm)+ `git init`
|
||||||
|
- [x] 2.3 首次 commit + 推 GitHub:**public repo `uncle6me-web/kbdb-graph-plugin`**(無 .github/workflows,符合不開 Actions)
|
||||||
|
- [x] 2.4 部署機制:`scripts/install.sh`(安裝時 AI 查 subdomain 拼 base URL → `wrangler secret put` → `wrangler deploy`)。**實際部署待基本盤 arcrun-kbdb 上線後跑 install.sh**
|
||||||
|
|
||||||
|
## 部署現況(leo 2026-06-14 定)
|
||||||
|
|
||||||
|
- `KBDB_BASE_URL` 不寫死 toml、不叫人填 → 安裝時 AI 自動算(`https://arcrun-kbdb.<subdomain>.workers.dev`)。
|
||||||
|
- 現在不空跑部署(避免上線一個打不到基本盤的殼)。基本盤就緒後跑 `scripts/install.sh` 一次到位。
|
||||||
|
- build 已驗證(`wrangler deploy --dry-run` 通過,bundle 無 D1/AI/Vectorize 綁定)。
|
||||||
|
|
||||||
## R-EXT-2 獨立成 repo(最後做,依賴 1.4/1.5 完成)
|
## R-EXT-2 獨立成 repo(最後做,依賴 1.4/1.5 完成)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# KBDB-graph 插件安裝 — Tasks
|
||||||
|
|
||||||
|
> 對應 design.md。動手前確認 design 已讀。
|
||||||
|
|
||||||
|
## Phase 1:安裝腳本
|
||||||
|
|
||||||
|
- [ ] 1.1 `scripts/install.sh`:git clone → wrangler whoami → 查 subdomain → 拼 BASE → secret put → deploy
|
||||||
|
- [ ] 1.2 subdomain 查詢:CF API `GET /accounts/{id}/workers/subdomain`(可抽 arcrun cli/lib/cf-api.ts 既有實作)
|
||||||
|
- [ ] 1.3 BASE 拼接 + 健康檢查:deploy 後 `GET {BASE}/health` 確認基本盤可達,不可達則明確報錯(不是默默裝壞)
|
||||||
|
|
||||||
|
## Phase 2:配置位置
|
||||||
|
|
||||||
|
- [ ] 2.1 wrangler.toml `KBDB_BASE_URL = ""` 保持空(占位,AI 安裝時填)
|
||||||
|
- [ ] 2.2 `.dev.vars` 加入 `.gitignore`(本地測試值不進版控)
|
||||||
|
- [ ] 2.3 部署值走 `wrangler secret put KBDB_BASE_URL`,不寫 toml/git
|
||||||
|
|
||||||
|
## Phase 3:測試
|
||||||
|
|
||||||
|
- [ ] 3.1 單元測試走 mock-client(已有),不依賴 KBDB_BASE_URL
|
||||||
|
- [ ] 3.2 整合測試 doc:本地起 `arcrun/kbdb wrangler dev` + 插件 `.dev.vars` 指 localhost
|
||||||
|
- [ ] 3.3 整合測試驗證:建 template='triplet' + 填 slot + 查圖,全走 API 無 SQL
|
||||||
|
|
||||||
|
## 不變條件(每步都守)
|
||||||
|
- 零建表、零 migration、零直接 SQL(hook 會擋)。
|
||||||
|
- 用戶零填寫——base URL 由 AI 查,不叫人填。
|
||||||
Reference in New Issue
Block a user