edit | blame | history | raw

慧博 10 分钟快速采集工具开发方案 V011

创建人员:dev.developer.ana.cai
文件职责:append-only 关闭 V010 的 pre-Z U、T01/T02 precedence、T04 reachable/public-null 三项。
predecessor:V010=4760/a8a2524bab871e8ab076e3e6e5dc4630f6cd7a904b7da9f4e3f7ba5425c4d694;review=AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-DESIGN-V010=HOLD/3/3,audit snapshot=415511/5b96c40ddfe18298b0ea584c54c8dd3108adae5ba5a4a4ea7ca96b385d6e85d8
继承:V009 的七个 Z outcome/51-key wire、V008 receipt、V007 no-U-to-P10、V006 package matrix 及 V001–V005 已关闭合同不变。V011 替换 V010 第 2–3 节中有歧义的 P06–P08/T01/T02/T04 映射。

1. pre-Z M/D/T U 按真实原因二分

内部 EvidenceUncertaintyReceipt 固定 6 键:object_kind,source_state,presence,operation_completed,liveness_unknown,error_code。类型:object_kind=M|D|Tsource_state=P06_PUBLISHED|P07_MANIFESTED|P08_DELIVERYpresence=U;其余类型同 V009。

仅允许六个 literal:

object/state file/evidence facts unknown,writer 已完成 writer liveness unknown
M / P06 U,true,false,RECOVERY_UNKNOWN U,null,true,PROCESS_LIVENESS_UNKNOWN
D / P07 U,true,false,RECOVERY_UNKNOWN U,null,true,PROCESS_LIVENESS_UNKNOWN
T / P08 U,true,false,RECOVERY_UNKNOWN U,null,true,PROCESS_LIVENESS_UNKNOWN

六行均为 T00U→STATE_UNCERTAIN/27,保持 source state、Z=N、Z writer call=0。PERSIST_LATE 只表示 known N/I 或已知超时/晚到事实,不允许 presence=U;因此 V010 T00U 的 P06/P07/P08=P 正式废止。P09 的 pre-Z M/D/T U 仍 X,因为进入 P09 已证明 T=V。

2. T01/T02 原始原因与全局 precedence

内部 TerminalOperationCause=DEADLINE|ENVIRONMENT|VALIDATION|INTERNAL。terminal candidate 唯一映射:

Z outcome/cause terminal candidate internal status public exit code
T01/DEADLINE TIME_BUDGET_STOP TIME_BUDGET_STOP 10 DEADLINE_EXPIRED
T01/ENVIRONMENT BLOCKED_ENVIRONMENT BLOCKED_ENVIRONMENT 14 PERSIST_LATE
T01/INTERNAL INTERNAL_ERROR INTERNAL_ERROR 20 PERSIST_LATE
T01/VALIDATION X X X X
T02/DEADLINE TIME_BUDGET_STOP TIME_BUDGET_STOP 10 DEADLINE_EXPIRED
T02/ENVIRONMENT BLOCKED_ENVIRONMENT BLOCKED_ENVIRONMENT 14 PERSIST_LATE
T02/VALIDATION VALIDATION_FAILED VALIDATION_FAILED 16 PERSIST_LATE
T02/INTERNAL INTERNAL_ERROR INTERNAL_ERROR 20 PERSIST_LATE

original_status 必须是 V004 11 个 internal TerminalStatus 之一。最终 top-level status 为 resolve_precedence(original_status,terminal_candidate):按 V004 precedence 1..11 选 rank 较小者;若原 outcome 是 SUCCESS 且 Z 失败,仅 terminal candidate 生效。status→public/exit 只再调用 V004 唯一表一次。于是 access-control、state-uncertain、deadline 等原始高优先级不会被 T01/T02 覆盖,T01/T02 也不再无条件 INTERNAL_ERROR/20。

item overlay 使用最终 status 的精确 stop source:若 original 赢,保留 original code;若 terminal candidate 赢,使用上表 code;同 rank 只允许同 status,code 优先保留 original non-NONE,否则 terminal code。所有 11×7 合法 Cartesian 组合必须测试,T01/VALIDATION 的 11 个组合全部 X。

3. T04 可达集合与 internal/public code 分离

内部字段明确分开:internal_item_code:ErrorCode 永不 null;public_stop_code:ErrorCode|null。唯一投影:NONE→null;任何非 NONE 合法 ErrorCode→同枚举值。receipt error_code=null 只表示 Z 写入成功,不参与 item code 投影。

T04 只允许下列 10 行,不存在 default:

closure lane source_state item status internal_item_code public_stop_code
C01 NEW P06|P07|P08|P09 SUCCESS NONE null
C02 NEW P05|P06|P07|P08|P09 DUPLICATE DUPLICATE_EXISTING_ARTIFACT DUPLICATE_EXISTING_ARTIFACT
C03 PURE P06|P07|P08|P09 SUCCESS NONE null
C04 PURE P06|P07|P08|P09 DUPLICATE DUPLICATE_EXISTING_ARTIFACT DUPLICATE_EXISTING_ARTIFACT
C05 NEW|PURE P00 STOPPED V006 P00 STOP_CODES only same non-null code
C06 NEW P01|P02 STOPPED V006 source STOP_CODES only same non-null code
C07 NEW P02|P03 STOPPED V006 source STOP_CODES only same non-null code
C08 NEW P03|P04|P05 FAILED FAIL_CODES∩V006 allowed[source] same non-null code
C09 NEW P06|P07|P08|P09 STOPPED|FAILED V006 allowed[source] 且 status/code 分类一致 same non-null code
C10 PURE P06|P07|P08|P09 STOPPED|FAILED V006 allowed[source] 且 status/code 分类一致 same non-null code

精确排除:P00–P05 的 SUCCESS;PURE P01–P05;C01/C03 的 DUPLICATE;C02/C04 的 SUCCESS;C05–C10 的 NONE;STOPPED 携 FAIL_CODES;FAILED 携 STOP_CODES;任一 closure/lane/source 不在表中。故 T04 不再把所有 ITEM(Pxx) 泛化为可达。

T04 top-level status/public/exit 由合法 item status 按 V004 映射:SUCCESS→SUCCESS/ACCEPTED/0,DUPLICATE item 在 batch top-level 由实际 aggregate 决定 SUCCESS 或 PARTIAL_SUCCESS,不由 receipt 自选;STOPPED/FAILED 进入全局 aggregate precedence。无论 aggregate 如何,item public_stop_code 都按本节投影。

4. V010 7×10 的后继解释

  • T00U/P06–P08 由第 1 节六个 literal 替换;不再出现 PERSIST_LATE+U。
  • T01/T02 每个 source_state 都先按第 2 节 cause 生成 candidate,再与 original_status 做全局 precedence;source_state 不改变 cause。
  • T03F/T03L 仍分别固定 RECOVERY_UNKNOWN/PROCESS_LIVENESS_UNKNOWN,STATE_UNCERTAIN/27。
  • T04 仅使用第 3 节 10 行,不再使用 V010 的宽泛 ITEM(Pxx) 单元。

5. 强制测试

  1. M/D/T × file-U/liveness-U 六个 literal,分别断言 R/L、27、Z writer=0;PERSIST_LATE+U 全拒绝。
  2. T01 三 cause、T02 四 cause;每个与 11 original_status 做 precedence Cartesian,T01/VALIDATION 全 X;验证 top status/public/exit/code winner。
  3. 第 3 节 10 行正向覆盖所有 source alternatives;全 closure×lane×P00–P09×四 item status 枚举,只有表内组合可达且 predicate count=1。
  4. internal NONE/public null、duplicate same-code、STOP/FAIL same-code 各正向;internal null、public NONE、NONE+non-null、non-NONE+null 全拒绝。
  5. T04 receipt error_code 始终 null,但不得覆盖 item code;51-key public wire 与 item 26-key schema equality 回归。
  6. V001–V010 全量测试不减少;设计 PASS 后才允许创建候选实现。

当前状态:PENDING_INDEPENDENT_DESIGN_REREVIEW。V011 PASS 前不创建候选源码/测试/quota ledger,不运行 Python/ADB/APP/dry-run,不触发下载;新增 trigger=0