创建人员:dev.developer.ana.cai
文件职责:append-only 关闭 V004 唯一 blocker,冻结 TerminalItem 新触发/纯复用/失败/STOP 的 quota 真值表。
predecessor:V004=11939/08e12872b9e00322fbeb669c2c2d97a48fa3724f3ae6e759e9b4c2e2b957df08;review=AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-DESIGN-V004=HOLD/1/1。
继承:BLOCK-02/03/04/05/06 均已关闭或无回退;V004 的 terminal mapping、manifest evidence rule、五类 quota idempotency 与单行 reconcile→reserve 事务全部不变。V005 仅替换 V004 第 1.2 节中 SUCCESS/DUPLICATE/FAILED/STOPPED 的 quota ID 强制条件。
TerminalItem V005 字段不变仍为固定 26 键:
item_id,slot_id,candidate_id,report_identity,state,status,stop_code,trigger_attempted,triggered,quota_state,quota_reservation_id,quota_terminal_event_id,quota_artifact_event_id,title,institution,report_date,analysts,page_count,bytes,sha256,source_cache_path,source_file_name,final_path,manifest_row_id,reused_without_new_trigger,error_or_note
新增约束:quota 三个 ID 的 nullability 只由下表 variant 决定,不再由 status=SUCCESS 无条件决定。quota_state=NONE 时三个 ID 必须全 null,且该 item 不调用任何 QuotaLedger 写 API;quota_state=RESERVED|CONFIRMED|UNCERTAIN|RELEASED 时按表要求。
NNN 表示 reservation/terminal/artifact 三个 quota ID 全 null;RRR 表示 reservation、quota terminal、artifact terminal 全非空;RRN 表示 reservation 和 quota terminal 非空、artifact null;RNN 表示仅 reservation 非空。
| variant | state | status | trigger_attempted | triggered | reused | quota_state | quota IDs | final PDF | manifest | stop/error |
|---|---|---|---|---|---|---|---|---|---|---|
NEW_TRIGGER_SUCCESS_CONFIRMED |
P10_CLOSED | SUCCESS | true | true | false | CONFIRMED | RRR | V | V | null/NONE |
NEW_TRIGGER_SUCCESS_UNCERTAIN |
P10_CLOSED | SUCCESS | true | null | false | UNCERTAIN | RRR | V | V | TRIGGER_UNCERTAIN + 已确认 cache identity |
PROJECT_REUSE_SUCCESS |
P10_CLOSED | SUCCESS | false | false | true | NONE | NNN | V existing | V | null/NONE |
CACHE_REUSE_SUCCESS |
P10_CLOSED | SUCCESS | false | false | true | NONE | NNN | V newly published | V | null/NONE |
DUPLICATE_NO_TRIGGER |
P10_CLOSED | DUPLICATE | false | false | true | NONE | NNN | V existing | V | DUPLICATE_EXISTING_ARTIFACT |
DUPLICATE_AFTER_CONFIRMED |
P10_CLOSED | DUPLICATE | true | true | false | CONFIRMED | RRR | V existing | V | DUPLICATE_EXISTING_ARTIFACT |
DUPLICATE_AFTER_UNCERTAIN |
P10_CLOSED | DUPLICATE | true | null | false | UNCERTAIN | RRR | V existing | V | DUPLICATE_EXISTING_ARTIFACT |
RELEASED_NO_TRIGGER_CLOSED |
P10_CLOSED | STOPPED | true | false | false | RELEASED | RRN | N | V | TRIGGER_NOT_OCCURRED |
UNCERTAIN_NO_ARTIFACT_CLOSED |
P10_CLOSED | STOPPED | true | null | false | UNCERTAIN | RRN | N | V | TRIGGER_UNCERTAIN |
PROCESSING_FAILED_CONFIRMED_CLOSED |
P10_CLOSED | FAILED | true | true | false | CONFIRMED | RRR | N | V | actual processing error |
PROCESSING_FAILED_UNCERTAIN_CLOSED |
P10_CLOSED | FAILED | true | null | false | UNCERTAIN | RRR | N | V | actual processing error |
RESERVED_BEFORE_ACTION_CRASH |
P01_RESERVED | STOPPED | false | false | false | RESERVED | RNN | N | N | STATE_UNCERTAIN |
RESERVED_DURING_ACTION_CRASH |
P02_TRIGGER_UNKNOWN | STOPPED | true | null | false | RESERVED | RNN | N | N | STATE_UNCERTAIN |
POST_QUOTA_PRE_ARTIFACT_STOP |
P02_TRIGGER_UNKNOWN | STOPPED | true | true | false | CONFIRMED | RRN | N | N | high-precedence close STOP |
POST_PUBLISH_PRE_MANIFEST_STOP |
P06_PUBLISHED | STOPPED | true | true | false | CONFIRMED | RRR | V | N | PERSIST_LATE |
PRE_RESERVATION_STOP |
P00_INIT | STOPPED | false | false | false | NONE | NNN | N | N | actual input/environment/access/quota/time STOP |
交叉规则:
PROJECT_REUSE_SUCCESS 只复用项目内已归档 ordinary non-reparse PDF,必须重验 bytes/hash/%PDF-/openability/page count 与既有 manifest 关系;不读 APP、不读 cache、不 reserve、不写任何 quota event。CACHE_REUSE_SUCCESS 只允许 resume-postprocess 使用任务已记录的 cache identity、remote bytes/hash 与 reused_without_new_trigger=true,不得打开 APP 原文;可只读 ADB pull 已存在缓存,但不调用 observe/reserve/terminal/artifact quota API。QuotaSnapshot.safe_available=0 仍允许;CLI 只读 fold 当日 ledger 并把 quota_ledger_path、累计量和 safe=0 写入 top-level terminal,不新增行。ledger lock/read失败仍 fail-closed,但“额度为零”本身不是复用 blocker。quota_reservation_id,quota_terminal_event_id,quota_artifact_event_id 三列为空;reused_without_new_trigger=true,error_or_note 写 ZERO_QUOTA_REUSE,其余 PDF/来源证据必须完整。record_artifact_outcome 仅用于存在 reservation 的 item;因此两个 NEW_TRIGGER、两个 DUPLICATE_AFTER 和两个 PROCESSING_FAILED closed variant 为 RRR。纯复用的成功/重复计数来自 manifest/terminal,不写 quota ledger success delta。POST_PUBLISH_PRE_MANIFEST_STOP=RRR。trigger_attempted 表示已进入打开原文动作;V005 把 triggered 的类型精确扩为 BOOL|null:确认触发=true、确认未触发=false、触发事实不确定=null;其余 BOOL 字段不可 null。trigger_attempted=false,quota_state=NONE,reused=true。triggered 不含纯复用;succeeded 包含复用;quota_confirmed/uncertain/active 来自只读 ledger snapshot;三者不会因复用增加。safe_available=0 下 PROJECT_REUSE_SUCCESS、CACHE_REUSE_SUCCESS 均 PASS,quota ledger bytes/hash/row count 前后不变;随后新 trigger 必须 PARTIAL_QUOTA_STOP。当前状态:PENDING_INDEPENDENT_DESIGN_REREVIEW。V005 PASS 前仍不创建源码/测试/额度账本,不运行 Python/ADB/APP/dry-run,不产生真实 trigger;新增 trigger=0。