import hashlib,json
from pathlib import Path
P=Path(__file__).resolve().parent
main=P.parents[3]/'zhctproject'/'ai_api'
original=json.loads((P/'source-frozen-sha.json').read_text())
accepted={
'app/common/model/User.php':'e0471577194cfd6c9953d57937d5e49a37ee4b8a9c99d995a4f42c9fd9e55c20',
'app/common/model/user/BalanceLog.php':'34dcc0781884cd37661cf02230f294fd308336d42dbc704c5e056e13f788ccce',
'app/store/model/user/PointsLog.php':'5da94a9f7ac3e3a2626515e255b452f102a8c061c2fba721b1cd3a98c81f6ac4',
'app/terminal/model/user/PointsLog.php':'8f69b4dd73c744ffcadecaff9c50365d6c483a3400be2e1fb2328691a884a418',
'app/store/model/user/BalanceLog.php':'00aa024c2d11086649b6ce39a3867fef25110103a76728d246e1af8cd6e004aa',
'app/terminal/model/user/BalanceLog.php':'3100418716d24f7d19211a9c72432a09338ee47c9fac7523c2cef2671f438666'}
final={}
for f,sha in original['files'].items():
    current=hashlib.sha256((main/f).read_bytes()).hexdigest()
    assert current==accepted.get(f,sha),f'Unapproved source drift {f}'
    final[f]=current
assert {k for k in final if final[k]!=original['files'][k]}==accepted.keys()
(P/'source-final-sha.json').write_text(json.dumps({'scope':'Root-applied only six accepted model sources; all other original6168 pins unchanged','accepted_changes':accepted,'files':final},indent=2)+'\n')
print(json.dumps({'Root_accepted_source_changes':len(accepted),'all_original_pins':len(final),'unapproved_source_drift':0}))
