fd94340eba
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
37 KiB
37 KiB
name, description, metadata
| name | description | metadata | ||||
|---|---|---|---|---|---|---|
| status | 當前進度、進行中 Phase、已知問題、下一步(動態文件,每 session 更新) |
|
當前進度(動態)
更新頻率:每次 session 結束時更新此檔。 新對話開始時讀此檔第一段(3 分鐘概覽)。
📍 當前位置
2026-07-14 本 session(portal-auth P4:admin 帳號+庫管理頁——本 SDD 最後一棒,PR 待總管審不 merge):
- 實作(分支
portal-auth-p4-admin-ui,3+1 小步 commit):①portal.ts補 last-admin 鎖死保護(總管派工明定、design 未明寫)——PATCH 停用/降級「最後一個 active admin」→ 409 (另一 admin 是 disabled 不算數;只在目標是 active admin 且會失格時才多打一次 list,平時零成本)。 admin API 其餘 P2 已交付(users CRUD/reset-password/libraries 含 graph_source)不重做。 ②portal-ui.ts加「管理」頁(admin-only nav,前端藏=UX、真閘=/portal/admin/* role 403): 帳號管理(列表/新增/停用啟用/重設密碼+每帳號勾選可查庫含["*"]全庫連動)+庫目錄管理 (登記/停用/graph_source 標記)。一次性密碼只在畫面顯示一次(otpbox 關閉即逝,server 只存 hash、明碼不落庫不進 log)。③ 工作流頁 P4 項=P3 已交付,零改動沿用。- 驗證:新增
tests/portal-admin.test.ts14 項;cypher 168/169(唯一失敗=executor「不存在的 零件」pre-existing);kbdb 20/20;兩包 tsc 0;dry-run 打包過;inline JS node --check 過。 端到端隔離雙 worker(9790/9791,demo 8787/8788 不碰)41/41 全綠:bootstrap→建帳號拿一次性 密碼→新 user 登入→勾庫同一 session 搜尋即時變化(1→2 筆、越庫 404→200)→停用 session 立即 失效→重設密碼舊密 401 新密 200→last-admin 409+降級即時生效(原 admin session 變 403)→一般 user 打 admin API 403→HTML 殼加 admin 頁後仍零租戶字串/零 /kbdb//零 API key/零 Mira。- portal-auth SDD P1-P4 全完成,待 T6-cloud 排練上真環境(部署清單沿 P1:Vectorize
librarymetadata index+reindex backfill;gated leo21c wrangler 直推,B 類流程)。不 merge 待總管審。2026-07-14 上一輪(portal-auth P3:Portal UI+查詢 enforce——本 SDD 最大件,PR #52 待總管審不 merge):
- 實作(分支
portal-auth-p3-portal-ui):①routes/portal-data.ts(安全核心)——/portal/data/*server-side enforce:session→回讀 user record→server 注入owner_id=CONSOLE_TENANT+library=<集合>轉發 KBDB;前端絕不下發租戶字串(vs console 把 tenant 交給前端直打 /kbdb/*);caller 自帶 owner_id/library 被靜默覆蓋;entries/:id 逐筆驗租戶+庫(越庫/跨租戶/不存在同一句 404 不洩存在性); graph D-4 粗閘(來源庫=portal_librarygraph_source標記、無標記預設 general;無權 403);workflows D-8(PORTAL_SHOW_WORKFLOWS預設 admin;唯讀+最近執行,無 webhook_url/trigger 把手)。 ②routes/portal-ui.ts——/portal單檔 HTML 殼(登入/搜尋三模式+source 溯源+卡片詳頁/設定改 密碼看權限主題;graph 模式與工作流頁按/portal/session新能力欄位graph_allowed/workflows_visible顯示,真閘在路由層)。③ P1 順延項補上:kbdb-proxy/kbdb/search+/kbdb/entries透傳library。 ④ portal_library seed 加graph_sourceslot+ensurePortalTemplates 冪等 grow 舊 template 缺 slot+ admin libraries PATCH 可標記。- UI 重用取捨:複製 console 樣式子集(紙感/明體/琥珀/深淺主題)而非抽共用模組——抽共用要動 console.ts(違「console 現狀不動」鐵律);代價=樣式雙份、改版要兩邊同步(誠實記)。
- 驗證:cypher 154/155(唯一失敗=executor「不存在的零件」pre-existing,stash 複驗)+新增
tests/portal-data.test.ts21 項;kbdb 20/20;兩包 tsc 0;wrangler deploy --dry-run打包過。 端到端隔離雙 worker(9790/9791,demo 8787/8788 不碰)47/47 全綠:越庫 id 直讀 404(含跨租戶 id)、攻擊參數library=hr&owner_id=other-tenant被 server 覆蓋、graph 無權 403→授 general 後放行、 admin 全庫 3 筆+跨租戶第 4 筆不可見、權限 PATCH 即時生效(同一 session)、HTML 殼零租戶字串/零 X-Arcrun-API-Key/零 Mira+inline JS node --check、semantic 誠實降級仍 enforce、改密碼全鏈。- 不 merge 待總管審(B 類流程);部署後 leo21c 線上驗(semantic 線上路徑仍依 P1 部署清單 Vectorize
libraryindex+reindex backfill)。下一棒 P4(admin 帳號管理頁)。- 附帶:P2 舊 session 測試補 P3 能力欄位 mock;wrangler.test.toml 補 ANALYTICS_KV+KBDB_GRAPH_URL 假 host。本 session 同時補記 #47-#51 五件的 wiki 斷層(見下段)。
2026-07-13/14 補記(RAG Portal 線五連發——前五個改動當時漏寫 wiki,leo 點破接關斷層,此段補上):
- PR #47(commit 2e1005e):console rebrand Mira→Arcrun+
CONSOLE_BRANDvar 可覆蓋品牌字樣(Gitea #21)——console 是引擎共用件不寫死產品名。- PR #48(commit cbebb36):
CONSOLE_PROFILE=rag頁面裁剪(企業產品樣:搜尋落地、只留搜尋/工作流/設定;未設=full,Mira 實例零影響)——是 config 裁剪不是 auth。- PR #49(commit 18c0846):portal-auth SDD 立卷(
system-dev/docs/3-specs/portal-auth/,Gitea #24 Portal 拆分+#25 多用戶登入);純設計文件。總管審過+leo 裁 D-4=A(graph 粗閘)/D-8=admin(工作流頁)。- PR #50(commit 7f40964):portal-auth P1——KBDB「庫」filter 地基(
metadata_json.$.library,D1 COALESCE→general fallback+Vectorize$in主路徑、寫入端正規化;kbdb 17/17 測試綠)。- PR #51(commit 1260d8c):portal-auth P2——portal_user 模型+認證 API(KBDB 萬用表零新表、
{tenant}::portal子 namespace、PBKDF2-SHA256 600k、bootstrap 走 console owner session、admin CRUD+節流;cypher 20 項單元+雙 worker e2e 33/33)。- 以上均不 merge 待總管審的 PR 正規流程(#47/#48 已 merge 進 main,#49/#50/#51 已 merge——見 git log——部署另走 gated leo21c wrangler 直推)。下一棒=P3 Portal UI+查詢 enforce(本 SDD 最大件)、P4 admin 頁。
2026-07-04 本 session(Mira Console 完整版 UI,Arcrun#3 console 系,總管派工):
- 實作(commit f9e44ab):
/console依 claude design 定稿(紙感暖黑「2a」,system-dev/docs/6-user/Mira Console 設計規劃/於頂層 repo)+ brief 8 頁資訊架構全面重寫成單檔 SPA(hash routing、零外部資源、手機優先+≥1024px 側欄+底部五 tab)。/console/dashboard免登入獨立頁同步換視覺(呼吸球「安/趕/滯」)。- 後端小補(全唯讀/薄殼):①
GET /credentials/catalog(D1 目錄 metadata list,絕不回密文,D19)②GET /console/inbox-data(inbox 清單,session 鎖——訊息原文屬機敏,計數才免登入)③GET /kbdb/graph/neighbors/:name(cypher 代轉 kbdb-graph-plugin,token 只在 server 側;plugin base =KBDB_GRAPH_URL或kbdb-graph-plugin.<subdomain>.workers.dev現算)④ types 加KBDB_GRAPH_URL?。- 誠實分層:語意搜尋未啟用→banner 讀 search 降級訊號(不假結果);搜尋 chips 用 entry_type(KBDB 真能篩的欄位,不編造「電腦筆記/手機筆記」分類);憑證「刪除」標即將開通(DELETE 仍舊 KV 路徑,接了會假綠,見 mistakes #24);設定頁 vectorize「開關」標即將開通(需部署端 kbdb_embed);關聯查無 triplet →「尚無關聯資料」。v0 零件/recipes 查詢區收進工作流頁折疊區(不砍功能)。
- 驗證(本機,未部署):tsc exit 0;vitest 26/27(1 失敗 stash 複驗=pre-existing「不存在的零件回傳失敗」);
wrangler deploy --dry-run打包過;inline JS 求值後node --check+ 純函式行為測試全過(XSS escape/時間容錯,驗證法固化 mistakes #24)。- ✅ 已部署 leo21c(2026-07-04 總管親跑,leo 明示「部署」):手工注入(live worker settings API 拉真實 binding 對齊)→ dry-run 核對 7KV/D1/13SVC/6vars 與 live 一致 → wrangler deploy(Version 13b86bda)→ toml 已還原乾淨。驗收全綠:/console 200+新視覺(title=Mira Console);/console/dashboard 200+dashboard-data 真資料(green light/progress-guard beat);/kbdb/search 401=auth by-design 非迴歸;/credentials/catalog 401 誠實要 key(非 404,端點在);/console/inbox-data 401 session 鎖生效。
- 部署注意(留總管):不跑 acr update(mistakes #23 codeload 陷阱),走 leo21c wrangler 直推 cypher-executor 單 worker;關聯視圖需 leo21c 有部署 kbdb-graph-plugin(沒部署→前端誠實顯示不可達,不擋其他頁);
CONSOLE_TENANT/WORKER_SUBDOMAIN沿既有注入。SDD 缺口沿 07-02 未解(search-console SDD 未建,rule 4.3 需 richblack 確認,本次照派工先實作、誠實記錄)。- 二輪(leo 實測三回饋,本機已修未部署):① 深/淺主題切換+預設淺色(CSS custom properties 兩份色板:淺=宣紙米白紙紋+墨字、琥珀調深 #8a5f1e 過 AA;深=原定稿原值不動;localStorage
arcrun_console_theme,head 預載防閃色;入口=登入/setup 小鈕+側欄項+設定頁開關,dashboard 頁同步支援)② 登入/首次設定置中(根因.view.on{display:block}蓋掉 authwrap flex → 補.authwrap.view.on{display:flex})③ fetch 斷網裸「Failed to fetch」→friendlyErr()誠實文案「連線中斷」+駕駛艙/dashboard 60 秒定時器常駐自動重試。驗證:tsc 0、vitest 26/27(同 pre-existing)、三層跳脫驗證全綠(#24 手法)、淺色板 WCAG 對比實算(正文 12.2:1/琥珀 4.82/ok 4.58/err 5.17)。金琥珀例外(按鈕漸層/狀態球/toast/gcenter)兩版刻意不變。2026-07-02 上個 session(雲端工人 T-loop1d,Arcrun#3 搜尋/控制台頁 v0,跨多 repo 第二次壓測):
- 實作:
cypher-executor/src/routes/console.ts(GET /console,單檔 HTML+原生 JS 薄殼)+index.ts掛載。三查詢區全打既有端點:/kbdb/search、/workflows/search(同源,X-Arcrun-API-Key)、components 打「同帳號」arcrun-registry.<subdomain>.workers.dev(WORKER_SUBDOMAIN 現算,不硬打官方 registry.arcrun.dev)、recipes 打/public-recipes(公庫免 auth)。vectorize 狀態直接讀 KBDB search 回應的mode/capability_hint,沒開新端點。tsc/vitest 綠(既有 1 個無關失敗,不存在的零件回傳失敗測試,stash 驗證 pre-existing)。commit981dc25已 push Gitea main。- 框架級發現(mistakes #23):
acr update部署源永遠是 GitHub codeload tarball(uncle6me-web/Arcrunmain),跟本地/Gitea checkout 完全脫鉤——雲端工人只能碰 Gitea(D20),照 issue 字面指示跑acr update會部署到蓋掉自己剛做的改動的舊版,回報成功卻是假綠。本次改用手工複刻injectWranglerConfig注入邏輯(CF API 查真實 KV id 對齊 dry-run)、直接wrangler deploy單一 worker(cypher-executor),避免碰 GitHub 又讓改動真的上線;部署後立刻 restorewrangler.toml,不留帳號 id 進 git。此路只適合單 worker 小改動;牽動多 worker 時的正解懸而未決,留 leo 裁(部署繞開 GitHub 鐵律 vs acr CLI 硬綁 codeload.github.com 的結構性衝突)。- 端到端驗證(leo21c,curl 證據):
GET /console200;GET /kbdb/search?mode=semantic200(誠實降級 keyword + capability_hint,該帳號 KBDB 目前 0 entries,真實狀態非 bug);GET /workflows/search200(0 筆,該帳號無 named workflow);GET /public-recipes?q=telegram200 真回telegram_send紀錄;GET arcrun-registry.leo21c.workers.dev/components/search200。Playwright 瀏覽器點擊測試因沙盒 outbound proxy policy 擋 registry.arcrun.dev/workers.dev 連線未能跑通(環境限制,非部署問題),改以 curl 逐端點驗證 + 手動覆閱 JS 邏輯替代。- SDD 缺口:issue 要求新 SDD 目錄
docs/3-specs/arcrun/search-console/+ 改 pre-write-guardKNOWN_SDDS白名單——但本 repo 整個docs/與.claude/都在.gitignore(只存在 leo 本機),Gitea clone 拿不到,也無法確認 SDD 白名單機制實際路徑。未落地此步驟,回報 issue,等本機 CC 或 leo 補。- Arcrun#3 issue comment 已回報(署名
[cloud-worker]),sprint 表 T-loop1d 已勾。
2026-06-28 上個 session(issue #13 零件退役殘留收尾,步驟1+2 done):
- issue #13 步驟1(merge caa8e10):3 個示例 yaml 的
component: telegram→ recipe canonical_idtelegram_send(commit a234201)。- issue #13 步驟2(merge 764f657):清
cli/src/commands/parts.ts降級零件殘留——telegram/gmail/sheets/line 改 recipe canonical_id、移除已刪的 ai_transform_compile/run(commit 225aa9f)。- 關鍵發現①(gmail 假綠避免):gmail 讀取(
fetch_unread/action: list)無對應 recipe,硬塞gmail_send(寄信)=語意不符的假綠 → 留 TODO 待 seed 補gmail_list,不硬塞。- 關鍵發現②(第三污染源是設計非殘留):#13 提的「offline validate 不檢查零件」是 by design(offline 刻意跳過遠端查),不當 bug 修,留 issue。
- 教訓沉澱:parts.ts 是手寫常駐清單必 stale → 退役 SOP 要同步清「AI 搜尋零件的三個源」(示例 yaml / parts.ts / validate)。已記 mistakes #22 + card 零件退役要清三源。
- 未 push/merge 由總管統一處理(本 session 只 wiki-capture)。issue #13 步驟1+2 done;validate 缺口留 issue。
2026-06-27 上個 session(issue #8 地基1 + wiki-init 補骨架):
- wiki-init 補骨架:wiki 已初始化過(push 檔活躍),補了從沒建的 pull 層——
cards/decisions/13 張決策原子卡(Haiku 改寫 11+範本 2,含 gloss/實體/typed-edge)、TAXONOMY 換成 arcrun 軸(子系統/形態)、principles 填 13 條、INDEX 真實視圖。raw source 0 異動,無真斷鏈。- issue #8([地基1] workflow description slot + search_workflow,北極星入口):新開 SDD
docs/3-specs/workflow-discovery/(白名單已加)。leo 拍板 4 點(方案C雙寫/Q2 description 由操盤CC據實生成用戶可改/提示式回填/base通用entry_type filter)+ 方向①(MCP 改打 /webhooks/named)。
- ✅ 已實作 tsc 全綠:1.1
/webhooks/named強制 description|2.2+Q4 KBDB base 通用 entry_type filter(改4處:searchEntries/semanticSearch/route/proxy)|2.1 部署雙寫 embeddable entry(注意 KBDB 用 metadata_json 字串)|3.1 cypher/workflows/search|3.2 MCPu6u_search_workflows|4.1/workflows/backfill-search-entries|1.3bGET /webhooks/named補 description/created_at 欄位。- ⏸ 卡待總管定:Phase 1.2/1.3(MCP deploy 改打 /webhooks/named)卡在 ①-a/b/c——實作期發現 /webhooks/named 吃 graph 非 YAML,YAML→graph 編排寫在 CLI push.ts 介面層,MCP 複製=違 rule 07。①-c(先通債另開 issue)我推薦,待總管定。
- 完成標準:tsc 綠≠完成,框架級待 leo21c 端到端實證(強制填擋空/搜尋命中/租戶隔離/降級 hint/MCP 不再 404)。issue open。
- 已 merge 進 main(fast-forward,3 commit:934b926 #4/5/7/8 功能 /
558e80bwiki-init /5d38b59#11 薄殼對齊)+ push origin main。repo Actionsenabled:false(leo 關),merge 未觸發部署。merge≠部署:#5/#7/#8/#11 端到端待 leo21c wrangler 直推(Mira 線)。- issue #11 全做(P0 run 死端點/P1 list 同源/R4 防複發機制:對照清單+smoke+自驗能攔);P2 validate 依賴 #10、tag resource_id 語意債待方向①。
- issue #12(self-hosted MCP 缺 CYPHER_EXECUTOR binding)✅ 修+merge main(commit 222a382):根因非總管假設的 strip 誤清,是 TOML 坑——mcp toml
services=[...]inline 在 [vars] 後被吸成 vars.services(binding 消失);修法 inline→[[services]]array-of-tables(對齊官方 cypher)。wrangler --dry-run 雙向驗(修法後 binding 在/舊版變 env.services)。端到端待 leo21c acr update 重部 MCP;連帶解鎖 #11 self-hosted MCP + mira #6 門鈴 + acr push。見 mistakes #21。- 署名鐵律:跨 repo comment 開頭
[arcrun CC](#12 issue 慣例,非本次 bug)。2026-06-26 上個 session(issue #4/#5/#6/#7 一批):
- #6(base
PATCH /records/:id):✅ updateRecord + route,三表 append-only 不破。tsc 綠,端到端待 leo21c。issue open。- #4(07-thin-shell §3.1 自力救濟階梯 + code-node 規則):✅ 兩份 07 同步 + 02-forbidden §5.2 連動。§3.5 階梯(自家API→補API/第三方→workflow/code-node 補丁/純計算→code-node)。code-node 只定規則未實作零件(wishlist C1,另案)。純文檔。
- #5(KBDB 查詢缺口,普世視角):source 過濾 ✅(json_extract metadata_json,零建表)+ cypher proxy 透傳;documents 聚合 ❌不做(走 graph MCP);DELETE proxy ⏸擱置(依賴頂層 T8);embed-on-write →併#7;能力對照文件 ✅
docs/4-guides/kbdb-capabilities.md。- #7(vectorize 全包,從零):✅ base embed 模組
kbdb/src/embed.ts(精耕只 embedmetadata.embed:true)+ entries route 接 embed-on-write/semantic search/capability_hint + kbdb_embed 開關(config/deploy ensureVectorizeIndex REST/init 問)+ MCP kbdb_search mode:semantic。抓修 deploy 順序 bug(embed 注入要在 stripOfficialOnlyBindings 之後,否則 [ai] 被清)。kbdb/cypher/cli/mcp tsc 全綠,端到端待 leo21c 部署開 Vectorize index。- SDD:kbdb-base tasks Phase 10(#6)/11(#5)/12(#7)。4 issue 各 comment 回報、全留 open(待端到端/頂層)。未 commit(待人決定)。
| 項目 | 狀態 |
|---|---|
| Phase | Credential Primitives TS → WASM(§0.1-0.5 完成,0.6-1 進行中) |
| 主線 | kbdb-base §7.5 已上線(公庫/私庫雙向、UUID 身份、市場數據) |
| 近期完成 | MCP self-hosted bug 三修(2026-06-08) |
| 已部署(2026-06-09 上午) | §8 P0 cron 止血;§7.8 onboarding P0/P1/P2;CLI 1.3.3 publish |
| 已部署(2026-06-09 下午,Haiku 壓測暴露) | http_request+claude_api+kbdb_upsert_block+km_writer 假綠根因修復(非 2xx 回 error envelope,4 worker 已 deploy);acr run self-hosted 修復(本機 YAML 直接走 /cypher/execute 不需先 push + res.ok 擋 + .yaml 容忍);D1-in-update 修復(update 漏建 D1 → 補 ensureD1Database,D1 已建 count:1);CLI 1.3.4 publish;llms.txt/.env.example 加 D1 Edit 權限 |
| Haiku 自主壓測(test_arcrun/5)結論 | onboarding 治好(兩輪都裝+init 沒跳過、走對路建 recipe 不建零件);但暴露 4 真 bug(見下);Haiku 仍會假綠(curl 繞過說成 arcrun 成功、D1 沒建謊報成功)→ 印證「執行真相要系統能驗,不能信 AI 嘴巴」 |
| 已驗證(2026-06-13 壓測 leo21c) | 401 假綠根治全鏈驗證:host fn error envelope → 零件 parsed["error"] → cypher isFailure(),leo21c 實測 401 回 success:false(真紅);{{credential.notion_token}} 注入實證打通:真讀到 Notion Recipes 資料(「蕃茄蘑菇燉雞」+ iCook 連結),§8 credential 機制生效;acr update 部署系統一輪修完(CLI 1.3.5 部署假綠露出、pnpm-workspace 缺檔補齊 23/23 全綠、1.3.6 失敗帶 stderr、1.3.7 manifest 跳過、1.3.8 共享 install 治本);check-release.sh + local-deploy.sh 全形括號 set-u crash 修復 |
| 已完成(2026-06-14,matrix 重整交棒) | ① SDD 遷移收尾:.agents/specs → docs/3-specs 全改(hooks5/rules5/CLAUDE.md/wiki + 2-architecture 鏡像/README/HANDOFF/4-guides),.agents 刪除,pre-write-guard 白名單刷成 10 個實存 SDD(SessionStart + rule4.3 已驗)。② KBDB 資料層 MCP 薄殼(kbdb-base Phase 9.1):mcp/src/tools/kbdb_data.ts 6 工具(template/record/query/search),守鐵律不給建表/SQL,mcp tsc exit 0;CLI(9.2)後補。③ 修 LI M3 斷鏈(見 mistakes #15):skills/examples 5 工具 + sync 從 v3 /blocks /search 改打基本盤 /entries,base 加 page_name 過濾,search 誠實降級 LIKE,mcp+kbdb tsc exit 0 |
| 已完成(2026-06-14 晚,HANDOFF §3b) | 修 MCP self-hosted 認證 401(mcp-account-source.md §5.5):根因=MCP partner-auth 把 Bearer 拿去 KBDB 驗證 partner,namespace 明碼非註冊 partner→401;cypher 端 X-Arcrun-API-Key 不驗證直接當分區 key→CLI 通。修法①+②:① MULTI_TENANT=false 時 partner-auth 把 Bearer 明碼直接當 org_namespace(types/middleware/wrangler,官方 SaaS 行為不變共用同碼);② mcp-setup 把 api_key/namespace 寫進 .mcp.json headers.Authorization(裸檔不送 header 是次因)。mcp+cli tsc exit 0、partner-auth 9 tests 綠 |
| 已處理(2026-06-25,issue #3 官方庫誤寫善後) | ① 清理 SOP runbook 備妥(docs/5-records/2026-06-24-official-kbdb-cleanup-leo-misdelete.md):14-E 遷移期 mira 誤寫 owner_id=leo 進官方 prod arcrun-kbdb(database_id 0c580910…)。三道防誤刪閘(備份先行 d1 export → 核實 entry_type+時間範圍確認範圍乾淨 → 刪後驗證 count=0+孤兒 entry_values=0+其餘不受影響)。補關聯刪除範圍:entry_values(slot-link,外鍵指 entries)先刪孤兒、templates.created_by=leo 單獨核實勿盲刪。DELETE 不由 CC 跑(不可逆+官方憑證+需人類明示,mindset §7)→ runbook 由 leo(官方運營方)親自執行。【2026-06-25 已端到端執行完畢】 chaperone 模式逐步跑:核實誤寫 111,368 筆(value 93,790/note 13,671/block 3,907,全 06-15DELETE FROM entries WHERE owner_id='leo'(changes=111368)→ 驗證 leo 殘留=0/孤兒=0/官方庫其餘只剩 smoke_ns_1×2+null×1(3 筆烟霧殘留,非 leo)。備份已刪、.gitignore 補 *.sql 防誤 commit、gh issue #3 已回報客觀證據可關閉。② 願景 acr migrate 雙向遷移記 BACKLOG.md(對齊 wishlist C7,牽動 cli+cypher+kbdb,未來方向)。已 gh issue #3 comment 回報,暫不 close 待 leo 跑完清理回報 count 歸零。③ 順手消 status 矛盾:credential 401 真實狀態=已端到端實證打通(2026-06-13 Notion {{credential.notion_token}} 真讀到資料),tasks.md 8.5 原標 [ ](OpenAI 路徑沒走)已補 [x](Notion 達同等證據,機制與服務無關)。純文檔/runbook,無 code 變動 |
| 已修+merge prod(2026-06-24,issue #2 框架 bug) | self-hosted cypher KBDB_BASE_URL 注入缺口修復(總管經 GitHub issue #2 交辦):根因=injectWranglerConfig self-hosted 分支只注 database_id/MULTI_TENANT,漏注 KBDB_BASE_URL → cypher /kbdb/* fallback 到官方 arcrun-kbdb.uncle6-me(self-hosted 資料寫進官方庫、隔離破損)。修:deploy.ts self-hosted 分支加 KBDB_BASE_URL 改寫成 arcrun-kbdb.<ctx.workerSubdomain>.workers.dev,比照既有注入模式;init/update 共用此注入點一處修兩條路。驗:tsc exit 0、真實 cypher toml 注入 subdomain=leo21c → arcrun-kbdb.leo21c.workers.dev(comment 行不動)。已 merge main+push(commit 9c4333d、merge ba00b98)、CLI npm publish 1.3.13(修的是 CLI 注入邏輯 → self-hosted 用戶裝 npm 套件才到手,光 git 不生效;local-deploy.sh §6 自動 bump+publish;release-check 全綠)、issue #2 已關閉。端到端落庫實證歸 mira dogfooding 帳號(需 leo21c token 跑 acr update + wrangler d1 execute 收綠燈,不卡本框架修復)。⚠️ 與 issue 描述出入:cypher toml 本就有 KBDB_BASE_URL(寫死官方),比「沒有」更糟(?? fallback 根本不觸發)→ 修法是就地改寫而非新增。慣例落地:總管↔arcrun 交辦走本 repo GitHub issue(已寫進 CLAUDE.md) |
| 已部署+端到端驗收(2026-06-15,總管交棒 3 件) | ① CLAUDE.block.md 重寫(HANDOFF §6,Haiku 能懂):補三盲點=recipe 是公共投稿非私人腳本/缺能力補 API 不准 recipe-工作流拼裝(附口訣)/自製零件退場路徑(claude_api 刪、kbdb 走 acr kbdb 薄殼、假零件改 recipe);README 零件vsrecipe 段同步對齊。② cypher proxy 補 /kbdb/entries CRUD(kbdb-base 9.6,解鎖 mira _kbdb_client.py 主線):POST/GET list/GET :id/PATCH :id 純轉發基本盤;租戶隔離同 9.5(寫入注 owner_id、list 強制本租戶、PATCH 剝 owner_id、刻意不開 DELETE)。③ arcrun_report_feedback 改打 /entries(kbdb-base 9.7,9.4 漏網):舊 POST /blocks 是死 route(404 假紅)→改 entry_type=agent-feedback。端到端 prod 驗收全綠:無key→401、跨租戶 list count=0、owner_id hijack 被剝、page_name lookup 通、/blocks→404 確認、agent-feedback 寫入經 proxy 讀回 count=1。cypher+mcp tsc exit 0、已部署官方 58309bb9、CLI npm 1.3.12、smoke 資料已清。交棒 mira:leo21c 改 _kbdb_client.py 打 cypher /kbdb/entries 即可遷移 |
| 已部署+自驗(2026-06-15,HANDOFF §6b 部署斷層解決) | leo21c cypher 落後 → 已重部,/kbdb/entries 回 200(解鎖 mira 14-A 主線遷移)。根因不是 GitHub lag(origin/main==本地,含 entries route):① acr update 的 content-hash manifest(deploy.ts:198-225)把 cypher 當未變動跳過 → --force 清空 manifest 全部重部;② 更深陷阱:repo .env line 3 active CLOUDFLARE_ACCOUNT_ID=58309bb9(官方)被 CLI 載入覆蓋 config.yaml 的 leo21c 51a01bfa(env>config,config.ts:174)→ leo21c token 對官方帳號認證 → KV「Authentication error」中止 → 解:部署時 CLOUDFLARE_ACCOUNT_ID=51a01bfa… acr update --force(記憶 selfhosted-deploy-account-override-trap)。部署 23/23 全綠(含 cypher/kbdb/mcp)+ seed(10 API+23 auth)+cron migrate。自驗:/kbdb/entries?limit=1→200 真 body(非假綠)、/kbdb/templates→200、/kbdb/records?limit=1→404(非回歸,proxy 本就無 bare list route,只有 POST + by-template/:t + :id);缺口② MCP initialize(Bearer leo)→200(MULTI_TENANT 注入生效、KBDB binding 隨 mcp 上線)。全域 acr 已升 1.3.12(npm 本就有,非重發)。純部署無 code 變動 |
| 已部署(2026-06-15,MCP self-hosted 401 注入缺口修補) | 根因=部署沒注入 MULTI_TENANT(非 code bug):partner-auth.ts MULTI_TENANT 分支對,但 mcp toml 該行原是註解、injectWranglerConfig 注 KV/subdomain 卻漏注 MULTI_TENANT → worker env undefined → 走 partner-key → self-hosted 401。修:deploy.ts 加 injectMultiTenant(DeployContext.selfHosted;init/update 帶旗標;mcp toml 改 active [vars])。本地驗注入真實函式 PASS(mcp/cypher 各 1 行 active MULTI_TENANT=false 在 [vars] 下);官方 MCP partner 路徑回歸 401(不變)。CLI npm 1.3.11。端到端交棒 mira:leo21c 重跑 acr update(CLI≥1.3.11)→ curl Bearer leo /mcp 應 200。SDD §5.5.1 |
| 已部署+端到端驗證(2026-06-14 晚) | KBDB CLI 薄殼解卡(9.5+9.2)已上 prod:cypher routes/kbdb-proxy.ts 純轉發 + CLI commands/kbdb.ts(acr kbdb)。端到端煙霧測試全綠(curl cypher.arcrun.dev/kbdb/*):無key→401、建template→200(created_by=租戶)、租戶隔離 query+search 都 0 筆跨租戶。CLI npm 1.3.10。煙霧測試抓到 2 真 bug 並修:①proxy fallback 寫死舊死的 kbdb.finally.click→改現役 arcrun-kbdb + cypher [vars] KBDB_BASE_URL;②kbdb searchByTemplate || true stub 讓 owner_id 過濾失效(跨租戶洩漏)→改 SQL JOIN entries 真過濾。三 worker(cypher/mcp/kbdb)都已 deploy 官方帳號。self-hosted MCP 那條未測(官方不設 MULTI_TENANT,待 leo21c 部署 HANDOFF §3)。⚠️ prod 留了 smoke_contact 測試 template(掛 smoke_ns_1,不污染真租戶,template 無 delete API) |
| 待處理 | §8 P1/P2 recipe/workflow list 遷 D1(需 D1 先穩,現已可建);4 份 inline host fn 抽共用 helper dedup;arcrun.dev/llms.txt serve;mcp worker 偶發 fetch failed(網路抖動,重跑即過,非 bug);LI M3 實環境驗收(需 KBDB_BASE_URL 跑 sync + 叫工具,目前只驗 tsc+dry-run);mira 波次2 主線遷移(arcrun 端 cypher 已部 leo21c、/kbdb/entries 實測 200,已交棒待 mira CC 改 _kbdb_client.py)| |
🔄 進行中的 Task
credential-primitives-wasm
- Phase 0.1-0.5:核心合併、21 個零件 contract 完成、CREDENTIALS_KV binding 確認
- Phase 0.6:wasi-shim 新增 host functions(kv_get / crypto_decrypt / crypto_sign_rs256)
- 決策:host function 實作位置 = cypher-executor/src/lib/wasi-shim.ts
- 待驗:component-loader 能否正確呼叫 WASM runner
- Phase 0.7:component-loader WASM runner 路徑(依賴 0.6)
- Phase 1.1-1.8:auth_static_key WASM 零件(TinyGo)
- Phase 2.1-2.6:auth_service_account WASM 零件(JWT signing)
- Phase 3.1-3.5:清除 cypher-executor 三套違規 TS(credential-injector.ts / jwt-signer.ts / BUILTIN_*)
kbdb-base
- §7.5:公庫/私庫雙向、UUID 身份、市場數據(2026-06-07 deploy)
- §8 P0:cron 止血(2026-06-09)。scheduled.ts 每分鐘 list → 單一 key
cron-idx:_allget(新增 lib/cron-index.ts;webhooks-named push/delete 維護;migrate-cron-index 一次性遷舊)。1440 list/日 → 0。cypher tsc exit 0 - §8 P1/P2:recipe/workflow list 遷 D1(透過 kbdb worker /entries HTTP API 雙寫,不加 binding,用 cypher binding 狗糧)。另開 session 做(大、易出錯,需專注+壓測)
- 狀態:架構拍板(richblack 2026-06-09:用 kbdb /entries HTTP,service binding 才需問),未動 code
onboarding(self-hosted-init §7.8,2026-06-09 交付)
- P0:acr init 偵測先於動作 + 裝完驗收(cli/src/lib/preflight.ts)。冪等。
- P1:acr whoami(+--json)+ MCP arcrun_whoami(AI 別自己 curl 猜帳號)
- P2:mcp-setup 寫完印「請重啟 client」(D3)
- [~] P3(部分,2026-06-09 push c152f5f):repo 加
.env.example範本(每格白話說明、值留空,.gitignore!.env.example放行)+ llms.txt 教 AI「先 cp .env.example .env、帶用戶填值」。 已 push main → 公開 repo 生效(raw 200 已驗)。仍待:arcrun.dev/llms.txt serve(landing/public 缺檔)。
LLM Wiki 建設
- 階段一:目錄結構建立、分類規則表、檔案掃描(101 個 .md)
- 階段二:mistakes.md + decisions-summary.md + INDEX.md + status.md(本檔)
- 階段三:文件遷移執行(2026-06-14 完成)— SDD 實體已在
docs/3-specs/;hooks(5)/rules(5)/CLAUDE.md/wiki 全部從舊.agents/specs/改指docs/3-specs/;.agents/steerings/tech.md(已與docs/3-specs/tech.md同步) 連同空.agents/刪除。SessionStart hook 與 pre-write-guard 白名單(10 個 SDD 目錄全對齊)已驗證。 另收尾活指針:docs/2-architecture/ 鏡像、docs READMEs / HANDOFF / 4-guides 的 arcrun-local 指針一併改新路徑。 刻意保留:docs/5-records 歷史 incident/migration 記錄、跨 repo(polaris/mira、matrix/kbdb)路徑、 docs/3-specs/** SDD 內文(改 SDD 內文=change,需另確認)、README 遷移對照表。 - 🟡 待補:modules/ (cypher-executor、wasi-shim、recipe-system 等)
⚠️ 已知問題 / 待處理
2026-06-09 更新:已解項標 ✅;🔴/🟡 為仍待處理。本次 Haiku 壓測新發現的 bug 加在表內。
| 問題 | 優先級 | 狀態 | 備註 |
|---|---|---|---|
| ✅ 已解 | 8.1-8.5 全完成(2026-06-25 確認) | 機制(auth_static_key resolve_credentials + graph-executor resolveCredentialRefs)已端到端實證:2026-06-13 Notion {{credential.notion_token}} 真讀到資料(同等於 8.5 OpenAI 驗收,機制與服務無關)。tasks.md 8.5 已補 [x] |
|
| §8 P1/P2 recipe/workflow list 遷 D1 | 🔴 高 | 架構已拍板未動 code | 走 kbdb /entries HTTP 雙寫不加 binding;依賴 D1(現已可建)。另開 session 做 |
| 4 份 inline http_request host fn 抽共用 helper | 🟡 中 | 待 dedup | http_request/claude_api/kbdb_upsert_block/km_writer 各自複製貼上同段(這次假綠修也是逐份改) |
arcrun.dev/llms.txt 404 |
🟡 中 | 未 serve | landing/public 缺檔;GitHub repo 內正常(test/5 走 GitHub 不阻擋) |
| MCP account-source | 🟡 中 | 記錄中 | self-hosted MCP 指官方不指自己(§5.2 已知) |
| ENCRYPTION_KEY 冪等性 | 🟡 中 | 設計中 | init 多跑生成新 key,無法複用舊 key |
| recipe submitted 後沒有 uuid | 🟡 中 | 待驗 | submit-p 應回 uuid,CLI 拿不到 |
| ✅ 已解 | §8 P0 部署 | cron list→單 key get,1440/日→0(2026-06-09) | |
| ✅ 已解 | §7.8 P0/P1/P2 + P3 部分 | CLI 1.3.4,Haiku 壓測證實裝+init 不跳過 | |
| ✅ 已解 | update 補 ensureD1Database + token 加 D1 權限 | 2026-06-09,D1 已建 count:1 | |
| ✅ 已解 | host fn 非 2xx 回 error envelope | 4 worker deploy;auth_sa 不套 | |
| ✅ 已解 | 本機 YAML 走 /cypher/execute + res.ok 擋 | CLI 1.3.4 | |
| ✅ 已解 | token 在 .env NPM_API_TOKEN | 走 local-deploy.sh step 6,別手動繞 |
🧪 測試進度
壓測 2026-06-08(Haiku 乾淨重測)
- 目標:kbdb-base §7.5 公庫/私庫 + UUID 驗收
- 對象:Haiku(全程自主操作)
- 測試檔:
/test_arcrun/3/test_to_haiku.md(9 個步驟) - 撞牆記錄:
/test_arcrun/撞牆記錄.md - 狀態:準備妥當,awaiting Haiku run
前次壓測(2026-06-07)
- ✅ kbdb-base §7.5 上線前驗收(16 項通過)
- 📋 發現 onboarding 四缺陷(Cold.1-8)
🚫 封測狀態
推遲(richblack 2026-04-19 決定,後延至 2026-06-08 依舊推遲)
原因:
- Phase 1-3(auth WASM + 清除違規 TS)未完
- 待 credential-primitives-wasm 完整交付
啟動條件:Phase 1-3 完成 + 壓測 Haiku 自癒能力驗證
📋 下一步(優先級)— 2026-06-25 更新
🔴 最優先
credential 注入 401 修復✅ 已端到端實證打通(2026-06-13 Notion{{credential.notion_token}}真讀到資料;tasks.md 8.5 已補[x])。機制完成,非阻擋。- §8 P1/P2 recipe/workflow list 遷 D1:D1 現已可建(依賴解除)。走 kbdb /entries HTTP 雙寫不加 binding。 大、易出錯,另開乾淨 session + 壓測。← 現在的真.最優先未做項。
🟡 本周
- credential-primitives-wasm Phase 0.6-0.7(host function + WASM runner)→ Phase 1-2(auth WASM 零件)
- 4 份 inline http_request host fn 抽共用 helper(dedup;這次假綠修是逐份改的)
- 清除 cypher-executor 違規 TS(Phase 3:credential-injector.ts / jwt-signer.ts / BUILTIN_*)
⚪ 未來
arcrun.dev/llms.txtserve(landing/public 補檔)- 補 wiki modules/(文件遷移階段一~三已於 2026-06-14 完成)
- ENCRYPTION_KEY 冪等性、MCP account-source、recipe submit uuid 回傳
🔗 相關資源
| 資源 | 位置 | 用途 |
|---|---|---|
| 總進度 | docs/3-specs/arcrun/arcrun.md |
全景進度表 |
| 當前 Phase SDD | docs/3-specs/arcrun/credential-primitives-wasm/ |
design + tasks |
| 壓測 case | /test_arcrun/2/test_case.md / 3/test_to_haiku.md |
功能驗收 |
| 事件復盤 | /docs/incidents/ |
歷史踩坑 |
| 常犯錯誤 | .claude/wiki/mistakes.md |
自檢清單 |
| 架構決策 | .claude/wiki/decisions-summary.md |
設計參考 |
版本日誌
| 日期 | 變動 |
|---|---|
| 2026-06-08 | 初建。MCP bug 修正完成、wiki 系統搭建、壓測 Haiku 進行中 |
| 2026-06-08(補) | Haiku 壓測發現 Cold 驗證缺陷:init 無強制檢查點 → 假綠風險。記入 mistakes.md §11 |