重播
重播是 Chronicle 風險最高的邊界。它會消費 canonical session 與 protocol interface,不會重新連線到記錄中的 production 目的地。
安全預設值
標題為「安全預設值」的章節- Command mode 只有在完成與 target 無關的規劃後,才會對 Chronicle 擁有的受監督 listener 授予執行與讀取效果。
- Explicit-target mode 在提供
--execute與所有必要的 target/effect gate 之前,維持 dry-run。 - 寫入一律需要明確授權(
--allow-write);驗證、發佈與未知效果維持拒絕。 - 每個 canonical connection 都需要 target mapping。
- 記錄中的 destination 永遠不是 fallback。
- incomplete、malformed、unmatched、unsupported、pipelined 或涉及有歧義遺失的操作,都會保持可見且不會嘗試執行。
Command mode
標題為「Command mode」的章節command mode 會啟動應用程式的受監督複本,並找出一個由該 scope 擁有且唯一的 loopback listener:
chronicle replay checkout -- ./my-app在 target 啟動前,規劃與拒絕檢查就會完成。command mode 可以為受監督的複本推導 loopback target 與相符的 host,但不會授予寫入、驗證、發佈或未知操作的權限。
Explicit-target mode
標題為「Explicit-target mode」的章節對已經執行中的應用程式,請提供 loopback IP 字面值 target 與所有必要的 gates:
chronicle replay checkout \ --target http://127.0.0.1:8080 \ --allow-host 127.0.0.1 \ --allow-read \ --executeExplicit-target mode 需要:
- 使用
http://與 loopback IP 字面值; - 重複提供且相符的
--allow-host值; - 使用
--allow-read或--allow-write等操作授權; --execute。
寫入操作另外需要 --allow-write。設定檔不能靜默提供這些執行 gates。
HTTP request 處理
標題為「HTTP request 處理」的章節對於有明確上限的明文 HTTP/1.1,重播會移除擷取到的 Host、hop-by-hop 欄位、Authorization、Proxy-Authorization、Cookie、forwarding header、Expect 與 Transfer-Encoding。它會送出一個 target Host 與重新計算的 Content-Length,且永遠不會追蹤 redirect。選用的授權只來自設定好的環境變數名稱,不會取自擷取到的憑證。
驗證會比較 status、body SHA-256/size,以及依序排列且未被忽略的 header。詳細資料不會列出 body 或任意 header 值。結果會區分 passed、failed、skipped、inconclusive 與 unsupported operation。