        sentences=output.get('sentences',[]);valid={'K1','K2','K4','K5'};check('恰好四句并逐句有有效来源',len(sentences)==4 and all(r.get('sources') and set(r['sources'])<=valid for r in sentences));check('过期K3不在模型输入','K3' not in json.dumps(prepared));joined=''.join(r.get('text','') for r in sentences);check('现行关键事实保留','7' in joined and '3' in joined and '离线' in joined and 'API' in joined);write_csv(artifact('sentence-sources.csv'),[{'sentence':r.get('text',''),'source_ids':'|'.join(r.get('sources',[]))} for r in sentences]);artifact('spoken-script.md').write_text('\n\n'.join(r.get('text','') for r in sentences));result={'sentences':sentences,'expiredExcluded':['K3'],'auditScope':'checks source linkage and required facts, not general factual entailment'}
