"""Synthetic in-memory SQLite claims; no scheduler or publication service."""
import sqlite3
c=sqlite3.connect(':memory:')
c.execute('CREATE TABLE periods(period TEXT NOT NULL,destination TEXT NOT NULL,state TEXT NOT NULL,content_version TEXT NOT NULL,PRIMARY KEY(period,destination))')
c.executemany('INSERT INTO periods VALUES(?,?,?,?)',[
 ('2025-09-01','site','published','m1'),('2025-09-02','site','failed_before_effect','t1'),('2025-09-03','site','published','w1')])
def claim(period):
 return c.execute("UPDATE periods SET state='claimed' WHERE period=? AND destination='site' AND state='failed_before_effect'",(period,)).rowcount
assert claim('2025-09-02')==1
assert claim('2025-09-02')==0
assert claim('2025-09-03')==0
assert c.execute("SELECT content_version FROM periods WHERE period='2025-09-02'").fetchone()[0]=='t1'
assert c.execute("SELECT COUNT(*) FROM periods WHERE state='published'").fetchone()[0]==2
print('5/5 local ledger assertions passed. Tuesday remains claimed, not falsely marked published.')
