浏览 1.0.0 文档
1.0.0 文档修订 2

附录:策略与忽略规则

用确切接受的字段和匹配规则,在 .ait/policy.yaml 里配置 1.0.0 的接纳要求,在 .aitignore 里配置仓库可见性。

适用人群: Repository 所有者、开发者与 coding agent

仓库策略与忽略规则#

这一页说明位于仓库根目录、控制接纳要求和文件系统可见性的两个文本文件。 它们解决的是不同的问题:.ait/policy.yaml 决定需要哪些证据; .aitignore 决定 AIT 能看到哪些工作区路径。

.ait/policy.yaml#

ait init 会用仅所有者可读写的权限创建这个文件。它的 policy_id 必须 和 .ait/config.json.policy_profile 一致。1.0.0 支持的策略 ID 有 prototypeteamrelease

Code · 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.0.0 里首次远程注册只接纳确切的 prototype 基线,以及它完整的 「仅文档」覆盖项。注册新 Repository 之前先选好这个档位。本地配置的 teamrelease 档位,在受支持的本地用途下仍然是有效的策略文件。

.aitignore#

.aitignore 是一份按行组织的仓库可见性约定。它作用于工作区检查,以及 status、Snapshot 和 Plan 在文件系统发现阶段会考虑的那些文件。它是对 AIT 内置排除规则的补充,不是替代。

Code · 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.0.0 的匹配器范围内。.aitignore 自身始终可见,这样它 的效果才能被记录和评审。

忽略规则改变的是可见性,不是归属或删除。它不会抹掉已有的 Snapshot,不 构成存放机密的许可,也不会让某个生成目录变得可以放心提交。

验证#

改完这两个文件中的任何一个之后,先做只读检查,再开始正常干活:

Code · bash
ait config show --json
ait status
ait diff

做远程注册时,要等策略和 Patchset CI 目录都就绪之后,再真正执行 ait remote add;它的校验才是权威的。

相关参考#

Version authority

Checked against the exact 1.0.0 source

This page is public documentation, not a second product contract. Use the exact source and distribution contract for release authority.

Owning component Snapshots
  • ait-coreSNP-B06A48DA0245
  • ait-serverSNP-E90456E6425E
  • ait-runnerSNP-6B0A1BB3AFAD
  • ait-pythonSNP-973E3BFAF3DE
  • ait-nodeSNP-F962CC66AA62