CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V023dev.developer.ana.cai2026-07-26T20:08:00+08:00CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V022 / 21283/3d025596e9c01dad2bc4158e12c1768453fce7890772a1ca8cd7be4b1266fe51AUDIT-DEV-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-PYTHON-STAGE-P-REPAIR-PLAN-V022=HOLD/4/4 / 226303/3f6da21701b882516f091bdfd7ffc517ff8ea58811010e9f4a489381dbcbf91d / line 1789PENDING_INDEPENDENT_PYTHON_ARCHITECTURE_REPAIR_PLAN_REREVIEWNOT_ISSUEDNOT_ISSUEDV023 选择 reviewer 要求的第一条路径:**对外完全继承 V020 schema,不申请专业设计 amendment**。V022 新增的 Python wire schema 全部 supersede;Python 只作为内部实现,不能改变 V020 消费者看到的字段、schema identity、case totals、state、stop 或 exit。
允许变化仅有:
禁止变化:
任何未列入允许变化的差异为 STOP_COMPATIBILITY_DRIFT/27。因此无需修改 case-analysis V007。
| new target | inherited logical contract | schema id |
|---|---|---|
| Y03 | P03 | ANA-SEMI-PRECONSUMPTION-VECTORS-JCS-V005 |
| Y05 | P05 | ANA-SEMI-PRECONSUMPTION-STATIC-RESULT-JCS-V002 |
| Y06 | P06 | ANA-SEMI-PRECONSUMPTION-CONTRACT-RESULT-JCS-V006 |
| Y07 | P07 | ANA-SEMI-PRECONSUMPTION-RECEIPT-MD-V005 |
| Y08 | P08 | ANA-SEMI-PRECONSUMPTION-MANIFEST-CSV-V002 |
| native final | V020 | ANA.SEMI.PRECONSUMPTION.NATIVE.FINAL.V004 |
Y05 ordered keys 保持:check_results,schema_id,status,summary;summary=fail_count,pass_count,total_count。
Y06 ordered keys 保持:api_negative_results,api_results,preflight_results,process_selector_results,provider_precedence_results,schema_id,status,summary,time_results;summary 保持 api_fail_count,api_negative_fail_count,api_negative_pass_count,api_negative_total_count,case_fail_count,case_pass_count,case_total_count,precedence_fail_count,precedence_pass_count,precedence_total_count,status。
native final ordered keys 保持:artifact_rows,closure_state,final_exit_code,final_status,final_stop_code,manifest_external_bytes,manifest_external_sha256,prepackage_variant,schema_id,state_id。V022 的 Python-specific native keys 全部无效。
Y03 唯一 preimage 是 immutable old P03 4038/6b404e64d902ced1398664b2df50cb2f021512c6587b6bd5e513790db03377e1 的字节级 transform:只把唯一一次
RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PRECONSUMPTION-REPAIR-IMPLEMENTATION-20260726-001
替换为
RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PYTHON-STAGE-P-20260726-001
其余每个 byte 不变。结果固定为 4016/86f563b43d934cb0828e395f557ded328ad2abcfb2c1ef7bdbc8a4c32c12cbca,final byte=0x7D,old/new occurrence=0/1。
因此 case/group 完全固定:success API=4,api negative IDs=8,preflight IDs=8,selector IDs=15,provider precedence IDs=4,time IDs=7,functional=30,timeout-known prefix=18,native state IDs=C00-C40 共 41。不得新增 V022 的 9 个 Python regression rows 到 Y03;Python regression 只属于 Y02 static check_results,不改变 Y03 consumer contract。
V023 bootstrap 由 V022 marker 内 exact bootstrap 5236/db8c6ac8160e7d438d8b7690b476b64c141130f1cea0513ecbf2976ec4b8e6a6 依序执行以下四个 ordinal source transforms,除此之外无差异:
ANA-SEMI-PYTHON-SOURCE-BUNDLE-JCS-V002 → ANA-SEMI-PYTHON-SOURCE-BUNDLE-JCS-V003(一次)。BUNDLE_CANONICAL_DRIFT gate 后插入以下 exact LF block:EXPECTED_RUN="RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PYTHON-STAGE-P-20260726-001"
EXPECTED_PLAN="CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V023"
EXPECTED_OUTPUT="dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PYTHON-STAGE-P-20260726-001"
TOP_KEYS=["authorization_id","attempt_id","output_relative_path","plan_id","run_id","schema_id","targets"]
ITEM_KEYS=["artifact_id","bytes","content_base64","media_type","relative_path","sha256"]
if list(bundle.keys())!=TOP_KEYS: die(11,"BUNDLE_TOP_KEY_DRIFT")
if bundle.get("run_id")!=EXPECTED_RUN or bundle.get("plan_id")!=EXPECTED_PLAN or bundle.get("output_relative_path")!=EXPECTED_OUTPUT: die(11,"BUNDLE_IDENTITY_DRIFT")
if not isinstance(bundle.get("authorization_id"),str) or not bundle["authorization_id"].startswith("AUTH-"): die(11,"BUNDLE_AUTH_ID_INVALID")
if not isinstance(bundle.get("attempt_id"),str) or not bundle["attempt_id"].endswith("-A001"): die(11,"BUNDLE_ATTEMPT_ID_INVALID")
if list(x.keys())!=ITEM_KEYS: die(11,"BUNDLE_ITEM_KEY_DRIFT")。rc=main(...):out_rel=pathlib.Path(bundle["output_relative_path"])
if out_rel.is_absolute() or ".." in out_rel.parts or out_rel!=pathlib.Path(EXPECTED_OUTPUT): die(11,"OUTPUT_PATH_DRIFT")
out_path=(ROOT/out_rel).resolve()
if ROOT not in out_path.parents: die(11,"OUTPUT_PATH_ESCAPE")
rc=main(str(ROOT),bundle["run_id"],str(out_path))
上述 deterministic transform 的固定向量:
6461/996a79a55972fde5258f012daada29b73bf00432e56a2cdf1a130a5cff629f968616/6d4d7aa133fbf0b126f3c110ad4cf51cb9aa340a7859354205d046e486dd7c9c8695/d7feabf575864965c28db21b63cac3c45cd17394947bbb7820eeb39f22aabb895/8792/c3eb35042a562d4664d638f4ce303b9bdc4ff7d8d90d766e1cee1d574d293a098706/09f7a191610cdf7995563642115d6a8bb4a0bb645cbe3dbbf20b5bfb2655bb7c8796/04e9b102c51f31cff1d2fbbc2607715960e8412e60b3ea261d0bf3d0ba2ae028bundle top-level 和 item keys 已由 bootstrap 固定;authorization_id/attempt_id 是管理新链动态值,但必须分别匹配 ^AUTH-[A-Z0-9-]+$ 与 ^[A-Z0-9-]+-A001$,并由 parent terminal 与实际授权逐字相等。管理只能提供值,不能改变 schema/校验。
Y01-Y04 absolute path 由 ROOT + hardcoded ALLOW 构造;output path 由 fixed EXPECTED_OUTPUT 构造。Y04 只能以 main(project_root,run_id,output_root)->int 调用一次。Y04 内只允许 exact spec_from_file_location 各加载 Y01/Y02 一次,module keys 固定;Y03 只读 bytes/JSON。任何 module pre-existence、loader/path/hash/type/call count 漂移为 27。
Y04 负责用 V022 已冻结的 Win32 exclusive writer 创建 run root、test/receipt/manifest 子目录与 Y05-Y08。目录 API 固定 CreateDirectoryW;run root pre-exists、unexpected ERROR_ALREADY_EXISTS 或 reparse point 为 STOP。
bootstrap/Y04 不发送 native handoff。parent source 只在 child terminal 后读取 process result 与 actual Y01-Y08 evidence,按 V020 C00-C40 构造一个 Codex exact-thread native terminal;不得写第九个文件或调用 legacy route。process exit 0/11/21..27 与 native final_exit_code 必须按 V020 overlay 相等;timeout/unobserved child exit 使用 V020 parent-result 规则,不伪造 child exit。
provider 仍以 CreateToolhelp32Snapshot/Process32FirstW/Process32NextW 冻结 PID、parent PID、exe name,再对每个 relevant non-source PID 执行:
OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION|PROCESS_VM_READ,false,pid);QueryFullProcessImageNameW 获取 exact image path;NtQueryInformationProcess(ProcessCommandLineInformation=60) 两步:首次 null buffer 获得 required length,按长度分配,第二次读取 UNICODE_STRING 与 UTF-16 command_line;CommandLineToArgvW 解析 token vector,LocalFree;CloseHandle。snapshot row ordered keys 固定为:
command_line,command_line_base64,command_line_sha256,command_line_status,exe_name,exe_path,exe_path_status,parent_pid,pid,token_count,token_preimage_sha256
types/rules:command_line/string-or-null;base64/SHA/lowercase64-or-null;status=KNOWN|ACCESS_DENIED|EXITED_DURING_QUERY|ERROR|MALFORMED;pid/parent uint32;token_count int32-or-null。token preimage 是 parsed argv tokens 单 LF 连接、无尾 LF。
selector 必须逐字比较 V023 expected executable path、expected command_line SHA/Base64、5-token argv count/hash;substring/name-only/path-only 不得 exact。任一 relevant candidate command_line 非 KNOWN、两步 length drift、odd UTF-16 length、NUL/trailing garbage、CommandLineToArgvW 失败、close failure 均 unknown/27,不能 confirmed_zero。
provider 调用恰好一次;snapshot JCS、bytes/hash 与 as_of/freshness≤1000ms 写入 parent process result 的 reviewed snapshot evidence,不新增 Y06 wire fields。Y06 的 15 个 process_selector_results 行按 V020 schema 保存每个 case 的 actual/expected/match evidence。
Y05 exact 12 static checks:
PY-AST-Y01,PY-AST-Y02,PY-AST-Y04,PY-BYTES-EQUALITY,PY-OLD-GENERIC-SYNTAX-ABSENT,PY-Y03-JCS,PY-DENIED-IMPORTS,PY-DENIED-CALLS,PY-LOADER-GRAPH,PY-BUNDLE-IDENTITY,PY-WIN32-WRITER,PY-NATIVE-ONLY
每个 check row ordered keys=case_id,actual,expected,status,stop_code;status=MATCH|MISMATCH。Y05 summary total=12;PASS=12/0/TEST_PASS。
Y06 继续使用 V020 exact groups/rows:api_results=4;api_negative_results=8;preflight_results=8;process_selector_results=15;provider_precedence_results=4;time_results=7。每个 ordinary case row ordered keys=case_id,status,stop_code;API_RESULT/API_NEGATIVE_RESULT 的完整 actual object/type/property evidence、property rules 和 hashes 逐项继承 V019/V020,不删除。Python runtime type 只映射到 V020 rule enum,不进入新字段。
字段名保持 P05_status/P06_status 与 as_of_artifact_id=P06,这些是 V020 logical-stage names,不改为 Y。完整 UTF-8 preimage 均恰好一个 final LF:
449/51f12385835588e257859e36073da90290cb2a5465426b73174568c86960490c480/9ee2ce5e1fb04b6e43572d1f634343654b6a54abed8063ab0dd20dcf0d783a80470/1caa6eee696e12af70af766fec88a34b001490e883b2b2397f2f2b4ff1621724PASS preimage:
receipt_schema_id: ANA-SEMI-PRECONSUMPTION-RECEIPT-MD-V005
run_id: RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-PYTHON-STAGE-P-20260726-001
plan_id: CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V023
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/CONTRACT 只按 V020 既有三字段差异替换:STATIC=TEST_FAIL/STATIC_TEST_FAILED/P05 TEST_FAIL/P06 NOT_RUN_UPSTREAM_STOP;CONTRACT=TEST_FAIL/CONTRACT_TEST_FAILED/P05 TEST_PASS/P06 TEST_FAIL。除此之外 byte 差异为 STOP。
继续 V020 13 columns:
artifact_id,run_id,role,schema_id,relative_path,media_type,expected_presence,materialized,exists,status,upstream_stop_code,bytes,sha256
Y01-Y04 只允许 source metadata 变化:
| id | role | schema | media | expected_presence |
|---|---|---|---|---|
| Y01 | SOURCE | ANA-SEMI-PRECONSUMPTION-MODULE-PY-V001 | text/x-python; charset=utf-8 | REQUIRED_BEFORE_OUTER |
| Y02 | TEST_SOURCE | ANA-SEMI-PRECONSUMPTION-STATIC-TEST-PY-V001 | text/x-python; charset=utf-8 | REQUIRED_BEFORE_OUTER |
| Y03 | TEST_VECTOR | ANA-SEMI-PRECONSUMPTION-VECTORS-JCS-V005 | application/jcs+json | REQUIRED_BEFORE_OUTER |
| Y04 | VALIDATION_SOURCE | ANA-SEMI-PRECONSUMPTION-VALIDATION-PY-V001 | text/x-python; charset=utf-8 | REQUIRED_BEFORE_OUTER |
| Y05 | TEST_RESULT | ANA-SEMI-PRECONSUMPTION-STATIC-RESULT-JCS-V002 | application/jcs+json | REQUIRED_ON_STATIC_STAGE |
| Y06 | TEST_RESULT | ANA-SEMI-PRECONSUMPTION-CONTRACT-RESULT-JCS-V006 | application/jcs+json | REQUIRED_ON_CONTRACT_STAGE |
| Y07 | RECEIPT | ANA-SEMI-PRECONSUMPTION-RECEIPT-MD-V005 | text/markdown; charset=utf-8 | REQUIRED_ON_CLOSURE_STAGE |
| Y08 | MANIFEST | ANA-SEMI-PRECONSUMPTION-MANIFEST-CSV-V002 | text/csv; charset=utf-8 | SELF |
CSV 必须 RFC4180 CRLF+final CRLF。Y08 self row materialized/exists true 时 bytes/hash blank;external bytes/hash 只在 native final/audit。
以下 immutable predecessor tables 组成唯一权威,无重叠:
23056/1a9b8debc04ca1f29240d55af947e147857ffc28aa9295d95e401cbeeb671744 lines 181-227:C00-C19 top-level 与八行 tuple;16404/b49de51253d4c740e3c0e664ebf3135dfcd75693dc1adb50cf5ff82c3073359d lines 155-203:native V003、C20-C39 source-I/timeout-known overlays;11173/235aaa1ef3ead63f0b729239de95e89ab54cffe0f2b80a4a7eac2e563120fc93 lines 60-82:native V004、C40 与 timeout-known 18。V023 transform 只做 P01..P08 -> Y01..Y08、run/auth/attempt/timestamp/actual bytes/hash 的当前值替换;schema/status/stop/exit/closure/tuple/null/upstream 绝不变化。C03-C06 每个 source writer 同时接受 A 或 I 分支;C09/C24-C40 恰好 18 个 timeout-known prefix;C10 是唯一 U;C18 external hash 等于 actual invalid Y08;C00 是唯一 PASS/0。
Y01-Y08 与 future run 继续 absent;旧 P01-P04 hashes 不变,旧 P05-P08 absent。V023 只允许独立计划复审。PASS 后也只允许向 management 申请新的 single-use Python implementation authorization。禁止当前物化/执行 Python/PowerShell/csc/node/mysql/SQL/database/network/credential、R3、formal target、BATCH-001、旧包/Git/配置/角色修改。