Files
Arcrun/CLAUDE.md
T
uncle6me-web 1616517ace rules: 第一鐵律從「用 grep」改成「照索引走,grep 是異常訊號」(leo 2026-08-15)
leo 當面點破:規則寫的是平面搜尋,而設計寫的是索引鏈(INDEX → cards/<bucket>/00-INDEX
→ 卡),兩者矛盾,AI 服從了寫得比較具體的那一份。

實測本 repo:system-dev/wiki/cards/ 有 64 張卡,只有 1 張走得到索引——
那 1 張是 leo 手寫的 decisions/,其餘 63 張機器產的從沒加入任何索引。
而沒有人發現,因為 grep 找得到 ⇒ 破損永遠不會浮現。

不全面禁止 grep(索引壞掉那天 AI 會瞎掉且沒人知道),改成:
先照索引走 → 走不到就先把缺陷講出來 → 才准 fallback。
每次 grep 都該留下一筆索引缺陷,而不是變成習慣。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 11:01:39 +08:00

148 lines
8.9 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.
# CLAUDE.md — arcrun
> **上游約束(InkStoneCo 總管)**:本 repo 是 InkStoneCo 大專案的子專案,受頂層知識庫約束。
> 動工前讀 `github.com/uncle6me-web/InkStoneCo` 的 CLAUDE.md + `docs/3-specs/`。
> 關鍵鐵律:禁止跨 repo 同步 Actions / Mira≠Arcrun 分層(arcrun.dev 是框架域名,非產品入口)/ self-hosted 用 namespace 明碼非 api key / 部署繞開 GitHubwrangler 直推)。
> 本 repo 的待整合交棒見 `docs/HANDOFF-matrix-rearrange.md`。
> **與 InkStoneCo 總管的溝通走本 repo 的 GitHub issue**:總管交辦框架 bug / 跨專案需求 →
> 在本 repo 開 issueCC 用 `gh` 讀(`gh issue list/view`)、修完在同一 issue `comment` 回報修法 + 驗證證據。
> issue thread = 雙向溝通 + 永久記錄。**有事才讀,禁自動輪詢**(flag 安全界線)。
> 結案時機由「end-to-end 實證綠燈」決定——尚待人/總管確認的留 open。詳見 `/issue-handle` skill。
> 發 issue 給**別的 repo** 要先問人類,不可擅自。
> 本檔是**索引 + 最高原則**,詳細規範拆到 `.claude/rules/`。
> Hook 強制機制在 `.claude/hooks/`,違反會直接 blockexit 2)。
---
## 絕對鐵律(違反 = 停手)
1. **任何 code 變動前必須先讀對應 SDD**,在回覆開頭宣告已讀清單與對應 task 編號(格式見 `.claude/rules/00-sdd-protocol.md`
2. **零件只能用 TinyGo 或 AssemblyScript 編譯成 WASM**`registry/components/` 下禁止 TypeScript
3. **cypher-executor TS 禁止實作 credential / auth / JWT / template 展開業務邏輯**;這些全在 WASM 零件
4. **Cypher binding = YAML 裡的 URL 清單**,不是 Cloudflare service binding;零件串接走 HTTP URL(含 auth primitive)。self-hosted same-zone 1042 用 `global_fetch_strictly_public` flag 解,不新增 binding(來源:credential-primitives-wasm Phase 7,該卷已封存,規則仍有效)
5. **每個 WASM 零件 = 獨立 Worker = 公開 URL**;不從 R2 動態讀(R2 只 Phase 5 啟用)
6. **修改現有程式碼,不是新建資料夾重做**
7. **每完成一個 task 立刻更新 tasks.md 的 `[x]`**,不批次
8. **薄殼原則**:能力只實作一次放在 API;CLI/MCP/lib 是薄殼,不得自帶業務邏輯 / 拼裝 API / 用 recipe 補 API 缺口(見 `.claude/rules/07-thin-shell.md`hook 7.x 部分強制)
---
## SDD 生命週期鐵律(2026-07-17 leo 拍板,全文見 `system-dev/docs/3-specs/SDD-LIFECYCLE.md`
> 現行規格以 design.md frontmatter `status: active` 為準(機器可查),
> hook `.claude/hooks/sdd-guard.sh` `system-dev/scripts/sdd-active-check.sh` 強制。
1. **單一活性**:任何時刻整個 repo 最多一份 `status: active` 的 SDD;所有開發任務必須對應這份 SDD 的 tasks,找不到對應 → 停下來問。
2. **CC 禁止自行建立 SDD**:任何情況下不得主動建新 SDD(既有 hook 規則 4.3 同源)。
3. **規格層變更只有一條路**:寫 change proposal 進 `system-dev/docs/3-specs/pending-changes.md`(變更摘要+影響分析)然後**停止**,等使用者明說「confirm」;沒 confirm 就照現行 SDD 繼續。任務層小改直接更新現行 tasks 並標日期原因。
4. **開新 SDDconfirm 後)**:先把舊 SDD 未完成且仍有效的任務**逐條搬入**新 SDD——搬完前不准寫任何程式碼;舊 SDD 改 `closed``superseded_by` 並移入 `3-specs/archive/`;向使用者列「已搬移/已作廢」清單請最終確認。
5. **每次 session 開始**:先讀現行 active SDD 與 pending-changes.md,回報三個數字——「現行規格〈名稱〉+未完成任務 N+待裁決 proposal M」——再開工。
---
## 工作流程(強制)
開始任一任務,按順序:
1. **讀 wiki**3 分鐘快速進度)→ `.claude/wiki/status.md`
2.`docs/3-specs/arcrun/arcrun.md`(總進度)
3. 讀對應的 SDD `design.md` + `tasks.md`
4. 在回覆開頭貼出:
```
📋 已讀 SDD<清單>
🎯 本次對應 task<編號>
📐 本次 task 的 SDD 規範摘要:<重點>
🚧 執行範圍:修改/建立/刪除 <檔案>
```
5. 動手前把 tasks.md 對應 task 標為 `[🔄]`,完成後標 `[x]`
6. 完成後確認:是否需要同步更新 design.md?
找不到對應 SDD → **停手問 richblack**,不要自行建立。
---
## 🔴 第一鐵律:wiki 是判準,不准跳過(2026-07-20/21 leo 兩度點破)
**要查任何東西之前,先照索引走:`system-dev/wiki/INDEX.md` → 下層 `00-INDEX.md` → 卡片。**
🔴 **2026-08-15 leo 糾正:本條原本寫的是「用 grep」,那是錯的。**
grep 是平面搜尋,它繞過索引,於是**索引永遠不會被驗證、也永遠不會變準**——
而 AI 又用「索引可能不準」當理由繼續 grep。這是自我實現的。
實測那天:`matrix/arcrun` 的 wiki 有 64 張卡,**只有 1 張走得到索引**
(唯一那張是 leo 手寫的;63 張機器產的卡從沒加入任何索引),
而 AI 從沒發現——**因為 grep 找得到,破損就永遠不會浮現。**
**grep 不是禁令,是異常訊號**:
1. 先照索引走
2. 索引走不到 → **那是索引壞了,先講出來**(哪一層缺、缺什麼)
3. 講完才准 fallback 用 `grep -rin "<關鍵字>" system-dev/wiki/`
⇒ 每一次 grep 都該留下一筆「索引缺陷」,而不是變成習慣。
(全面禁止 grep 也是錯的——索引壞掉那天 AI 會瞎掉,而且沒人知道。)
> leo:「花很多力氣去產生 wiki,最重要的就是要可以查詢,**結果要查的時候就跳過,那就白寫了**。」
> 「重點是你自己的記憶對嗎?而你有按照規定去切實讀 wiki 嗎?」
**三條硬規則**
1. **wiki 與程式碼/歷史文件衝突 → 以 wiki 為準**。程式碼反映「還沒清乾淨」,不等於「還在用」。
2. wiki 寫「不可動/待廢除/進行中」→ **讀它的解除條件並逐條核對**。那是當時狀態,不是永久禁令。
3. 翻原文後得到新結論 → **回頭更新 wiki**(wiki 過時是債,要還)。
**動外部系統(部署/curlwrangleracrgh)前**:先找 repo 有沒有**現成腳本或 README 部署段**
別自創方法。(實例:2026-07-21 明明有 `npx wrangler deploy` 這條驗過的路,卻自己 curl 硬幹踩坑。)
> hook `wiki-first-search.sh` 會在你查 code/下高風險指令時自動推 wiki 命中行;
> **但機制只是提醒,判斷是你的責任**。
## Wiki(每次 session 的讀取順序)
| 檔案 | 時機 | 用途 |
|------|------|------|
| `.claude/wiki/status.md` | session 開始第一件事 | 當前 Phase、進度、下一步 |
| `.claude/wiki/mistakes.md` | 做新功能前 | 10 大常犯錯誤 + 快速檢查清單 |
| `.claude/wiki/decisions-summary.md` | 遇到設計判斷時 | 6 大架構決策 + trade-off |
| `.claude/wiki/INDEX.md` | 找不到東西時 | wiki 導引 + 快速導航 |
---
## 詳細規範索引
| 檔案 | 內容 |
|-----|------|
| `.claude/rules/00-sdd-protocol.md` | SDD 讀取協議(強制流程) |
| `.claude/rules/01-tech-stack.md` | 技術棧硬限制(語言/儲存/加解密) |
| `.claude/rules/02-forbidden.md` | 禁止清單(hook 強制執行) |
| `.claude/rules/03-component-architecture.md` | 零件架構(R2 用途 / cypher binding / service binding 邊界) |
| `.claude/rules/04-current-progress.md` | 當前進度 + SDD 索引 |
| `.claude/rules/05-deploy-convention.md` | 部署慣例(新 Worker = 新目錄 + wrangler.toml |
| `.claude/rules/06-mindset.md` | mindset(為什麼層) |
| `.claude/rules/07-thin-shell.md` | 薄殼原則鐵律(能力長在 API,介面只暴露) |
---
## SDD 位置速查
> **現行(activeSDD 唯一判準=frontmatter `status: active`**2026-07-17 起),查法:`bash system-dev/scripts/sdd-active-check.sh`。下表僅路徑索引,「進行中」標記以 frontmatter 為準。
| 子系統 | 路徑 |
|-------|------|
| **現行 active** RAG Portal 多人授權 | `system-dev/docs/3-specs/portal-auth/` |
| ~~Credential Primitives WASM~~**closed,已封存** | `system-dev/docs/3-specs/archive/credential-primitives-wasm/` — credential 現行做法見 `.claude/rules/01-tech-stack.md`;殘留缺口(`auth_mtls` 未實作等)要做需另立新 SDD |
| arcrun 總進度 | `docs/3-specs/arcrun/arcrun.md` |
| Auth Recipe 系統 | `docs/3-specs/arcrun/auth-recipe.md` |
| Landing Page | `docs/3-specs/arcrun/landing-page.md` |
| SDK + Website | `docs/3-specs/arcrun/sdk-and-website/` |
| arcrun MVP 整體 | `docs/3-specs/arcrun-core-mvp/` |
| Platform Evolution | `docs/3-specs/arcrun-platform-evolution/` |
| Credential 長期規格(需求源) | `docs/user_requirements/credential_parts.md` |
| Tech Stack 詳細 | `docs/3-specs/tech.md` |
---
## 封測狀態
**推遲**richblack 2026-04-19 決定)。先完成 Phase 1-3 清除違規 TS,再啟動封測。