浏览 1.0.0 文档
1.0.0 文档修订 2

Binary DB v0:格式与权威

查看 Binary DB v0 的文件格式、整数与偏移规则,以及存储根边界。

适用人群: 内核实现者、集成方与运维

本章是完整的活动 Binary DB v0 技术 schema 的入口。它说明每一条固定记录、 payload 和索引是如何寻址的,以及归哪个存储根所有。

未指定的行为一律保留并失败拒绝:实现不得自行发明扩展句柄编码,不得悄悄加宽 某个字段,也不得在已声明的 layout 转换之外选用新的规范 payload 编码。

全局文件格式#

每个持久化的 Binary DB .bin 文件、以及每个可重建的 .idx 文件,都以一个 四字节头部开始:

Code · text
BIN_HEADER_SIZE = 4
INDEX_HEADER_SIZE = 4

BinHeader / IndexHeader:
u32 layout_id = 1     # little-endian

文件路径决定记录种类、命名空间、权威作用域,以及该文件属于权威存储、payload 存储、对象数据还是可选缓存。头部不含 magic、记录数、校验和、权威名称、 generation 令牌,也不重复记录文件种类。

对于定长记录文件:

Code · text
record_count  = (file_size - BIN_HEADER_SIZE) / record_size
record_offset = BIN_HEADER_SIZE + record_index * record_size

file_size 至少为四字节,且记录区必须能被所选记录大小整除。同一个文件绝不能 混放来自不同 layout 的记录。记录编解码器使用声明的字节偏移,不依赖 Rust 结构体布局、宿主对齐或隐式填充。

payload 偏移是 u64 文件地址,从所属 payload 文件的第 0 字节起算。第一个 payload 通常从偏移 BIN_HEADER_SIZE 开始。payload 与定长记录的整数字段使用 仓库固定的字节序。保留位和保留字段一律写零。

除非某字段是单独声明的有符号 Git identity 时间戳,否则每个活动的定长记录 *_at_s 字段都是小端无符号 u64,表示自 Unix 纪元起的整秒数。早于纪元的输入 失败拒绝。零保持该字段声明的"缺失"或"未知"这一确切含义。不得从时间戳精度 推断任何顺序或唯一性。

*_index_plus1 = 0 表示缺失;非零值编码 index + 1,因为记录索引零是合法的。 不带 plus1 后缀的索引字段存的是直接的记录索引,合法地可以为零。

权威作用域#

当权威根不同时,同一个文件名可能使用不同的记录 layout:

  • 本地工作流权威拥有本地 Task、Change、Line、 Tag、Stash、Land、Land-target-Line、task-snapshot-link 和 Plan 状态。
  • 一个 ait-server 仓库权威拥有远端 Task、Change、Line、Land、 Land-target-Line、task-snapshot-link、Plan、Patchset、Worker Job 及其 ready/state 索引,以及 Attestation、Actor、Review、Policy 和 Waiver 状态。
  • 一次 ait-server 安装拥有一个独立的服务端全局运行权威根,且仅用于 Repository 注册表及其命名空间查找索引。repository_index 指向该根的 repository.bin,并路由到某一个服务端 Repository 权威。Worker Job 的身份 只有作为 (repository_index, worker_job_index) 才有意义;第二个分量是被 路由到的那个 Repository 权威本地的永久物理记录索引。
  • 共享内容权威拥有内容 Snapshot、有序 Snapshot-parent、Tree、归一化的 Tree-entry-range、Blob 以及 object-pack 元数据。
  • 可选的本地 Git 互操作权威拥有 Git 导入/导出的仓库身份、generation、 不可变映射和可续跑的 checkpoint。它是一个逃生舱式的映射权威,不是 AIT 的主工作流权威或内容权威。
  • 一个 task worktree 拥有可丢弃的 .ait-worktree/cursor.bin 状态。
  • 可选的本地内容缓存拥有 manifest/file 查找加速。
  • 可选的本地 remote-mirror 根可以镜像服务端的 snapshot link,同时保留服务端 索引。

不同权威根中数值相同的索引不是同一个身份。本地写入方绝不分配服务端索引。

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