edit | blame | history | raw

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

创建人员:dev.developer.ana.cai
文件职责:append-only 关闭 V008 的 budget 分类、file/liveness 分离和 public wire 版本化三项。
predecessor:V008=5781/1ecfd31ec959781cef17c31fdecee9f73b5d9f0af2fb41a9f7013de725cbf2df;review=AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-DESIGN-V008=HOLD/3/3,audit snapshot=404357/4f42b9caa19f415e50c6c78e49250de58953edc725f688df0b391f193f06a0d7
继承:V008 TerminalReceipt 的 N/I/U/V 方向、V007 U 不进入 P10、V006 package/TerminalItem 总矩阵及 V001–V005 已关闭合同均不变。本版精确替换 V008 第 1–3 节的 T00/T03 与 public top-level schema。

1. 已知预算耗尽与事实未知严格分离

close_budget_remaining_ms<=0 是由 monotonic deadline 算出的已知事实,不是 U。若 Z writer 尚未调用:

  • receipt:persist_attempted=false,persisted=false,presence=N,operation_completed=false,liveness_unknown=false
  • public:status=TIME_BUDGET_STOP,capability_status=TIME_BUDGET_STOP,exit_code=10,stop_code=DEADLINE_EXPIRED
  • item state 保留 source_state,Z=N,stdout 发出预算终态;不得写 Z。

只有 S/F/Q/A/M/D/T 的事实或执行进程活性不可确定时才为 STATE_UNCERTAIN/27。pre-Z U 同样不调用 Z,但其 code 必须是精确 uncertainty code,不能借用 DEADLINE_EXPIRED。

2. TerminalReceipt V009:文件事实与执行活性正交

12 键顺序继续为:

target_path,terminal_path,persist_attempted,persisted,presence,operation_completed,liveness_unknown,stdout_emitted,bytes,sha256,error_code,source_state

V008 的 N/I/V 规则不变;U 精确分成两行:

outcome attempted persisted presence operation_completed liveness_unknown error_code 含义
T03F_FILE_FACT_UNKNOWN true null U true false RECOVERY_UNKNOWN writer 调用已确定返回/退出,但 close/reopen/file-id/bytes/hash 无法唯一判定
T03L_WRITER_LIVENESS_UNKNOWN true null U null true PROCESS_LIVENESS_UNKNOWN writer 是否退出不确定,禁止 observer/readback

因此 presence=U 不再强制 liveness_unknown=true。U 的合法 cross-field 仅为上述二选一;operation_completed=false,presence=Uoperation_completed=true,liveness_unknown=trueoperation_completed=null,liveness_unknown=false 均 ContractError。两行均保留 source P00–P09、Z=U、P10 predicate=0、后继 writer=0、public STATE_UNCERTAIN/27。

3. 七个且仅七个 Z outcome

id 场景 receipt 核心 public status/exit state/Z
T00U pre-Z object U false/false/N/false/false STATE_UNCERTAIN/27 source/N
T00B 已知 close budget 耗尽 false/false/N/false/false TIME_BUDGET_STOP/10 source/N
T01 CreateNew/open 已知失败且 target absent true/false/N/true/false STOP from PERSIST_LATE source/N
T02 terminal 已知 partial/invalid true/false/I/true/false STOP from PERSIST_LATE source/I
T03F writer 已结束,file facts unknown true/null/U/true/false STATE_UNCERTAIN/27 source/U
T03L writer liveness unknown true/null/U/null/true STATE_UNCERTAIN/27 source/U
T04 terminal valid true/true/V/true/false inherited outcome P10/V

T00U 与 T00B receipt shape 相同,但由 error_code 唯一区分:T00U=PROCESS_LIVENESS_UNKNOWN|RECOVERY_UNKNOWN|QUOTA_LEDGER_INVALID,T00B=DEADLINE_EXPIRED。不存在按最接近映射。

4. report_collection_terminal V009(固定 51 键)

schema_version='HIBOR_FAST_REPORT_COLLECTION_TERMINAL_V009'message_type='report_collection_terminal'contract_version='REPORT-COLLECTION-CAPABILITY-V1'

前 43 键逐字、逐序、逐类型继承 V003/V004,形成兼容前缀:

schema_version,message_type,contract_version,project_id,task_id,handoff_id,source_role_instance_id,source_thread_id,target_role_instance_id,target_thread_id,reply_thread_id,requester,review_owner,run_id,mode,status,capability_status,exit_code,stop_code,blocker,observed_at_utc,started_at_utc,ended_at_utc,total_elapsed_ms,work_deadline_reached,close_deadline_reached,requested,triggered,succeeded,failed,duplicates,gaps,quota_confirmed,quota_uncertain,quota_active,quota_cumulative_consumed,quota_safe_available,quota_ledger_path,items,manifest_path,delivery_path,timing_path,prohibited_action_attestation

只在该 43-key prefix 之后 append 8 键:

terminal_target_path,terminal_path,terminal_presence,terminal_present,terminal_persist_attempted,terminal_persisted,terminal_operation_completed,terminal_liveness_unknown

类型/交叉约束:

  • terminal_target_path=Pathterminal_path=Path|nullterminal_presence=N|I|U|Vterminal_present=BOOLterminal_persist_attempted=BOOLterminal_persisted=BOOL|nullterminal_operation_completed=BOOL|nullterminal_liveness_unknown=BOOL
  • 八个 suffix 值逐字段等于 TerminalReceipt 对应值;terminal_present=(presence==V),terminal_path 仅 V 非空。
  • schema key count/order/extra/missing 先验证;V003 strict 43-key 消费者不得把 V009 当 V003。兼容规则为“前 43 键名称、顺序、类型和语义不变 + additive suffix”;消费者按 schema_version 选择解析器。
  • project_legacy_v003(record) 是唯一兼容投影:只删除末尾 8 键并把 schema_version 改为 HIBOR_FAST_REPORT_COLLECTION_TERMINAL_V003,其余 42 值 byte-semantic 相同。CLI 默认只输出 V009;仅显式 --terminal-schema V003 才输出投影,同一次 run 不双写、不双发。
  • V003 投影仍通过 status/capability_status/exit_code/stop_code 表达 T00B 与 T00U/T03F/T03L,不声称 terminal presence;V009 是 package review 的权威 schema。

5. 强制测试

  1. T00B close-budget=0:receipt N/no-attempt,public TIME_BUDGET_STOP/10,绝不出现 STATE_UNCERTAIN。
  2. T00U 分别用 pre-Q/pre-A/pre-M U:receipt N/no-attempt,public 27;与 T00B exact predicate count=1。
  3. T03F:模拟 writer 已返回但 reopen/file-id unknown;断言 completed=true/liveness=false/U/27。T03L:模拟 writer 未确认退出;断言 completed=null/liveness=true/U/27、observer=0。
  4. 七个 outcome 做所有 bool/null 交叉负例;每个合法对象唯一匹配一行。
  5. V009 51-key literal:键序、类型、missing/extra、receipt equality;前 43 名称序列与 V003 完全相等。
  6. 显式 legacy 投影恰为 43 键;除 schema_version 外,其余 42 值与 V009 prefix 相同。默认执行只生成一个 V009 stdout/persist target。
  7. V001–V008 所有回归不减少;仍强制 P10=>所有 evidence known 且 Z=V。

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