For AI agents: the complete documentation index is available at /trace-index/llms.txt, the full documentation bundle is available at /trace-index/llms-full.txt, and this page is available as Markdown at /trace-index/design/index-consistency.md.

Trace Index 发布与一致性

发布把已经建立并验证的候选事实变成查询者可见的当前事实。本页定义长期稳定的一致性语义:哪些内容必须一起可见、失败时保留什么、重复执行应得到什么。事务、表结构、锁策略和恢复命令留在代码仓库。

一致性目标

Trace Index 对外保证:

  • 当前程序事实都能返回完整物理来源。
  • 相同有效输入、Adapter 解释和领域规则产生相同结果。
  • 查询不会看到一半新、一半旧的相关事实。
  • 处理失败是显式结果,不冒充空结果或成功结果。
  • 对未变化输入安全重试不会重复制造领域事实。

发布单元

发布单元是因为相互依赖而必须作为一个完整结果一起可见的最小事实集合。它从本次真正受影响的 Source、Record、Session、Loop 和 Item 出发,也包含保证这些对象字段、目标引用和物理来源完整所需的事实。

发布单元不固定等于一份 Source,也不默认扩张成整个语料库。一个 Session 可以由多份 Source 支撑,因此一份 Source 的变化可能要求重新验证同一 Session 的其他程序事实;与本次变化无关的 Session 不属于这个发布单元。

发布前验证

候选结果只有满足下面的条件,才能成为当前事实:

  • 领域身份唯一,所有已经填写的目标引用都能解析到当前对象。
  • Session、Loop、Item 的归属、边界、顺序和父级属性符合各自模型。
  • 每个要求物理证据的字段都能通过 Record 返回 Source 和原始内容。
  • 已经失效的 Source、Record 或程序对象不再被新结果引用。
  • 结果等价于对同一有效输入按当前 Adapter 解释和领域规则重新建立。

模型允许省略的事实可以保持缺失,Item 语义也可以按自身契约标记为 heuristic。无法由领域模型表达的内部矛盾会阻止整个发布单元,不能被修饰成部分成功。

原子可见

查询者只能观察到两个完整状态之一:上一个已发布状态,或者本次发布后的新状态。暂存中的 Record、尚未组合完成的 Session、缺少物理来源的 Item,以及仍然指向失效目标的字段都不可见。

“原子”描述对外可见性,不限定实现必须采用哪一种数据库事务或存储机制。

失败保持

一个发布单元在读取、投影、组合、验证或提交阶段失败时:

  • 上一个已发布结果继续可查询。
  • 同步结果明确报告失败及其范围。
  • 未发布的中间数据不冒充当前事实。
  • 后续重试从可以重新验证的输入开始,不依赖半发布状态。

边界完整但内容语法无效的 Record 仍可以作为物理事实发布;语法有效但 Runtime 原生类型未知的 Record 也仍然成立,只是不建立缺少依据的程序事实。这两种情况不同于发布单元自身处理失败。

一次同步可以包含多个互不依赖的发布单元。某个单元失败不回滚其他已经完整发布的单元,但同步结果必须明确说明整体覆盖并不完整。

重试与幂等

领域事实的身份来自有效输入和领域规则,不来自某次同步的执行编号。对未变化输入重复同步,公开结果保持不变;失败后重试成功,结果应等价于一次无故障运行。

中间数据是否复用是实现优化。崩溃次数、扫描顺序和并发时序不能进入领域语义。

并发写入

实现必须按顺序处理会修改同一个发布单元的写入,或者提供等价的冲突检测,防止较旧输入覆盖较新的已验证结果。确实互不依赖的发布单元可以并行处理。

单写者、租约、版本检查或数据库锁都是实现选择,不属于本页契约。

查询一致性

一次查询在自己的读取范围内观察同一个已发布状态。查询和全文检索都不会隐式触发同步,也不会把尚未同步的 Runtime 文件内容与当前索引混成一个结果。

因此,Trace Index 中的“当前”始终表示当前已发布的索引事实。调用方需要更鲜活的数据时,先显式同步,再读取新的已发布状态。

全文索引与 Item 必须来自同一已发布状态。查询不能返回已经退出当前投影的 Item 命中,也不能让新 Item 在其搜索文本尚未进入同一发布结果时对外可见。

局部同步的含义

局部同步只承诺更新调用方明确选择的范围,以及由该范围真实影响的程序事实。它不证明范围之外的 Source 仍然最新。

机器可读结果需要区分请求范围、实际观察范围、成功发布的影响范围和未处理范围。精确字段属于代码接口契约;不能把部分覆盖表现成完整成功,是这里规定的稳定语义。

页面边界

Trace Index 投影模型 定义哪些程序事实仍由当前证据支持。Trace Index 总体架构 定义观察、投影、查询和全文检索在系统中的职责。本页不定义数据库事务、暂存表、锁、命令参数或失败报告字段。