真實行為。可重播的證據。

記錄應用程式實際做了什麼。Chronicle 將擷取到的證據寫入本機 WAL,轉換為 canonical session,再針對明確授權的 loopback 目標重播。

目前範圍Linux · 明文 HTTP/1.1 · 本機檔案系統

觀察到的流量持久化邊界已授權目標
從觀察到的流量,走向明確授權的重播。

從觀察到的流量,走向明確授權的重播。 擷取 → WAL → ETL → canonical session → 重播

真實流量,本身就是迴歸測試的證據。

手寫 fixture 只能涵蓋開發者記得明確寫下的內容。Chronicle 從已發生的行為開始:socket 證據、有序位元組,以及協定層級的請求與回應關係。不需要在應用程式加入探針,也不會把生產目標帶進重播。

從工作負載外部擷取,不必把程式碼寫進應用程式。

從流量到可攜式錄製。

每個交接只有一個工作。Capture 負責觀察;WAL 讓持久前綴成為權威;ETL 負責重建;canonical model 讓重播不依賴擷取與儲存細節。

  1. 擷取

    從受監督的命令、程序或 cgroup 外部掛接。Chronicle 觀察 socket 生命週期與明文 payload 證據,不需要在應用程式加入 instrumentation。

    socket → 證據
  2. WAL

    將證據附加到分段 WAL v1。提交標記與同步操作定義中斷後下游可以信任的範圍。

    附加 → 提交
  3. ETL

    讀取復原後已提交的前綴,重建有明確上限的 HTTP/1.1 session,記錄遺失,並針對每個完成定稿的 epoch 發佈一個結果固定且可重現的 canonical session。

    復原 → 轉換
  4. canonical session

    保存不依賴協定與儲存方式的錄製,包含連線、操作、完整性與重播屬性。

    發佈 → 檢查
  5. 重播

    先規劃。只對已授權的 loopback 目標執行;explicit-target mode 在提供 `--execute` 前維持 dry-run。記錄中的生產目的地永遠不會成為 fallback。

    規劃 → 驗證

先持久化再解讀。先授權再執行操作。

持久化是擷取的一部分。

WAL 不是後續階段崩潰時可以消失的內部佇列。復原以 WAL 中最後一個有效提交標記為權威;ETL 從該邊界開始工作。

重播刻意比擷取更難。

不用傳送流量就能檢查計畫。明確目標執行需要 loopback 對應、主機一致、操作授權與 `--execute`;寫入還需要 `--allow-write`。

使用你已經有的 CLI。

最短的實用路徑就在命令介面中:先檢查就緒狀態,再錄製工作負載,檢查結果,最後在新的受監督複本中重播。

chronicle / 公開命令

$ chronicle doctor
$ chronicle record --name checkout -- ./my-app
$ chronicle list
$ chronicle inspect checkout
$ chronicle replay checkout -- ./my-app

以下是目前公開的 0.1.x 介面。刻意省略輸出;需要機器可讀合約時使用 `--format json`。

小而清楚的邊界。

目前可用

Linux 上有明確上限的明文 HTTP/1.1 live capture;所有平台的 fixture 錄製;本機檔案系統錄製;安全 loopback 重播;`doctor` 就緒檢查。

尚未實作

TLS 解密、HTTP/2+、PostgreSQL/S3 持久化、靜態資料加密、完整資料遮罩、Docker 與 Kubernetes 封裝。

執行命令前,先讀懂邊界。

Chronicle 仍是早期但可執行的軟體。文件把安全路徑、操作限制與精確 CLI 合約放在手邊。