# CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V005 - 事项:`DEV-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-REPAIR-20260725-001` - 计划:`DEV-PLAN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-IMPLEMENTATION-R4` - task_id:`TASK-DEV-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-REPAIR-PLAN-20260725-001` - submission_id:`SUBMIT-DEV-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-REPAIR-PLAN-V005` - handoff_id:`HANDOFF-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-REPAIR-PLAN-REVIEW-20260725-001` - 当前唯一角色:`dev.developer.ana.cai` - 独立审核角色:`dev.reviewer.ana.cai` - 专业设计:`DESIGN-ANA-SEMI-ROOT-IDENTITY-GRANT-PREFLIGHT-V007=PASS/0/0` - predecessor:`CODE-DESIGN-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-V004` - predecessor bytes/SHA-256:`10483/445d9449b223a0d2abae79f95bdca09cfda8518c99b3b6e9f1517cd967c9628b` - predecessor plan audit:`AUDIT-DEV-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-PLAN-V004=PASS/0/0` - failure audit:`AUDIT-DEV-ANA-SEMI-ROOT-PREFLIGHT-ORCHESTRATION-V007-IMPLEMENTATION-FAILURE-001=PASS_FAILURE_PATH/2/2` - 当前状态:`PENDING_INDEPENDENT_REPAIR_PLAN_REVIEW` - implementation authorization:`NOT_ISSUED` - synthetic/database authorization:`NOT_ISSUED/NOT_ISSUED` ## 1. 修复目标与历史冻结边界 本版只定义一次**全新实现链**,关闭下列两个阻断: 1. `BLOCK-IMPLEMENTATION-FAILURE-01=I12_INVALID_JCS_WINDOWS_PATH_ESCAPE`; 2. `BLOCK-IMPLEMENTATION-FAILURE-02=L0_PRIMARY_AND_CLOSURE_NOT_DURABLY_OBSERVABLE`。 历史授权 `AUTH-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-IMPLEMENTATION-20260724-001`、attempt `...A001` 和 run `RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-IMPLEMENTATION-20260724-001` 已永久终止,禁止 retry、resend、A002、replacement 或 renewal。旧 I01—I12 只作不可变历史证据;旧 I13—I16 必须继续物理 absent,禁止覆盖、删除、重命名、修补或回填。 历史冻结向量: | 旧 target | bytes/SHA-256 或状态 | |---|---| | I01 | `32868/11ba31375f75f9dc29b9562185590de05da58ce2edc28c3bb0bfd5e8fcb1e325` | | I02 | `4637/bb40d6a7b2ccef3b8b31f322d854503b8fc796b42ff1b53cb7402439592a1bc6` | | I03 | `2629/2e9b516dd51a67908ea7b51de1e06c6024f993effd17628876a65b862567f75f` | | I04 | `18046/498f86594583827e513cc8974c468e12380a9f3538600ec725814c1a1d265590` | | I05 | `16022/e2a74e744b2657967fa93e2dc126360b18904dc184100950162f31eb9b9e6fd8` | | I06 | `16770/b12ac6c4cf321d10c1c4a6a5b53a1175f3c6f1935e7ab12bd9d47c37861311b1` | | I07 | `22131/adda25a9cb0421250e4125ab9a91a73ffc3bf9f7834769306c104b71702dc0f1` | | I08/I09 | `22528/53095f89d0fa1f34854b54043a76c204b5b8e1f58f2786a62e8817fee7475052` | | I10/I11 | `0/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855` | | I12 | `1676/1e7c1ce163becb066a01ec66b4a738ffbaf94a1d061e32de0bed7ac12077a6c4`(invalid JSON/JCS) | | I13—I16 | `ABSENT_MUST_NOT_BACKFILL` | 本计划不授权写新源码、编译、L0/L1、synthetic、proof、config-editor、mysql、SQL、数据库、网络、credential、正式 target 或业务产物。 ## 2. 根因合同 ### 2.1 JCS 路径转义根因 旧 I07 的 `Escape-JsonString` 在 `switch` 内追加反斜杠转义后仍可能继续执行 switch 后的普通字符追加,实际 I12 出现 `E:\\\mb-ms-doc...`,严格 JSON 解析在 offset 274 报 `Unrecognized escape sequence`。旧 L0/L1 还各自持有类似序列化逻辑,存在实现漂移。 修复原则:新链只允许一个共享 JCS writer;所有 JSON 证据必须调用该模块,禁止复制第二套 escape/排序/写入实现。 ### 2.2 L0 原因丢失根因 旧 I07 以 `catch { exit 23 }` 吞掉 exact L0 stop。实际 outer exit=`23`,但 I13 absent;既不能证明哪个 L0 check 失败,也没有在 I13 收口失败时升级 `PACKAGE_UNCLOSED_STOP/27`。 修复原则:L0 模块必须先以 CreateNew 持久化完整 I13,再抛出带固定 stop code 的 typed failure;outer 只有在 I13 严格解析、canonical 重算和状态校验全部通过后,才可返回 23。I13 absent/invalid/无法复验时唯一 final exit=`27`。 ## 3. 全新 target universe 全新实现 run:`RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-REPAIR-IMPLEMENTATION-20260725-001`。 所有 target 均为新路径,禁止复用旧 I01—I16: | ID | 路径 | role | media_type/schema | |---|---|---|---| | R01 | `dev/ana-dev/AnaSemi.NativeProcessRunnerV006.R1.cs` | SOURCE | `text/x-csharp; charset=utf-8` | | R02 | `dev/ana-dev/AnaSemi.JcsEvidenceWriterV001.psm1` | SOURCE | `text/x-powershell; charset=utf-8` | | R03 | `dev/ana-dev/Invoke-AnaSemiWrapperSelftestV006.R1.ps1` | SOURCE_STATIC_ONLY | `text/x-powershell; charset=utf-8` | | R04 | `dev/ana-dev/synthetic-child-v006-r1.ps1` | SOURCE_STATIC_ONLY | `text/x-powershell; charset=utf-8` | | R05 | `dev/ana-dev/test/Test-AnaSemiNativeProcessRunnerV006.R1.Static.ps1` | TEST_SOURCE | `text/x-powershell; charset=utf-8` | | R06 | `dev/ana-dev/test/Test-InvokeAnaSemiWrapperSelftestV006.R1.Static.ps1` | TEST_SOURCE | `text/x-powershell; charset=utf-8` | | R07 | `dev/ana-dev/test/V007ExpectedVectors.R1.json` | TEST_VECTOR | `application/json; ANA-SEMI-V007-EXPECTED-VECTORS-R1-JCS-V001` | | R08 | `dev/ana-dev/test/Invoke-AnaSemiImplementationValidationV002.ps1` | VALIDATION_ENTRY | `text/x-powershell; charset=utf-8` | | R09 | `dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-REPAIR-IMPLEMENTATION-20260725-001/staging/AnaSemi.NativeProcessRunnerV006.dll` | COMPILER_STAGING | `application/vnd.microsoft.portable-executable` | | R10 | `dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-REPAIR-IMPLEMENTATION-20260725-001/build/AnaSemi.NativeProcessRunnerV006.dll` | BUILD_PUBLISHED | `application/vnd.microsoft.portable-executable` | | R11 | `dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-REPAIR-IMPLEMENTATION-20260725-001/process/csc.stdout.bin` | RAW_STDOUT | `application/octet-stream` | | R12 | `dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-REPAIR-IMPLEMENTATION-20260725-001/process/csc.stderr.bin` | RAW_STDERR | `application/octet-stream` | | R13 | `dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-REPAIR-IMPLEMENTATION-20260725-001/process/csc.result.json` | PROCESS_RESULT | `application/json; ANA-SEMI-IMPLEMENTATION-PROCESS-RESULT-JCS-V003` | | R14 | `dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-REPAIR-IMPLEMENTATION-20260725-001/test/l0-static.json` | L0_RESULT | `application/json; ANA-SEMI-IMPLEMENTATION-L0-JCS-V003` | | R15 | `dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-REPAIR-IMPLEMENTATION-20260725-001/test/l1-contract.json` | L1_RESULT | `application/json; ANA-SEMI-IMPLEMENTATION-L1-JCS-V003` | | R16 | `dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-REPAIR-IMPLEMENTATION-20260725-001/test/jcs-canonical-contract.json` | JCS_CONTRACT_RESULT | `application/json; ANA-SEMI-JCS-CONTRACT-RESULT-V001` | | R17 | `dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-REPAIR-IMPLEMENTATION-20260725-001/test/l0-failure-closure-contract.json` | CLOSURE_CONTRACT_RESULT | `application/json; ANA-SEMI-L0-CLOSURE-CONTRACT-RESULT-V001` | | R18 | `dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-REPAIR-IMPLEMENTATION-20260725-001/process/validation-terminal.json` | TERMINAL_RESULT | `application/json; ANA-SEMI-IMPLEMENTATION-TERMINAL-JCS-V001` | | R19 | `dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-REPAIR-IMPLEMENTATION-20260725-001/receipt/implementation-receipt.md` | RECEIPT | `text/markdown; charset=utf-8` | | R20 | `dev/ana-dev/tmp/RUN-DEV-ANA-SEMI-ROOT-PREFLIGHT-V007-REPAIR-IMPLEMENTATION-20260725-001/manifest/implementation-source-manifest.csv` | MANIFEST | `text/csv; charset=utf-8; ANA-SEMI-IMPLEMENTATION-MANIFEST-V005` | target count=`20`,formal target count=`0`。R01—R20 和新 run root 必须在未来授权前全部 absent;任何预存在、reparse/path escape 或路径漂移均 STOP。源码和证据只允许 CreateNew/no-overwrite;失败后保留已物化子集,禁止修补或回填。 ## 4. 单一 JCS writer 合同 R02 唯一导出下列三个函数,R05、R06、R08 必须从同一绝对解析路径加载,且模块在加载前后均只能出现一个 module instance: 1. `ConvertTo-AnaSemiJcsUtf8BytesV001(object value) -> byte[]` 2. `Write-AnaSemiJcsCreateNewV001(string path, object value) -> fixed result object` 3. `Test-AnaSemiJcsFileV001(string path, string schemaId) -> fixed result object` 固定规则: - object key 按 UTF-16 code unit 的 ordinal 升序;duplicate key、大小写碰撞或非 string key STOP。 - 只接受 object、array、string、bool、null 和有符号/无符号整数;float、decimal、NaN、Infinity、自定义对象或超界整数 STOP。 - string 逐 Unicode scalar 处理:quote 输出 `\"`,backslash 输出 `\\`,并支持 `\b`、`\t`、`\n`、`\f`、`\r`,每个输入 scalar 只消费一次;U+0000—U+001F 其余字符使用小写 `\u00xx`;非控制 Unicode 输出原始 UTF-8;未配对 surrogate STOP。 - 输出严格 UTF-8、无 BOM、无尾 LF、无空白格式化。 - 写入使用 `FileMode.CreateNew`;write 后 `Flush(true)`、关闭 writer、独占只读复开;严格 JSON parse 后以同一 writer 重序列化并要求 bytes 完全相等,再记录 bytes/SHA-256。 - 任何 count/type/property/write/flush/close/reopen/parse/reserialize/hash 不确定均 STOP;禁止把异常对象或非预期 pipeline output 混入结果。 以下 canonical byte preimage 及 hash 固定进入 R07,并由 R16 独立验证: | vector | exact UTF-8 preimage(无尾 LF) | bytes | SHA-256 | |---|---|---:|---| | JCS-PATH-001 | `{"path":"E:\\mb-ms-doc\\project-info\\dev\\ana-dev\\tmp\\x"}` | 60 | `fdc584feaf575a8ba805867b1465f48be1f095639630cc10f13c58415a83d873` | | JCS-ESCAPE-002 | `{"path":"E:\\x\\\"q\\\"","tab":"a\tb","text":"中"}` | 51 | `36113c2f15426ed6adc4c02224ddb3d19318c8a77fbf11dab373d29dba112220` | 负向向量至少覆盖:单反斜杠非法 escape、重复 escape、trailing LF、BOM、duplicate key、non-ordinal key order、浮点、未配对 surrogate、CreateNew 冲突和重序列化 byte drift。R16 每行必须记录 `case_id,expected_status,actual_status,expected_stop_code,actual_stop_code,preimage_bytes,preimage_sha256`,全部匹配才 `status=PASS`。 ## 5. L0 primary 与 closure 持久化合同 ### 5.1 R14 先落盘 R05 的 L0 检查必须累计完整 ordered check rows,并确定唯一 `primary_stop_code`。离开 L0 之前必须调用 R02 CreateNew 写 R14;R14 顶层固定键: `schema_id,run_id,status,primary_stop_code,failed_check_id,check_count,passed_check_count,failed_check_count,checks,runner_assembly_path,runner_assembly_bytes,runner_assembly_sha256,expected_vectors_path,expected_vectors_bytes,expected_vectors_sha256,created_at` 枚举:`status=TEST_PASS|TEST_FAIL`;PASS 时 `primary_stop_code/failed_check_id=null,failed_check_count=0`;FAIL 时二者非空、`failed_check_count>=1`,且 `primary_stop_code` 必须由第一个 ordinal check failure 唯一映射。R14 成功写入、复开、严格解析、canonical byte equality 和 hash 完成后,R05 才可返回 PASS 或抛出固定 typed L0 failure。禁止先 throw 再尝试补写。 ### 5.2 outer exit 23/27 判定 R08 禁止 `catch { exit 23 }`。捕获 L0 typed failure 后按以下顺序: 1. 验证异常类型、`primary_stop_code` 与 `failed_check_id` 均属于 R07 固定枚举; 2. 要求 R14 materialized; 3. 以 R02 严格验证 R14 schema/canonical bytes/hash; 4. 要求 R14 `status=TEST_FAIL` 且 exact primary 与异常完全一致; 5. 只有 1—4 全部 PASS,才设 `primary_exit_code=23,primary_evidence_state=VALID_TEST_FAIL,closure_state=CLOSED,final_exit_code=23`; 6. R14 absent、invalid、内容不一致或其写/复开/hash 状态不确定时,保留 `primary_exit_code=23`,但设 `closure_state=PACKAGE_UNCLOSED,final_exit_code=27`。 R15 在 L0 primary failure 下必须 absent=`NOT_RUN_UPSTREAM_STOP`。R18 必须在退出前以 CreateNew 尝试持久化;若 R18 自身无法安全物化,则不伪造 closed package,由 native terminal 回报 `PACKAGE_UNCLOSED/27` 和已物化矩阵。 R17 以纯内存 reducer 验证以下固定 preimage,不启动子进程: | case | exact UTF-8 preimage(无尾 LF) | bytes | SHA-256 | |---|---|---:|---| | L0-CLOSED-001 | `{"case_id":"L0_CHECK_FAIL_PERSISTED","closure_exit_code":23,"closure_state":"CLOSED","primary_evidence_state":"VALID_TEST_FAIL","primary_exit_code":23,"primary_stop_code":"STOP_L0_SOURCE_CANONICAL_DRIFT"}` | 204 | `9f2a10fd3a9d0e245360fc2b747c0caa72420a893b7aca69a520af30fdcf8984` | | L0-ABSENT-002 | `{"case_id":"L0_EVIDENCE_ABSENT","closure_exit_code":27,"closure_state":"PACKAGE_UNCLOSED","primary_evidence_state":"ABSENT","primary_exit_code":23,"primary_stop_code":"STOP_L0_SOURCE_CANONICAL_DRIFT"}` | 200 | `025c6b6639ac6be0d9632c63685a60b87608f0603cf16058f5229bf9e8ba4110` | | L0-INVALID-003 | `{"case_id":"L0_EVIDENCE_INVALID","closure_exit_code":27,"closure_state":"PACKAGE_UNCLOSED","primary_evidence_state":"INVALID","primary_exit_code":23,"primary_stop_code":"STOP_L0_SOURCE_CANONICAL_DRIFT"}` | 202 | `76cf9f52a5953cba615355701b9c52ca12bcedfc4703d32882a1ed2be6949777` | ## 6. R18 terminal schema 与退出总映射 R18 顶层 key 集合固定且不得缺失/增加: `schema_id,run_id,primary_phase,primary_exit_code,primary_stop_code,primary_evidence_target_id,primary_evidence_state,closure_state,closure_stop_code,final_exit_code,materialized_target_ids,absent_target_ids,outer_process_count,csc_process_count,harness_process_count,synthetic_child_process_count,network_count,database_count,credential_count,status` 类型与枚举: - `schema_id=ANA-SEMI-IMPLEMENTATION-TERMINAL-JCS-V001`;`run_id` 为本版固定 run。 - `primary_phase=PASS|PRECHECK|CSC|PUBLISH|ASSEMBLY|MODULE|L0|L1|PACKAGE`。 - `primary_exit_code/final_exit_code=INT32`,只允许 `0|11..28`;PASS 为 0。 - `primary_stop_code/closure_stop_code=string|null`,FAIL 时按 R07 固定 enum。 - `primary_evidence_target_id=null|R13|R14|R15|R16|R17`。 - `primary_evidence_state=NOT_APPLICABLE|VALID_PASS|VALID_TEST_FAIL|ABSENT|INVALID`。 - `closure_state=CLOSED|PACKAGE_UNCLOSED|RECEIPT_CREATE_STOP|MANIFEST_CREATE_STOP`。 - `materialized_target_ids/absent_target_ids` 为 ordinal 排序、无重复、全集恰好 R01—R20 的 string array。 - 五个 process/access count 均为非负 INT32;本实现阶段 harness/synthetic/network/database/credential 必须为 0。 - `status=PASS|PRIMARY_FAILED_CLOSED|PACKAGE_UNCLOSED`。 退出优先级沿用 V004 的 0 与 11—28 总映射,新增约束只收紧 closure:任何 primary 若其必须证据 absent/invalid,均不得保留原 primary exit,唯一 final exit=`27`;未知状态仍为 28。尤其 L0:`23+VALID_TEST_FAIL+CLOSED -> 23`;`23+ABSENT|INVALID|unknown -> 27`。 ## 7. Manifest、状态矩阵与 hash DAG R20 固定列序: `run_id,target_id,artifact_role,media_type,schema_id,path,expected_presence,materialized,exists,status,bytes,sha256,created_at,upstream_stop_code` - 主键 `(run_id,target_id)`;恰好 20 行、R01—R20 各一行;path 唯一。 - `expected_presence=REQUIRED_ON_PASS|CONDITIONAL_ON_PRIMARY|SELF`。 - `status=SOURCE_FROZEN|COMPILER_STAGING_READY|COMPILER_STAGING_PARTIAL|BUILD_PUBLISHED|RAW_CAPTURED|PROCESS_RESULT_PASS|PROCESS_RESULT_FAIL|TEST_PASS|TEST_FAIL|TEST_OUTPUT_INVALID|CONTRACT_PASS|CONTRACT_FAIL|TERMINAL_PASS|TERMINAL_FAIL|ATTEMPTED_NO_OUTPUT|RECEIPT_FINALIZED|MANIFEST_SELF_EXTERNAL_HASH|NOT_RUN_UPSTREAM_STOP`。 - materialized/exists 必须同值。materialized=true 时 bytes/SHA-256/created_at 非空;R20 self 行例外:materialized/exists=true,bytes/SHA-256 为空,外部 hash 只进入 native handoff/audit。materialized=false 时 bytes/SHA-256/created_at 为空,upstream_stop_code 非空。 - R14 在 L0 closed failure 为 `TEST_FAIL`;R14 absent/invalid 的物理状态分别为 `NOT_RUN_UPSTREAM_STOP` 或 `TEST_OUTPUT_INVALID`,R18 必须 `PACKAGE_UNCLOSED/27`。 - R15 在 L0 failure 下为 `NOT_RUN_UPSTREAM_STOP`。R16/R17 必须在调用 L0 前完成,避免 L0 failure 丢失修复合同的验收证据。 唯一 DAG: `V007 design/audit + V005 plan/audit → R01-R08 → R16/R17 contract validation → csc/R09/R11/R12 → CreateNew publish R10 → R13 → unique LoadFile(R10) → R14 → R15 → R18 → freeze R01-R18 → R19 → R20(self hash blank) → external R20 bytes/hash`。 L0 failure 的 closed DAG 为:`...→R13→R14(TEST_FAIL)→R18(final 23)→R19→R20→external hash`,R15 absent。L0 evidence absent/invalid 的 safe terminal 为:`...→R13→attempt R14→R18(final 27)`;只有 R18 后续 receipt/manifest 安全闭合时才可物化 R19/R20,否则 native terminal 回报已物化子集。禁止 receipt 引用自身或 R20 hash;R20 记录 R19 hash,R20 自身 hash只由外部 handoff/audit记录,DAG 无环。 ## 8. 未来单次实现边界 本计划审核 PASS 后,开发者只能向 `management.admin` 申请一个绑定新 run、新 authorization、新 attempt 和 R01—R20 的单次实现授权。授权未签发前仍为零物化、零进程。 未来实现允许的成功进程上限:outer PowerShell exactly 1,csc `0..1`;L0/L1/R16/R17 均在 outer 内执行;harness/synthetic child/proof/config-editor/mysql/SQL/database/network/credential 均为 0。R03/R04 在本实现阶段只作静态 source,不执行。 任何失败立即 fail-closed;不得删除、覆盖、重命名、重跑、补造、回填或复用 run。Git 继续是 `INFORMATIONAL_NON_BLOCKING_BY_HUMAN_OVERRIDE`,不得 clean、stage、revert 或把其重新设为 STOP gate。`root_never_readonly_proven=true`,BATCH-001 与全部市场/业务动作继续 HELD。 ## 9. 独立审核请求 请 `dev.reviewer.ana.cai` 只审核本修复计划,不执行源码、compiler、测试或数据库,并独立确认: 1. 旧 A001/run/I01—I16 的不可变与 absent 边界无回退;新路径和 run 不复用历史 target。 2. R02 是唯一 JCS writer;Windows path/quote/tab/Unicode 固定 preimage 的 bytes/hash 可复算,负向合同可拒错。 3. R14 先持久化再抛 typed L0 failure;exit 23 只对应 `VALID_TEST_FAIL+CLOSED`,absent/invalid 必定 exit 27。 4. R18 schema、R01—R20 status/materialization/null/upstream 真值、DAG 和 self-exclusion 唯一且无环。 5. 本计划不构成实现、synthetic 或数据库授权;审核角色与开发角色独立。 审核 PASS 后唯一下一步:把 V005 bytes/hash、审核 PASS、旧证据不变和 R01—R20/new run absent 的事实提交 management 请求新的单次实现授权。审核 HOLD 时只允许 append-only 新计划修订,不得物化任何实现 target。