edit | blame | history | raw

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

  • plan_id: CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V023
  • role_instance_id: dev.developer.ana.cai
  • created_at: 2026-07-26T20:08:00+08:00
  • predecessor: CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V022 / 21283/3d025596e9c01dad2bc4158e12c1768453fce7890772a1ca8cd7be4b1266fe51
  • predecessor_review: AUDIT-DEV-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-PYTHON-STAGE-P-REPAIR-PLAN-V022=HOLD/4/4 / 226303/3f6da21701b882516f091bdfd7ffc517ff8ea58811010e9f4a489381dbcbf91d / line 1789
  • status: PENDING_INDEPENDENT_PYTHON_ARCHITECTURE_REPAIR_PLAN_REREVIEW
  • implementation_authorization: NOT_ISSUED
  • database_execution_authorization: NOT_ISSUED

V023 选择 reviewer 要求的第一条路径:**对外完全继承 V020 schema,不申请专业设计 amendment**。V022 新增的 Python wire schema 全部 supersede;Python 只作为内部实现,不能改变 V020 消费者看到的字段、schema identity、case totals、state、stop 或 exit。

1. 精确兼容边界(关闭 BLOCK-V021-01)

1.1 允许变化与禁止变化

允许变化仅有:

  1. implementation runtime:Windows PowerShell 5.1 → CPython 3.12;
  2. source/test physical paths:旧 P01-P04 → 新 Y01-Y04;
  3. manifest artifact_id/path/media/source-schema metadata:P01-P08 → Y01-Y08 的当前链值;
  4. 每条新授权本来就动态变化的 run_id/authorization_id/attempt_id/timestamps/bytes/hash。

禁止变化:

  • 四 API 的 schema_id、field names/order/rules/status/stop;
  • Y03/P03 的 schema、case IDs、group totals、native state IDs;
  • Y05/P05、Y06/P06、Y07/P07、Y08/P08 的 wire schema 和列;
  • native final 的 schema、10 个 top-level keys、C00-C40、closure/status/stop/exit、八行 tuple;
  • root never readonly、zero database、native-only delivery、no-retry 与 BATCH-001 HELD。

任何未列入允许变化的差异为 STOP_COMPATIBILITY_DRIFT/27。因此无需修改 case-analysis V007。

1.2 exact external schemas

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 全部无效。

1.3 exact Y03

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-C4041。不得新增 V022 的 9 个 Python regression rows 到 Y03;Python regression 只属于 Y02 static check_results,不改变 Y03 consumer contract。

2. corrected bootstrap 与调用边界(关闭 BLOCK-V021-02)

2.1 V023 bootstrap 的唯一构造

V023 bootstrap 由 V022 marker 内 exact bootstrap 5236/db8c6ac8160e7d438d8b7690b476b64c141130f1cea0513ecbf2976ec4b8e6a6 依序执行以下四个 ordinal source transforms,除此之外无差异:

  1. ANA-SEMI-PYTHON-SOURCE-BUNDLE-JCS-V002ANA-SEMI-PYTHON-SOURCE-BUNDLE-JCS-V003(一次)。
  2. 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")
  1. 每个 target row 在读取 artifact_id 前插入 if list(x.keys())!=ITEM_KEYS: die(11,"BUNDLE_ITEM_KEY_DRIFT")
  2. 用以下 exact block 替换旧的单行 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 的固定向量:

  • bootstrap=6461/996a79a55972fde5258f012daada29b73bf00432e56a2cdf1a130a5cff629f96
  • RFC4648 base64=8616/6d4d7aa133fbf0b126f3c110ad4cf51cb9aa340a7859354205d046e486dd7c9c
  • wrapper token=8695/d7feabf575864965c28db21b63cac3c45cd17394947bbb7820eeb39f22aabb89
  • argv token preimage=5/8792/c3eb35042a562d4664d638f4ce303b9bdc4ff7d8d90d766e1cee1d574d293a09
  • Arguments=8706/09f7a191610cdf7995563642115d6a8bb4a0bb645cbe3dbbf20b5bfb2655bb7c
  • Win32 CommandLine=8796/04e9b102c51f31cff1d2fbbc2607715960e8412e60b3ea261d0bf3d0ba2ae028

2.2 bundle、paths 与 loader

bundle 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。

3. actual command-line provider(关闭 BLOCK-V021-03)

provider 仍以 CreateToolhelp32Snapshot/Process32FirstW/Process32NextW 冻结 PID、parent PID、exe name,再对每个 relevant non-source PID 执行:

  1. OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION|PROCESS_VM_READ,false,pid)
  2. QueryFullProcessImageNameW 获取 exact image path;
  3. NtQueryInformationProcess(ProcessCommandLineInformation=60) 两步:首次 null buffer 获得 required length,按长度分配,第二次读取 UNICODE_STRING 与 UTF-16 command_line;
  4. CommandLineToArgvW 解析 token vector,LocalFree
  5. 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。

4. exact Y05-Y08 与 native closure(关闭 BLOCK-V021-04)

4.1 Y05/Y06 rows

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,不进入新字段。

4.2 Y07 exact literals

字段名保持 P05_status/P06_statusas_of_artifact_id=P06,这些是 V020 logical-stage names,不改为 Y。完整 UTF-8 preimage 均恰好一个 final LF:

  • PASS=449/51f12385835588e257859e36073da90290cb2a5465426b73174568c86960490c
  • STATIC=480/9ee2ce5e1fb04b6e43572d1f634343654b6a54abed8063ab0dd20dcf0d783a80
  • CONTRACT=470/1caa6eee696e12af70af766fec88a34b001490e883b2b2397f2f2b4ff1621724

PASS 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。

4.3 Y08 exact columns/rows

继续 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。

4.4 C00-C40 total mapping

以下 immutable predecessor tables 组成唯一权威,无重叠:

  • V018 23056/1a9b8debc04ca1f29240d55af947e147857ffc28aa9295d95e401cbeeb671744 lines 181-227:C00-C19 top-level 与八行 tuple;
  • V019 16404/b49de51253d4c740e3c0e664ebf3135dfcd75693dc1adb50cf5ff82c3073359d lines 155-203:native V003、C20-C39 source-I/timeout-known overlays;
  • V020 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。

5. 零执行与门禁

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/配置/角色修改。