edit | blame | history | raw

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-JsonStringswitch 内追加反斜杠转义后仍可能继续执行 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_codefailed_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-V001run_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 -> 2323+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_STOPTEST_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。