# 慧博 10 分钟快速采集工具开发方案 V010 创建人员:`dev.developer.ana.cai` 文件职责:append-only 关闭 V009 唯一 terminal-outcome ErrorCode 阶段域矛盾。 predecessor:V009=`6927/50f76a6356d6048656e672c4c68d241b152fc3c4b792931f11cfec40b9b2706c`;review=`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-DESIGN-V009=HOLD/1/1`,audit snapshot=`409465/d8b7f332ef15f85b23ec86bce8b78e278f7b50ac590c9389feb7c1aeef410d09`。 继承:V009 七种 Z outcome、51-key public wire 和 V001–V008 已关闭合同全部不变。V010 只后继 V006 第 4 节,增加 terminal phase 的权威 ErrorCode overlay。 ## 1. 两阶段 code validator `error_origin=PACKAGE|TERMINAL` 为内部 validator 参数,不新增 public key: - PACKAGE:继续使用 V006 `COMMON ∪ STAGE_CODES[state]`,用于 Z writer 调用前发生的业务/package 错误。 - TERMINAL:仅使用下表 `TERMINAL_OUTCOME_CODE[outcome,source_state]`,不得再套用 V006 source-state stage code。这样 P06–P09 可如实记录 terminal writer 的 `RECOVERY_UNKNOWN/PROCESS_LIVENESS_UNKNOWN`,而不把它误当 manifest/delivery/timing 业务错误。 T00U 属 PACKAGE;T00B 属 PACKAGE/common deadline;T01/T02/T03F/T03L 属 TERMINAL;T04 使用已验证的原 item outcome,不产生新 error。 ## 2. 七 outcome × P00–P09 权威映射 `R=RECOVERY_UNKNOWN`,`L=PROCESS_LIVENESS_UNKNOWN`,`D=DEADLINE_EXPIRED`,`P=PERSIST_LATE`,`Q=QUOTA_LEDGER_INVALID`,`ITEM(Pxx)=V006 对该 source state 已唯一验证的原 item code(含 NONE 或 DUPLICATE_EXISTING_ARTIFACT)`,`X=事实不可达且必须拒绝`。 | outcome | P00 | P01 | P02 | P03 | P04 | P05 | P06 | P07 | P08 | P09 | |---|---|---|---|---|---|---|---|---|---|---| | T00U pre-Z object U | R | R | Q | R | R | R | P | P | P | X | | T00B known budget exhausted | D | D | D | D | D | D | D | D | D | D | | T01 Z known absent after attempted create | P | P | P | P | P | P | P | P | P | P | | T02 Z known partial/invalid | P | P | P | P | P | P | P | P | P | P | | T03F Z file facts unknown, operation complete | R | R | R | R | R | R | R | R | R | R | | T03L Z writer liveness unknown | L | L | L | L | L | L | L | L | L | L | | T04 Z valid | ITEM(P00) | ITEM(P01) | ITEM(P02) | ITEM(P03) | ITEM(P04) | ITEM(P05) | ITEM(P06) | ITEM(P07) | ITEM(P08) | ITEM(P09) | `ITEM(Pxx)` 不是自由占位:其定义是 V006 `build_terminal_item(validated_snapshot,outcome).stop_code` 的返回值;测试逐 ErrorCode 枚举展开,而实现只接受该已验证值,不能另选。T04 的 terminal receipt `error_code=null`;原 item code 仍保留在 TerminalItem/top-level outcome,二者不可互相覆盖。 T00U 的 state 表示 U 之前最高 durable state:M=U→P06,D=U→P07,T=U→P08;P09 已表示 timing=V,故 pre-Z object U 不可达。P02 的 U 是 quota terminal U,故 Q;P03–P05 是 cache/staging/artifact/recovery U,故 R。 ## 3. top-level status/exit 与 item overlay | outcome | top-level internal/public status | exit | top stop_code | item handling | |---|---|---:|---|---| | T00U | STATE_UNCERTAIN | 27 | 上表 code | source state + STOPPED + 同 code | | T00B | TIME_BUDGET_STOP | 10 | DEADLINE_EXPIRED | source state + STOPPED + D | | T01 | INTERNAL_ERROR | 20 | PERSIST_LATE | source state + STOPPED + P | | T02 | INTERNAL_ERROR | 20 | PERSIST_LATE | source state + STOPPED + P | | T03F | STATE_UNCERTAIN | 27 | RECOVERY_UNKNOWN | source state + STOPPED + R | | T03L | STATE_UNCERTAIN | 27 | PROCESS_LIVENESS_UNKNOWN | source state + STOPPED + L | | T04 | inherited V004/V006 mapping | inherited | original item/top outcome | unchanged;state=P10 | T01/T02 不得被归入 TIME_BUDGET_STOP;T03F/T03L 不得被归入 INTERNAL_ERROR;T04 不得因 receipt.error_code=null 抹掉原 item failure/duplicate outcome。 ## 4. 强制测试 1. 将 70 个表格单元逐个实例化:69 个合法 predicate count=1,T00U/P09 唯一 X 并 ContractError。 2. 对 T03F/T03L 的 P06/P07/P08/P09 正向测试,证明不再进入 V006 package-stage validator;若误走 PACKAGE validator 测试必须失败。 3. T00U 的 Q/M/D/T U 分别验证 Q/P code;T00U/P09 拒绝。 4. T04 对每个 P00–P09 展开该 state 全部合法 V006 code、NONE、duplicate;receipt code 始终 null,item/top outcome 不变。 5. top-level 六个非 T04 outcome 的 status/exit/stop 与 item overlay exact equality;未知 outcome/code/origin 拒绝。 6. V009 51-key wire、legacy projection、V008 receipt、V007 U no-P10 与 V006 package matrix 全量回归。 当前状态:`PENDING_INDEPENDENT_DESIGN_REREVIEW`。V010 PASS 前不创建候选源码/测试/quota ledger,不运行 Python/ADB/APP/dry-run,不触发下载;新增 trigger=`0`。