/**
 * P2-1 smoke test — runPendingChecks claim path uses the locking SQL.
 *
 * Run: npx tsx scripts/smoke/p2-1-claim.ts
 */
import './_lib';
import { ok, fail } from './_lib';
import { readFileSync } from 'fs';
import path from 'path';

function main(): void {
    const enginePath = path.resolve(__dirname, '../../src/lib/monitor-engine.ts');
    const src = readFileSync(enginePath, 'utf8');
    if (!/FOR UPDATE SKIP LOCKED/.test(src)) {
        fail('P2-1 claim SQL', 'monitor-engine.ts no longer contains FOR UPDATE SKIP LOCKED');
    }
    ok('monitor-engine emits FOR UPDATE SKIP LOCKED in claim query');

    if (!/ReadCommitted/.test(src)) {
        fail('P2-1 isolation', 'transaction not running at ReadCommitted level');
    }
    ok('Claim runs at ReadCommitted isolation level');

    if (!/SELECT id FROM Monitor/i.test(src)) {
        fail('P2-1 select', 'expected explicit Monitor table select for the lock');
    }
    ok('Claim selects ids from Monitor for atomic update');

    ok('P2-1 claim', 'race-prone findMany→updateMany pattern replaced with atomic claim');
}

main();
