跳到主內容

Theme / 0.9.130

Pstack

用可驗證的工作流程協作,從單一入口學會工程技能

Skills

blast-radius | 證明變更的外部影響

追蹤差異以外的消費者、格式與生命週期,找出安全性依賴的關鍵事實並以真實程式驗證。

blast-radius | 證明變更的外部影響

本頁以 pstack-claude 0.9.126 為基準。blast-radius 檢查影響範圍 (Blast Radius),重點不只是列出呼叫端,而是證明「這項變更安全所依賴的事實」。

定位與適用情境

假設要調整快取清理函式,需求宣稱它「只移除已失效項目,不會觸發其他副作用」。這句話是待驗證假設,不是設計前提。若清理還會通知訂閱者或影響另一個消費者,幾行差異也可能破壞功能。

輸入是實際差異、相關函式、固定版本的快取套件與呼叫端。輸出應有關鍵安全事實、可重跑證據、已確認風險與已排除案例。可在設計前使用,不必等到準備合併。

準備

  • 指定差異範圍及它的行為意圖,包含未提交變更是否在內。
  • 準備套件鎖定版本、局部修補與可閱讀的依賴原始碼。版本不同,安全結論可能不同。
  • 找出能直接呼叫真實快取函式的本機測試或短腳本。不要只模擬一個符合預期的函式。
  • 設定可讀範圍與可執行命令。公開報告前必須移除私密資料。

操作步驟

  1. 讀懂改了什麼。 看新增、修改與刪除符號,並追蹤差異沒有直接呈現的語意。必要時查閱 why 的歷史脈絡,而不是以提交標題替代程式閱讀。
  2. 找出關鍵事實。 在快取案例中確認清理是否真的只影響失效項目。把「不觸發訂閱者」與「不刪除有效資料」分開,避免把多個假設混成一句安全保證。
  3. 追到搜尋找不到的邊界。 檢查依賴實作、卸載與清理時序、微任務 (Microtask)、API JSON、資料庫欄位或跨語言格式。只列同名函式的呼叫端不算完成。
  4. 執行關鍵檢查。 用真實程式建立有效與失效項目,清理後檢查剩餘資料與通知紀錄。讓錯誤假設會造成明確失敗。需要時在執行中的應用程式再重現一次。
  5. 分開風險與排除項。 每個風險寫破壞機制、真實檔案行號、發生可能性、代價與檢查方法。已排除者另列原因。大型變更可用 arena 讓不同觀點查同題,再整合證據。

可直接使用的提示詞

可在 Claude Code 使用 /pstack:blast-radius,或在 Codex 插件選單插入 $pstack:blast-radius。以下是自然語言需求。

用 pstack:blast-radius 檢查目前快取清理差異,先不要修程式。
需求宣稱清理只刪除已失效項目,且不通知有效項目的訂閱者。
先讀真實差異、套件鎖定版本、局部修補與清理函式的依賴原始碼。
找出安全結論依賴的一至兩項事實,再用本機真實函式測試證明。
給實際命令與輸出,標明證據停在哪一層。
風險與已排除案例分開,引用真實檔案行號,不捏造消費者。
缺少依賴原碼或無法執行時標 unproven,不以合理敘述代替證明。

預期結果與驗收

來源把證據由弱到強分成五層。

  1. 只有口頭斷言。
  2. 指到程式行號或依賴原碼。
  3. 逐步走過失敗路徑,說明為何到不了壞情況。
  4. 已執行真實函式的腳本或測試。
  5. 已在運作中的應用程式重現。

預期報告寫清楚關鍵事實到達哪一層,沒證明就寫 unproven。通常第四層是一個便宜且有力的目標。報告還要包含行為變更、已確認風險、已排除項目與合併前最便宜的回歸檢查。

限制與權限

搜尋不到呼叫端不等於不存在外部消費者。若協定、資料庫或另一語言的讀取端不可取得,應把邊界列為缺口,不假定安全。

本機腳本只證明所用版本、輸入與時序下的事實,不能自動涵蓋正式環境的所有競態。沒有多代理工具時,大型變更的 arena 比較也不能冒稱已完成。

技能要求證據,不授權連線正式服務、刪除正式快取、合併分支或擴大修復範圍。唯讀審查若需要新腳本,應先確保其輸出位置與執行副作用在授權內。

延伸閱讀與來源