{
  "updated": "2026-11-02",
  "note": "每一版對應一個 git commit；部署紀錄另由 Cloudflare Pages 的 API 產生（見下方表格），兩者分開，因為 commit 不等於上線。",
  "versions": [
    {
      "version": "v0.11",
      "date": "2026-11-02 22:50",
      "sha": "574f55b",
      "title": "依原始貼文溯源重釐主軸（/rcc）",
      "changes": [
        "新增〈11/6 00:00 撤銷期限〉：舊世代 CYBER 中繼 1,186 台（26.3%）、G3 世代 430 台（9.5%）、倒數天數",
        "新增 /sources/ 與 SOURCES.md：5 條外部主張逐條標『一手取得了沒』，未取得者不進計算",
        "新增序號補零觀察表（不是違規判定）：TWCA 中繼最長連續 0 達 11–15 個",
        "方法頁新增 3c：世代判定、序號 proxy、期限來源"
      ],
      "why": "原本的主軸是『過去換得多慢』，貼文的主軸是『11/6 00:00 前要換完』；不 rebase 就會答錯題。"
    },
    {
      "version": "v0.10",
      "date": "2026-11-02 22:59",
      "sha": "20722f3",
      "title": "有空窗期的 host 一律標紅",
      "changes": [
        "空窗名單整列紅底＋左側紅線",
        "『與這次換鏈有關的到期』與『落後名單』裡，只要該 host 在空窗名單中，就紅底並加『空窗 N 天』標籤",
        "兩張表下方都加圖例說明紅底的意思"
      ],
      "why": "空窗是本站的主體訊號，掃描時應該先用顏色找到它，再讀數字。"
    },
    {
      "version": "v0.9",
      "date": "2026-11-02 22:52",
      "sha": "fa5af10",
      "title": "把「換鏈風險」與「正常換發」分開",
      "changes": [
        "首屏第二張卡改成「仍在服務舊 CA 憑證的 45 台（1.0%），其中 35 台已過期（77.8%）」",
        "『期限倒數』改名『與這次換鏈有關的到期』，只列舊 CA 鏈的 host",
        "另記 334 台是 90 天期憑證的正常換發，與換鏈無關、不列入該表",
        "到期年份圖限定在公部門 cohort，並標明是工作量預估不是風險清單"
      ],
      "why": "原本的『30 天內到期 369 台』把正常換發與換鏈風險混在一起，讀起來像風險，其實 91% 與此事無關。"
    },
    {
      "version": "v0.8",
      "date": "2026-11-02 22:35",
      "sha": "65d1364",
      "title": "每個數量都附百分比與分母",
      "changes": [
        "KPI 大字下方直接掛百分比（369 台 · 8.5% of 可達；418 台 · 4.1% of 分母）",
        "直方圖每根柱子改成「數量（百分比）」；到期年份圖同理",
        "鏈的族譜每列加「N 台（X% of 可達）鏈上出現」",
        "落後名單段首列出三類失敗各自的分子／分母／百分比",
        "方法頁新增『不單獨刊出任何數量』的呈現規則"
      ],
      "why": "單獨一個分子會被讀成短缺；百分比與分母一起讀才知道嚴重程度。"
    },
    {
      "version": "v0.7",
      "date": "2026-11-02 22:14",
      "sha": "6e3fb90",
      "title": "標明空窗天數的邊界",
      "changes": [
        "「空窗」段落加註：憑證日期分不出『主機停用』與『活著但沒換』，要看期限倒數與落後名單對照"
      ],
      "why": "避免把停用主機讀成怠惰，數字才站得住。"
    },
    {
      "version": "v0.6",
      "date": "2026-11-02 22:13",
      "sha": "5c07a8d",
      "title": "母體收斂到有空窗期的公部門網域",
      "changes": [
        "移除 .com.tw（1,442）與 .net.tw（42）：它們不經過這條鏈，只會稀釋",
        "新增「有空窗期的 domain」段落與 /data/gap_hosts.csv（1,086 台空窗 >90 天）",
        "對照頁只剩政府、教育、中華電信"
      ],
      "why": "本站要回答的是『貼文那件事』，不是全體台灣網站。"
    },
    {
      "version": "v0.5",
      "date": "2026-11-02 22:11",
      "sha": "cb78308",
      "title": "族譜排除假中繼",
      "changes": [
        "把『伺服器把自己的葉憑證當中繼送出』的鏈濾掉（以有效期限 <400 天判定）",
        "族譜從 120 筆降到 63 筆真實 CA 憑證"
      ],
      "why": "錯誤鏈會讓族譜看起來像一堆機關在當 CA。"
    },
    {
      "version": "v0.4",
      "date": "2026-11-02 22:10",
      "sha": "be24411",
      "title": "期限倒數、鏈的族譜、雙憑證",
      "changes": [
        "期限倒數：每台算『鏈上最短到期日』（葉／中繼／根取最小），369 台 30 天內、2,351 台 90 天內",
        "鏈的族譜：63 張 CA 憑證依簽發日排序，並自動抓『同 CN 不同簽發日』＝CA 重簽（TWCA SSL CA：2023-02 / 2024-09 / 2026-10-30）",
        "雙憑證兩種量測：CT 效期重疊（2,494/3,600 台）與今日兩次握手（1,304 台有 ECDSA 第二條路）"
      ],
      "why": "貼文的四個句子裡，有三個只能用鏈的欄位回答；原本的頁面只回答了『過去多慢』。"
    },
    {
      "version": "v0.3",
      "date": "2026-11-02 21:47",
      "sha": "f3b302b",
      "title": "把嚴重度分開",
      "changes": [
        "首屏『鏈有問題』拆成過期／缺中繼／根不受信任三個數",
        "方法頁說明缺中繼在會做 AIA 補鏈的客戶端可能仍可運作，不與過期同級"
      ],
      "why": "三種失敗的後果不同，合成一個數字等於誤導。"
    },
    {
      "version": "v0.2",
      "date": "2026-11-02 21:34",
      "sha": "0cdd116",
      "title": "改掉錯的時鐘定義",
      "changes": [
        "換手空窗改以『舊 CA 憑證到期日 → 第一張新 CA 憑證生效日』計算（原本用簽發日，會把提前換好的算成落後）",
        "probe 加輪替與合併：母體長得比一輪掃描快，不能因輪替而丟掉上次結果",
        "修 openssl 中文轉義（\\E8\\87\\BA…）造成的字串不斷行與手機版橫向溢出"
      ],
      "why": "第一版的中位數是 6,778 天，那是把『史上第一張 TWCA 憑證』當錨定的假數字。"
    },
    {
      "version": "v0.1",
      "date": "2026-11-02 21:26",
      "sha": "1e9528f",
      "title": "首版上線",
      "changes": [
        "CT 時鐘（9,138 台曾用舊 CA 的政府 host）＋每日 TLS 鏈探測（10,781 台）",
        "Apple／Chromium 兩份根憑證快照與裁決、失敗四分類",
        "靜態站骨架沿用 SR71：內容雜湊版本戳、/method/、/data/、/changelog/",
        "每日 04:20 cron，成功靜默"
      ],
      "why": "先把可重跑的資料層與可下載的證據建起來，再談敘事。"
    }
  ]
}