Observed November 5,2026 Asia/Shanghai at https://randomwheel.com/teams . Enter nine synthetic labels one per line: L01 Aster; L02 Birch; L03 Cedar; L04 Dune; L05 Elm; L06 Fern; L07 Grove; L08 Hazel; L09 Iris. Select Number of teams3, numbered team names, no roles, no added together/apart rules or stars. Split now. Record each card. Lock first card and Reshuffle; compare that card's membership, not random order elsewhere. Our first reshuffle retained Fern/Aster/Birch in Team1; Iris and Dune changed teams. Undo reset that reshuffle. While Team1 remained locked, move Fern to Team2 using its move menu. Recorded sizes2/4/3. Reshuffle again. Team1 retained Aster/Birch; Fern appeared on Team3. Sizes2/4/3. Your names in each card can differ; no seed/exact random draw reproduction promised. Check the same invariants with your actual first card. Selected transcript is operator DOM/card observations, not a generator CSV. No account, real people, live event or permissions test. Local archive check sends no requests. Save lock-edit-observations.txt and this code as verify.cjs, then run node verify.cjs. const fs=require('fs'),a=require('assert/strict'); const rows=JSON.parse(fs.readFileSync('lock-edit-observations.txt','utf8')).observations; const state=n=>rows.find(r=>r.state==='n5-wheel-'+n),ids=r=>r.cards.flatMap(c=>c.members).sort(),members=(r,t)=>r.cards.find(c=>c.team===t).members.slice().sort(); a.equal(rows.length,5);for(const r of rows){a.equal(r.syntheticInput.split('\n').length,9);a.equal(new Set(ids(r)).size,9);a.equal(ids(r).length,9);a.deepEqual(ids(r),r.syntheticInput.split('\n').sort());} const b=state('before'),l=state('locked-reshuffle'),u=state('undo'),m=state('locked-move'),e=state('edited-reshuffle'); a(!b.cards[0].locked);a(l.cards[0].locked&&u.cards[0].locked&&m.cards[0].locked&&e.cards[0].locked);a.deepEqual(members(b,'Team 1'),['L01 Aster','L02 Birch','L06 Fern']);a.deepEqual(members(b,'Team 1'),members(l,'Team 1')); a(members(l,'Team 2').includes('L09 Iris'));a(members(l,'Team 3').includes('L04 Dune')); for(const c of b.cards)a.deepEqual(members(b,c.team),members(u,c.team)); a.deepEqual(m.cards.map(c=>c.members.length),[2,4,3]);a.deepEqual(members(m,'Team 1'),['L01 Aster','L02 Birch']);a(members(m,'Team 2').includes('L06 Fern')); a.deepEqual(e.cards.map(c=>c.members.length),[2,4,3]);a.deepEqual(members(e,'Team 1'),members(m,'Team 1'));a(members(e,'Team 3').includes('L06 Fern'));a.deepEqual(members(e,'Team 2'),['L04 Dune','L05 Elm','L07 Grove','L09 Iris']); console.log('PASS: five saved DOM states; original locked card preserved; manual move changes it to2; next reshuffle retains2; all9 labels occur once. Archive only.');