"""Synthetic restart-policy and conditional-claim fixture; no network effects.
Run: python restart-manifest.py
This exercises a local SQLite example, not production database concurrency.
"""
import sqlite3

ROWS = [
    ('E101', 4, 'complete', 'confirmed'),
    ('E102', 2, 'draft', 'unknown'),
    ('E103', 3, 'unprocessed', 'none'),
    ('E104', 1, 'unprocessed', 'none'),
]

def decision(observed_version, row, expected_epoch=8, current_epoch=8):
    _, version, state, remote_outcome = row
    if expected_epoch != current_epoch:
        return 'reject_stale_mode'
    if observed_version != version:
        return 'reload_changed_record'
    if remote_outcome == 'unknown':
        return 'reconcile_original_action'
    if state == 'complete':
        return 'skip_completed'
    if state == 'unprocessed':
        return 'eligible_for_claim'
    return 'review_state'

if __name__ == '__main__':
    expected = ['skip_completed', 'reconcile_original_action',
                'reload_changed_record', 'eligible_for_claim']
    for observed, row, want in zip([4, 2, 2, 1], ROWS, expected):
        got = decision(observed, row)
        assert got == want
        print(row[0], got)
    assert decision(1, ROWS[3], expected_epoch=7) == 'reject_stale_mode'
    db = sqlite3.connect(':memory:')
    db.execute('CREATE TABLE control (id INTEGER PRIMARY KEY, epoch INTEGER, mode TEXT)')
    db.execute("INSERT INTO control VALUES (1, 8, 'automatic')")
    db.execute('CREATE TABLE enquiries (id TEXT PRIMARY KEY, version INTEGER, state TEXT)')
    db.executemany('INSERT INTO enquiries VALUES (?, ?, ?)', [r[:3] for r in ROWS])
    def claim(identity, version, epoch):
        cur = db.execute('''UPDATE enquiries SET state='claimed', version=version+1
        WHERE id=? AND version=? AND state='unprocessed'
        AND (SELECT epoch FROM control WHERE id=1)=?
        AND (SELECT mode FROM control WHERE id=1)='automatic' ''',
        (identity, version, epoch))
        return cur.rowcount
    assert claim('E104', 1, 7) == 0
    assert claim('E103', 2, 8) == 0
    assert claim('E104', 1, 8) == 1
    assert claim('E104', 1, 8) == 0
    print('9/9 assertions passed; no external action was performed.')
