CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V016dev.developer.ana.cai2026-07-26T10:53:51.2300398+08:00CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V015 / 15143/687ade2bcca4ecc3c699623005ff4a2cd31565fceac9b76145606e3a1d47e7a1AUDIT-DEV-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-PRECONSUMPTION-REPAIR-PLAN-V015=HOLD/4/4 / 169442/763a4c3aea2f1f90b42a72f102089996b77ea6d2445a22452e7b2c49f57347b7 / line 1476PENDING_INDEPENDENT_PREFLIGHT_REPAIR_PLAN_REREVIEWNOT_ISSUEDNOT_AUTHORIZED/HELD/HELD/HELD本修订按原生 observed order 编制;跨任务 wall-clock 字符串不作为因果顺序证据。V015 及其审计均保持 append-only 不变。
本 V016 仅关闭:
BLOCK-V015-01=EXPORTED_API_AND_SINGLE_INVOCATION_GUARD_UNCLOSEDBLOCK-V015-02=TIME_VECTOR_AND_RESULT_SCHEMA_DRIFTBLOCK-V015-03=PROCESS_SELECTOR_CANDIDATE_AND_UNKNOWN_SCOPE_UNCLOSEDBLOCK-V015-04=STAGE_P_PROCESS_AND_EVIDENCE_PACKAGE_UNCLOSED保留 V015 已成立部分:
INFORMATIONAL_NON_BLOCKING_BY_HUMAN_OVERRIDE。候选 run:RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PRECONSUMPTION-REPAIR-IMPLEMENTATION-20260726-001。
| ID | project-root-relative path | role | media_type | schema_id |
|---|---|---|---|---|
| P01 | dev/ana-dev/AnaSemi.Repair3PreconsumptionV001.psm1 |
SOURCE | text/plain; charset=utf-8 |
ANA-SEMI-PRECONSUMPTION-MODULE-PSM1-V001 |
| P02 | dev/ana-dev/test/Test-AnaSemiRepair3PreconsumptionV001.Static.ps1 |
TEST_SOURCE | text/plain; charset=utf-8 |
ANA-SEMI-PRECONSUMPTION-STATIC-TEST-PS1-V001 |
| P03 | dev/ana-dev/test/AnaSemiRepair3PreconsumptionVectorsV001.json |
TEST_VECTOR | application/jcs+json |
ANA-SEMI-PRECONSUMPTION-VECTORS-JCS-V001 |
| P04 | dev/ana-dev/test/Invoke-AnaSemiRepair3PreconsumptionValidationV001.ps1 |
VALIDATION_SOURCE | text/plain; charset=utf-8 |
ANA-SEMI-PRECONSUMPTION-VALIDATION-PS1-V001 |
| P05 | dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PRECONSUMPTION-REPAIR-IMPLEMENTATION-20260726-001/test/static-result.json |
TEST_RESULT | application/jcs+json |
ANA-SEMI-PRECONSUMPTION-STATIC-RESULT-JCS-V001 |
| P06 | dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PRECONSUMPTION-REPAIR-IMPLEMENTATION-20260726-001/test/contract-result.json |
TEST_RESULT | application/jcs+json |
ANA-SEMI-PRECONSUMPTION-CONTRACT-RESULT-JCS-V001 |
| P07 | dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PRECONSUMPTION-REPAIR-IMPLEMENTATION-20260726-001/receipt/preflight-repair-receipt.md |
RECEIPT | text/markdown; charset=utf-8 |
ANA-SEMI-PRECONSUMPTION-RECEIPT-MD-V001 |
| P08 | dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PRECONSUMPTION-REPAIR-IMPLEMENTATION-20260726-001/manifest/preflight-repair-manifest.csv |
MANIFEST | text/csv; charset=utf-8 |
ANA-SEMI-PRECONSUMPTION-MANIFEST-CSV-V001 |
P01—P08 和候选 run 当前必须全部 absent。每个未来 target 只能以 FileMode.CreateNew 首次物化;禁止 pre-delete、overwrite、truncate、rename-over、repair 或 backfill。
所有函数只输出一个 PSCustomObject;创建对象时按下列固定字段顺序插入属性,并将固定类型名插入 PSTypeNames[0]。任何 helper 的无返回调用必须用 [void] 或 $null= 抑制。调用端必须先验证 @($result).Count=1、类型名、ordinal/case-sensitive property set、字段类型和 null 规则,之后才可读取业务字段。
ConvertTo-AnaSemiAuthorizationWindow精确签名:
ConvertTo-AnaSemiAuthorizationWindow(
[Parameter(Mandatory)][ValidateNotNullOrEmpty()][string] AuthorizedAtRaw,
[Parameter(Mandatory)][ValidateNotNullOrEmpty()][string] ExpiresAtRaw
) -> exactly one ANA.SEMI.AUTHORIZATION.WINDOW.V001
返回字段固定顺序:
authorized_at_raw,authorized_at_utc_ticks,expires_at_raw,expires_at_utc_ticks,schema_id,status,stop_code
类型与值域:
PASS|STOP。null|STOP_AUTHORIZED_AT_PARSE|STOP_EXPIRES_AT_PARSE|STOP_NON_POSITIVE_WINDOW。expires_at_utc_ticks > authorized_at_utc_ticks,stop=null。Test-AnaSemiAuthorizationWindow精确签名:
Test-AnaSemiAuthorizationWindow(
[Parameter(Mandatory)][psobject] WindowResult,
[Parameter(Mandatory)][DateTimeOffset] Now
) -> exactly one ANA.SEMI.AUTHORIZATION.WINDOW.TEST.V001
先验证 WindowResult 是上一 API 的完整 PASS 对象。返回字段固定顺序:
authorized_at_utc_ticks,expires_at_utc_ticks,inside_window,now_utc_ticks,schema_id,status,stop_code
PASS|STOP。null|STOP_WINDOW_INPUT_CONTRACT|STOP_NOW_CONVERSION。authorized_ticks <= now_ticks -and now_ticks < expires_ticks。Select-AnaSemiExactRelatedProcess精确签名:
Select-AnaSemiExactRelatedProcess(
[Parameter(Mandatory)][object[]] SnapshotRows,
[Parameter(Mandatory)][ValidateNotNullOrEmpty()][string] ExpectedOuterExecutablePath,
[Parameter(Mandatory)][ValidatePattern('^[0-9a-f]{64}$')][string] ExpectedOuterCommandLineSha256,
[Parameter(Mandatory)][ValidateNotNullOrEmpty()][string] ExpectedOuterCommandLineBase64,
[Parameter(Mandatory)][uint32] SourcePreflightProcessId,
[Parameter(Mandatory)][string[]] ProhibitedExecutablePaths
) -> exactly one ANA.SEMI.PROCESS.SELECTOR.RESULT.V001
返回字段固定顺序:
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
PASS|STOP。null|STOP_SNAPSHOT_CONTRACT|STOP_DUPLICATE_PROCESS_ID|STOP_RELEVANT_PROCESS_FIELD_UNKNOWN|STOP_MULTIPLE_EXACT_OUTER|STOP_PROCESS_PRESENT。Invoke-AnaSemiPreconsumptionPreflight精确签名:
Invoke-AnaSemiPreconsumptionPreflight(
[string] AuthorizationId,
[string] AuthorizedAtRaw,
[string] ExpiresAtRaw,
[int64] ExpectedPlanBytes,
[string] ExpectedPlanSha256,
[string] ExpectedOuterExecutablePath,
[string] ExpectedOuterCommandLineSha256,
[string] ExpectedOuterCommandLineBase64,
[uint32] SourcePreflightProcessId,
[string[]] ProhibitedExecutablePaths,
[System.Threading.SemaphoreSlim] InvocationGate,
[scriptblock] NowProvider,
[scriptblock] IdentityProvider,
[scriptblock] PlanHashProvider,
[scriptblock] TargetStateProvider,
[scriptblock] HistoryProvider,
[scriptblock] ProcessSnapshotProvider
) -> exactly one ANA.SEMI.PRECONSUMPTION.RESULT.V002
参数全部 Mandatory/ValidateNotNull;SHA-256 为 lowercase 64 hex;ExpectedPlanBytes 非负;InvocationGate 初始必须是 new SemaphoreSlim(1,1),且每个 authorization 只能创建一个,不得跨 authorization 复用。
六个 provider 每个至多调用一次,必须输出恰好一个固定类型对象:
| provider | output type | required fields |
|---|---|---|
| NowProvider | System.DateTimeOffset |
强类型值本身 |
| IdentityProvider | ANA.SEMI.PREFLIGHT.IDENTITY.V001 |
cwd,host,role_instance_id,source_thread_id,status |
| PlanHashProvider | ANA.SEMI.PREFLIGHT.PLANHASH.V001 |
bytes,sha256,status |
| TargetStateProvider | ANA.SEMI.PREFLIGHT.TARGETSTATE.V001 |
candidate_run_exists,materialized_target_count,target_existing_count,status,uncertain_fields |
| HistoryProvider | ANA.SEMI.PREFLIGHT.HISTORY.V001 |
history_hash_mismatch_count,status,uncertain_fields |
| ProcessSnapshotProvider | ANA.SEMI.PREFLIGHT.SNAPSHOT.V001 |
adapter_status,rows,snapshot_id,uncertain_fields |
provider count/type/property 漂移属于 STOP_PRECONSUMPTION_RESULT_CONTRACT_DRIFT;不得纠正或再次调用。
调用入口第一条有副作用语句必须为:
owned := InvocationGate.Wait(0)
SemaphoreSlim.Wait(0) 是唯一原子所有权判定。禁止先读 CurrentCount 再决定;禁止 lock-file、普通 BOOL、模块全局字符串或 check-then-set。Gate 一经成功取得永不 Release()、不 Dispose 后重建、不替换实例。
状态只有:
READY(count=1) -> OWNED_RUNNING(count=0) -> OWNED_TERMINAL(count=0)
invocation_count=1。Wait(0)=false,不得进入任何 provider,不得取时、枚举或读文件;直接返回 STOP_PRECONSUMPTION_ALREADY_INVOKED,invocation_count=null,stage=START。固定阶段:
START -> IDENTITY -> WINDOW_PARSE -> CLOCK -> WINDOW_TEST -> PLAN_HASH -> TARGET_STATE -> HISTORY -> PROCESS_SNAPSHOT -> PROCESS_SELECT -> PASS
每一阶段先增加该 provider 的本地 call counter,再调用一次;首错后后续 counter 保持 0。最终结果记录 preflight_stage 为最后进入的阶段。测试必须验证每个 STOP 场景的精确 provider call vector。
| first fact | status | stop_code | later provider |
|---|---|---|---|
| gate already consumed | STOP | STOP_PRECONSUMPTION_ALREADY_INVOKED |
全部 0 |
| identity mismatch | STOP | STOP_PRECONSUMPTION_GATE_MISMATCH |
全部后续 0 |
| time parse/window mismatch | STOP | STOP_PRECONSUMPTION_GATE_MISMATCH |
WINDOW 后续 0 |
| provider/API/type exception | STOP | STOP_PRECONSUMPTION_PREFLIGHT_EXCEPTION |
全部后续 0 |
| provider result contract drift | STOP | STOP_PRECONSUMPTION_RESULT_CONTRACT_DRIFT |
全部后续 0 |
| file/process state unknown | STOP | STOP_PRECONSUMPTION_STATE_UNCERTAIN |
全部后续 0 |
| known target/history/process mismatch | STOP | STOP_PRECONSUMPTION_GATE_MISMATCH |
全部后续 0 |
| all pass | PASS | null | none |
任何 STOP 均结束未来 authorization chain,即使 authorization 尚未被 CreateNew 消费。禁止 re-time、re-enumerate、corrected recomputation、retry、A002、replacement 或 renewal。
AuthorizedAtRaw/ExpiresAtRaw 唯一 parse 格式:yyyy-MM-dd'T'HH:mm:ss.fffffffK,仅允许 DateTimeOffset.ParseExact(value, format, InvariantCulture, DateTimeStyles.None)。比较坐标只允许 UtcDateTime.Ticks:INT64,窗口为半开 [authorized_at,expires_at)。
NowProvider 被 owner 恰好调用一次,结果必须是单一 System.DateTimeOffset。字符串、DateTime、null、多对象或异常均 STOP;不得重新取时。
基准:authorized=2026-07-26T01:12:58.2748820+08:00,expires=2026-07-26T03:12:58.2748820+08:00。
| case_id | authorized input | expires input | typed Now | expected |
|---|---|---|---|---|
| T-BEFORE | baseline | baseline | 2026-07-25T17:12:58.2748819+00:00 |
PASS/inside=false |
| T-AT-START | baseline | baseline | 2026-07-25T17:12:58.2748820+00:00 |
PASS/inside=true |
| T-INSIDE | baseline | baseline | 2026-07-25T18:00:00.0000000+00:00 |
PASS/inside=true |
| T-AT-END | baseline | baseline | 2026-07-25T19:12:58.2748820+00:00 |
PASS/inside=false |
| T-AUTH-MALFORMED | 2026/07/26 01:12:58 |
baseline | 2026-07-25T18:00:00.0000000+00:00 |
STOP_AUTHORIZED_AT_PARSE |
| T-EXPIRES-MALFORMED | baseline | 2026/07/26 03:12:58 |
2026-07-25T18:00:00.0000000+00:00 |
STOP_EXPIRES_AT_PARSE |
| T-NONPOSITIVE | baseline | 2026-07-26T01:12:58.2748820+08:00 |
2026-07-25T18:00:00.0000000+00:00 |
STOP_NON_POSITIVE_WINDOW |
坏格式只进入被 parse 的 authorization 字段;typed Now 位置永不放字符串。
字段按 ordinal/case-sensitive 顺序为:
authorization_id
authorized_at_utc_ticks
authorized_outer_started
candidate_run_exists
credential_access
database_connection_performed
exception_type
expires_at_utc_ticks
finished_at
history_hash_mismatch_count
invocation_count
materialized_target_count
network_access
now_utc_ticks
preflight_stage
related_process_count
result_schema_id
started_at
status
stop_code
target_existing_count
uncertain_field
属性名 preimage 为上述名称以单一 0x0A 连接、无尾 LF:22 properties / 403 bytes / sha256=4c3f8d873a6be20c0e449c6c6d1f196204ec8c3dfa399e3a5ee0e19f5fa153a2。
类型/null:
authorization_id,result_schema_id,started_at,finished_at,status,preflight_stage。exception_type,stop_code,uncertain_field。*_utc_ticks。invocation_count,target_existing_count,history_hash_mismatch_count,related_process_count,materialized_target_count。candidate_run_exists,authorized_outer_started,credential_access,database_connection_performed,network_access。PASS|STOP;result_schema_id=ANA.SEMI.PRECONSUMPTION.RESULT.V002。STOP_PRECONSUMPTION_ALREADY_INVOKED,除 authorization/result/timestamps/status 外业务字段均 null。ProcessSnapshotProvider 只调用一次 Win32_Process adapter;selector 内禁止再次查询。adapter 先生成一个不可变数组,每行固定字段:
command_line:STRING|null,executable_path:STRING|null,name:STRING|null,parent_process_id:UINT32,process_id:UINT32
adapter query failure、枚举中断、重复 process_id、字段访问异常写入 snapshot adapter_status=STOP 和 ordinal uncertain_fields;不得丢弃失败行后宣称 zero。rows 按 process_id 数字升序;重复 PID 不 deduplicate,直接 STOP。
相关名称集合只由 reviewed full paths 的 Path.GetFileName() 生成并按 OrdinalIgnoreCase 去重:
先按 name 完整等值确定 relevant row:
confirmed_zero=true。STOP_PROCESS_PRESENT。-like、-match、Contains、process-name-only、script-path-only 或命令正文自证。| case | rows | expected |
|---|---|---|
| S-EMPTY | 空 snapshot/PASS | confirmed_zero=true |
| S-EXACT | 一条 exact outer | STOP_PROCESS_PRESENT |
| S-CMD-DIFFERENT | same outer exe/different full command | confirmed_zero=true |
| S-SUBSTRING | command only contains expected bytes | confirmed_zero=true |
| S-SOURCE-SELF | source PID/name/path/cmd all似 exact | confirmed_zero=true |
| S-EXE-DIFFERENT | same cmd/different known path | confirmed_zero=true |
| S-RELEVANT-PATH-NULL | PowerShell name/path null | STOP_RELEVANT_PROCESS_FIELD_UNKNOWN |
| S-OUTER-CMD-NULL | exact outer path/cmd null | STOP_RELEVANT_PROCESS_FIELD_UNKNOWN |
| S-DUP-PID | 两行同 PID | STOP_DUPLICATE_PROCESS_ID |
| S-TWO-EXACT | 两个 exact outer PID | STOP_MULTIPLE_EXACT_OUTER |
P03 为 UTF-8、无 BOM/CR/NUL/尾 LF 的 RFC 8785/JCS object。顶层键集合:
api_contracts,forbidden_communication_tokens_base64,preflight_cases,process_selector_cases,result_schema,run_id,schema_id,time_cases
ANA-SEMI-PRECONSUMPTION-VECTORS-JCS-V001。api_id,parameter_names,parameter_types,return_property_names,return_type_name;数组顺序为本计划 3.1—3.4。authorized_at_raw,case_id,expected_inside,expected_status,expected_stop_code,expires_at_raw,now_utc。case_id,expected_confirmed_zero,expected_exact_outer_count,expected_prohibited_count,expected_status,expected_stop_code,rows;rows 使用 7.1 五字段 schema。case_id,expected_invocation_count,expected_provider_call_vector,expected_stage,expected_status,expected_stop_code。property_count=22,property_name_preimage_bytes=403,property_name_sha256=4c3f...,property_names,property_types。所有数组顺序固定;key 使用 JCS ordinal order;未知/额外 key STOP。
顶层键:check_results,schema_id,status,summary。
ANA-SEMI-PRECONSUMPTION-STATIC-RESULT-JCS-V001TEST_PASS|TEST_FAILactual,check_id,expected,status,stop_code,全部 STRING,stop_code nullable。API_COUNT,API_SIGNATURES,API_RETURN_SCHEMAS,COMMUNICATION_FORBIDDEN_TOKENS,CREATE_NEW_ONLY,NO_EXTRA_PIPELINE_OUTPUT,NO_FORBIDDEN_RUNTIME,PROCESS_SELECTOR_NO_SUBSTRING,RESULT_22_PROPERTY_HASH,SEMAPHORE_NO_RELEASE,SOURCE_PATH_ALLOWLIST,TARGET_PATH_ALLOWLIST。fail_count:INT32,pass_count:INT32,total_count:INT32;total=12,pass+fail=12;status 与 fail_count 交叉一致。顶层键:api_results,preflight_results,process_selector_results,schema_id,status,summary,time_results。
ANA-SEMI-PRECONSUMPTION-CONTRACT-RESULT-JCS-V001TEST_PASS|TEST_FAILactual_inside,actual_status,actual_stop_code,case_id,expected_inside,expected_status,expected_stop_code,status。actual_confirmed_zero,actual_exact_outer_count,actual_status,actual_stop_code,case_id,expected_confirmed_zero,expected_exact_outer_count,expected_status,expected_stop_code,status。actual_invocation_count,actual_provider_call_vector,actual_stage,actual_status,actual_stop_code,case_id,expected_invocation_count,expected_provider_call_vector,expected_stage,expected_status,expected_stop_code,status。api_id,actual_object_count,actual_property_count,actual_property_sha256,actual_type_name,expected_object_count,expected_property_count,expected_property_sha256,expected_type_name,status。api_fail_count,case_fail_count,case_pass_count,case_total_count,status;case_total=25,所有 count INT32 非负且交叉一致。P05/P06 canonical bytes 均为 UTF-8、无 BOM/CR/NUL/尾 LF、strict JSON、JCS reserialize byte-identical。任一 output 自身 schema/canonical 失败不允许创建 P07。
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe455680/9785001b0dcf755eddb8af294a373c0b87b2498660f724e76c4d53f9c217c7a3E:\mb-ms-doc\project-info14 个 token(token[0] 含 executable):
0 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
1 -NoLogo
2 -NoProfile
3 -NonInteractive
4 -ExecutionPolicy
5 Bypass
6 -File
7 E:\mb-ms-doc\project-info\dev\ana-dev\test\Invoke-AnaSemiRepair3PreconsumptionValidationV001.ps1
8 -ProjectRoot
9 E:\mb-ms-doc\project-info
10 -RunId
11 RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PRECONSUMPTION-REPAIR-IMPLEMENTATION-20260726-001
12 -OutputRoot
13 E:\mb-ms-doc\project-info\dev\ana-dev\tmp\RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PRECONSUMPTION-REPAIR-IMPLEMENTATION-20260726-001
token preimage 为 UTF-8 token 以单一 NUL 连接、无尾 NUL:14/483/cbdacac456a1746341e9b9f8e55296a7797bef13f3802e5d6456020c81b5c03a。
ProcessStartInfo.Arguments 逐字为:
-NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -File E:\mb-ms-doc\project-info\dev\ana-dev\test\Invoke-AnaSemiRepair3PreconsumptionValidationV001.ps1 -ProjectRoot E:\mb-ms-doc\project-info -RunId RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PRECONSUMPTION-REPAIR-IMPLEMENTATION-20260726-001 -OutputRoot E:\mb-ms-doc\project-info\dev\ana-dev\tmp\RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PRECONSUMPTION-REPAIR-IMPLEMENTATION-20260726-001
UTF-8:425/713ec98a5ec3bfc1ecad2f6f59d164d8ec7602482c6d6fd1b6fe5dbe55a25218。这些 token 无空格/quote,禁止添加、删除、重排或替换 option。
OUTER_TIMEOUT_KILLED_STOP;liveness/stream/target 任一不确定:PACKAGE_UNCLOSED_STOP/27。不落项目文件;原生 terminal 返回固定 15 字段:
argv_count,argv_preimage_sha256,exit_code,finished_at,killed,liveness,process_id,process_started,started_at,stderr_bytes,stderr_sha256,stdout_bytes,stdout_sha256,timed_out,tool_sha256
process_started=false 时 pid/timestamps/exit/streams/liveness 为 null;started=true 时 pid/started_at 非 null。未观察 exit 时 exit_code=null,禁止用治理 exit 27 冒充 child actual exit。empty stream hash=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855。
P07 为 UTF-8 Markdown、无 BOM/CR/NUL、恰好一个尾 LF。固定 key 顺序:
receipt_schema_id,run_id,plan_id,outer_tool_sha256,outer_argv_sha256,outer_process_count,outer_exit_code,outer_timed_out,P05_status,P06_status,prepackage_terminal_state,materialized_target_count,prohibited_process_count,network_access,credential_access,database_connection_performed,final_status,final_stop_code
P07 不含自己的 bytes/hash,不含 P08 bytes/hash。P07 只在 P05/P06 本身 canonical 可验证或其中一个合法 TEST_FAIL object 已物化后创建。
P08 列顺序:
artifact_id,run_id,role,schema_id,relative_path,media_type,expected_presence,materialized,exists,status,upstream_stop_code,bytes,sha256
恰好 P01—P08 八行,artifact_id 升序。enum:
REQUIRED_BEFORE_OUTER|REQUIRED_ON_STATIC_STAGE|REQUIRED_ON_CONTRACT_STAGE|REQUIRED_ON_CLOSURE_STAGE|SELFMATERIALIZED_VALID|MATERIALIZED_TEST_FAIL|ATTEMPTED_NO_OUTPUT|MATERIALIZED_INVALID|NOT_RUN_UPSTREAM_STOP|STATE_UNCERTAIN|MANIFEST_SELF_EXTERNAL_HASHtrue|false|null规则:
P08 使用 UTF-8 无 BOM/NUL、RFC4180 quoting、CRLF 行终止且恰好一个最终 CRLF。重复 role/schema/path/ID、path escape、额外/缺失行 STOP。
reviewed plan/audit -> P01-P04 -> outer -> P05 -> conditional P06 -> freeze P01-P06 -> P07 -> P08(self blank) -> external P08 bytes/hash
P05 static TEST_FAIL 时 P06 明确 NOT_RUN,仍允许 P07/P08 封装已知失败;P05 自身 invalid/unknown 时禁止 P07。P06 TEST_FAIL 时允许 P07/P08;P06 invalid/unknown 时禁止 P07。
符号:V=MATERIALIZED_VALID、F=MATERIALIZED_TEST_FAIL、A=ATTEMPTED_NO_OUTPUT、I=MATERIALIZED_INVALID且证据可安全取得、N=NOT_RUN_UPSTREAM_STOP、U=STATE_UNCERTAIN、S=MANIFEST_SELF_EXTERNAL_HASH、K=按实际已完成前缀(V),失败点(A|I),其后N。
| terminal | P01-P04 | P05 | P06 | P07 | P08 | governance final |
|---|---|---|---|---|---|---|
| PASS | V,V,V,V | V | V | V | S | 0 |
| STATIC_TEST_FAIL_CLOSED | V,V,V,V | F | N | V | S | 11 |
| CONTRACT_TEST_FAIL_CLOSED | V,V,V,V | V | F | V | S | 11 |
| SOURCE_CREATE_STOP(k) | K | N | N | N | N | 21 |
| OUTER_START_STOP | V,V,V,V | N | N | N | N | 22 |
| OUTER_NONZERO_WITHOUT_VALID_TEST_OBJECT | V,V,V,V | A或I | N | N | N | 27 |
| OUTER_TIMEOUT_KILLED_KNOWN | V,V,V,V | 按实际V/F/A/I/N | 按实际V/F/A/I/N | N | N | 24;若包状态不闭合则27 |
| OUTER_LIVENESS_OR_STREAM_UNKNOWN | V,V,V,V | U | U | U | U | 27 |
| P05_WRITE_STOP | V,V,V,V | A或I | N | N | N | 27 |
| P06_WRITE_STOP | V,V,V,V | V | A或I | N | N | 27 |
| RECEIPT_STOP_KNOWN | V,V,V,V | V或F | V或F或N | A或I | N | 25 |
| MANIFEST_STOP_KNOWN | V,V,V,V | V或F | V或F或N | V | A或I | 26 |
| ANY_TARGET_STATE_UNKNOWN | 按实际 | 按实际或U | 按实际或U | 按实际或U | 按实际或U | 27 |
SOURCE_CREATE_STOP(k) 的精确行规则:P01—P04 固定顺序创建;索引 <k 为 V,k 为 A 或 I,>k 为 N;P05—P08=N,outer=0。
closure precedence:
同一事实不得同时映射两个 final;实际 outer exit 与 governance final 分字段记录。
P01—P04 不实现任何消息发送 API。外部 source 仅在 terminal 后使用 Codex 原生 exact management/reviewer thread 各至多一次;dispatch ambiguity 记 DELIVERY_AMBIGUOUS_NO_RETRY,禁止 resend/fallback。
P02/P04 静态扫描 P01/P02/P04 bytes:禁止 legacy MB-X CLI、route、inbox、session、history fallback 的原始调用 token。P03 仅以 Base64 保存禁词测试向量,避免测试数据本身违反源文件字面禁入。
V016 PASS 必须独立证明:
V016 仅提交 dev.reviewer.ana.cai 独立计划复审。PASS 也只允许向 management.admin 申请新的 Stage P P01—P08 单次实现/验证授权;不得直接物化、运行 P04、进入 R3/synthetic/proof/config-editor/mysql/SQL/database/network/credential/formal target/BATCH-001。
任何 plan/hash/path/API/schema/argv/timeout/target/role 漂移,任何 first-error 后重算,任何 substring/self-match,任何 legacy communication fallback,任何 Python/Node 静默换栈,均立即 HOLD/STOP。