# 慧博 10 分钟快速采集工具开发方案 V007 创建人员:`dev.developer.ana.cai` 文件职责:append-only 关闭 V006 唯一 `U→P10` 矛盾。 predecessor:V006=`12931/e95a495dbab0dcc10382d53b4eca60cdd8c637c024f5a05992e259be9937d5c8`;review=`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-DESIGN-V006=HOLD/1/1`,audit snapshot=`393033/8ece199e2852c12330a128b9f2b2c2db7fd40c741966b64819146206c3c862c8`。 继承:V006 P00–P10 NEW/PURE 主矩阵、TerminalItem 构造器、ErrorCode/note 域及 V001–V005 全部已关闭合同不变;V007 只替换 V006 第 1 节 U 规则与第 2.4 节 C06/C07 的 U 可达性。 ## 1. U 的唯一终态 任一实际 package object 为 `U` 时,立即满足以下全部规则: 1. `governance_status=STATE_UNCERTAIN`、public `capability_status=STATE_UNCERTAIN`、exit=`27`。 2. item `state` 保持发生 U 时的最高 durable `P00_INIT..P09_TIMING`,不得改为 `P10_CLOSED`。 3. U 之后 `M/D/T/Z` 所有尚未存在对象保持 N;不得 open/CreateNew/append/rename/link/backfill 任一后继。 4. `TerminalReceipt.persist_attempted=false,persisted=false,terminal_path=null,bytes=null,sha256=null,stdout_emitted=true`;仅向已存在 stdout 输出 public terminal,stdout 不属于 package object。 5. U 字段保持 U,不得降级成 N/I/V;对应未知 ID/bytes/hash/path 保持 null。已经 durable 的 reservation ID 或 quota terminal ID 可保留,但不得为 U 对象伪造 event/artifact ID。 6. 恢复或后续人工判断不在当前 run 内发生;新 run 只能按 V002 recovery/replay 合同只读重建,不能修改本终态。 ## 2. P10 closure 的硬前置与修正表 进入任一 C01–C10 前先执行 `all_known = all(x in {N,V,I} for x in [S,F,Q,A,M,D,T])`。`all_known=false` 时 builder 必须返回第 1 节 stdout-only 终态,且 `Z=N`;不再评估 closure predicate。 V006 C01–C05、C08–C10 值不变,但所有单元格隐含排除 U。C06/C07 精确替换如下: | closure_variant | lane/source | S | F | Q | A | M/D/T | quota ID pattern | status | |---|---|---|---|---|---|---|---|---| | C06_RESERVED_STOP | NEW/P01 或 P02-N | N | N | N | N | Prefix3 | RNN | STOPPED | | C07_TRIGGER_CLOSED_NO_ARTIFACT | NEW/P02-V 或 P03-known | N | N | V | N | Prefix3 | RRN | STOPPED | 以下情况明确不属于任何 closure variant: - P02-U:Q=U,保留 `P02_TRIGGER_UNKNOWN`、Z=N、stdout 27。 - P03/P04/P05 的 A=U:保留各自 state 与实际 S/F/Q,Z=N、stdout 27。 - P06–P09 任一 S/F/Q/A/M/D/T=U:保留最高 durable state,Z=N、stdout 27。 - process liveness unknown 导致对象状态也未知时,同样禁止 C06/C07/P10;不得以“已有部分 known evidence”为由继续 closure。 `P10_CLOSED` 因而具有强不变量:`Z=V ∧ U_count(S,F,Q,A,M,D,T,Z)=0`。任何 P10 literal 含 U 均为 ContractError。 ## 3. TerminalItem 与 quota ID 细化 - P02-U:`trigger_attempted=true,triggered=null,reused=false,quota_state=RESERVED,quota_reservation_id=R,quota_terminal_event_id=null,quota_artifact_event_id=null`;`stop_code` 只允许 V006 P02-U 三个 code,`error_or_note=STOP:`。 - A=U:reservation 与已验证 quota terminal ID 保留,artifact event ID=null,即 RRN;trigger/ quota state 使用已知事实,不改写。`stop_code` 取造成 A 不确定的精确 code,`error_or_note=STOP:`。 - top-level `terminal_path=null,terminal_present=false` 必须与 Z=N 相等;public stdout item 的 state/paths/hash/IDs 必须与停止瞬间 snapshot 相等。 ## 4. 强制反例 1. C06 输入 Q=U:断言 closure predicate count=0、P02、Z=N、M/D/T 不新增、stdout 27。 2. C07 输入 A=U:分别覆盖 P03/P04/P05,断言 closure predicate count=0、原 state、RRN、Z=N、stdout 27。 3. P06–P09 对 S/F/Q/A/M/D/T 每列逐个注入 U:所有后继 writer call count=0,P10 builder call count=0。 4. 十个 C01–C10 正向 literal 全部 `U_count=0`;将任一 known 单元替换为 U 均 ContractError,不允许 sanitization。 5. stdout terminal JSON 可生成且严格 schema-valid,但 `terminal_path/bytes/hash=null`;重新读取 filesystem 证明没有新增 M/D/T/Z。 当前状态:`PENDING_INDEPENDENT_DESIGN_REREVIEW`。V007 PASS 前不创建候选源码/测试/quota ledger,不运行 Python/ADB/APP/dry-run,不触发下载;新增 trigger=`0`。