edit | blame | history | raw

慧博 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=nullstop_code 只允许 V006 P02-U 三个 code,error_or_note=STOP:<ErrorCode>
  • A=U:reservation 与已验证 quota terminal ID 保留,artifact event ID=null,即 RRN;trigger/ quota state 使用已知事实,不改写。stop_code 取造成 A 不确定的精确 code,error_or_note=STOP:<ErrorCode>
  • 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