# CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V020 - plan_id: `CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V020` - role_instance_id: `dev.developer.ana.cai` - created_at: `2026-07-26T14:07:29.6346599+08:00` - predecessor_plan: `CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V019` / `16404/b49de51253d4c740e3c0e664ebf3135dfcd75693dc1adb50cf5ff82c3073359d` - predecessor_review: `AUDIT-DEV-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-PRECONSUMPTION-REPAIR-PLAN-V019=HOLD/2/2` / `197470/359ec9d4ceb5853785ee9dc0c0b891b8472711d92b988e2c35a4de4b8bf24f9d` / line `1635` - status: `PENDING_INDEPENDENT_PREFLIGHT_REPAIR_PLAN_REREVIEW` - implementation_authorization: `NOT_ISSUED` - P01-P08/R3/synthetic/database/BATCH-001: `ABSENT/HELD/HELD/HELD/HELD` V020 只关闭 `BLOCK-V019-01/02`。V019 已独立复算通过的 22-property name/type/rule 与 mutation hashes、API negative actual evidence、source A/I、C18 equality、P07 literals、C10 unknown boundary及 V018 之前全部已关闭合同均继承且不得回退。 ## 1. BLOCK-V019-01:四 API 的完整 property-rule vectors ### 1.1 API_RESULT V005 rule enum V019 `API_RESULT/API_NEGATIVE_RESULT V004` 的字段顺序与 object/type/property evidence 全部继承;schema identity 升级为 V005。expected property rule enum 完整升级为: `STRING_NONNULL|STRING_OR_NULL|INT64_OR_NULL|INT32_OR_NULL|BOOL_OR_NULL|ARRAY_UINT32_OR_NULL|ARRAY_STRING_OR_NULL` 验证顺序固定为:object count → expected custom schema type → ordinal/case-sensitive property names → property count → 每项 value rule → actual name/type vector/hash。实际非 null 数组的 CLR FullName 必须分别为 `System.UInt32[]` 或 `System.String[]`;实际 null 仍记录 ``。禁止把 `System.Object[]`、`ArrayList`、scalar 或其他 enumerable 解释为 reviewed array。 ### 1.2 四个 success API 的权威 vectors 所有 preimage 均为表中 ordered vector 各元素 strict UTF-8、单一 LF 连接、无尾 LF。API success probe 的 producer 必须构造下表指定的实际 CLR 类型;nullable 字段在 sentinel 为 null 时 actual type 为 ``。 | api_id / expected type | property count | names bytes/hash | actual types bytes/hash | expected rules bytes/hash | |---|---:|---|---|---| | CONVERT / `ANA.SEMI.AUTHORIZATION.WINDOW.V001` | 7 | `104/7f4433249dd9701ceeaa398eac966cc0e6cd4ca223306f3ea634796b1628f23f` | `88/f9dc71beb1a36b25739303f652bd81e3394540585072e0207c30f7022ede76cd` | `102/df47afa24888ccca46ee7458c4638ab6f6e0f6106c3ba0748fbd097ff37520ec` | | TEST / `ANA.SEMI.AUTHORIZATION.WINDOW.TEST.V001` | 7 | `99/7301aa3efc985cded8fc118f7bf2f6ac95538ab51d7b9b25f3acc9686965c44a` | `88/ba1be1eb1de37bc66399789c734ec39db91865a66646c9ea07f549b79e738984` | `99/b555dc7a69374f7ab48692b1d516e5f84db44414957daf95dedcc7589c67e94b` | | SELECTOR / `ANA.SEMI.PROCESS.SELECTOR.RESULT.V001` | 12 | `212/813f027476cd41d85483af03563344093792ac46712e4c52930ed3264c653198` | `150/8ad7da1e0a011180021d477d1566abed1d83b1be6a4e473aa4c273abc4241165` | `183/b0f88a82f26e2ba98235fd7f8bf851a30ea92318fd3605e278dd5558a0938575` | | INVOKE / `ANA.SEMI.PRECONSUMPTION.RESULT.V002` | 22 | `403/4c3f8d873a6be20c0e449c6c6d1f196204ec8c3dfa399e3a5ee0e19f5fa153a2` | `283/f57a1652d597b9cdea4dda4075701e2447e41d3d59261809f434ab62d9927cdd` | `311/e885db2cbe8b0b81f858c539da5c6f310a4db7501690f6481976e7704ac4ceaa` | 四组 ordered vectors 为: ```text CONVERT.names=authorized_at_raw|authorized_at_utc_ticks|expires_at_raw|expires_at_utc_ticks|schema_id|status|stop_code CONVERT.types=System.String|System.Int64|System.String|System.Int64|System.String|System.String| CONVERT.rules=STRING_NONNULL|INT64_OR_NULL|STRING_NONNULL|INT64_OR_NULL|STRING_NONNULL|STRING_NONNULL|STRING_OR_NULL TEST.names=authorized_at_utc_ticks|expires_at_utc_ticks|inside_window|now_utc_ticks|schema_id|status|stop_code TEST.types=System.Int64|System.Int64|System.Boolean|System.Int64|System.String|System.String| TEST.rules=INT64_OR_NULL|INT64_OR_NULL|BOOL_OR_NULL|INT64_OR_NULL|STRING_NONNULL|STRING_NONNULL|STRING_OR_NULL SELECTOR.names=confirmed_zero|duplicate_process_id_count|exact_outer_count|matched_process_ids|prohibited_process_count|related_process_count|schema_id|snapshot_row_count|status|stop_code|uncertain_fields|unknown_relevant_count SELECTOR.types=System.Boolean|System.Int32|System.Int32|System.UInt32[]|System.Int32|System.Int32|System.String|System.Int32|System.String|||System.Int32 SELECTOR.rules=BOOL_OR_NULL|INT32_OR_NULL|INT32_OR_NULL|ARRAY_UINT32_OR_NULL|INT32_OR_NULL|INT32_OR_NULL|STRING_NONNULL|INT32_OR_NULL|STRING_NONNULL|STRING_OR_NULL|ARRAY_STRING_OR_NULL|INT32_OR_NULL INVOKE.names_hash=4c3f8d873a6be20c0e449c6c6d1f196204ec8c3dfa399e3a5ee0e19f5fa153a2 INVOKE.types_hash=f57a1652d597b9cdea4dda4075701e2447e41d3d59261809f434ab62d9927cdd INVOKE.rules_hash=e885db2cbe8b0b81f858c539da5c6f310a4db7501690f6481976e7704ac4ceaa ``` 该 code block 的 `|` 仅为展示分隔;hash preimage 必须使用每组元素间 LF。SELECTOR success sentinel 固定使用 `[uint32[]]@()` 作为 `matched_process_ids`,因此 actual FullName=`System.UInt32[]`;`uncertain_fields=$null`,因此 actual type=``。在 UNKNOWN/STOP 业务对象中非 null uncertain_fields 必须由 producer 显式 cast `[string[]]`,不得隐式成为 Object[]。 ### 1.3 TYPE_MISSING 的真实分类 V019 `INVOKE-TYPE-MISSING` 的 expected actual_type_names=[""] 被 supersede。probe 仍只执行一次 `PSTypeNames.RemoveAt(0)`,移除 expected custom type;其后 PSCustomObject 的首个可见基础类型必须精确为: `System.Management.Automation.PSCustomObject` 因此 V020 的 expected actual_type_names=`["System.Management.Automation.PSCustomObject"]`。`TYPE_MISSING` 的精确定义改为:expected custom schema type 不存在,且第一个可见类型只属于固定 generic allowlist `{System.Management.Automation.PSCustomObject,System.Object}`,并且不存在任何以 `ANA.SEMI.` 开头的 remaining type。它表示“可接受的自定义 schema type 缺失”,不表示 CLR/base type 列表为空。 若首个可见类型是其他 custom type、或存在非 expected `ANA.SEMI.*` type,则必须 `TYPE_DRIFT`;如果无法读取 PSTypeNames,则 result contract drift/STOP,不能写 TYPE_MISSING。该 probe 的 object_count=1,property count/names/types/hash 仍为 valid sentinel 全量值,不得丢失。 八个 negative runtime cases、api_negative_total=8、functional case_total=30 均不变;只有 TYPE_MISSING expected actual_type_names 从 `[""]` 升级为上述 base type。 ## 2. BLOCK-V019-02:补齐 V,N,N timeout-known prefix ### 2.1 native final V004 state enum V019 native final V003 升级为 `ANA.SEMI.PRECONSUMPTION.NATIVE.FINAL.V004`。顶层 keys 不变;state_id enum 从 C00-C39 升级为 C00-C40,state count=41。C00-C39 全部保持 V019 值。 新增唯一状态 C40: | state | prepackage_variant | closure | final | stop | exit | P01-P04 | P05 | P06 | P07 | P08 | external manifest | |---|---|---|---|---|---:|---|---|---|---|---|---| | C40 | null | NATIVE_ONLY | STOP | OUTER_TIMEOUT_KILLED_KNOWN_PREFIX | 24 | V,V,V,V | V | N | N | N | null | C40 的 P06/P07/P08 row 均为 `false,false,NOT_RUN_UPSTREAM_STOP,OUTER_TIMEOUT_KILLED_KNOWN_PREFIX,null,null`。P01-P05 row 均 V,upstream=null,actual bytes/hash 非 null。C40 仅在 P05 已关闭、只读复开、bytes/hash 完成,而 P06 writer-open 尚未发生时合法。 timeout-known prefix 权威集合因此恰好 18 个:`C09,C24-C40`。它们在 `(P05,P06,P07)` 上依次覆盖: `NNN,ANN,INN,FNN,FNA,FNI,FNV,VAN,VIN,VFN,VFA,VFI,VFV,VVN,VVA,VVI,VVV,VNN` 集合必须无重复且无额外组合。C10/U/27 仍只用于真实 liveness/handle/close/hash/writer-stage unknown;C19 仍只用于完整 closed package 后 timeout。 ## 3. P03/P06/P07/P08 identity 与 literals 本版 schema identity: - P03=`ANA-SEMI-PRECONSUMPTION-VECTORS-JCS-V005` - P05=`ANA-SEMI-PRECONSUMPTION-STATIC-RESULT-JCS-V002`(不变) - P06=`ANA-SEMI-PRECONSUMPTION-CONTRACT-RESULT-JCS-V006` - P07=`ANA-SEMI-PRECONSUMPTION-RECEIPT-MD-V005` - P08=`ANA-SEMI-PRECONSUMPTION-MANIFEST-CSV-V002`(列 schema 不变) P08 固定八行中的 P03/P06/P07 schema_id 必须使用本节值。P07 仍是 as-of P06;UTF-8 no BOM/CR/NUL、恰好一个 final LF。以下 code fence 内容加一个 final LF 是完整 preimage。 PASS=`471/c56b188d5c6591c215d8109f5901218b5280fa188c52cc64f9239d66d275798b` ```text receipt_schema_id: ANA-SEMI-PRECONSUMPTION-RECEIPT-MD-V005 run_id: RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PRECONSUMPTION-REPAIR-IMPLEMENTATION-20260726-001 plan_id: CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V020 as_of_artifact_id: P06 prepackage_status: PASS prepackage_stop_code: null P05_status: TEST_PASS P06_status: TEST_PASS outer_process_count: 1 prohibited_process_count: 0 network_access: false credential_access: false database_connection_performed: false ``` STATIC=`502/b54fa7e9e9429c53471da958dfc6e0fbdd23376cd34aa3a0bee2d52492dc0b90` ```text receipt_schema_id: ANA-SEMI-PRECONSUMPTION-RECEIPT-MD-V005 run_id: RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PRECONSUMPTION-REPAIR-IMPLEMENTATION-20260726-001 plan_id: CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V020 as_of_artifact_id: P06 prepackage_status: TEST_FAIL prepackage_stop_code: STATIC_TEST_FAILED P05_status: TEST_FAIL P06_status: NOT_RUN_UPSTREAM_STOP outer_process_count: 1 prohibited_process_count: 0 network_access: false credential_access: false database_connection_performed: false ``` CONTRACT=`492/241d2db0a168009ea28d92a59015a8151725a44003324378a8a4b9d9627724aa` ```text receipt_schema_id: ANA-SEMI-PRECONSUMPTION-RECEIPT-MD-V005 run_id: RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PRECONSUMPTION-REPAIR-IMPLEMENTATION-20260726-001 plan_id: CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V020 as_of_artifact_id: P06 prepackage_status: TEST_FAIL prepackage_stop_code: CONTRACT_TEST_FAILED P05_status: TEST_PASS P06_status: TEST_FAIL outer_process_count: 1 prohibited_process_count: 0 network_access: false credential_access: false database_connection_performed: false ``` ## 4. 审核验收与门禁 V020 独立复审必须验证: 1. 四 API names/actual types/rules vectors 的 count、bytes/hash;selector UINT32[]/STRING[] rule 与明确 typed producer。 2. TYPE_MISSING probe 的实际 base type、absence-of-custom definition 与 full property evidence;TYPE_DRIFT 边界不重叠。 3. C40 八行 tuple、top-level/exit/external null;C09/C24-C40 恰好 18 个合法 timeout-known prefix,state count=41。 4. V019 已通过 API negative actual evidence/source A|I/C18 equality/unknown/P07 hash 与全部 inherited contracts 无回退。 5. P01-P08/run/process/database 仍为零。 本 V020 只允许 `dev.reviewer.ana.cai` 独立计划复审。即使 PASS,也只允许向 management.admin 申请 Stage P P01-P08 的新单次实现/验证授权。在明确授权前,禁止任何 source/test/target 物化、PowerShell/csc/synthetic/proof/config-editor/mysql/SQL/database/network/credential/formal target、R3 或 BATCH-001。