跳轉到

歷史記錄 · 2026-07-25

月份索引歷史記錄

重大重構里程碑

2026-07-25 ─ 版本後繼邏輯核與第一道破壞牆啟用門檻

決策檔:D-20260725-01

  • 版本後繼 descriptor contract、fold guard、atomic reducer、successorEdgeslineageNodeByCid 與 node-keyed royalty/評分/使用量先以測試 descriptor 落地;舊 fork ancestors 會先解析到同一血緣節點,不新增 fork 層。
  • production descriptor catalog 保持空,asset-version-upgrade 仍不在事件 allowlist;第一道真實破壞牆必須同批啟用 descriptor/雙向 migration、live content validation、persistence admission、replay/checkpoint/protocol 相容性與測試,不得只打開 allowlist。
  • 可序列化 metadata 成為單一權威並生成公開 manifest,migration 函式留在 TypeScript binding;公開凍結前所有 baseline 版本維持 1,不製造不存在的 checkpoint v2/v3 歷史。

2026-07-25 ─ 文檔工程:程式參數表常數硬比對升為主 repo 硬閘(項 4 方案 C)

決策檔:D-20260725-08

  • 程式參數表 ↔ @open4wd/system-constants 的值比對從工作區報告升為主 repo check:constants 硬閘(移植同一比對器、結果一致:可比 246 列/一致 206/drift 0);硬閘只吃值不一致(drift 紅燈),覆蓋缺口(表有碼無 19/碼有表無 44/無法自動比對 21)只報告不紅、回填另議。
  • 材質表側 check:materials(496 欄)早已為硬閘;兩張表的常數面自此由機器接管 drift。
  • 方案 C(雙手編+CI 硬比對紅燈先行)落實:改共用常數若漏改另一側,主 repo 驗證鏈即紅。

2026-07-25 ─ 文檔工程:歷史記錄按年分檔(7.5;landing 索引+歷史記錄/2026.md)

決策檔:D-20260725-07

  • 歷史記錄.md 第 1 節重大重構里程碑(174 條、約 2,500 行)拆入本檔;landing 瘦身為年度索引表+第 2–4 節附錄(廢除欄位/deprecated 規格/資料夾對齊留原處)。
  • 拆檔不斷鏈:決策檔靠 D-YYYYMMDD-nn ID 互引(非行錨點)、sources 只驗非空;check:decisions 改掃 landing+歷史記錄/*.mdcheck:frontmatter 加「歷史記錄/→history」資料夾規則。
  • 制度先行:2026 為唯一年份、此刻分檔效益為零,但立好結構=2027 起「新增一檔+索引加一列」零摩擦;作為開源範例一開始就完整。

2026-07-25 ─ 文檔工程:方法論頁上線(文檔工程.md,隱性紀律顯性化+貢獻者指南)

  • 新增 repo 根 文檔工程.mdtype: meta)=把散落全 corpus 的文檔紀律寫成一頁:單一權威原則+映射表、現況-歷史分離、圖表規範(指向 流程.md §3 不重複)、ADR 兩層制、機器執法清單、用語鐵則、貢獻者指南;本 repo 同時作為可複用的開源文檔工程範例(ADR+MkDocs〔規劃中〕+graphify 三件套)。
  • 每條紀律都指向真實存在的機器看守或權威檔(如單一權威→check:refs/check:rules/check:materials、ADR→check:decisions、用語→o4-terms);用語鐵則節誠實區分「機器看守」(黑名單/封鎖清單、禁 MVP/v1.x)與「約定未機器化」(晶片、衍生、Match/Round/Race 三層)。
  • 導覽入口:type: meta 根層檔由 pnpm docs:generate 自動收入 總覽.md 跨切面區塊與 docs-map;README 貢獻節加指向句。
  • 命名採描述性 文檔工程.md(「北極星」定位保留於頁內 H1 與計畫代號層);specs 九件套 exit 0。
  • 同輪新增英文對外頁 ABOUT.en.mdtype: metaauthority 指向 文檔工程.md=宣告非權威摘要):專案定位、corpus 資料夾分類學、方法論五點摘譯、導航指引;corpus 本身不翻譯,此頁僅放大範例的國際觸及。全英文本體無 CJK=天然通過中英排版 lint。

2026-07-25 ─ 文檔工程:規則→測試追溯上線(主 repo 346 處標註+check:trace;覆蓋 178/198)

決策檔:D-20260725-06

  • 主 repo 測試側完成三域規則 ID 標註:測試上方一行 // 驗證規則:〔PREFIX-R-nnn〕(與 specs 主錨同括號形、共用 regex),共 346 處、覆蓋 178/198 條規則;對映採嚴格判準(斷言在規則被違反時會 FAIL 才算覆蓋、寧缺勿濫)。
  • 主 repo 新增 check:trace(讀本 repo rules.json+掃全部 *.spec.ts):ghost ID(registry 不存在的標註)硬紅、缺測列報不紅=report-mode 先行;與 check:materials 同為 sibling 跨 repo 本機檢查。
  • 首輪缺測 20 條落帳(工作區內部文件《規則測試追溯報告》、未入 repo):ECON 8/LEDGER 5/MOD 7——多為判別場景缺席(如 MOD-R-041 length!==7 拒收分支零覆蓋、MOD-R-029 抽籤點信譽快照不可區分);其中 LEDGER-R-005+ECON-R-023 同指版本後繼→血緣 royalty 映射「無實作亦無測試」=疑似實作缺口、另案追蹤。
  • 主 repo CONTRIBUTING 補「共識規則追溯」節=新共識行為需掛規則 ID 標註、跑 check:trace 確認無 ghost。

2026-07-25 ─ 首次公開域名與 private 期間部署確認

決策檔:D-20260725-02

  • private 期間不發布 GitHub Pages;第一個公開 production origin 直接使用 https://open4wd.org/,正式 build 走 root base path,xjustloveux.github.io/open-4wd/ 只保留為顯式 preview 與災難回復 hosting target、不是 canonical origin。
  • 首次公開只執行 DNS/TLS、PWA scope、canonical URL、deep link、/version.json 與部署服務 smoke,不執行 30 天 banner、major 過渡與 301 herding——尚不存在舊 public client、搜尋索引或 origin-bound 玩家資料,遷移條件不成立。
  • 域名遷移機制(D-20260704-03)保持原樣,繼續作為未來已有公開 origin 時的遷移裁決;部署組態不再需要 CUSTOM_DOMAIN_FALLBACK

2026-07-25 ─ checkpoint signer rotation 與 pinning 完整接線 review

決策檔:D-20260725-03

  • 完整 review 揪出本地 checkpoint 三法與 full-refold 會誤讀本代 frontier 折疊後的 signer set,使 signer rotation 形成自我授權(新成員可授權納入自己的事件);改為 proposeCheckpoint/覆核/finalize/full-refoldquorum-follow 一律以前一個已採納 checkpoint state 的 signer set 驗證本代,第一個 checkpoint 讀 genesis。
  • 本代 derived state 內的新 signer set 只授權下一個 checkpoint、不得回頭授權本代,與 ConfigUpdateEventprevEpoch 治理信任邊界對齊。
  • pinning 啟動時把固定排序的 GOVERNANCE_SIGNERS 寫入 genesis、runtime 明確切換為 quorum-follow;完成 re-vendor 與「來源端包含 pinning replica 未知 reducer」的領域事件窗 E2E,解除 D-20260721-01 記錄的純 core 過渡限制。

2026-07-25 ─ 正式上線、本機離線與連線測試標準確認

決策檔:D-20260725-04

  • 同一份正式 build 以不持久化的 URL query 明示啟動策略:?runtime=local 強制不啟動 network assembly、只建立 storage-only local-ready?runtime=network 要求 network assembly 成功,失敗時登入嘗試 fail-closed,不自動假裝 online 也不降級成測試成功。
  • 省略 query 或 ?runtime=auto 是正式預設,連線失敗依既有能力模型安全降級 local-ready;未知值、重複的 runtime 參數與內部 policy 名稱一律視為 auto
  • runtime query 只控制本次啟動,不寫入玩家設定、IndexedDB 或其他持久資料,也不得改變 D-20260716-01 的能力閘;E2E 自此不必靠瀏覽器網路攔截與連線時序賽跑,避免「瀏覽器已連上才斷網」的競態假陰性。

2026-07-25 ─ graphify-out 跨 repo 關聯與 Prettier 排除複核

決策檔:D-20260725-05

  • 複核焦點是能否把 graphify-out/ 整個加進 .prettierignore:可以,但那只界定 formatter 邊界,不改動版控與輸入政策。
  • .gitignore 繼續逐項保留 semantic cache、manifest.json 與 labels,不得因 Prettier 排除而改成全目錄忽略——這是 clone 後零 token 重建的跨 repo 契約;.graphifyignore 只描述 Graphify 的輸入白名單,不承擔輸出持久化政策。
  • 已版控的 Graphify semantic cache 與 metadata 不刪除、不重新格式化,其內容更新仍由 Graphify 自身產生與驗證;日後要改變 semantic cache 的持久化政策必須另立裁決,不能藉調整任一 ignore 檔間接達成。