8d8b01d240
leo 2026-07-21 明令封存:卷已完成,留主目錄會讓未來 session 誤以為進行中。
最後一項 T10(廢除自管加密金鑰)已於 20c7610 完成(移除約 2500 行)。
- git mv 整卷 → system-dev/docs/3-specs/archive/credential-primitives-wasm/
design.md status: closed;superseded_by 留空(據實:非被另一卷取代,是機制整個換掉)
- 卷首補「封存時仍未完成的項目」——逐條查 code 核實,不當作完成:
真缺口=auth_mtls 從未實作、7.6 self-hosted auth 鏈端到端從未驗;
另有勾選過期(auth_oauth2 其實已完成)與驗收條件已作廢(與現行 rule 07 牴觸)者
- 修好 14 處引用(原盤點 10 處,實際更多):session-start-load-sdd.sh 內容嚴重過期
(把已完成 Phase 寫成進行中)→ 改為以 frontmatter 為判準;四份 rules、CLAUDE.md、
BACKLOG、3-specs/README、deploy.ts、credentials.ts、wrangler.toml 逐一按性質處理
- 額外:system-dev/docs/2-architecture/ 有四個規則檔重複副本(06-08 遷移遺留)
→ 同步修好,否則留一份過期真相(今日第三次撞到「同一資訊兩份副本」的債)
- 02-forbidden.md §2.1 列的三個「待刪違規 TS」其實早已不存在
→ 改標刪除線+禁止重新引入(過期文件同時製造假待辦與假進行中)
驗證:sdd-active-check exit 0(active 仍恰一份=portal-auth);
session-start-load-sdd.sh exit 0;cypher-executor 與 cli typecheck 全綠;
測試 187/188(唯一 fail 為 pre-existing,stash 覆驗相同)。
未動:pre-write-guard.sh 的 KNOWN_SDDS 白名單不含 archive 路徑
(放寬 guardrail 需明確授權,留待決定)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
73 lines
3.5 KiB
Bash
Executable File
73 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
||
# .claude/hooks/session-start-load-sdd.sh
|
||
# arcrun SessionStart hook
|
||
#
|
||
# 職責:session 啟動時注入當前進度、絕對禁令、SDD 位置,避免 CC 靠記憶猜測
|
||
# 輸出走 stdout,會注入到 CC 的 context
|
||
|
||
set -o pipefail
|
||
|
||
cat <<'EOF'
|
||
============================================================
|
||
🚨 arcrun 工作規範(SessionStart 注入)
|
||
============================================================
|
||
|
||
📌 絕對禁令(違反會被 pre-write / pre-bash hook 直接 block):
|
||
|
||
1. registry/components/ 下禁止 TypeScript 實作零件
|
||
→ 只能 TinyGo (main.go) 或 AssemblyScript,編譯成 .wasm
|
||
|
||
2. cypher-executor TS 裡禁止實作 credential/auth/JWT 業務邏輯
|
||
→ crypto.subtle.sign 只准出現在 wasi-shim.ts 的 host function
|
||
(crypto_decrypt 已廢除成永遠回失敗的 stub,credential 走 CF Workers Secrets)
|
||
→ {{secret.X}} template 展開屬於 WASM 零件職責
|
||
(例外:*-seeds.ts 是資料宣告非呼叫實作,見 rule 07)
|
||
→ 禁止 hard-code gmail/telegram/sheets API endpoint
|
||
|
||
3. 禁止新增 Service Binding 綁零件
|
||
→ 零件串接走 HTTP URL(cypher binding = YAML 裡的 URL 清單)
|
||
→ Cypher binding 不是 Cloudflare 的 binding 機制
|
||
|
||
4. 每個 WASM 零件 = 獨立 Worker = 公開 URL
|
||
→ 不是從 R2 動態讀(平台零件已 bundle 進各自 Worker)
|
||
→ R2 只用於 Phase 5 的用戶自製零件(未啟用)
|
||
|
||
📋 任何 code 變動前,必須:
|
||
|
||
1. 讀 docs/3-specs/arcrun/arcrun.md(總進度)
|
||
2. 讀對應 task 的 SDD(design.md + tasks.md)
|
||
3. 在回覆開頭宣告(格式見 .claude/rules/00-sdd-protocol.md):
|
||
📋 已讀 SDD:<檔案清單>
|
||
🎯 本次對應 task:<task 編號>
|
||
📐 本次 task 的 SDD 規範摘要:<重點>
|
||
🚧 執行範圍:修改/建立/刪除 <檔案>
|
||
4. 每完成一個 task,立刻更新 tasks.md 的 [x],不批次
|
||
|
||
🔥 當前 active SDD:以 frontmatter `status: active` 為唯一判準(不靠本檔硬寫)
|
||
|
||
查法:bash system-dev/scripts/sdd-active-check.sh
|
||
規則:system-dev/docs/3-specs/SDD-LIFECYCLE.md(單一活性鐵律,D35)
|
||
session 開場請回報三個數字:現行規格名稱 + 未完成任務數 + pending-changes 待裁決數
|
||
|
||
📦 已封存(closed,勿當進行中):
|
||
- credential-primitives-wasm → system-dev/docs/3-specs/archive/credential-primitives-wasm/
|
||
主線已達成:cypher-executor TS 不再有 credential/auth 業務邏輯
|
||
(credential-injector.ts / jwt-signer.ts / BUILTIN_API_RECIPES 皆已移除)
|
||
credential 現行做法=CF Workers per-script Secrets + D1 目錄,arcrun 不自管加密金鑰
|
||
→ 見 .claude/rules/01-tech-stack.md「Credential 儲存規範」
|
||
⚠️ 殘留缺口(未隨封存視為完成):auth_mtls 從未實作、7.6 self-hosted auth 鏈
|
||
端到端未驗;要做需另立新 SDD。細節見該卷 tasks.md「封存時仍未完成的項目」
|
||
|
||
📚 詳細規範:
|
||
.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/06-mindset.md — mindset(為什麼層):工作流是default/零件稀有/AI→工具/誠實不假綠
|
||
|
||
============================================================
|
||
EOF
|
||
|
||
exit 0
|