|
9 | 9 | ### Requirement: Tool execution SHALL preserve process evidence |
10 | 10 |
|
11 | 11 | 执行结果 MUST 保留实际 argv、工作目录、原始退出码、标准输出和标准错误;若外部工具输出超过明确的捕获预算,则 MUST 终止该执行并保留预算内已捕获的诊断,以独立故障标识报告 UNVERIFIED,不得伪造完整输出或 PASS。参数 MUST 以 argv 传递,不隐式增加 shell;工具是否发现代码违规由工具判定策略解释,不能由进程执行器推断。 |
| 12 | +Git 快照使用同一有界进程边界的原始字节模式,MUST 保留 NUL 与 blob 字节且不在协议校验前解码;路径列举、大小响应及对象内容 MUST 各有明确捕获预算。任何超限或执行故障 MUST 阻止交付快照并成为 SnapshotError,不能以截断数据继续门禁。对象总量预算必须在读取 batch 内容之前由大小响应确定。 |
| 13 | +工作树预测暂存覆盖层 MUST 以有界缓冲复制普通文件,并同时限制文件数量、单文件与累计字节数;检查期间文件超出预算、变成特殊文件或读取失败 MUST 拒绝交付临时树,不能把不完整覆盖层当准确 Git 快照。删除及文件与目录之间双向转换的预测语义必须保留,不能因覆盖路径迭代顺序不同而改变快照。 |
| 14 | +同一次准确快照中,拟提交路径与实际物化的覆盖层 MUST 使用同一份已列举的路径集合;不得分别查询两次 Git 工作树后把不同时点的路径清单拼成一个已验证结论。 |
12 | 15 |
|
13 | 16 | #### Scenario: A checker exits nonzero |
14 | 17 | - **WHEN** 同一检查器经 CLI、保存 hook、Git 门禁或 CVE 执行并以非零退出 |
|
22 | 25 | - **WHEN** 外部检查器向 stdout/stderr 持续写入超过进程执行预算的内容 |
23 | 26 | - **THEN** 执行器有界地保留两个流的已有诊断,终止该检查,返回明确的输出超限故障与非成功退出;下游不得把截断的成功前缀判为 PASS 或宣称已有完整诊断日志 |
24 | 27 |
|
| 28 | +#### Scenario: Git emits more data than the snapshot budget |
| 29 | +- **WHEN** Git 路径列举、batch-check 或 batch 内容超过相应捕获预算,即使进程继续输出 |
| 30 | +- **THEN** 执行器及时终止进程;快照入口报告未验证且不交付部分内容、不得据此前的成功前缀放行 |
| 31 | + |
| 32 | +#### Scenario: Many predicted worktree files exceed the aggregate overlay budget |
| 33 | +- **WHEN** 每个文件均小于单文件上限,但所有拟暂存工作树文件的实际读取字节总数超过覆盖层预算 |
| 34 | +- **THEN** 快照不交付部分临时树,门禁报告未验证,原工作树与 Git index 保持不变 |
| 35 | + |
| 36 | +#### Scenario: Overlay listing changes between observations |
| 37 | +- **WHEN** Git 工作树路径列举在两次调用之间返回不同集合 |
| 38 | +- **THEN** 单次快照只使用一次列举结果来计算 changed 与构建临时树;不能把第一份 changed 与第二份物化内容配对 |
| 39 | + |
| 40 | +#### Scenario: A predicted path is a special file |
| 41 | +- **WHEN** 拟暂存路径在快照复制时变成 FIFO、socket 或其它非普通文件 |
| 42 | +- **THEN** 快照拒绝该内容,即使类型检查与打开之间发生替换也不阻塞读取特殊文件,且不把它当作成功删除 |
| 43 | + |
25 | 44 | ### Requirement: Execution failures SHALL remain observable |
26 | 45 |
|
27 | 46 | 超时 MUST 保留已捕获输出并记录超时故障;缺失命令与权限/工作目录故障 MUST 返回明确不可验证的执行结果。非 UTF-8 输出 MUST 保留可解码文本并替换非法字节,不能让编码异常吞掉整次检查。不得捕获用户取消或任意编程异常作为成功结果。 |
|
0 commit comments