import sqlite3,json,datetime
DB='/opt/struktur/youtube-research/knowledge.db'; ids=[17,18,19,184,185]
c=sqlite3.connect(DB,timeout=30); c.row_factory=sqlite3.Row
rows=list(c.execute('SELECT e.*,v.transcript_status FROM e2e_jobs e JOIN videos v ON v.id=e.video_id WHERE e.job_id IN (?,?,?,?,?) ORDER BY e.job_id',ids))
assert [r['job_id'] for r in rows]==ids and all(r['status']=='blocked_transcript_fetch' for r in rows)
with open('/opt/struktur/youtube-research/reports/p28/pilot-before.json','w') as f: json.dump([dict(r) for r in rows],f,indent=2,default=str)
c.execute('BEGIN IMMEDIATE')
for jid in ids:
cur=c.execute("UPDATE e2e_jobs SET status='local_transcript_pending',step='local_fetch_pending',reserved_at=NULL,completed_at=NULL,lease_until=NULL,error_code=NULL,error_message=NULL,updated_at=? WHERE job_id=? AND status='blocked_transcript_fetch'",(datetime.datetime.now(datetime.timezone.utc).isoformat(),jid)); assert cur.rowcount==1
c.commit()
print('pilot_pending_exact=5')
print([(r['job_id'],r['youtube_id'],r['attempts']) for r in rows])
c.close()