← back to Ticket System
data/codex-yoloforever/cycle-20260908T1221Z.HzXvuQ/cody-vienna-regate-driver.mjs
20 lines
import fs from 'node:fs';
import path from 'node:path';
import assert from 'node:assert/strict';
import {createHash} from 'node:crypto';
import {openOfflineAdapter} from '/private/tmp/vienna-executor.qdoRbR/vienna-offline-adapter.mjs';
const dir=fs.mkdtempSync('/private/tmp/cody-vienna-regate-');
const store={domain:'designer-laboratory-sandbox.myshopify.com',id:'gid://shopify/Shop/900000000001'};
const r={productId:'gid://shopify/Product/1',variantId:'gid://shopify/ProductVariant/1',inventoryItemId:'gid://shopify/InventoryItem/1',locationId:'gid://shopify/Location/1',vendor:'Phillipe Romano',line:'Vienna',title:'Vienna Fixture',variantTitle:'Full Material',price:0,inventoryPolicy:'DENY',tracked:true,onHand:2026,target:0};
const fixture=()=>({fixture:true,version:1,store:structuredClone(store),records:[structuredClone(r)],calls:[]});
const digest=f=>createHash('sha256').update(fs.readFileSync(f)).digest('hex');
const file=path.join(dir,'quantity.json');fs.writeFileSync(file,JSON.stringify(fixture()));
const a=openOfflineAdapter(file,store);const changed=fixture();changed.records[0].onHand=9;fs.writeFileSync(file,JSON.stringify(changed));
const before=digest(file);const value=await a.read(r);assert.equal(value.onHand,9);assert.equal(digest(file),before);
const result=await a.set(r,2026,0);assert.deepEqual(result,{kind:'rejected',confirmedNoWrite:true});assert.equal(digest(file),before);
const identityFile=path.join(dir,'identity.json');fs.writeFileSync(identityFile,JSON.stringify(fixture()));const i=openOfflineAdapter(identityFile,store);const foreign=fixture();foreign.store.id='gid://shopify/Shop/888';fs.writeFileSync(identityFile,JSON.stringify(foreign));const identityBefore=digest(identityFile);
const checks=[];
for(const [name,operation] of [['shop',()=>i.shop()],['read',()=>i.read(r)],['set',()=>i.set(r,2026,0)]]){await assert.rejects(operation,/Adapter store mismatch/);assert.equal(digest(identityFile),identityBefore);checks.push({operation:name,storeDriftRefused:true,stateUnchanged:true});}
const out={task_id:'cycle-20260908T1221Z.HzXvuQ/cody-vienna',scratch_retained:dir,quantity:{read:9,persisted:JSON.parse(fs.readFileSync(file)).records[0].onHand,readUnchanged:true,staleCompareRejected:true},store:checks,source_mutations:false};
fs.writeFileSync('/Users/macstudio3/Projects/ticket-system/data/codex-yoloforever/cycle-20260908T1221Z.HzXvuQ/cody-vienna-regate-independent.json',JSON.stringify(out,null,2)+'\n');console.log(JSON.stringify(out,null,2));