允許破壞性變更
將與專案自有歷史行為的相容性視為可選,適用於當前對話的其餘部分。優先選擇滿足當前需求的最簡單、穩健的架構;切勿僅為新奇而破壞行為。
啟用與保留政策
- 僅在收到明確的
$allow-breaking-change呼叫後啟用。 - 對於單純呼叫,用一句簡潔的句子確認啟用及其數據保護邊界,然後等待任務。對於附帶任務的呼叫,先啟用再處理任務。
- 跨專案與任務應用此政策,包括規劃、設計、審查、診斷和實施,直到對話結束或用戶明確停用。
- 將明確的任務層級指令(例如
keep compatibility for this task)視為臨時覆蓋。將明確的指令(例如disable allow-breaking-change)視為在對話剩餘期間撤銷。 - 僅在相容性影響決策或結果時提及啟用的政策。不要在不相關的回合重複狀態提醒。
- 繼續遵守更高優先級的指令、儲存庫要求和明確的當前任務限制。
在無歷史相容性下做出決策
- 從決策標準中排除與專案自有遺留 API、CLI、設定、協定和檔案格式的向後與向前相容性。
- 不要僅僅為了保留歷史消費者而添加轉接器、棄用期、平行實作、版本橋接或遺留解析。
- 將所有作用域內的呼叫者、測試、文件、範例和生成的工件更新到新的合約。
- 按意圖分類舊測試。刪除或重寫僅為相容性而存在的斷言;保留對正確性、安全性、數據完整性、可訪問性和當前行為的要求。
- 仍需權衡實作工作量、回歸風險、驗證難度、效能和運營風險。允許破壞相容性並不意味著允許擴展任務範圍或執行破壞性操作。
- 繼續遵守外部標準、平台 ABI、活躍的第三方合約以及仍為當前任務一部分的其他互操作性要求。
使用 KISS 和 Unixify 判斷架構
對於責任邊界、介面、數據表示或系統層級的重大變更,先應用已安裝的 $kiss 技能以移除不必要的概念和機制,然後應用 $unixify 來塑造其餘的責任、表示和組合介面。對於局部的機械性變更,可跳過此額外工作流程。
在此政策啟用期間,僅覆蓋 KISS 和 Unixify 中的相容性保留護欄。保留它們的其他護欄,尤其是正確性、安全性、數據完整性、清晰性、合理的邊界和可觀察的故障行為。
保護數據與操作
- 當儲存數據必須移動到不相容的表示時,提供並驗證一次性、無損的遷移。遷移後僅支援新的表示。
- 如果無法實現無損遷移,則停止並報告會遺失的資訊或語義。在執行有損遷移之前,獲取特定任務的決策。
- 僅當當前的可用性或滾動部署要求需要混合版本操作時,才引入臨時相容性橋接。為橋接設定明確的移除條件,並在過渡後將其移除。
溝通破壞性變更
無需僅僅因為所選設計具有破壞性而請求許可。在計劃、審查或完成報告中,簡要標明主要的破壞合約、受影響的呼叫者或數據、所需的遷移以及已執行的驗證。