# 32 证据与追踪 平面:控制 governed_by:D-005、D-009、D-039、D-055 用途:让"做过、做对了、花了什么"成为可以被别人重新查验的记录,而不是一句声明。 ## 1. 最小职责与接口 - **它必须做到的** - 区分主张、权威记录源、观察、验证结果、验收证据五个概念,不互换。 - 让每条完成主张绑定最小字段集,缺项即主张不成立。 - 记录足以还原调用树的轨迹,而不只是一串事件。 - 只追加地保存原始记录,导出与聚合只作派生投影。 - 按计费类别加权记账成本并声明价表版本,同时保留原始计数。 - 维护证据的失效条件,失效的证据不再证明当前交付。 - **从别的部件拿什么**:从[30 验证与测试](30-验证与测试.md)拿逐层三态、盲区、验证基线与生产者/验证者身份;从[31 守卫与权限边界](31-守卫与权限边界.md)拿 Gate 结果、豁免与跳过记录、拦截与误伤计数;从[24 工具与执行环境](24-工具与执行环境.md)拿调用记录、产物清单与回读结果;从[20 状态工件](20-状态工件.md)拿精确版本、工作区身份与状态转换事件;从[25 执行者与模型](25-执行者与模型.md)拿分单元、分阶段的消耗与调用记录;从[40 人的检查点与授权](40-人的检查点与授权.md)拿授权记录。 - **给别的部件什么**:给[10 意图与验收](10-意图与验收.md)每个条目的验收证据;给[11 项目知识](11-项目知识.md)观察与验证结果作为主张的支撑;给[12 记忆与知识治理](12-记忆与知识治理.md)状态转换事件、消费记录与轨迹;给[33 评估与演进](33-评估与演进.md)轨迹、机制消费与误伤计数、成本分解;给[40 人的检查点与授权](40-人的检查点与授权.md)可回读的原始记录。 - **它自己维护什么**:只追加的原始记录、验收证据包、轨迹、成本记账与价表版本登记、每条结论的首次观察与最近复核时间。 - **未决**:内容级轨迹跨信任边界时的开关与脱敏归安全议题,本轮未展开;六项字段作为最低必备集合尚未与"所有项目的最低 Gate"一并确认。 ## 2. 原则 - **P1 五个概念不可互换。** 主张是带范围、版本、环境与时间的待判断陈述;权威记录源对某类意图、定义或状态有治理权限;观察是在明确时间、环境与方法下直接读到的结果;验证结果是对工件执行指定过程后的结果;验收证据是把条目、版本、环境、过程、结果、工件与限制绑在一起的包。源码与配置是某版本的源定义,测试描述预期,只有实际运行记录才是验证结果;部署记录说明动作发生过,回读才是对目标状态的观察;长时或异步执行的即时输出只说明动作曾被发起,可重读的持久完成标记或目标状态的预期变化才是观察;工具副作用由系统直接观察或由工具声明,不由模型转述。|防的失败:把"某处已存在"说成"当前已生效";把发起当完成 |删除条件:写不出(责任结构型:五者混用会让"某处已存在"冒充"当前已生效",冒充的后果由验收方承担;这是概念的归属而不是表述习惯) - **P2 一条完成主张应至少绑定六项。** 断言;原始证据所在位置;精确版本与工作区身份;适用范围;观察时间;确认方法(含检查器及其版本、执行者与验证者身份,二者相同即判未定)。缺项即主张不成立,不得由摘要顶替原始证据。Gate 结果与豁免、跳过记录同样进入证据链,其字段随 Gate 合同定义(见[31 守卫与权限边界](31-守卫与权限边界.md))。|防的失败:报告来源不明、无法绑定当前工件;自产自验 |删除条件:运行类型限定——六项以事发当时可采集为前提;追溯登记的主张按成立条件表达,写出哪些字段不可得因而成立而受限,不因缺字段整体判不成立(形式见[30 验证与测试](30-验证与测试.md) §2 P1,作用域轴见[00 总览 §3](00-总览.md#default-scope));作用域内写不出(责任结构型:完成主张不能由摘要顶替原始证据,主张与它的证据必须由同一方一起交出) - **P3 字段集随复杂度信号伸缩,追加须登记触发信号。** 五组只在观察到对应信号时追加:多来源冲突时加权威归属与所有者(归属的判定规则见[11 项目知识](11-项目知识.md) §2 P2);多环境时加环境与关键数据、权限、开关状态;结论会随时间失效时加首次观察与最近复核时间;存在派生投影时加派生来源与内容指纹;出现新旧替代时加状态与替代关系。没观察到信号就不加,信号消失后字段组可以撤出。|防的失败:局部结论被扩大为全局;归属字段为空或填错导致证据错配 |删除条件:对应复杂度信号在本项目不再出现 - **P4 变更验证另附四项。** 变更前的可比对集合及其版本(验证基线,形态见[30 验证与测试](30-验证与测试.md) §2 P6);本次运行实际消费的输入版本;逐层三态与各层盲区;验证者身份。三态与基线的语义在[30 验证与测试](30-验证与测试.md),本章只要求它们以字段形态落进证据。存量失败显式登记且可见,不得掩盖新增失败。|防的失败:工作副本领先于运行输入却宣称已生效;主线已红时分不清谁引入了什么 |删除条件:执行环境原生记录并暴露实际消费的输入版本时,该项改由系统写入(能力补偿类);基线与三态部分写不出(责任结构型:存量失败不得被用来把新增失败说成历史问题,谁引入的由谁负责) - **P5 证据有失效条件,失效即不再证明当前交付。** 代码、依赖、生成物、配置、测试、工作区、环境、数据集、权限、开关或验收标准发生变化时,旧结果可能失效;来源不明或无法绑定当前工件的报告不能证明当前交付;验证现场与代码现场不一致时同样不能。"曾经通过"不等于当前版本在目标环境满足验收。|防的失败:过期证据被当作当前证明 |删除条件:证据载体能自动绑定其全部依赖、并在任一依赖变化时机械判失效时,"人工判断是否失效"可删(能力补偿类);"曾经通过不等于当前版本在目标环境满足验收"写不出(责任结构型:证据证明的是它声明的那个范围,扩大解释的责任在引用它的一方) - **P6 轨迹的最小结构是调用树,不是时间序列。** 至少能还原:带父子关系与时间区间的调用;每个节点自己的状态与用量;重试与中断是一等节点,不与原节点合并;注入进上下文的内容可按来源回看,人的请求、装配注入与工具返回彼此可辨。只有事件流而没有父子与配对关系的记录不构成轨迹,缺配对即记为中断而不是忽略。|防的失败:慢、贵、错无法归因到层;重试次数不可数;成本与失败被错误归因到人的输入 |删除条件:起始档——调用树自 L2 起才有对象(L0/L1 单执行者无父子调用关系,形态见 §3);作用域内写不出(责任结构型:缺配对即记为中断而不是忽略,忽略等于把归因不到的部分算作没发生) - **P7 导出与聚合是派生投影,不是权威记录。** 权威的是本地只追加的原始记录;导出通道的丢失必须显式可见(丢弃计数、序号缺口),不得静默裁剪;验收证据须能回读原始记录;观测组件自身的异常不得影响被观测的执行,采集失败时本地保留并可补传。|防的失败:用有损的聚合数据当验收证据;观测改写了被观测的数据 |删除条件:写不出(责任结构型:验收凭哪一份记录是权威记录源的指派([11 项目知识](11-项目知识.md) §2 P2 在证据侧的落点);有损投影当验收证据时,损失掉的那部分无人负责) - **P8 成本按计费类别加权记账,并声明价表版本。** 原始计数不代表成本:同一变更在不同价表下方向可能反转。记录时分列计费类别与原始计数,按执行单元与阶段分解,并注明被报告单元占总量的份额;前后对比引用同一基线工件。|防的失败:计数下降而成本不降;单元降幅冒充整体收益 |删除条件:执行平台原生输出按价表折算的全单元视图且默认被读取 ## 3. 从 L0 到 L3 | 档 | 形态 | |---|---| | L0 一人一工具 | 每条完成声明后面跟一段六项字段的短记录,证据放在能被重新打开的位置,不留在对话里。 | | L1 一人多会话 | 恢复靠读证据不靠回忆;动手前记下变更前失败集合,运行后记下实际消费的输入版本与最近复核时间。 | | L2 团队 | 轨迹按调用树留存,重试与中断单列;成本按计费类别加权并分解到单元;聚合视图只作索引,验收回读原始记录。 | | L3 无人值守 | 只追加记录是唯一权威源,导出丢失有计数;机制消费与误伤计数常态产出;观测通道故障不影响执行,采集失败本地留存补传。 | ## 4. 追溯 本章的写作期内容——它解决什么问题、源章节与主题综合的映射、每条原则的证据强度——在[追溯账本](追溯账本.md#ch-32),效力为零。