        ex={r['id']:r['text'] for r in original['examples']};hold={r['id']:r['text'] for r in original['holdout']};modelpairs={(r.get('example_id'),r.get('holdout_id')) for r in output.get('candidates',[])};check('模型候选只引用既有样例与验收ID',all(a in ex and z in hold for a,z in modelpairs));rows=[];exact_hold=set();quarantine=set()
        for eid,etext in ex.items():
            for hid,htext in hold.items():
                same=hashlib.sha256(norm(etext).encode()).hexdigest()==hashlib.sha256(norm(htext).encode()).hexdigest();sim=SequenceMatcher(None,norm(etext),norm(htext)).ratio();candidate=(eid,hid) in modelpairs
                if same or sim>=.65 or candidate:
                    action='remove exact duplicate' if same else 'quarantine for human semantic review';rows.append({'example_id':eid,'holdout_id':hid,'same_normalized_sha':same,'character_similarity':round(sim,4),'model_candidate':candidate,'action':action})
                    if same:exact_hold.add(hid)
                    else:quarantine.add(hid)
        clean=[r for r in original['holdout'] if r['id'] not in exact_hold|quarantine];check('完全重复H1由独立哈希检查发现','H1' in exact_hold);check('模型候选不直接当成确证删除',all(r['action']!='remove exact duplicate' or r['same_normalized_sha'] for r in rows));check('清洁验收集不含自动删除或待人工项',not ({r['id'] for r in clean}&(exact_hold|quarantine)));write_csv(artifact('leakage-review.csv'),rows,['example_id','holdout_id','same_normalized_sha','character_similarity','model_candidate','action']);dump(artifact('holdout-clean.json'),clean);result={'exactRemoved':sorted(exact_hold),'quarantined':sorted(quarantine),'cleanIds':[r['id'] for r in clean],'rows':rows,'similarityIsNotDuplicateProof':True}
