#!/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 的 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