跳到主要內容
回到文件Action Proof · 有界委派
規範

mandate 是一份產出物,不是一個設定項。

有界委派是 Execution Authorization 之內的一種能力,不是另起一個類別。Task Contract 為這條鏈定下框架;它不取代其中任何一環。每一步仍然產生自己那份一次性的 Execution Grant 和自己那份 Action Receipt。

設計

TaskContractV1

這份合約在單一的簽章物件中綁定:tenant、可在其之下行事的行為者、它所指向的 Guardian 與 audience、修訂號、步驟及其限制、預算及其單位、有效期間、生效中的政策與 manifest,以及撤銷計數器。

  • taskId · revision

    身分與版本。已核准的合約從不就地修改:任何一步的更動都會產生一個需要重新審閱的新修訂。

  • tenant · guardianId · audience

    它屬於誰,以及哪一個執行點可以消耗它。一份 mandate 只指向一個 Guardian。

  • actors[]

    每個行為者把一個識別碼綁定到一把金鑰及其 thumbprint。認領一個步驟,需要針對一個新鮮的 challenge 證明持有該金鑰,而這個 challenge 是原子消耗的。

  • authority

    由協定按作業固定。呼叫方既不能選它,也不能在同一個請求內把它降級,而且已核准的 mandate 從不降低某一步的門檻。

  • steps[]

    每一步點名自己的正規作業、供應商、資源清單、其確切參數的摘要,並把 maxUses 固定攜帶為一。

  • budget

    按 tenant、任務、修訂與步驟持久且原子。已承諾 = 已消耗,加上所有結果尚未確定或不確定的預留,因此同一份 grant 無法預留兩次。

  • issuedAt · expiresAt

    有效期間。過了它就不再送出新的步驟;沒有寬限期,也不能從任務內部續期。

  • policyVersion · revocationVersion

    生效中的簽章本機政策與撤銷計數器。若儲存或撤銷不可用,就不再送出新的效果。

交集依然適用

有效權限 = mandate ∩ grant ∩ 簽章的本機政策 ∩ 配接器限制 ∩ 預算 ∩ 身分 ∩ 有效性與撤銷

雲端從不抬高本機上限。mandate 只是交集裡多出的一項,絕不是繞過它的路子,而 Guardian 會在接觸任何供應商之前把它們全部執行到位。

狀態機

一個任務恰好處在一個狀態中,而帳本記錄的是狀態轉移,不是意圖。

  • draft
  • approved
  • running
  • paused
  • completed
  • revoked
  • expired

刻意的排除

  • 沒有再委派。一份 mandate、一個 Guardian、一份預算;一個任務無法把自己的一部分交給另一個行為者,也無法立起第二個執行點。
  • 沒有開放式效果。一個沒有正規作業、沒有參數摘要的東西,不算一個步驟。
  • 沒有長期有效的授權。每一份 mandate 都會到期,而且這個到期無法從任務內部續期。
  • 行為者讀到的東西——文件、工具輸出、網頁內容、記憶——是輸入,絕不是 authority。它無法擴展這份合約。
  • 正規效果與前置狀態由配接器判定。代理程式的摘要、唯讀的結構描述,或從內容裡取來的目的地,都不會被當作事實接受。

讀取器的角色

本機讀取器是用來解釋的。在這個設定檔下,一則孤立的發現、一次棄權、一次未評估或一次部分讀取,都不會阻斷、不會撤銷,也不會對一個已經核准且被允許的確切效果強加額外核准。絕不會為了彌補一則警示而抬高 authority,也絕不會因為沒有出現警示就降低它。身分、簽章、預算、前置條件與撤銷仍然朝著關閉的一側失敗——這不是可以不帶控制就執行的許可。

狀態

設計。結構描述及其不變量已經存在,並有測試涵蓋。還沒有任何被委派的 mandate 對著真實供應商執行過,因此這個設定檔被標為模擬。結果絕不會從一個 mock 或另一個連接器外推而來,而用 MFA 或法定人數測過的舊連接器,也不能為多步委派背書。

尚未定論的問題

正規化的細節、大小與數量上限、時鐘處理,以及對未知欄位的拒絕,都會在動手做任何執行期之前先行固定,並與驗證器一起作為帶版本的測試向量公布。驗證器先於設定檔發布:不會送出任何還無法被獨立驗證的東西。

有界委派 — Task Contract 規範 | SecureStamp Foundation