import test from 'node:test';
import assert from 'node:assert/strict';
import {runRollout,mayContract} from '../src/rollout/engine.mjs';
const metric=(r,key)=>r.metrics.find(([name])=>name===key)[1];

test('Expand-contract permits old and new reads and a safe application rollback',async()=>{
 for(const preset of ['rename','health','contract']){const bad=await runRollout({preset,variant:'broken'}),good=await runRollout({preset,variant:'safe'});assert.ok(metric(bad,'Failed data reads')>0);assert.equal(metric(good,'Failed data reads'),0);}
 assert.equal(mayContract({oldReaders:1,oldWriters:0,backfillRemaining:0}),false);assert.equal(mayContract({oldReaders:0,oldWriters:0,backfillRemaining:0}),true);
});