"""Fill the claimed T508 draft once from the verified generator and document."""
import json,sys
from pathlib import Path
import numberdb.sage as numberdb
from numberdb._write import Entries,attach
from numberdb._generate import _producer
from generate import LengthFiveMZV
key=sys.stdin.read().strip()
if '=' in key and key.split('=',1)[0].isupper():key=key.split('=',1)[1].strip().strip('\'"')
numberdb.configure(api_key=key)
client=numberdb.Client(api_key=key)
p=Path('/work');g=LengthFiveMZV()
current=numberdb.table(g.table)
assert current['Title']=='Multiple zeta values of length 5'
assert not current.get('Numbers') and not current.get('Data'), 'Draft already has entries; do not overwrite.'
entries=Entries(*g.parameters)
for params in g.enumerate():entries.add(**params,**g.value(params,100),digits=100)
assert len(entries)==462
# Confirm that the values being sent are exactly those independently checked.
evidence=json.loads((p/'build-evidence.json').read_text())
expected={tuple(row['index']):row['number'] for row in evidence['values']}
for row in entries:
 index=tuple(int(row['params'][name]) for name in g.parameters)
 assert row['number']==expected[index],index
doc=json.loads((p/'document.json').read_text());doc['Numbers']=entries.as_list()
claim=json.loads((p/'claim-result.json').read_text())
h={};h.update({'Content-Type':'application/json','X-Base-Revision':claim['revision'],'X-Produced-By':_producer(g,'codex-cli'),'X-Edit-Message':'Fill 462 length-five multiple zeta values with independently verified 100-digit intervals'})
result=client.submit('/api/table/T508',json.dumps(doc),headers=h)
print('FILL_JSON='+json.dumps(result),flush=True)
run='20261026T080519Z-T508-sources'
for name in ('generate.py','checks.py','check.py','build-evidence.json','document.json','fill_once.py','versions.json'):
 result=attach(g.table,name,(p/name).read_text(),run=run,rigour=g.rigour,client=client,message='Attach the generator, independent enclosure checks and reproducible numerical evidence')
 print('ATTACH_JSON='+json.dumps({'name':name,'response':result}),flush=True)
report=g.verify(sample=None)
print('VERIFY_REPORT='+str(report),flush=True)
assert report.ok
from checks import run as check_run
check_run(stored=True)
