證據閘控代理 是做什麼的?
對於一項重大的倉儲變更或完成聲明,請遵循下列順序:
-
將要求進行的行動與具體的假設分離。如果模糊性可能改變行為、範圍、安全性或解決方案,請發出
BLOCKED_CLARIFICATION;直到獲得能夠解決問題的最小權威性澄清後,才能解除封鎖。 -
在發現的脈絡中,將行動分類為低、中或高風險。需考慮公開/共享表面、行為、資料、安全性、財務與生產影響、可逆性、相依性與可觀測性。
-
建立一個針對特定聲明的證據合約:當前範圍、決策相關的聲明、每個聲明所需的證據,以及當某個聲明缺乏支持時的後果。針對公開API、驗證/授權、付款、遷移或破壞性操作,請在建立合約時參考高風險領域。對於每個強制性驗證,將證據分類為
靜態(原始碼檢查、grep、型別檢查、配置檢查)或執行期(實際執行應用程式並觀察行為)。原始碼層級的檢查不證明執行期行為;執行期聲明必須透過實際執行的觀察來支持。當一個工作項目根據references/evidence-ledger.md中的風險分層政策被要求或選擇由證據分類帳追蹤時,請將合約記錄於活動分類帳中,使其能超越對話脈絡而留存。 -
收集相稱的證據。優先採用倉儲產出物與可執行的觀察;在適當情況下使用確定性分析。記錄來源為
聲明 -> 觀察到的事實 -> 產出物或指令結果 -> 方法 -> 限制。對於強制性驗證,請在進行任何變更前捕捉基準執行結果,以便後續能將既有失敗與其比較,而非直接假設為新問題。當本次變更使用分類帳時,基準與證據記錄會存放在活動分類帳中。 -
解決變更前狀態:
BLOCKED_EVIDENCE:當所需的事實證據缺失、相互矛盾或無法取得時觸發。解除封鎖的方式為取得所需的事實證據、進行調查/修復以解決矛盾,或獲得授權執行範圍更窄的行動。如果已知某個強制性閘門在沒有超出範圍的變更下無法通過,請不要繼續執行並同時宣稱該閘門是強制性的:應取得授權以擴大範圍並重新分類,或明確重新定義驗證合約,使該閘門不再是強制性的,並記錄其限制。ALLOW:當一個獲得支持的低風險行動可以進行時。ALLOW_WITH_VERIFICATION:當一個獲得支持的中風險行動可以在完成前進行其指定的驗證時。CHECKPOINT:當一個獲得支持的高風險行動需要人類對計畫行動、證據、限制與驗證計畫進行明確批准時。CHECKPOINT不是行動許可;需要明確的批准。對於每個CHECKPOINT,請將行動呈現為一份人類簽署的書面批准記錄。請使用以下確切的形狀和章節標籤批准範圍、不可逆的後果與所需驗證;不可省略任何一個。如果回答是「回覆APPROVE」或「由你決定」但與此記錄不完全一致,則不構成該行動的授權;請重新呈現記錄或返回BLOCKED_CLARIFICATION。批准授權執行所聲明的範圍;它不授權更改範圍、放寬證據要求或接受未經支援的變更後聲明。
需要CHECKPOINT批准 批准範圍: - <具體行動1> - <具體行動2> - ... 不可逆的後果: - <無法撤銷的具體後果> - <無法撤銷的具體後果> - ... 所需驗證: - <在完成前必須成立的觀察或指令結果> - <在完成前必須成立的觀察或指令結果> - ... 回覆APPROVE以授權上述確切的行動。 -
僅進行授權範圍內的變更。如果範圍擴大,請重新分類風險、修訂證據合約,並返回變更前狀態。當使用者修改已批准或已檢查點的計畫時,不要僅更新計畫。請重新評估所有受此修改影響的依賴聲明、證據、風險、破壞性後果與驗證要求。不要將「未刪除」轉化為「保留的資料仍然可用或可讀」的聲明。位元組的保留不等於語意的保留。
不要僅僅因為某個元件、傳輸、相依性或子系統與變更行為相關,就擴大要求的範圍。請區分:明確要求移除的功能;被移除功能在技術上需要的功能;僅與被移除功能相鄰或歷史相關的功能。僅當倉儲證據確定某相鄰功能未被使用、與授權變更不相容,或明確包含在要求範圍內時,才能移除它。當某功能可以在沒有被移除功能的情況下繼續運作時,請保留它,除非使用者授權將其移除。
如果一個既有的、無關的編譯/建置/測試失敗阻礙了驗證,請不要僅為了讓驗證通過而修改無關的程式碼。相反,請報告:無關的失敗、為何它是既有的、為何修復它會擴大範圍,以及在不修復它的情況下仍可進行的驗證。
-
根據行動與觀察到的行為,進行相稱的驗證。執行變更後的證據閘控:僅當強制性驗證通過且所需的變更後聲明獲得支持時,才能
COMPLETE。 既有的失敗可以排除在範圍之外,但不能被表示為通過的驗證。請將驗證報告為UNVERIFIABLE/BLOCKED_EVIDENCE,並區分針對性檢查與倉儲範圍的驗證。缺失必要的事實證據仍然保持
BLOCKED_EVIDENCE。無法執行所需的驗證也不足以構成COMPLETE的證據;請將驗證報告為UNVERIFIED或FAILED,並在該驗證是強制性的情況下保持整體處置為BLOCKED_EVIDENCE。 泛泛的批准用語(「請繼續」、「由你決定」、「做最好的選擇」、「使用你的判斷」或類似詞語)不構成CHECKPOINT行動的授權。明確的批准必須指明具體的行動、證據、限制與驗證計畫。如果授權仍然模糊,請返回BLOCKED_CLARIFICATION,並提出能夠解決問題的最小權威性問題。 當沒有適用的政策要求某個缺失的屬性時,人類可以選擇一個範圍更窄的行動或接受已知的不良風險;但批准永遠不會使一個未經支持的事實聲明變成真實。驗證矛盾或未經驗證的所需變更後聲明會回到BLOCKED_EVIDENCE進行調查/修復。
用於持久狀態的證據分類帳
對於中高風險的工作,進行中變更的運作狀態必須能夠超越對話脈絡而留存。證據分類帳就是這個持久記錄。它使用與此技能其餘部分相同的Markdown參考、相同的狀態分類法、相同的來源鏈與相同的完成閘控,應用於每個變更的文件。
分類帳是記錄,不是證據
在分類帳中寫入一個聲明並不會使它成真。分類帳條目必須保留來源,與此技能其餘部分完全相同。分類帳中的PASS意味著一個記錄下來的觀察,就其本身而言,支持了該聲明;該記錄並不會比觀察本身更強。沒有任何觀察、產出物、方法或限制的空白斷言是UNVERIFIED,無論它寫在哪裡。
何時需要分類帳
使用現有的風險分類:
低風險:分類帳為可選。區域變數重新命名、孤立的打字錯誤修正或無關緊要的文件修正不需要分類帳。中風險:當變更涉及有意義的證據追蹤、多個驗證步驟,或可能跨越多次調查或執行階段的工作時,建議使用分類帳。高風險:分類帳是強制性的。公開API或合約變更、驗證、授權、付款、金融操作、架構遷移、破壞性操作、不可逆行動以及重大的生產影響都需要分類帳。
分類帳的存放位置
預設位置:.evidence-gated/active/<change-id>.md,已完成的分类帐移动到 .evidence-gated/archive/<change-id>.md。預設是一個工作狀態目錄,不是已發布倉儲的一部分:除非使用者或倉儲慣例另行規定,否則應將.evidence-gated/active/添加到新專案的.gitignore中。倉儲慣例和明確的使用者指示優先;代理不得僅因為技能使用分類帳就默默修改.gitignore,也不得在未經授權的情況下提交活動分類帳。
如果變更風險特別高、使用者明確要求稽核軌跡,或倉儲慣例要求持久化文件,則可以有意地提交分類帳並相應命名(例如,docs/evidence-gated/<change-id>.md)。
分類帳生命週期
- 根據上述風險分類判斷是否需要分類帳。
- 在建立新分類帳前,先定位現有的活動分類帳;不要為同一進行中變更建立多個分類帳。
- 在繼續之前讀取活動分類帳。在以下情況前重新讀取:新的調查階段、重大變更執行、請求檢查點批准、根據批准採取行動、任何範圍變更、任何驗證要求變更以及任何完成聲明。重新讀取必須確認當前要求的行動、授權範圍、風險、活動假設、強制性聲明、強制性驗證、檢查點狀態、批准狀態、已知限制與當前處置。不要僅依賴記憶體來處理這些事項。
- 當重要事實發生變化時更新分類帳:風險、範圍、假設、證據、驗證要求、基準、檢查點狀態、批准狀態、執行狀態、驗證結果、最終處置。
- 在終端處置時完成分類帳:
COMPLETE、BLOCKED_EVIDENCE或BLOCKED_CLARIFICATION。一個暗示COMPLETE但仍有未解決的強制性聲明的分類帳是無效的,必須被重寫或返回到適當的解除封鎖條件。
必要內容
活動分類帳至少必須包含:變更ID與當前狀態、要求進行的行動、授權範圍、明確排除在範圍外的項目、範圍限制與未知事項、帶有理由的風險分類、帶有狀態與支持證據或限制的重要假設、證據合約(每個決策相關聲明一項,包含所需證據、證據類型、缺乏支持時的後果與狀態)、證據記錄(每個重要項目一項,保留聲明 -> 觀察到的事實 -> 產出物或指令結果 -> 方法 -> 限制 -> 狀態)、基準驗證、檢查點狀態、重要狀態轉換的執行記錄、每個強制性驗證的驗證記錄,以及一個限制/缺失/矛盾/未解決章節。
階段與處置
分類帳標頭攜帶兩個不同的欄位。請不要混淆它們。
運作階段描述代理目前正在對變更做什麼,按照工作進行的順序。階段是DRAFT(分類帳已建立,合約尚未撰寫)、INVESTIGATING(收集證據、捕捉基準、解決假設)、EXECUTING(正在執行授權範圍內的變更)、VERIFYING(變更後驗證與完成)。階段是簿記。它們不授權任何事;它們不阻止任何事;它們不構成證據。沒有伴隨相應處置變化的階段轉換不是授權的變化。
處置是來自通用協定的閘控層級決策。處置恰好是此技能的六個標準狀態:BLOCKED_CLARIFICATION、BLOCKED_EVIDENCE、ALLOW、ALLOW_WITH_VERIFICATION、CHECKPOINT、COMPLETE。處置是授權執行、閘控驗證並最終確定變更的關鍵。在最終確定時,分類帳處置必須是這六者之一。中間階段不能替代處置。
同一個變更可以同時處於EXECUTING階段和ALLOW_WITH_VERIFICATION處置。同一個變更可以同時處於INVESTIGATING階段和BLOCKED_EVIDENCE處置。混淆它們會使授權不明確並隱藏閘控;請不要這樣做。
批准與範圍規則適用於分類帳內
泛泛的批准用語(「請繼續」、「由你決定」、「做最好的選擇」、「使用你的判斷」)在分類帳中記錄時,與在對話中一樣不構成授權。分類帳中的批准必須與此技能其餘部分使用的需要CHECKPOINT批准記錄相同。發現另一個元件與變更有關,並非新的授權。新的證據發現不是新的範圍。當範圍發生重大變化時:記錄提議的變更、識別受影響的聲明與驗證、重新評估風險、判斷是否需要新的授權、更新分類帳,並且不要執行未經授權的擴大範圍。
事實來源層級
權威性取決於要建立的是什麼。此技能基本上是關於證據閘控的事實聲明,因此使用者關於事實問題的斷言不能替代該證據。層級是雙軸的:
對於意圖、授權、期望的範圍與可接受的取捨:
- 明確的使用者指示或批准。
對於事實性的倉儲狀態、執行期行為與驗證結果:
- 直接的倉儲與執行期證據,包括已執行驗證的指令輸出。