dev.developer.ana.cai。20599/e167912f4a7e1572d17bac7494c6cd2d0c624da64ef951dee5038b227ae0ec0b;独立专业审核=PASS/0/0,audit=286828/6a8685c05db4bfb52f45a48f10e83793ddc6cdbc9965e99cb83d6221138d0a1f。HOLD/2/2,audit=487624/796aea4d8f6e0a0f63995f35994ac0004c73eb906211681b99161b273228fb53;candidate authorization=NOT_GENERATED/send_count=0。BLOCK-MGMT-PROJECT-INFO-ANA-V007-STAGE-S-PARENT-DEADLINE-COVERAGE-INCOMPLETE 与 BLOCK-MGMT-PROJECT-INFO-ANA-V007-STAGE-S-PARENT-KILL-WAIT-NOT-IDEMPOTENT:normal-path stdin write/flush、child wait、stream drain 全部消费同一 10000ms Remaining;child 不依赖 EOF,因此 timed lifecycle 删除同步 StandardInput.Close;termination 只允许一次 Kill 与一次 5000ms Wait,结果缓存,catch/finally 后续调用零等待返回。51206/6ea1f921913927009045a0c6168f2693de0d65d4f2ba0d33056bbafb38c9b052;management future attachment 必须逐字节相同。$p.Start() 成功立即启动,覆盖 async stdin Write/Flush/Close、WaitForExit、kill 与 stream drain。StopChild 是唯一 termination API;killIssued 保证 Kill 最多一次;随后 WaitForExit(5000)。成功才设置 child_exited/actual exit;失败保持 child_exited=false,禁止 observer,四行 U。Console.Out.Write(...+LF),不使用 WriteLine,固定 0 CR。stderr=0;parent final 同样 LF-only。以下 fence(不含 fence、含一个 final LF)是唯一 parent cmd;embedded child here-string runtime value不含 closing 前 LF。唯一 placeholder 必须在提交审核前替换为 child hash。
$ErrorActionPreference='Stop'
$ProgressPreference='SilentlyContinue'
$root='E:\mb-ms-doc\project-info'
$ids=@('Y01','Y02','Y03','Y04')
$paths=@('E:\mb-ms-doc\project-info\dev\ana-dev\ana_semi_preconsumption_v002.py','E:\mb-ms-doc\project-info\dev\ana-dev\test\test_ana_semi_preconsumption_v002.py','E:\mb-ms-doc\project-info\dev\ana-dev\test\ana_semi_preconsumption_vectors_v002.json','E:\mb-ms-doc\project-info\dev\ana-dev\test\run_ana_semi_preconsumption_validation_v002.py')
$sizes=@(17465,3359,4016,13037)
$hashes=@('89812a35ac352d6fd0887f0b67df85962070d637aba4962992b46e073dd4bcf6','1983df916d5b9553a885a949d2674d9f8a8e7b1a6c4c5989eadf48245d929cf0','86f563b43d934cb0828e395f557ded328ad2abcfb2c1ef7bdbc8a4c32c12cbca','244463c2a66910dd71564f148d5845672261dedc80a636e21e809712b691337e')
$childSource=@'
$ErrorActionPreference='Stop'
$ids=@('Y01','Y02','Y03','Y04')
$paths=@('E:\mb-ms-doc\project-info\dev\ana-dev\ana_semi_preconsumption_v002.py','E:\mb-ms-doc\project-info\dev\ana-dev\test\test_ana_semi_preconsumption_v002.py','E:\mb-ms-doc\project-info\dev\ana-dev\test\ana_semi_preconsumption_vectors_v002.json','E:\mb-ms-doc\project-info\dev\ana-dev\test\run_ana_semi_preconsumption_validation_v002.py')
$sizes=@(17465,3359,4016,13037)
$hashes=@('89812a35ac352d6fd0887f0b67df85962070d637aba4962992b46e073dd4bcf6','1983df916d5b9553a885a949d2674d9f8a8e7b1a6c4c5989eadf48245d929cf0','86f563b43d934cb0828e395f557ded328ad2abcfb2c1ef7bdbc8a4c32c12cbca','244463c2a66910dd71564f148d5845672261dedc80a636e21e809712b691337e')
function Sha([byte[]]$b){$s=[Security.Cryptography.SHA256]::Create();try{return([BitConverter]::ToString($s.ComputeHash($b))).Replace('-','').ToLowerInvariant()}finally{$s.Dispose()}}
function Fail([string]$c){[Console]::Out.Write('STOP:'+$c+"`n");[Console]::Out.Flush();exit 27}
function Profile([int]$i,[byte[]]$b){if($b.Length-ne$sizes[$i]-or(Sha $b)-ne$hashes[$i]){Fail 'PAYLOAD_HASH'};if($b.Length-ge3-and$b[0]-eq239-and$b[1]-eq187-and$b[2]-eq191){Fail 'PAYLOAD_BOM'};if(@($b|Where-Object{$_-eq13-or$_-eq0}).Count-ne0){Fail 'PAYLOAD_CR_NUL'};$lf=@($b|Where-Object{$_-eq10}).Count;if($i-eq2){if($lf-ne0-or$b[-1]-ne125){Fail 'PAYLOAD_JCS_PROFILE'}}elseif($lf-lt1-or$b[-1]-ne10-or$b[-2]-eq10){Fail 'PAYLOAD_TEXT_PROFILE'}}
try{
$lines=@();for($i=0;$i-lt5;$i++){$v=[Console]::In.ReadLine();if($null-eq$v){Fail 'TRANSCRIPT_EOF'};$lines+=$v}
$payloadText=($lines[0..3]-join"`n")+"`n";$a=[Text.Encoding]::ASCII
$end=$lines[4]-split"`t",-1;if($end.Count-ne3-or$end[0]-ne'END'-or$end[1]-ne'4'-or$end[2]-ne(Sha $a.GetBytes($payloadText))){Fail 'TRANSCRIPT_END'}
$decoded=@();for($i=0;$i-lt4;$i++){$f=$lines[$i]-split"`t",-1;if($f.Count-ne5-or$f[0]-ne$ids[$i]-or$f[1]-cne$paths[$i]-or$f[2]-ne([string]$sizes[$i])-or$f[3]-ne$hashes[$i]){Fail 'TRANSCRIPT_FIELDS'};if($f[4]-cnotmatch'\A(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?\z'){Fail 'TRANSCRIPT_BASE64'};try{$b=[Convert]::FromBase64String($f[4])}catch{Fail 'TRANSCRIPT_DECODE'};Profile $i $b;$decoded+=,$b}
for($i=0;$i-lt4;$i++){[Console]::Out.Write('BEGIN:'+$ids[$i]+"`n");[Console]::Out.Flush();$fs=[IO.FileStream]::new($paths[$i],[IO.FileMode]::CreateNew,[IO.FileAccess]::Write,[IO.FileShare]::None,4096,[IO.FileOptions]::WriteThrough);[Console]::Out.Write('CREATED:'+$ids[$i]+"`n");[Console]::Out.Flush();try{$fs.Write($decoded[$i],0,$decoded[$i].Length);$fs.Flush($true)}finally{$fs.Dispose()};$rb=[IO.File]::ReadAllBytes($paths[$i]);Profile $i $rb;[Console]::Out.Write('DONE:'+$ids[$i]+"`n");[Console]::Out.Flush()}
exit 0
}catch{Fail ('EXCEPTION_'+$_.Exception.GetType().Name.ToUpperInvariant())}
'@
function Sha([byte[]]$b){$s=[Security.Cryptography.SHA256]::Create();try{return([BitConverter]::ToString($s.ComputeHash($b))).Replace('-','').ToLowerInvariant()}finally{$s.Dispose()}}
function ReadExact([string]$p){$f=[IO.FileStream]::new($p,[IO.FileMode]::Open,[IO.FileAccess]::Read,[IO.FileShare]::None);try{$m=[IO.MemoryStream]::new();try{$f.CopyTo($m);return $m.ToArray()}finally{$m.Dispose()}}finally{$f.Dispose()}}
function Obj([int]$i,[hashtable]$progress){
$attempted=$(if($progress.ContainsKey('BEGIN:'+$ids[$i])){$true}elseif($progress.ContainsKey('PROGRESS_UNKNOWN')){$null}else{$false})
$createdSignal=$progress.ContainsKey('CREATED:'+$ids[$i]);$created=$(if($createdSignal){$true}elseif($progress.ContainsKey('PROGRESS_UNKNOWN')){$null}else{$false})
try{$x=Get-Item -LiteralPath $paths[$i] -Force -ErrorAction Stop}catch [Management.Automation.ItemNotFoundException]{return[ordered]@{id=$ids[$i];attempted=$attempted;created_by_attempt=$created;exists=$false;object_type='ABSENT';reparse=$false;bytes=$null;sha256=$null;validation='NOT_PRESENT'}}catch{return[ordered]@{id=$ids[$i];attempted=$attempted;created_by_attempt=$created;exists=$null;object_type='UNKNOWN';reparse=$null;bytes=$null;sha256=$null;validation='UNKNOWN'}}
if($attempted-eq$true-and-not$createdSignal){$created=$null}
$rp=(($x.Attributes-band[IO.FileAttributes]::ReparsePoint)-ne0);if($rp){return[ordered]@{id=$ids[$i];attempted=$attempted;created_by_attempt=$created;exists=$true;object_type='REPARSE';reparse=$true;bytes=$null;sha256=$null;validation='INVALID'}}
if($x.PSIsContainer){return[ordered]@{id=$ids[$i];attempted=$attempted;created_by_attempt=$created;exists=$true;object_type='DIRECTORY';reparse=$false;bytes=$null;sha256=$null;validation='INVALID'}}
try{$b=ReadExact $paths[$i];$valid=($b.Length-eq$sizes[$i]-and(Sha $b)-eq$hashes[$i]);return[ordered]@{id=$ids[$i];attempted=$attempted;created_by_attempt=$created;exists=$true;object_type='FILE';reparse=$false;bytes=$b.Length;sha256=(Sha $b);validation=$(if($valid){'VALID'}else{'INVALID'})}}catch{return[ordered]@{id=$ids[$i];attempted=$attempted;created_by_attempt=$created;exists=$true;object_type='FILE';reparse=$false;bytes=$null;sha256=$null;validation='UNKNOWN'}}
}
$p=$null;$deadline=$null;$killIssued=$false;$stopChildInvoked=$false;$stopChildResult=$false;$parentExit=27;$terminal='PARENT_PRECHECK_STOP';$stop='UNINITIALIZED';$childStarted=$false;$childExited=$false;$childExit=$null;$timedOut=$false;$progress=@{};$progressComplete=$false
function Remaining {if($null-eq$script:deadline){return 0};return[Math]::Max(0,10000-[int]$script:deadline.ElapsedMilliseconds)}
function StopChild {
if($script:stopChildInvoked){return [bool]$script:stopChildResult}
$script:stopChildInvoked=$true;$r=$false
try{
if($null-eq$script:p-or$script:childExited){$r=$true}
else{
$canWait=$true
if(-not$script:p.HasExited){
if(-not$script:killIssued){$script:killIssued=$true;try{$script:p.Kill()}catch{if(-not$script:p.HasExited){$canWait=$false}}}
if($canWait-and-not$script:p.HasExited){if(-not$script:p.WaitForExit(5000)){$canWait=$false}}
}
if($canWait-and$script:p.HasExited){$script:childExited=$true;$script:childExit=$script:p.ExitCode;$r=$true}
}
}catch{$r=$false}
$script:stopChildResult=$r
return $r
}
try{
$lines=@();for($i=0;$i-lt5;$i++){$v=[Console]::In.ReadLine();if($null-eq$v){throw 'TRANSCRIPT_EOF'};$lines+=$v};$transcript=($lines-join"`n")+"`n"
$tb=[Text.Encoding]::ASCII.GetBytes($transcript);if($tb.Length-ne51206-or(Sha $tb)-ne'6ea1f921913927009045a0c6168f2693de0d65d4f2ba0d33056bbafb38c9b052'){throw 'TRANSCRIPT_HASH'}
foreach($d in @($root,(Join-Path $root 'dev'),(Join-Path $root 'dev\ana-dev'),(Join-Path $root 'dev\ana-dev\test'))){$di=[IO.DirectoryInfo]::new($d);if(-not$di.Exists-or($di.Attributes-band[IO.FileAttributes]::Directory)-eq0-or($di.Attributes-band[IO.FileAttributes]::ReparsePoint)-ne0){throw 'DIR_STATE'}}
foreach($path in $paths){try{Get-Item -LiteralPath $path -Force -ErrorAction Stop|Out-Null;throw 'TARGET_PREEXISTS'}catch [Management.Automation.ItemNotFoundException]{}}
$childBytes=[Text.UTF8Encoding]::new($false).GetBytes($childSource);if(Sha $childBytes-ne'aeeddde8793d352af5f81988aa603a30cea9c145eaeb6024c5e83801800b30cc'){throw 'CHILD_SOURCE_HASH'}
$enc=[Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($childSource));$psi=[Diagnostics.ProcessStartInfo]::new();$psi.FileName='C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe';$psi.Arguments='-NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -EncodedCommand '+$enc;$psi.UseShellExecute=$false;$psi.CreateNoWindow=$true;$psi.RedirectStandardInput=$true;$psi.RedirectStandardOutput=$true;$psi.RedirectStandardError=$true;$psi.StandardInputEncoding=[Text.Encoding]::ASCII
$p=[Diagnostics.Process]::new();$p.StartInfo=$psi;if(-not$p.Start()){throw 'CHILD_START_FALSE'};$childStarted=$true;$deadline=[Diagnostics.Stopwatch]::StartNew()
$om=[IO.MemoryStream]::new();$em=[IO.MemoryStream]::new();$ot=$p.StandardOutput.BaseStream.CopyToAsync($om);$et=$p.StandardError.BaseStream.CopyToAsync($em);$inBytes=[Text.Encoding]::ASCII.GetBytes($transcript);$wt=$p.StandardInput.BaseStream.WriteAsync($inBytes,0,$inBytes.Length);$remain=Remaining;if($remain-le0-or-not$wt.Wait($remain)){$timedOut=$true;throw 'CHILD_STDIN_TIMEOUT'};$ft=$p.StandardInput.BaseStream.FlushAsync();$remain=Remaining;if($remain-le0-or-not$ft.Wait($remain)){$timedOut=$true;throw 'CHILD_STDIN_FLUSH_TIMEOUT'}
$remain=Remaining;if($remain-le0-or-not$p.WaitForExit($remain)){$timedOut=$true;if(-not(StopChild)){throw 'CHILD_LIVENESS_UNKNOWN'}}else{$childExited=$true;$childExit=$p.ExitCode}
if(-not($ot.IsCompleted-and$et.IsCompleted)){$remain=Remaining;if($remain-le0-or-not[Threading.Tasks.Task]::WaitAll(@($ot,$et),$remain)){throw 'CHILD_STREAM_UNKNOWN'}};$ob=$om.ToArray();$eb=$em.ToArray();if($eb.Length-ne0){throw 'CHILD_STDERR'}
try{$os=[Text.UTF8Encoding]::new($false,$true).GetString($ob)}catch{throw 'CHILD_STDOUT_UTF8'};$pls=@($os-split"`n"|Where-Object{$_-ne''});$expected=@('BEGIN:Y01','CREATED:Y01','DONE:Y01','BEGIN:Y02','CREATED:Y02','DONE:Y02','BEGIN:Y03','CREATED:Y03','DONE:Y03','BEGIN:Y04','CREATED:Y04','DONE:Y04');$pi=0;$seenStop=$false;foreach($q in $pls){if($q-cnotmatch'\A(?:(?:BEGIN|CREATED|DONE):Y0[1-4]|STOP:[A-Z0-9_]+)\z'){$progress['PROGRESS_UNKNOWN']=$true;throw 'CHILD_PROGRESS_SCHEMA'};if($q-like'STOP:*'){if($seenStop-or$q-ne$pls[-1]){$progress['PROGRESS_UNKNOWN']=$true;throw 'CHILD_PROGRESS_ORDER'};$seenStop=$true}else{if($seenStop-or$pi-ge$expected.Count-or$q-ne$expected[$pi]){$progress['PROGRESS_UNKNOWN']=$true;throw 'CHILD_PROGRESS_ORDER'};$pi++};if($progress.ContainsKey($q)){$progress['PROGRESS_UNKNOWN']=$true;throw 'CHILD_PROGRESS_DUPLICATE'};$progress[$q]=$true};$progressComplete=($pi-eq12-and-not$seenStop-and$pls.Count-eq12-and-not$progress.ContainsKey('PROGRESS_UNKNOWN'))
$stopLine=@($pls|Where-Object{$_-like'STOP:*'});if($timedOut){$terminal='CHILD_TIMEOUT_KILLED';$stop='CHILD_TIMEOUT';$parentExit=27}elseif($childExit-eq0){$terminal='SOURCE_FREEZE_COMPLETED_PENDING_STATIC_REVIEW';$stop=$null;$parentExit=0}else{$terminal='CHILD_FAIL_CLOSED';$stop=$(if($stopLine.Count-eq1){$stopLine[0].Substring(5)}else{'CHILD_EXIT_'+$childExit});$parentExit=27}
}catch{
if($childStarted-and-not$childExited){if(-not(StopChild)){$stop='CHILD_LIVENESS_UNKNOWN';$terminal='CHILD_LIVENESS_UNKNOWN';$parentExit=27}else{$progress['PROGRESS_UNKNOWN']=$true}}
if($stop-ne'CHILD_LIVENESS_UNKNOWN'){$msg=[string]$_.Exception.Message;$stop=$(if($msg-cmatch'\A[A-Z0-9_]+\z'){$msg}else{'PARENT_EXCEPTION_'+$_.Exception.GetType().Name.ToUpperInvariant()});$terminal=$(if($childStarted){'PARENT_OR_CHILD_FAIL_CLOSED'}else{'PARENT_PRECHECK_STOP'});$parentExit=27}
}finally{
if($childStarted-and-not$childExited){if(-not(StopChild)){$stop='CHILD_LIVENESS_UNKNOWN';$terminal='CHILD_LIVENESS_UNKNOWN';$parentExit=27}else{$progress['PROGRESS_UNKNOWN']=$true}}
$rows=@();if($childStarted-and-not$childExited){for($i=0;$i-lt4;$i++){$rows+=[ordered]@{id=$ids[$i];attempted=$null;created_by_attempt=$null;exists=$null;object_type='UNKNOWN';reparse=$null;bytes=$null;sha256=$null;validation='UNKNOWN'}}}else{for($i=0;$i-lt4;$i++){$rows+=Obj $i $progress}}
$valid=@($rows|Where-Object{$_.validation-eq'VALID'}).Count;$attemptedAll=(@($rows|Where-Object{$_.attempted-eq$true}).Count-eq4);$createdAll=(@($rows|Where-Object{$_.created_by_attempt-eq$true}).Count-eq4)
$consumed=$(if(@($rows|Where-Object{$_.created_by_attempt-eq$true}).Count-gt0){$true}elseif(@($rows|Where-Object{$null-eq$_.created_by_attempt}).Count-gt0){$null}else{$false});$existingCount=@($rows|Where-Object{$_.exists-eq$true}).Count
$successEvidence=($progressComplete-and$childExited-and$childExit-eq0-and-not$timedOut-and$valid-eq4-and$existingCount-eq4-and$attemptedAll-and$createdAll-and$consumed-eq$true)
if($parentExit-eq0-and-not$successEvidence){$terminal='PARENT_SUCCESS_EVIDENCE_MISMATCH';$stop='FINAL_CROSS_FIELD';$parentExit=27}
$o=[ordered]@{schema_id='ANA.SEMI.STAGE.S.PARENT.TERMINAL.V003';terminal_state=$terminal;stop_code=$stop;governance_exit_code=$parentExit;parent_process_count=1;child_process_count=$(if($childStarted){1}else{0});child_exited=$childExited;child_exit_code=$childExit;child_timed_out=$timedOut;kill_issued=$killIssued;progress_complete=$progressComplete;authorization_consumed=$consumed;observed_existing_count=$existingCount;valid_count=$valid;rows=$rows}
$j=$o|ConvertTo-Json -Compress -Depth 6;[Console]::Out.Write($j+"`n");[Console]::Out.Flush();exit $parentExit
}
schema_id,terminal_state,stop_code,governance_exit_code,parent_process_count,child_process_count,child_exited,child_exit_code,child_timed_out,kill_issued,progress_complete,authorization_consumed,observed_existing_count,valid_count,rows。PARENT_SUCCESS_EVIDENCE_MISMATCH/FINAL_CROSS_FIELD/27。提交审核前 append-only 登记 parent/child parser/hash、EncodedCommand/Arguments/CommandLine、LF/CR、output ceiling、T13/T14 full literal JSON hash;placeholder=0。未登记不得送审。
NOT_ISSUED/NOT_ISSUED/NOT_ISSUED;formal=0;BATCH-001=HELD;darkline_restored=false。13256/4fd0f9b720ce69f3a7903a12959149708e7c70c538081fa59f10dc308caa1cb6;PS5.1 parser=0;CR/LF/final=0/81/0x0A。2797/aeeddde8793d352af5f81988aa603a30cea9c145eaeb6024c5e83801800b30cc;PS5.1 parser=0;CR/LF/final=0/15/0x7D;progress/STOP 只用显式 LF。7460 chars/5b3931022b452facf7a0941c26549cea24da3d8eafd01476a9152025c2d924ee;Arguments=7535/8e27019d502f352e946fd87354fbc53a9b29720b7ff8d8219e3d823a66b46cb9;expected command line=7593/f2a7b2c7b0ba55b8091e34410d2df8203128724756ca58919ba34a94a2797e07。<3800+LF;child stdout 上界 <768 ASCII bytes、stderr=0;tool max_output_tokens=4096。{"schema_id":"ANA.SEMI.STAGE.S.PARENT.TERMINAL.V003","terminal_state":"PARENT_SUCCESS_EVIDENCE_MISMATCH","stop_code":"FINAL_CROSS_FIELD","governance_exit_code":27,"parent_process_count":1,"child_process_count":1,"child_exited":true,"child_exit_code":0,"child_timed_out":false,"kill_issued":false,"progress_complete":false,"authorization_consumed":true,"observed_existing_count":3,"valid_count":3,"rows":[{"id":"Y01","attempted":true,"created_by_attempt":true,"exists":true,"object_type":"FILE","reparse":false,"bytes":17465,"sha256":"89812a35ac352d6fd0887f0b67df85962070d637aba4962992b46e073dd4bcf6","validation":"VALID"},{"id":"Y02","attempted":true,"created_by_attempt":true,"exists":true,"object_type":"FILE","reparse":false,"bytes":3359,"sha256":"1983df916d5b9553a885a949d2674d9f8a8e7b1a6c4c5989eadf48245d929cf0","validation":"VALID"},{"id":"Y03","attempted":true,"created_by_attempt":true,"exists":true,"object_type":"FILE","reparse":false,"bytes":4016,"sha256":"86f563b43d934cb0828e395f557ded328ad2abcfb2c1ef7bdbc8a4c32c12cbca","validation":"VALID"},{"id":"Y04","attempted":false,"created_by_attempt":false,"exists":false,"object_type":"ABSENT","reparse":false,"bytes":null,"sha256":null,"validation":"NOT_PRESENT"}]}
1223/1cd50b60922da80e25622119c47edff61d13f9646783c44050ecf1807b83b264。{"schema_id":"ANA.SEMI.STAGE.S.PARENT.TERMINAL.V003","terminal_state":"SOURCE_FREEZE_COMPLETED_PENDING_STATIC_REVIEW","stop_code":null,"governance_exit_code":0,"parent_process_count":1,"child_process_count":1,"child_exited":true,"child_exit_code":0,"child_timed_out":false,"kill_issued":false,"progress_complete":true,"authorization_consumed":true,"observed_existing_count":4,"valid_count":4,"rows":[{"id":"Y01","attempted":true,"created_by_attempt":true,"exists":true,"object_type":"FILE","reparse":false,"bytes":17465,"sha256":"89812a35ac352d6fd0887f0b67df85962070d637aba4962992b46e073dd4bcf6","validation":"VALID"},{"id":"Y02","attempted":true,"created_by_attempt":true,"exists":true,"object_type":"FILE","reparse":false,"bytes":3359,"sha256":"1983df916d5b9553a885a949d2674d9f8a8e7b1a6c4c5989eadf48245d929cf0","validation":"VALID"},{"id":"Y03","attempted":true,"created_by_attempt":true,"exists":true,"object_type":"FILE","reparse":false,"bytes":4016,"sha256":"86f563b43d934cb0828e395f557ded328ad2abcfb2c1ef7bdbc8a4c32c12cbca","validation":"VALID"},{"id":"Y04","attempted":true,"created_by_attempt":true,"exists":true,"object_type":"FILE","reparse":false,"bytes":13037,"sha256":"244463c2a66910dd71564f148d5845672261dedc80a636e21e809712b691337e","validation":"VALID"}]}
T14=1271/772d2f2f02d0dadd886f219768ebeb421b489aece0eb284ed97ab583184949da。
T13/T14 均为 15 top-level ordered keys + 4×9 row ordered keys;strict JSON parse 后按相同 key order compact 重序列化 byte-identical。
第 7 节 supersede 第 5 节待补状态;placeholder=0,仅允许独立计划审核。