import ast,hashlib,json,subprocess,sys
repo,res=sys.argv[1],json.load(open(sys.argv[2]))
src=subprocess.run(['git','-C',repo,'show','624efc5:gca_evaluation/prompts.py'],capture_output=True,check=True).stdout.decode()
tree=ast.parse(src); val=None
for n in tree.body:
    if isinstance(n,ast.Assign) and n.targets[0].id=='critic_prompts': val=ast.literal_eval(n.value)
want={p['prompt']:p for p in res['prompts']}
def sh(s): return hashlib.sha256(s.encode()).hexdigest()
for dim,d in val['dimension_details'].items():
    print(dim,'intro',sh(d['dimension_brief'])==want[f'{dim}: intro']['platform_sha256'],len(d['dimension_brief'].split()),'rubrics',sh(d['dimension_criteria'])==want[f'{dim}: rubrics']['platform_sha256'],len(d['dimension_criteria'].split()))
t=val['self-play-deduct-template']; print('template tokens',len(t.split()),'sha(raw)==',sh(t)==want['judge template']['platform_sha256'])
print('order in dict',list(val['dimension_details'].keys()), 'major in',[k for k,v in val['dimension_details'].items() if '{major_characters}' in v['dimension_criteria']])
print('template has major',('{major_characters}' in t))
