Batch authoritative snapshots and bound rejected retreat fallback

This commit is contained in:
Codex
2026-09-25 09:24:51 +08:00
parent d573ae2345
commit 9d1575b8c6
6 changed files with 81 additions and 5 deletions
+10
View File
@@ -70,6 +70,16 @@ function observedHardcoreDeath(s:State,b:Bot,observation:Observation){
return true;
}
// Apply one transport batch atomically; one large state write instead of one per bot.
export async function applyAuthoritativeAleSnapshots(store:StateStore,payloads:Record<string,unknown>[]){
const initial=await store.load(),revision=initial.revision;
let staged=structuredClone(initial),dirty=false;
const batchStore:StateStore={load:async()=>staged,save:async(next)=>{staged=next;dirty=true;}};
for(const payload of payloads)await applyAuthoritativeAleEvent(batchStore,'player.snapshot',payload);
if(dirty)await store.save(staged,revision);
return {ok:true,count:payloads.length};
}
export async function applyAuthoritativeAleEvent(store:StateStore,kind:string,payload:Record<string,unknown>){
let s=await store.load();
const revision=s.revision;