import json,hashlib
from pathlib import Path
B=Path('/opt/struktur/obsidian-graphiti-reconciler-staging'); O=Path('/opt/struktur/knowledge-pipeline-aggregator-staging')
x=json.loads((B/'obsidian-graphiti-reconciliation-AA042.json').read_text()); print('SUMMARY',x['summary'],'SUM',x['integrity'])
print('MISSING_VALIDATION',json.loads((B/'missing-1168-validation-AA042.json').read_text())['distribution'])
print('ADDS',len(json.loads((B/'source-present-adds-aa042.json').read_text())))
print('GROUPS',json.loads((B/'youtube-cross-source-AA042.json').read_text())['available_counts'])
print('GOLDEN',json.loads((B/'golden-set-AA042.json').read_text())['metrics'])
print('TESTS', (B/'test-results-AA042.txt').read_text().splitlines()[:4])
print('FINAL',repr((B/'AA-042.md').read_text().splitlines()[-1]))
files=[B/'AA-042.md',B/'obsidian-graphiti-reconciliation-AA042.csv',B/'obsidian-graphiti-reconciliation-AA042.json',B/'graphiti-writers-AA042.csv',B/'youtube-cross-source-AA042.json',B/'golden-set-AA042.json',B/'test-results-AA042.txt',B/'aa040-aa041-deltas.csv',B/'missing-1168-validation-AA042.json',O/'AA-042.md',O/'obsidian-graphiti-reconciliation-AA042.csv',O/'obsidian-graphiti-reconciliation-AA042.json']
for p in files: print(str(p),p.stat().st_size,hashlib.sha256(p.read_bytes()).hexdigest())
text=''.join(p.read_text(errors='replace') for p in files if p.suffix in {'.md','.csv','.json','.txt'})
for marker in ['OPENROUTER_API_KEY','Authorization: Bearer','client_secret','token.json','password=']:print('SECRET',marker,text.lower().count(marker.lower()))
