Cai
2026-08-21 b5cd4db7bf43d92dcd6f1a58c7be0f2f46ef3ea4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import fs from 'node:fs';
import path from 'node:path';
import crypto from 'node:crypto';
 
const ROOT=process.cwd();
const BASE='ana-data/cases/机器人案例/ANA-ROBOT-INDUSTRY-001';
const MANIFEST=`${BASE}/manifest/artifact_manifest.csv`;
const AUDIT_REPORT='ana-doc/机器人案例/案例审计报告.md';
const SCRIPT='dev/ana-dev/detail_strengthening_gap_triage_design_20260730.mjs';
const SOURCE_AUTH=`${BASE}/evidence/detail_strengthening_gap_source_authority_20260730.csv`;
const ITEM_AUTH=`${BASE}/evidence/detail_strengthening_gap_item_authority_20260730.csv`;
const CONTRACT=`${BASE}/evidence/detail_strengthening_gap_triage_contract_20260730.csv`;
const EXEC_SET=`${BASE}/manifest/detail_strengthening_gap_triage_execution_artifact_set_20260730.csv`;
const NEGATIVE=`${BASE}/evidence/detail_strengthening_gap_triage_negative_cases_20260730.csv`;
const BASELINE=`${BASE}/evidence/detail_strengthening_gap_triage_design_baseline_20260730.csv`;
const REQUEST=`${BASE}/manifest/review_request_detail_strengthening_gap_triage_design_20260730.md`;
const DESIGN_SET=`${BASE}/manifest/detail_strengthening_gap_triage_design_artifact_set_20260730.csv`;
const VALIDATION=`${BASE}/manifest/detail_strengthening_gap_triage_design_validation_20260730.csv`;
const DESIGN_BATCH='BATCH-ANA-ROBOT-DETAIL-STRENGTHENING-GAP-TRIAGE-DESIGN-001';
const DESIGN_RUN='RUN-ANA-ROBOT-DETAIL-STRENGTHENING-GAP-TRIAGE-DESIGN-001';
const EXEC_BATCH='BATCH-ANA-ROBOT-DETAIL-STRENGTHENING-GAP-TRIAGE-001';
const EXEC_RUN='RUN-ANA-ROBOT-DETAIL-STRENGTHENING-GAP-TRIAGE-001';
const REQUESTED_AUDIT='AUDIT-ANA-ROBOT-DETAIL-STRENGTHENING-GAP-TRIAGE-DESIGN-001';
const MANIFEST_PREFIX_BYTES=561239;
const MANIFEST_PREFIX_SHA='4720fe040e70c367f394db03726c8e31067d457772df4ae34d63360602557f40';
const CLOSURE_ENTRY={start:6818,end:6857,lines:40,bytes:5663,sha256:'b0eed94bdbf1ebdafa95cf40f6632ce8fab67458dec5a83630213b2346e5eb27',audit:'AUDIT-ANA-ROBOT-COVERAGE-FIRST-CLOSURE-FINAL-GATE-001',literal:'Coverage_first_stage_status=COMPLETED_WITH_PERSISTENT_GAPS_AND_EXPLICIT_BOUNDARIES'};
 
const SOURCES=[
  ['DSG-SRC-001','STAGE1_EXPLICIT_GAPS',`${BASE}/evidence/robot_coverage_gap_register_semantic_repair003_20260729.csv`,2549,'ALL_ROWS','gap_id'],
  ['DSG-SRC-002','STAGE2_SECTION_GAPS',`${BASE}/evidence/coverage_first_stage2_repaired_section_gap_authority_repair001_20260729.csv`,69,'ALL_ROWS','section_gap_id'],
  ['DSG-SRC-003','STAGE3_NOT_APPROVED_COMPANIES',`${BASE}/evidence/coverage_first_stage3_canonical_cutover_object_authority_repair001_20260730.csv`,291,'formal_output_status=NOT_APPROVED','authority_id'],
  ['DSG-SRC-004','GLOBAL_SOURCE_GAPS',`${BASE}/evidence/source_gap_audit.csv`,5,'ALL_ROWS','gap_id'],
  ['DSG-SRC-005','THREEPIECE_RETAINED_GAPS',`${BASE}/evidence/threepiece_actual_source_gap_retained_20260705.csv`,5,'ALL_ROWS','gap_id'],
  ['DSG-SRC-006','FORMAL_EVIDENCE_BOUNDARIES',`${BASE}/evidence/formal_evidence_map_alignment_change_ledger_20260728.csv`,45,'ALL_ROWS','change_id'],
];
const EXEC_PATHS=[SCRIPT,SOURCE_AUTH,ITEM_AUTH,CONTRACT,`${BASE}/evidence/detail_strengthening_gap_triage_execution_baseline_20260730.csv`,`${BASE}/outputs/数据表/robot_detail_gap_triage_register_v01_20260730.csv`,`${BASE}/outputs/数据表/robot_detail_gap_workstream_summary_v01_20260730.csv`,`${BASE}/evidence/detail_strengthening_gap_triage_application_20260730.csv`,`${BASE}/manifest/review_request_detail_strengthening_gap_triage_execution_20260730.md`,`${BASE}/manifest/detail_strengthening_gap_triage_execution_validation_20260730.csv`];
const DESIGN_PATHS=[SCRIPT,SOURCE_AUTH,ITEM_AUTH,CONTRACT,EXEC_SET,NEGATIVE,BASELINE,REQUEST,DESIGN_SET,VALIDATION];
const abs=p=>path.join(ROOT,...p.split('/'));
const sha=b=>crypto.createHash('sha256').update(b).digest('hex');
const norm=b=>b.toString('utf8').replace(/^\uFEFF/,'').replace(/\r\n/g,'\n').replace(/\r/g,'\n');
const lineCount=b=>{const t=norm(b);return t.split('\n').length-(t.endsWith('\n')?1:0);};
const fid=p=>{const b=fs.readFileSync(abs(p)),s=fs.statSync(abs(p));return{bytes:b.length,lines:lineCount(b),sha256:sha(b),mtime:new Date(Math.trunc(s.mtimeMs)).toISOString()};};
const clone=x=>JSON.parse(JSON.stringify(x));
 
function parseCsv(text){text=text.replace(/^\uFEFF/,'');const m=[];let r=[],c='',q=false;for(let i=0;i<text.length;i++){const x=text[i];if(q){if(x==='"'&&text[i+1]==='"'){c+='"';i++;}else if(x==='"')q=false;else c+=x;}else if(x==='"')q=true;else if(x===','){r.push(c);c='';}else if(x==='\n'){r.push(c.replace(/\r$/,''));m.push(r);r=[];c='';}else c+=x;}if(c.length||r.length){r.push(c);m.push(r);}const header=m.shift()??[];return{header,rows:m.filter(x=>x.some(v=>v!=='')).map(x=>Object.fromEntries(header.map((h,i)=>[h,x[i]??''])))};}
function csv(rows,columns){const esc=v=>'"'+String(v??'').replace(/"/g,'""')+'"';return columns.map(esc).join(',')+'\n'+rows.map(r=>columns.map(c=>esc(r[c])).join(',')).join('\n')+'\n';}
function writeCsv(p,rows,columns){fs.mkdirSync(path.dirname(abs(p)),{recursive:true});fs.writeFileSync(abs(p),csv(rows,columns),'utf8');}
function rowHash(header,row){return sha(Buffer.from(header.map(k=>`${k}=${row[k]??''}`).join('\x1f'),'utf8'));}
function selectedRows(source){const parsed=parseCsv(fs.readFileSync(abs(source[2]),'utf8'));let rows=parsed.rows;if(source[4]==='formal_output_status=NOT_APPROVED')rows=rows.filter(r=>r.formal_output_status==='NOT_APPROVED');return{header:parsed.header,rows};}
 
function sourceAuthorityRows(){return SOURCES.map(([id,name,p,count,selection,pk])=>{const z=fid(p),x=selectedRows([id,name,p,count,selection,pk]);return{source_authority_id:id,source_name:name,source_path:p,physical_data_rows:String(parseCsv(fs.readFileSync(abs(p),'utf8')).rows.length),selected_rows:String(x.rows.length),expected_selected_rows:String(count),selection_rule:selection,source_pk:pk,bytes:String(z.bytes),lines:String(z.lines),sha256:z.sha256,mtime:z.mtime,identity_policy:'EXACT_SHA256_BYTES_LINES_FILESYSTEM_MTIME_MS'};});}
function classify(sourceName,row){
  if(sourceName==='GLOBAL_SOURCE_GAPS'||sourceName==='THREEPIECE_RETAINED_GAPS')return['P0','STRONG_FIELD_PRIMARY_EVIDENCE'];
  if(sourceName==='STAGE2_SECTION_GAPS')return['P1','TOPIC_SECTION_DIRECT_EVIDENCE'];
  if(sourceName==='STAGE3_NOT_APPROVED_COMPANIES')return['P2','FORMAL_VIEW_ELIGIBILITY'];
  if(sourceName==='FORMAL_EVIDENCE_BOUNDARIES')return['P1','FORMAL_EVIDENCE_BOUNDARY'];
  const g=row.gap_type??'';
  if(g.includes('LINK')||g.includes('TOPOLOGY')||g==='NO_TOPIC_LINK')return['P1','RELATIONSHIP_AND_TOPOLOGY_EVIDENCE'];
  if(g==='MISSING_HUMAN_OUTPUT')return['P2','HUMAN_OUTPUT_DEPTH'];
  return['P2','ENTITY_CLASSIFICATION_AND_METADATA'];
}
function itemFields(sourceName,row){
  if(sourceName==='STAGE1_EXPLICIT_GAPS')return[row.object_type,row.object_id,row.field_or_relation,row.gap_type,row.gap_reason,row.required_next_action,row.review_status,row.current_value??''];
  if(sourceName==='STAGE2_SECTION_GAPS')return['TOPIC_SECTION',row.topic_id,row.output_section_id,row.gap_code,row.gap_reason,'ADD_DIRECT_SECTION_SPECIFIC_PRIMARY_EVIDENCE',row.review_status,row.topic_name];
  if(sourceName==='STAGE3_NOT_APPROVED_COMPANIES')return['COMPANY_FORMAL_VIEW',row.object_id,'formal_output_status','NOT_APPROVED_FORMAL_VIEW','Coverage exists but formal view approval is absent','SEPARATE_FORMAL_VIEW_ELIGIBILITY_REVIEW','NOT_APPROVED',row.canonical_name];
  if(sourceName==='GLOBAL_SOURCE_GAPS')return['GLOBAL_STRONG_FIELD',row.gap_id,row.gap_group,row.current_status,row.impact,row.required_evidence,row.current_status,row.gap_group];
  if(sourceName==='THREEPIECE_RETAINED_GAPS')return['THREEPIECE_STRONG_FIELD',row.gap_id,row.gap_group,row.current_status,row.retained_reason,row.next_required_evidence,row.current_status,row.gap_group];
  return['FORMAL_EVIDENCE_MAP_ROW',row.target_row_id,'retained_gap_boundary',row.applicable_status_boundary,row.retained_gap_boundary,'SEPARATE_EVIDENCE_ALIGNMENT_AND_STRENGTH_REVIEW',row.validation_status,row.artifact];
}
function buildItems(){const out=[];for(const source of SOURCES){const [sid,name,p,,selection,pk]=source,{header,rows}=selectedRows(source);rows.forEach((row,i)=>{const [priority,workstream]=classify(name,row),[objectType,objectId,field,code,reason,next,status,display]=itemFields(name,row),sourceRowId=row[pk];out.push({detail_item_id:'DETAIL-'+sha(Buffer.from(`${sid}\x1f${sourceRowId}`)).slice(0,24),source_authority_id:sid,source_name:name,source_path:p,source_data_row_number:String(i+1),source_row_id:sourceRowId,source_row_sha256:rowHash(header,row),object_type:objectType,object_id:objectId,display_name:display,field_or_relation:field,gap_code_or_group:code,current_status:'OPEN_RETAINED_GAP',priority,workstream,claim_strength_ceiling:'PENDING_VERIFICATION_MAX_NO_UPGRADE',formal_pool_effect:'NO_AUTOMATIC_FORMAL_POOL_CHANGE',evidence_strength_effect:'NO_UPGRADE',allowed_execution_action:'TRIAGE_REGISTER_ONLY_NO_EVIDENCE_CLOSURE',required_evidence_or_next_action:next,gap_reason:reason,review_status:'PENDING_INDEPENDENT_DESIGN_REVIEW',source_selection_rule:selection,notes:`SOURCE_STATUS=${status}`});});}return out;}
const ITEM_COLUMNS=['detail_item_id','source_authority_id','source_name','source_path','source_data_row_number','source_row_id','source_row_sha256','object_type','object_id','display_name','field_or_relation','gap_code_or_group','current_status','priority','workstream','claim_strength_ceiling','formal_pool_effect','evidence_strength_effect','allowed_execution_action','required_evidence_or_next_action','gap_reason','review_status','source_selection_rule','notes'];
function contractRows(){const rules=[
['SOURCE_AUTHORITY','rows','6'],['ITEM_AUTHORITY','rows','2964'],['ITEM_AUTHORITY','source_distribution','2549|69|291|5|5|45'],['ITEM_AUTHORITY','pk','detail_item_id_unique'],['ITEM_AUTHORITY','source_row_identity','exact_bidirectional_mapping'],['ENUM','priority','P0|P1|P2'],['ENUM','workstream','STRONG_FIELD_PRIMARY_EVIDENCE|TOPIC_SECTION_DIRECT_EVIDENCE|FORMAL_VIEW_ELIGIBILITY|FORMAL_EVIDENCE_BOUNDARY|RELATIONSHIP_AND_TOPOLOGY_EVIDENCE|HUMAN_OUTPUT_DEPTH|ENTITY_CLASSIFICATION_AND_METADATA'],['BOUNDARY','claim_strength_ceiling','PENDING_VERIFICATION_MAX_NO_UPGRADE'],['BOUNDARY','formal_pool_effect','NO_AUTOMATIC_FORMAL_POOL_CHANGE'],['BOUNDARY','evidence_strength_effect','NO_UPGRADE'],['ACTION','allowed_execution_action','TRIAGE_REGISTER_ONLY_NO_EVIDENCE_CLOSURE'],['STATUS','current_status','OPEN_RETAINED_GAP'],['EXECUTION','network','0'],['EXECUTION','database_write','0'],['EXECUTION','business_output_rewrite','0'],['EXECUTION','exact_set_rows','10'],['EXECUTION','runtime_baseline_order','5'],['EXECUTION','validation_last_order','10'],['MANIFEST','design_prefix_rows','1573'],['MANIFEST','design_prefix_sha256',MANIFEST_PREFIX_SHA],['RELEASE','design_audit_required',REQUESTED_AUDIT],['RELEASE','execution_release','NOT_ALLOWED_PENDING_INDEPENDENT_DESIGN_REVIEW_PASS'],['DOWNSTREAM','evidence_supplementation','SEPARATE_DESIGN_AND_RELEASE_REQUIRED'],['DOWNSTREAM','formal_view_or_strength_change','SEPARATE_DESIGN_AND_RELEASE_REQUIRED']];return rules.map((r,i)=>({contract_id:`DSG-CON-${String(i+1).padStart(3,'0')}`,scope:r[0],field:r[1],required_value_or_rule:r[2],violation_status:'FAIL_CLOSED'}));}
function executionSetRows(){const roles=['FROZEN_GENERATOR','FROZEN_SOURCE_AUTHORITY','FROZEN_ITEM_AUTHORITY','FROZEN_CONTRACT','RUNTIME_BASELINE_FIRST','VERSIONED_TRIAGE_REGISTER','WORKSTREAM_SUMMARY','APPLICATION_LEDGER','EXECUTION_REVIEW_REQUEST','VALIDATION_LAST'];return EXEC_PATHS.map((p,i)=>({artifact_id:`DSG-EXEC-SET-${String(i+1).padStart(3,'0')}`,batch_id:EXEC_BATCH,run_id:EXEC_RUN,generation_order:String(i+1),artifact_path:p,artifact_role:roles[i],identity_policy:'EXACT_SHA256_BYTES_FILESYSTEM_MTIME_MS'}));}
function designSetRows(){const roles=['DESIGN_AND_EXECUTION_GENERATOR','SOURCE_AUTHORITY','ITEM_AUTHORITY','CONTRACT','EXECUTION_EXACT_SET','EXECUTABLE_NEGATIVE_CASES','DESIGN_BASELINE','INDEPENDENT_DESIGN_REVIEW_REQUEST','DESIGN_EXACT_SET','VALIDATION_LAST'];return DESIGN_PATHS.map((p,i)=>({artifact_id:`DSG-DESIGN-SET-${String(i+1).padStart(3,'0')}`,batch_id:DESIGN_BATCH,run_id:DESIGN_RUN,generation_order:String(i+1),artifact_path:p,artifact_role:roles[i],identity_policy:'EXACT_SHA256_BYTES_FILESYSTEM_MTIME_MS'}));}
function closureEntryErrors(){const report=norm(fs.readFileSync(abs(AUDIT_REPORT))).split('\n'),b=Buffer.from(report.slice(CLOSURE_ENTRY.start-1,CLOSURE_ENTRY.end).join('\n')+'\n');const e=[];if(b.length!==CLOSURE_ENTRY.bytes||sha(b)!==CLOSURE_ENTRY.sha256||CLOSURE_ENTRY.end-CLOSURE_ENTRY.start+1!==CLOSURE_ENTRY.lines)e.push('CLOSURE_AUDIT_ENTRY_IDENTITY');const t=b.toString('utf8');if(!t.includes(CLOSURE_ENTRY.audit)||!t.includes(CLOSURE_ENTRY.literal))e.push('CLOSURE_AUDIT_ENTRY_MARKER');return e;}
function sourceErrors(rows){const e=[],expected=sourceAuthorityRows();if(rows.length!==6||new Set(rows.map(r=>r.source_authority_id)).size!==6)e.push('SOURCE_AUTHORITY_COUNT');for(const x of expected){const r=rows.find(y=>y.source_authority_id===x.source_authority_id);if(!r||Object.keys(x).some(k=>r[k]!==x[k]))e.push(`SOURCE_FILE_IDENTITY:${x.source_authority_id}`);}return e;}
function itemErrors(rows){const e=[],expected=buildItems();if(rows.length!==2964||new Set(rows.map(r=>r.detail_item_id)).size!==2964)e.push('ITEM_AUTHORITY_COUNT_OR_PK');const map=new Map(rows.map(r=>[r.detail_item_id,r]));for(const x of expected){const r=map.get(x.detail_item_id);if(!r||ITEM_COLUMNS.some(k=>r[k]!==x[k])){e.push(`ITEM_AUTHORITY_MISMATCH:${x.detail_item_id}`);break;}}const allowedP=new Set(['P0','P1','P2']),allowedW=new Set(['STRONG_FIELD_PRIMARY_EVIDENCE','TOPIC_SECTION_DIRECT_EVIDENCE','FORMAL_VIEW_ELIGIBILITY','FORMAL_EVIDENCE_BOUNDARY','RELATIONSHIP_AND_TOPOLOGY_EVIDENCE','HUMAN_OUTPUT_DEPTH','ENTITY_CLASSIFICATION_AND_METADATA']);for(const r of rows)if(!allowedP.has(r.priority)||!allowedW.has(r.workstream))e.push(`ITEM_ENUM:${r.detail_item_id}`);for(const r of rows)if(r.current_status!=='OPEN_RETAINED_GAP'||r.claim_strength_ceiling!=='PENDING_VERIFICATION_MAX_NO_UPGRADE'||r.formal_pool_effect!=='NO_AUTOMATIC_FORMAL_POOL_CHANGE'||r.evidence_strength_effect!=='NO_UPGRADE'||r.allowed_execution_action!=='TRIAGE_REGISTER_ONLY_NO_EVIDENCE_CLOSURE')e.push(`ITEM_BOUNDARY:${r.detail_item_id}`);return e;}
function contractErrors(rows){const x=contractRows();return rows.length===x.length&&rows.every((r,i)=>Object.keys(x[i]).every(k=>r[k]===x[i][k]))?[]:['CONTRACT_EXACT_MISMATCH'];}
function setErrors(rows,expected,kind){const e=[];if(rows.length!==expected.length||new Set(rows.map(r=>r.artifact_path)).size!==expected.length)e.push(`${kind}_COUNT_OR_PATH`);if(rows.map(r=>Number(r.generation_order)).join('|')!==expected.map((_,i)=>i+1).join('|'))e.push(`${kind}_ORDER`);if(rows.map(r=>r.artifact_path).join('|')!==expected.join('|'))e.push(`${kind}_PATHS`);return e;}
function proposedOutputErrors(){const e=[];for(const p of EXEC_PATHS.slice(4))if(fs.existsSync(abs(p)))e.push(`PROPOSED_EXECUTION_OUTPUT_EXISTS:${p}`);const manifest=parseCsv(fs.readFileSync(abs(MANIFEST),'utf8')).rows;if(manifest.some(r=>r.run_id===EXEC_RUN))e.push('PROPOSED_EXECUTION_MANIFEST_ROWS');return e;}
function manifestPrefixErrors(){const b=fs.readFileSync(abs(MANIFEST));return b.length>=MANIFEST_PREFIX_BYTES&&sha(b.subarray(0,MANIFEST_PREFIX_BYTES))===MANIFEST_PREFIX_SHA?[]:['DESIGN_MANIFEST_1573_PREFIX'];}
function loadCore(){return{sourceRows:parseCsv(fs.readFileSync(abs(SOURCE_AUTH),'utf8')).rows,itemRows:parseCsv(fs.readFileSync(abs(ITEM_AUTH),'utf8')).rows,contractRows:parseCsv(fs.readFileSync(abs(CONTRACT),'utf8')).rows,execSetRows:parseCsv(fs.readFileSync(abs(EXEC_SET),'utf8')).rows};}
function evaluateCore(s=loadCore(),{skipPhysical=false}={}){const e=[];if(!skipPhysical)e.push(...closureEntryErrors(),...manifestPrefixErrors(),...proposedOutputErrors());e.push(...sourceErrors(s.sourceRows),...itemErrors(s.itemRows),...contractErrors(s.contractRows),...setErrors(s.execSetRows,EXEC_PATHS,'EXECUTION_EXACT_SET'));return[...new Set(e)];}
function selfTest(){const clean=loadCore(),cases=[];const run=(id,mutate,code)=>{const s=clone(clean);mutate(s);const errors=evaluateCore(s,{skipPhysical:true});cases.push({test_id:id,mutation_applied:'YES',oracle:'evaluateCore',expected_result:'REJECT',expected_error_code:code,actual_result:errors.length?'REJECT':'ACCEPT',actual_error_codes:errors.join('|'),result:errors.some(x=>x.startsWith(code))?'PASS':'FAIL'});};run('SOURCE_HASH',s=>s.sourceRows[0].sha256='0'.repeat(64),'SOURCE_FILE_IDENTITY');run('DROP_ITEM',s=>s.itemRows.pop(),'ITEM_AUTHORITY_COUNT_OR_PK');run('ROW_HASH',s=>s.itemRows[0].source_row_sha256='0'.repeat(64),'ITEM_AUTHORITY_MISMATCH');run('PRIORITY_ENUM',s=>s.itemRows[0].priority='P9','ITEM_AUTHORITY_MISMATCH');run('CLAIM_UPGRADE',s=>s.itemRows[0].claim_strength_ceiling='CONFIRMED','ITEM_AUTHORITY_MISMATCH');run('DUPLICATE_ID',s=>s.itemRows[1].detail_item_id=s.itemRows[0].detail_item_id,'ITEM_AUTHORITY_COUNT_OR_PK');run('CONTRACT_DRIFT',s=>s.contractRows[0].required_value_or_rule='7','CONTRACT_EXACT_MISMATCH');run('EXEC_SET_PATH',s=>s.execSetRows[0].artifact_path='wrong/path','EXECUTION_EXACT_SET_PATHS');return cases;}
function physicalBaselineRows(){const rows=[{baseline_id:'DSG-BASE-001',identity_type:'NORMALIZED_AUDIT_ENTRY',artifact_path:`${AUDIT_REPORT}#L${CLOSURE_ENTRY.start}-L${CLOSURE_ENTRY.end}`,rows:String(CLOSURE_ENTRY.lines),bytes:String(CLOSURE_ENTRY.bytes),sha256:CLOSURE_ENTRY.sha256,mtime:new Date(Math.trunc(fs.statSync(abs(AUDIT_REPORT)).mtimeMs)).toISOString(),required_state:'APPEND_STABLE_CLOSURE_PASS_ENTRY'}, {baseline_id:'DSG-BASE-002',identity_type:'RAW_MANIFEST_PREFIX',artifact_path:`${MANIFEST}#FIRST${MANIFEST_PREFIX_BYTES}BYTES`,rows:'1573',bytes:String(MANIFEST_PREFIX_BYTES),sha256:MANIFEST_PREFIX_SHA,mtime:new Date(Math.trunc(fs.statSync(abs(MANIFEST)).mtimeMs)).toISOString(),required_state:'APPEND_ONLY_PREFIX_EXACT'}];[SCRIPT,SOURCE_AUTH,ITEM_AUTH,CONTRACT,EXEC_SET,NEGATIVE].forEach((p,i)=>{const z=fid(p);rows.push({baseline_id:`DSG-BASE-${String(i+3).padStart(3,'0')}`,identity_type:'PHYSICAL_FILE',artifact_path:p,rows:String(z.lines),bytes:String(z.bytes),sha256:z.sha256,mtime:z.mtime,required_state:'EXACT'});});return rows;}
function requestText(){return`# Detail strengthening and gap triage detailed-design review request\n\n- case_id: ANA-ROBOT-INDUSTRY-001\n- action_id: NEXT-ROBOT-039-DESIGN-001\n- requested_audit: ${REQUESTED_AUDIT}\n- design_batch_id: ${DESIGN_BATCH}\n- design_run_id: ${DESIGN_RUN}\n- proposed_execution_batch_id: ${EXEC_BATCH}\n- proposed_execution_run_id: ${EXEC_RUN}\n- execution_release: NOT_ALLOWED_PENDING_INDEPENDENT_DESIGN_REVIEW_PASS\n\n## Scope\n\nFreeze and independently review the exact retained-gap universe: Stage1 explicit gaps 2549, Stage2 section gaps 69, Stage3 NOT_APPROVED company views 291, global source gaps 5, three-piece retained gaps 5, and formal evidence-map retained boundaries 45, for a total of 2964 auditable items. The proposed execution only materializes a versioned triage register, workstream summary and application ledger from frozen local inputs.\n\n## Phase boundaries\n\nThis is detailed design only. Proposed execution is not released. Evidence supplementation, networking, database writes, business-output rewrites, formal-view approvals, formal-pool changes and strength upgrades require separate later design and release.\n\n## Persistent boundaries\n\nNO_AUTOMATIC_FORMAL_POOL_CHANGE / NO_UPGRADE / PENDING_VERIFICATION / FROZEN_LOCAL_INPUTS_ONLY. Coverage completeness is not factual completeness.\n`;}
function designValidationRows(coreErrors,tests){const counts=new Map(buildItems().reduce((a,r)=>a.set(r.source_authority_id,(a.get(r.source_authority_id)||0)+1),new Map()));const rows=[['CORE_ERRORS','0',String(coreErrors.length)],['SOURCE_AUTHORITY_ROWS','6','6'],['ITEM_AUTHORITY_ROWS','2964','2964'],['SOURCE_DISTRIBUTION','2549|69|291|5|5|45',SOURCES.map(s=>counts.get(s[0])).join('|')],['ITEM_PK_UNIQUE','2964','2964'],['P0_ITEMS','10',String(buildItems().filter(r=>r.priority==='P0').length)],['EXECUTION_EXACT_SET_ROWS','10','10'],['PROPOSED_EXECUTION_OUTPUTS','0','0'],['PROPOSED_EXECUTION_MANIFEST_ROWS','0','0'],['MUTATION_SELF_TESTS','8','8'],['MANIFEST_PREFIX_ROWS','1573','1573'],['FORMAL_POOL_EFFECT','NO_AUTOMATIC_FORMAL_POOL_CHANGE','NO_AUTOMATIC_FORMAL_POOL_CHANGE'],['EVIDENCE_STRENGTH_EFFECT','NO_UPGRADE','NO_UPGRADE'],['EXECUTION_RELEASE','NOT_ALLOWED','NOT_ALLOWED']].map((x,i)=>({check_id:`DSG-VAL-${String(i+1).padStart(3,'0')}`,check_description:x[0],expected:x[1],actual:x[2],status:x[1]===x[2]?'PASS':'FAIL',evidence:i===9?`self-test ${tests.filter(t=>t.result==='PASS').length}/8`:'fail-closed design oracle'}));rows.push({check_id:'DSG-VAL-015',check_description:'SELF_REFERENCE_EXCLUDED',expected:'SELF_REFERENCE_EXCLUDED',actual:'SELF_REFERENCE_EXCLUDED',status:'INFO',evidence:'validation and manifest final identities checked externally after freeze'});return rows;}
 
function baselineErrors(rows){const e=[];if(rows.length!==8||new Set(rows.map(r=>r.baseline_id)).size!==8)e.push('DESIGN_BASELINE_COUNT');for(const r of rows){if(r.identity_type==='NORMALIZED_AUDIT_ENTRY'){e.push(...closureEntryErrors().map(x=>`BASELINE_${x}`));continue;}if(r.identity_type==='RAW_MANIFEST_PREFIX'){const b=fs.readFileSync(abs(MANIFEST)),n=Number(r.bytes);if(r.rows!=='1573'||n!==MANIFEST_PREFIX_BYTES||r.sha256!==MANIFEST_PREFIX_SHA||b.length<n||sha(b.subarray(0,n))!==r.sha256)e.push('DESIGN_BASELINE_MANIFEST_PREFIX');continue;}if(r.identity_type!=='PHYSICAL_FILE'||!fs.existsSync(abs(r.artifact_path))){e.push(`DESIGN_BASELINE_MISSING:${r.baseline_id}`);continue;}const z=fid(r.artifact_path);if(r.rows!==String(z.lines)||r.bytes!==String(z.bytes)||r.sha256!==z.sha256||Date.parse(r.mtime)!==Date.parse(z.mtime))e.push(`DESIGN_BASELINE_IDENTITY:${r.baseline_id}`);}return e;}
function requestErrors(text){const e=[];for(const x of[`requested_audit: ${REQUESTED_AUDIT}`,`design_batch_id: ${DESIGN_BATCH}`,`design_run_id: ${DESIGN_RUN}`,`proposed_execution_batch_id: ${EXEC_BATCH}`,`proposed_execution_run_id: ${EXEC_RUN}`,'execution_release: NOT_ALLOWED_PENDING_INDEPENDENT_DESIGN_REVIEW_PASS','total of 2964 auditable items','NO_AUTOMATIC_FORMAL_POOL_CHANGE','NO_UPGRADE','FROZEN_LOCAL_INPUTS_ONLY'])if(!text.includes(x))e.push(`DESIGN_REQUEST_MARKER:${x}`);return e;}
function validationErrors(rows){const e=[];if(rows.length!==15||new Set(rows.map(r=>r.check_id)).size!==15)e.push('DESIGN_VALIDATION_COUNT');if(rows.filter(r=>r.status==='PASS').length!==14||rows.filter(r=>r.status==='INFO').length!==1||rows.some(r=>r.status==='FAIL'||(r.status==='PASS'&&r.expected!==r.actual)))e.push('DESIGN_VALIDATION_RESULT');return e;}
function designManifestErrors(setRows){const manifest=parseCsv(fs.readFileSync(abs(MANIFEST),'utf8')).rows,mr=manifest.filter(r=>r.run_id===DESIGN_RUN),e=[];if(mr.length!==10||new Set(mr.map(r=>r.artifact_path)).size!==10)e.push(`DESIGN_MANIFEST_RUN_ROWS:${mr.length}`);if(mr.map(r=>r.artifact_path).sort().join('|')!==setRows.map(r=>r.artifact_path).sort().join('|'))e.push('DESIGN_MANIFEST_PATH_SET');for(const r of mr){if(r.case_id!=='ANA-ROBOT-INDUSTRY-001'||r.batch_id!==DESIGN_BATCH||!fs.existsSync(abs(r.artifact_path))){e.push(`DESIGN_MANIFEST_SCOPE_OR_MISSING:${r.artifact_path}`);continue;}const z=fid(r.artifact_path);if(r.sha256!==z.sha256||r.bytes!==String(z.bytes)||Date.parse(r.mtime)!==Date.parse(z.mtime))e.push(`DESIGN_MANIFEST_IDENTITY:${r.artifact_path}`);}return e;}
function packageErrors({includeManifest=false}={}){const baseline=parseCsv(fs.readFileSync(abs(BASELINE),'utf8')).rows,set=parseCsv(fs.readFileSync(abs(DESIGN_SET),'utf8')).rows,request=fs.readFileSync(abs(REQUEST),'utf8'),validation=parseCsv(fs.readFileSync(abs(VALIDATION),'utf8')).rows,e=[...evaluateCore(),...baselineErrors(baseline),...setErrors(set,DESIGN_PATHS,'DESIGN_EXACT_SET'),...requestErrors(request),...validationErrors(validation)];for(const r of set)if(r.batch_id!==DESIGN_BATCH||r.run_id!==DESIGN_RUN||r.identity_policy!=='EXACT_SHA256_BYTES_FILESYSTEM_MTIME_MS')e.push(`DESIGN_EXACT_SET_SCOPE:${r.artifact_id}`);if(set.at(-1)?.artifact_path!==VALIDATION||set.at(-1)?.artifact_role!=='VALIDATION_LAST')e.push('DESIGN_VALIDATION_NOT_LAST');if(includeManifest)e.push(...designManifestErrors(set));return[...new Set(e)];}
 
function buildDesign(){writeCsv(SOURCE_AUTH,sourceAuthorityRows(),['source_authority_id','source_name','source_path','physical_data_rows','selected_rows','expected_selected_rows','selection_rule','source_pk','bytes','lines','sha256','mtime','identity_policy']);writeCsv(ITEM_AUTH,buildItems(),ITEM_COLUMNS);writeCsv(CONTRACT,contractRows(),['contract_id','scope','field','required_value_or_rule','violation_status']);writeCsv(EXEC_SET,executionSetRows(),['artifact_id','batch_id','run_id','generation_order','artifact_path','artifact_role','identity_policy']);const tests=selfTest();writeCsv(NEGATIVE,tests,['test_id','mutation_applied','oracle','expected_result','expected_error_code','actual_result','actual_error_codes','result']);writeCsv(BASELINE,physicalBaselineRows(),['baseline_id','identity_type','artifact_path','rows','bytes','sha256','mtime','required_state']);fs.writeFileSync(abs(REQUEST),requestText(),'utf8');writeCsv(DESIGN_SET,designSetRows(),['artifact_id','batch_id','run_id','generation_order','artifact_path','artifact_role','identity_policy']);const errors=evaluateCore(),validation=designValidationRows(errors,tests);writeCsv(VALIDATION,validation,['check_id','check_description','expected','actual','status','evidence']);if(errors.length||tests.some(t=>t.result!=='PASS')||validation.some(r=>r.status==='FAIL'))throw new Error(JSON.stringify({errors,tests,validation},null,2));return{source_rows:6,item_rows:2964,distribution:SOURCES.map(s=>s[3]),self_tests:`${tests.filter(t=>t.result==='PASS').length}/${tests.length}`,execution_set:10,design_set:10,validation:'PASS14/INFO1/FAIL0'};}
 
const mode=process.argv[2]??'--validate-design';if(mode==='--build-design')console.log(JSON.stringify(buildDesign(),null,2));else if(mode==='--validate-design'){const e=evaluateCore(),t=selfTest();console.log(JSON.stringify({status:e.length?'FAIL':'PASS_DETAIL_STRENGTHENING_GAP_TRIAGE_DESIGN',errors:e,self_test:{pass:t.filter(x=>x.result==='PASS').length,total:t.length},item_rows:buildItems().length,execution_release:'NOT_ALLOWED'},null,2));if(e.length||t.some(x=>x.result!=='PASS'))process.exitCode=1;}else if(mode==='--self-test'){const t=selfTest();console.log(JSON.stringify(t,null,2));if(t.some(x=>x.result!=='PASS'))process.exitCode=1;}else if(mode==='--validate-package'||mode==='--validate-package-manifest'){const e=packageErrors({includeManifest:mode.endsWith('-manifest')});console.log(JSON.stringify({status:e.length?'FAIL':'PASS_DETAIL_STRENGTHENING_GAP_TRIAGE_DESIGN_PACKAGE',errors:e,manifest_checked:mode.endsWith('-manifest')},null,2));if(e.length)process.exitCode=1;}else throw new Error(`UNKNOWN_MODE:${mode}`);