"""Read-only all-entry API comparison against retained exact checkpoints.

Uses Generator.verify(sample=None) but deliberately returns the unchanged
original coefficient checkpoint, avoiding an unconditional minpoly rebuild.
This is a readback/integrity check, not independent mathematical validation.
The separate repair_check.py checks current polynomials at all 178 branches.
"""
import json,sys
from pathlib import Path
import numberdb.sage as numberdb
from sage.rings.integer_ring import ZZ
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
import generate
p=Path(__file__).parent; values=json.loads((p/'polynomials.json').read_text())
key=sys.stdin.read().strip()
if '=' in key and key.split('=',1)[0].replace('_','').isalnum():key=key.split('=',1)[1].strip().strip('\"\'')
numberdb.configure(api_key=key)
ZX=PolynomialRing(ZZ,'x')
class RetainedCheckpointComparison(generate.BettinConreyMinimalPolynomials):
    def value(self,params,digits):return ZX(values[str(params['k'])])
print('VERIFY',RetainedCheckpointComparison().verify(sample=None),flush=True)
doc=numberdb.table('T710')
assert {str(k):r['number'] for k,r in doc['Numbers'].items()}==values
print('READBACK_CHECK_JSON='+json.dumps({'table':'T710','checked_entries':22,'total_entries':22,'all_checkpoint_coefficients_equal':True,'verification_kind':'Generator.verify(sample=None) with unchanged exact coefficient checkpoint; no minpoly rebuild','rigour_details':doc['Data properties']['rigour details']}),flush=True)
