D-20260728-06|歷史記錄月份索引與每日分檔¶
背景與驅動力¶
按年分檔雖已讓 landing 與附錄分離,但 2026 年檔在三個月內已增至 192 條、約 677 KiB, 其中單日最高約 134 KiB。年度正文仍會持續長大,每次小幅變更都要載入與改寫整年內容, Markdown 轉站點時也會產生可感知的載入停頓。
目前尚未發布,沒有舊網址相容負擔,適合在歷史量仍可完整核對時建立更細的穩定結構。
考慮過的選項¶
- 維持年度正文:結構簡單,但未解決檔案單向增長與生成成本,棄。
- 只拆到月份正文:短期足夠,活躍月份仍會快速膨脹,且之後還要再遷移一次,棄。
- 月份索引搭配每日 canonical 正文,landing 保留附錄與生成式月份總表(採納)。
決定¶
歷史記錄/YYYY-MM-DD.md是里程碑條目的唯一 canonical 位置;檔名日期必須與每條標題日期 相同。歷史記錄/YYYY-MM.md與 landing 的月份總表由pnpm history:generate生成,不手動維護 統計數字。檢查模式拒絕過期索引、舊年度正文及在月份索引誤放 canonical 條目。- 決策來源解析、歷史連結驗證與索引生成共用同一個每日檔解析模型;決策回引只認
決策檔引用行,避免一般延伸閱讀被誤判為雙向關聯。 - 每日頁完整上站,但 MkDocs 側欄只列月份索引並按新到舊排序;每日頁由月份頁進入。
- 遷移時逐條比對 SHA-256,要求所有原始條目內容位元組完全一致,且同日內順序不變; 確認後移除舊年度正文,不保留相容 stub。
後果與影響¶
日常追加只會觸及單日正文與生成式索引,讀取、差異檢視和 HTML 載入成本都有明確上限; 月份索引仍提供按時間瀏覽的入口,側欄不會被數十個每日頁淹沒。
代價是新增一層生成流程與檔名規則,因此本機與 CI 必須執行 check:history。跨日期的舊年度
排列不再保留,因為 canonical 導覽改以日期分組;條目本身及同日內順序維持不變,決策關聯
仍由穩定 ID 與來源標題解析,不依賴舊檔路徑或行號。