edit | blame | history | raw

CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V016

  • plan_id: CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V016
  • role_instance_id: dev.developer.ana.cai
  • created_at: 2026-07-26T10:53:51.2300398+08:00
  • predecessor_plan: CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V015 / 15143/687ade2bcca4ecc3c699623005ff4a2cd31565fceac9b76145606e3a1d47e7a1
  • predecessor_review: AUDIT-DEV-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-PRECONSUMPTION-REPAIR-PLAN-V015=HOLD/4/4 / 169442/763a4c3aea2f1f90b42a72f102089996b77ea6d2445a22452e7b2c49f57347b7 / line 1476
  • status: PENDING_INDEPENDENT_PREFLIGHT_REPAIR_PLAN_REREVIEW
  • current_authorization: NOT_ISSUED
  • implementation/synthetic/database/BATCH-001: NOT_AUTHORIZED/HELD/HELD/HELD

本修订按原生 observed order 编制;跨任务 wall-clock 字符串不作为因果顺序证据。V015 及其审计均保持 append-only 不变。

1. 修订目标与不回退边界

本 V016 仅关闭:

  1. BLOCK-V015-01=EXPORTED_API_AND_SINGLE_INVOCATION_GUARD_UNCLOSED
  2. BLOCK-V015-02=TIME_VECTOR_AND_RESULT_SCHEMA_DRIFT
  3. BLOCK-V015-03=PROCESS_SELECTOR_CANDIDATE_AND_UNKNOWN_SCOPE_UNCLOSED
  4. BLOCK-V015-04=STAGE_P_PROCESS_AND_EVIDENCE_PACKAGE_UNCLOSED

保留 V015 已成立部分:

  • 执行工具仍为 C#/.NET Framework native runner + Windows PowerShell 5.1/.NET BCL orchestration;本链不切换 Python 或 Node.js。
  • Git 仅为 INFORMATIONAL_NON_BLOCKING_BY_HUMAN_OVERRIDE
  • terminal 仅走 Codex native exact-thread,禁止 legacy MB-X route/inbox/session fallback。
  • Stage P 与后续 R3 分开审核、分开授权;V016 PASS 也不授权实现、synthetic、数据库或 BATCH-001。
  • 已永久关闭的 Repair2 authorization/run/targets 只读,不复用、不修补、不重跑。

2. Stage P 目标宇宙

候选 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。

3. P01 四个公共 API 的完整合同

所有函数只输出一个 PSCustomObject;创建对象时按下列固定字段顺序插入属性,并将固定类型名插入 PSTypeNames[0]。任何 helper 的无返回调用必须用 [void]$null= 抑制。调用端必须先验证 @($result).Count=1、类型名、ordinal/case-sensitive property set、字段类型和 null 规则,之后才可读取业务字段。

3.1 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

类型与值域:

  • raw/schema/status/stop 为 STRING|null;raw 与 schema 永不为 null。
  • ticks 为 INT64|null。
  • status=PASS|STOP
  • stop_code=null|STOP_AUTHORIZED_AT_PARSE|STOP_EXPIRES_AT_PARSE|STOP_NON_POSITIVE_WINDOW
  • PASS:两个 ticks 非 null,expires_at_utc_ticks > authorized_at_utc_ticks,stop=null。
  • STOP:不可获得的 ticks 为 null,不得伪造 0。

3.2 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

  • ticks 为 INT64|null;inside_window 为 BOOL|null。
  • status=PASS|STOP
  • stop_code=null|STOP_WINDOW_INPUT_CONTRACT|STOP_NOW_CONVERSION
  • PASS 的唯一判定:authorized_ticks <= now_ticks -and now_ticks < expires_ticks
  • 本函数不 parse string,也不自行取时;Now 的强类型在 API 边界阻止字符串混入 clock。

3.3 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

  • counts 为 INT32|null;confirmed_zero 为 BOOL|null。
  • matched_process_ids 为按 UINT32 升序的 ARRAY|null;uncertain_fields 为 ordinal 排序 ARRAY|null。
  • status=PASS|STOP
  • stop_code=null|STOP_SNAPSHOT_CONTRACT|STOP_DUPLICATE_PROCESS_ID|STOP_RELEVANT_PROCESS_FIELD_UNKNOWN|STOP_MULTIPLE_EXACT_OUTER|STOP_PROCESS_PRESENT

3.4 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;不得纠正或再次调用。

4. 原子 single-invocation / reentrancy 状态机

4.1 唯一所有权

调用入口第一条有副作用语句必须为:

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)

  • 首个调用取得 owner 后,invocation_count=1
  • 任一并发/后续调用 Wait(0)=false,不得进入任何 provider,不得取时、枚举或读文件;直接返回 STOP_PRECONSUMPTION_ALREADY_INVOKEDinvocation_count=null,stage=START
  • owner 的首次 mismatch/exception/uncertainty 立即进入 OWNED_TERMINAL。catch/finally 只构造一次结果,禁止第二轮 preflight。
  • 生产调用方收到首个结果后只允许 native terminal handoff;不得再次调用 P01。

4.2 provider 调用顺序和短路

固定阶段:

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。

4.3 terminal 映射

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。

5. 时间合同与固定向量

5.1 parse 与比较

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;不得重新取时。

5.2 七个固定时间向量

基准: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 位置永不放字符串。

6. PreflightResult V002 的 22 字段

字段按 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:

  • STRING 非空:authorization_id,result_schema_id,started_at,finished_at,status,preflight_stage
  • nullable STRING:exception_type,stop_code,uncertain_field
  • nullable INT64:三个 *_utc_ticks
  • nullable INT32 非负:invocation_count,target_existing_count,history_hash_mismatch_count,related_process_count,materialized_target_count
  • nullable BOOL:candidate_run_exists,authorized_outer_started,credential_access,database_connection_performed,network_access
  • status=PASS|STOP;result_schema_id=ANA.SEMI.PRECONSUMPTION.RESULT.V002
  • owner PASS:invocation_count=1;三 ticks 非 null;五 count 非 null且为 0;五 BOOL=false;stop/exception/uncertain=null;stage=PASS。
  • owner STOP:已完成阶段值按实际填写,未执行/unknown 值为 null,不得伪造 0/false。
  • second-call STOP:invocation_count=null,stage=START,stop=STOP_PRECONSUMPTION_ALREADY_INVOKED,除 authorization/result/timestamps/status 外业务字段均 null。

7. 一次快照、候选分类与 confirmed-zero

7.1 adapter 快照边界

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。

7.2 相关名称集合

相关名称集合只由 reviewed full paths 的 Path.GetFileName() 生成并按 OrdinalIgnoreCase 去重:

  • expected outer PowerShell path
  • prohibited csc path
  • prohibited mysql path
  • prohibited mysql_config_editor path

先按 name 完整等值确定 relevant row:

  • source_preflight_process_id 行在任何字段访问前排除,因而 source shell 正文不会 self-match。
  • name=null:STATE_UNCERTAIN(无法判断 relevance)。
  • name 不在相关名称集合:明确 irrelevant;其 path/command null 不影响 zero。
  • name 在集合:path=null/规范化异常为 STATE_UNCERTAIN。
  • path 与 expected outer full path 相等时,command_line=null/UTF-8 转换异常为 STATE_UNCERTAIN;bytes 必须同时等于 reviewed Base64 解码 bytes 且 SHA-256 相等才是 exact outer。
  • path 与某个 prohibited full path 相等即为 prohibited present;不需要读取 command_line。
  • relevant name 但 full path 为其他已知路径:明确 irrelevant,不是 unknown。

7.3 排序、计数和终态

  • rows 按 PID 升序处理;matched_process_ids 同序。
  • exact_outer_count=0 且 prohibited_process_count=0 且 unknown_relevant_count=0 且 duplicate=0 才能 confirmed_zero=true
  • exact_outer_count=1 或 prohibited>0 是已知 mismatch:STOP_PROCESS_PRESENT
  • exact_outer_count>1、任何 relevant unknown、duplicate PID 或 adapter STOP 是 uncertainty,优先于 known mismatch。
  • 不允许 substring、-like-match、Contains、process-name-only、script-path-only 或命令正文自证。

7.4 十个固定 selector 向量

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

8. P03 完整 schema

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

  • schema_id 固定 ANA-SEMI-PRECONSUMPTION-VECTORS-JCS-V001
  • run_id 固定 Stage P candidate run。
  • api_contracts:4 行,字段 api_id,parameter_names,parameter_types,return_property_names,return_type_name;数组顺序为本计划 3.1—3.4。
  • time_cases:本计划七行,字段 authorized_at_raw,case_id,expected_inside,expected_status,expected_stop_code,expires_at_raw,now_utc
  • process_selector_cases:本计划十行,字段 case_id,expected_confirmed_zero,expected_exact_outer_count,expected_prohibited_count,expected_status,expected_stop_code,rows;rows 使用 7.1 五字段 schema。
  • preflight_cases 固定 8 行:PASS、IDENTITY_MISMATCH、TIME_PARSE_STOP、PLAN_HASH_MISMATCH、TARGET_UNKNOWN、HISTORY_MISMATCH、PROCESS_UNKNOWN、SECOND_CALL;字段 case_id,expected_invocation_count,expected_provider_call_vector,expected_stage,expected_status,expected_stop_code
  • result_schema:字段 property_count=22,property_name_preimage_bytes=403,property_name_sha256=4c3f...,property_names,property_types
  • forbidden_communication_tokens_base64:仅存被禁 token 的 UTF-8 Base64,不在 P01/P02/P04 中出现原始 legacy 调用字面量;P04 在内存解码后扫描 P01/P02/P04 bytes。

所有数组顺序固定;key 使用 JCS ordinal order;未知/额外 key STOP。

9. P05/P06 完整结果 schema

9.1 P05 static-result

顶层键:check_results,schema_id,status,summary

  • schema_id=ANA-SEMI-PRECONSUMPTION-STATIC-RESULT-JCS-V001
  • status=TEST_PASS|TEST_FAIL
  • check_results 固定 12 行、按 check_id ordinal 排序;row 字段:actual,check_id,expected,status,stop_code,全部 STRING,stop_code nullable。
  • 12 个 check_id: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
  • summary 字段:fail_count:INT32,pass_count:INT32,total_count:INT32;total=12,pass+fail=12;status 与 fail_count 交叉一致。

9.2 P06 contract-result

顶层键:api_results,preflight_results,process_selector_results,schema_id,status,summary,time_results

  • schema_id=ANA-SEMI-PRECONSUMPTION-CONTRACT-RESULT-JCS-V001
  • status=TEST_PASS|TEST_FAIL
  • time_results 7 行:actual_inside,actual_status,actual_stop_code,case_id,expected_inside,expected_status,expected_stop_code,status
  • process_selector_results 10 行: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
  • preflight_results 8 行: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_results 4 行: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
  • summary: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。

10. 唯一 validation 进程合同

10.1 tool 与 argv

  • executable:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • snapshot:455680/9785001b0dcf755eddb8af294a373c0b87b2498660f724e76c4d53f9c217c7a3
  • cwd:E:\mb-ms-doc\project-info
  • UseShellExecute=false;CreateNoWindow=true;stdin disabled;stdout/stderr 分开重定向到 parent memory;不得走文本 pipeline 或临时文件。

14 个 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。

10.2 timeout/lifecycle

  • outer process count exactly 1;child/csc/synthetic/proof/config-editor/mysql/query/database=0/0/0/0/0/0/false。
  • timeout=120000ms;超时只允许 Kill 一次,kill-wait=10000ms;禁止 restart。
  • stdout/stderr 必须异步复制 native bytes 到两个独立内存 stream,wait/kill 后等待两个 copy task 完成并关闭 handle。
  • success:exit=0、stdout=0 bytes、stderr=0 bytes、timed_out=false、liveness=EXITED。
  • timeout 后成功 kill/wait 且 streams/handles/target snapshot 全部可知:OUTER_TIMEOUT_KILLED_STOP;liveness/stream/target 任一不确定:PACKAGE_UNCLOSED_STOP/27

10.3 parent native process result

不落项目文件;原生 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

11. P07/P08 schema、DAG 与 hash topology

11.1 P07 receipt

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 已物化后创建。

11.2 P08 manifest

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:

  • expected_presence=REQUIRED_BEFORE_OUTER|REQUIRED_ON_STATIC_STAGE|REQUIRED_ON_CONTRACT_STAGE|REQUIRED_ON_CLOSURE_STAGE|SELF
  • status=MATERIALIZED_VALID|MATERIALIZED_TEST_FAIL|ATTEMPTED_NO_OUTPUT|MATERIALIZED_INVALID|NOT_RUN_UPSTREAM_STOP|STATE_UNCERTAIN|MANIFEST_SELF_EXTERNAL_HASH
  • materialized/exists=true|false|null

规则:

  • MATERIALIZED_VALID/TEST_FAIL:materialized=exists=true,bytes/sha256 非 null。
  • ATTEMPTED_NO_OUTPUT/NOT_RUN:false/false,bytes/sha256 null。
  • MATERIALIZED_INVALID:true/true;仅在安全 close/reopen/hash 成功时合法且 bytes/hash 非 null,否则必须 STATE_UNCERTAIN。
  • STATE_UNCERTAIN:null/null,bytes/hash null。
  • P08 self:true/true/status=MANIFEST_SELF_EXTERNAL_HASH,但 self-row bytes/hash 为空;外部 P08 bytes/hash 只进入 native handoff/audit。

P08 使用 UTF-8 无 BOM/NUL、RFC4180 quoting、CRLF 行终止且恰好一个最终 CRLF。重复 role/schema/path/ID、path escape、额外/缺失行 STOP。

11.3 无环顺序

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。

12. 总失败矩阵与 materialization truth table

符号:V=MATERIALIZED_VALIDF=MATERIALIZED_TEST_FAILA=ATTEMPTED_NO_OUTPUTI=MATERIALIZED_INVALID且证据可安全取得N=NOT_RUN_UPSTREAM_STOPU=STATE_UNCERTAINS=MANIFEST_SELF_EXTERNAL_HASHK=按实际已完成前缀(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:

  1. 任何 liveness/stream/handle/target 状态 unknown,或 prepackage 已为 27:最终 27。
  2. 否则 P07 required 且已知失败:最终 25。
  3. 否则 P08 required 且已知失败:最终 26。
  4. 否则保留 primary(0/11/21/22/24)。

同一事实不得同时映射两个 final;实际 outer exit 与 governance final 分字段记录。

13. native-only communication 与静态验收

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 保存禁词测试向量,避免测试数据本身违反源文件字面禁入。

14. 独立计划审核验收

V016 PASS 必须独立证明:

  1. 四个 API 的参数、单对象返回类型、属性顺序、类型/null/enum 均唯一。
  2. SemaphoreSlim Wait(0) 是唯一原子 owner;不 release;second call 无 provider/I/O 并返回固定 STOP。
  3. malformed 只进入被 parse 的 authorization 字段;typed Now 不接收字符串。
  4. 22 字段确为 ordinal 顺序,count/403-byte preimage/hash 可复算。
  5. 一次 process snapshot、relevant-name scope、source PID 排除、null/duplicate/排序和 confirmed-zero 均唯一。
  6. P03/P05/P06/P07/P08 schemas、process tool/argv/timeout/native result、truth table、closure precedence 和 hash DAG 完整。
  7. P01—P08/run 仍 absent,V014/V015/旧失败包未修改,所有数据库/业务门继续 HELD。

15. 当前门禁

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。