瀏覽 1.1.1 文件
1.1.1

附錄:策略與忽略規則

用確切接受的欄位和匹配規則,在 .ait/policy.yaml 裡設定 1.1.1 的接納要求,在 .aitignore 裡設定儲存庫可見性。

適用對象: Repository 所有者、開發者與 coding agent

儲存庫策略與忽略規則#

這一頁說明位於儲存庫根目錄、控制接納要求和檔案系統可見性的兩個文字檔案。 它們解決的是不同的問題:.ait/policy.yaml 決定需要哪些證據; .aitignore 決定 AIT 能看到哪些工作區路徑。

.ait/policy.yaml#

ait init 會用僅所有者可讀寫的許可權建立這個檔案。它的 policy_id 必須 和 .ait/config.json.policy_profile 一致。1.1.1 支援的策略 ID 有 prototypeteamrelease

程式碼 · yaml
version: 1
policy_id: prototype
defaults:
  require_attestation: true
  require_tests: true
  require_lint: false
  require_security_scan: false
  require_license_scan: false
  require_ai_provenance: false
  require_code_review_summary: false
class_overrides:
  - when:
      content_class: docs_only
    set:
      require_tests: false
      require_lint: false
      require_security_scan: false
      require_license_scan: false

根欄位與要求欄位#

欄位型別與含義
version整數 1
policy_idprototypeteamrelease 之一;必須等於 Repository 的策略檔位。
defaults必填對映,包含各項基線要求開關。
class_overrides可選的有序列表,存放按條件生效的部分覆蓋項。空列表也合法。

每個要求項的值都是確切的 YAML 布林值:

要求項所控制的證據
require_attestation需要一份已接納的 attestation。
require_tests測試證據必須透過。
require_lintLint 證據必須透過。
require_security_scan安全掃描證據必須透過。
require_license_scan授權條款掃描證據必須透過。
require_ai_provenance需要 AI 溯源證據。
require_code_review_summary需要一份程式碼評審摘要。

覆蓋項的 set 對映裡接受的也是這同樣的七個名字。defaults 必須七個都 寫全;set 是部分的,只改它寫到的那幾個欄位。

覆蓋項選擇器#

class_overrides[] 的每一條都要求有非空的 when 對映和非空的 set 對映。when 接受下面這兩個選擇器中的一個或兩個:

選擇器可取值
content_classdocs_onlycode_change
author_classhuman_onlyai_related

覆蓋項按檔案裡的先後順序求值。條件要寫明確,別讓幾條互相重疊、結果取決 於排序的條目混在一起。

生成的檔位基線#

三個生成出來的檔位都要求 attestation 和測試,並且把 AI 溯源和程式碼評審 摘要這兩項要求關掉。它們其餘的預設值是:

檔位Lint安全掃描授權條款掃描
prototypefalsefalsefalse
teamtruefalsefalse
releasetruetruetrue

生成的「僅文件」覆蓋項會把測試、lint、安全掃描和授權條款掃描都關掉。改動 生成的策略就等於改動接納策略;要和對應的檔位設定一起評審。

YAML 接受規則#

  • 用空格,別用 tab,縮排按兩個空格一級。
  • 用確切的小寫 truefalse
  • 重複欄位和未知欄位一律校驗失敗。
  • versionpolicy_iddefaults 以及任何覆蓋項對映,都要保持在上面 示例的確切巢狀層級上。
  • 1.1.1 裡首次遠端註冊只接納確切的 prototype 基線,以及它完整的 「僅文件」覆蓋項。註冊新 Repository 之前先選好這個檔位。本地設定的 teamrelease 檔位,在受支援的本地用途下仍然是有效的策略檔案。

.aitignore#

.aitignore 是一份按行組織的儲存庫可見性約定。它作用於工作區檢查,以及 status、Snapshot 和 Plan 在檔案系統發現階段會考慮的那些檔案。它是對 AIT 內建排除規則的補充,不是替代。

程式碼 · gitignore
# Generated outputs
dist/
*.tmp

# Keep one fixture visible
!fixtures/expected.tmp

# Literal leading markers
\#notes.txt
\!important.txt

規則語法#

形式行為
空行忽略。
# comment忽略。
\#name匹配開頭是字面量 # 的名字。
!pattern取消前面的匹配,讓該路徑重新可見。
\!name匹配開頭是字面量 ! 的名字。
./path開頭的 ./ 會被去掉。
/path錨定到 Repository 根。
path/只匹配目錄的規則。
name不含斜槓時,在任意深度上匹配這個 basename。
*匹配一個路徑段內的任意字元序列。
?匹配一個路徑段內的單個字元。

規則從上往下求值,最後一條命中的規則說了算。其他正則字元按字面量處理; 字元類語法不在 1.1.1 的匹配器範圍內。.aitignore 自身始終可見,這樣它 的效果才能被記錄和評審。

忽略規則改變的是可見性,不是歸屬或刪除。它不會抹掉已有的 Snapshot,不 構成存放機密的許可,也不會讓某個生成目錄變得可以放心提交。

驗證#

改完這兩個檔案中的任何一個之後,先做只讀檢查,再開始正常幹活:

程式碼 · bash
ait config show --json
ait status
ait diff

做遠端註冊時,要等策略和 Patchset CI 目錄都就緒之後,再真正執行 ait remote add;它的校驗才是權威的。

相關參考#

版本權威

對照 1.1.1 原始碼逐條核對

這一頁是公開文件,不是第二份產品契約。要確認發布權威,請以確切的原始碼和分發契約為準。

所屬元件 Snapshot
  • ait-coreSNP-ED7593DBF982
  • ait-serverSNP-0CCD7DD2A077
  • ait-runnerSNP-35C9C133D2EE
  • ait-pythonSNP-756C731A4CC0
  • ait-nodeSNP-55E90D0A81F1