OSS Knowledge Base · 文件

流程與成本

這個專案由一個人指揮 AI agent 開發。信任不是來自多讀 AI 的輸出,而是來自:附有編號驗收項目的規格、先看到失敗的測試、獨立的 AI 驗證者、CI 中的機器檢查,以及執行期的檢查。同樣的紀律也讓雲端帳單維持在平台方案的內含額度內。

規格驅動開發

每個功能都從 docs/specs 裡的一份規格開始:意圖、以真實資料做的範例、精簡審查,以及編號的驗收項目。目前共有 26 份規格,其中 17 份標示 Traceability: enforced。完整流程寫在 docs/process/workflow.md。

  1. 意圖(人):一個看得到的結果。
  2. 斷言: D34、DOC4 這類編號項目,各自寫明前提、動作、可觀察的結果與證據。規格必須涵蓋正常路徑、失敗與重試(項目數至少一樣多)、預算(附量測值與版本庫中的量測指令),以及可觀測性。
  3. 決策: 選擇會影響多個功能時寫 ADR(docs/architecture/decisions)。
  4. 切片: 最小的端到端變更,先寫測試。
  5. 關卡: 本機檢查 → CI → Dev → Prod。
  6. 執行期: health 欄位與資料新鮮度是最終裁判。

接受任何設計之前,先依序做精簡審查:質疑每個需求、刪除、簡化、縮短驗證週期、最後才自動化。

可追溯性

驗收編號串起規格、測試、pull request 與執行期檢查。當 enforced 規格中有項目沒有任何測試名稱包含它的編號時,bun run check:traceability 會失敗(check-spec-traceability.ts)。規格裡的測試計畫表由測試實際迭代的同一份案例檔產生,兩者不一致時 bun run check:test-plan 會失敗(render-test-plan.ts),所以人審的表格就是測試跑的資料。

證據規則

CI/CD 與發版

.github/workflows/ci.yml 在每個 pull request 上執行型別檢查、可追溯性與測試計畫檢查、建置、單元、整合與端對端測試。

事件結果
Pull request只跑 CI,不部署
Push 到 main所有工作通過後部署 Dev Pages 與 Dev 發布器,再對已部署的 Dev 網站跑端對端測試
從 main 可達的 tag vX.Y.Z用驗證過的同一份建置部署 Prod Pages 與 Prod 發布器

tag 不會移動或重用;回復就是重新部署較早的 tag(docs/operations/release.md)。v0.3.0 沒通過 CI,什麼都沒部署;v0.3.1(2026-10-19)是第一個有每日即時資料的 Prod 版本。每次 push 都會發布一份自動產生的規格狀態看板(Spec 020)。

R2 Class A 事件

R2 依兩種請求類別計費:Class A(寫入與列出,每月 100 萬次以內免費,之後每百萬次 4.50 美元)與 Class B(讀取,每月 1,000 萬次以內免費,之後每百萬次 0.36 美元)。前提條件不成立而失敗的條件式寫入,仍然算 Class A(Spec 008)。

預算

帳號使用 Workers Paid 方案;設計讓每個計量都維持在方案內含的額度內,而且每個工作在花費之前先記帳(runbook)。

計量內含額度預算用量
Workers AI neurons每天 10,000週報 5,000 + 向量化工作 2,500 + 搜尋查詢 1,000 = 8,500,保留 1,500
R2 Class A每月 100 萬次Dev 與 Prod 合計每月約 1.9 萬次
R2 Class B每月 1,000 萬次每月約 26 萬次
R2 儲存10 GBDev 已超過(13.3 GB,2026-10-19),記在 docs/gardening.md
Vectorize1,000 萬個儲存維度截至 2026-10-20 約 1,000 萬(已向量化 9,764 段 × 1,024),接近內含額度

版本庫中的 measure:* 指令可以離線重現這些數字(見根目錄的 package.json);例如 bun run measure:daily-volume 檢查一天的量是否在每次執行的來源上限內。

可觀測性