diff --git a/packages/session/session-projection/src/index.ts b/packages/session/session-projection/src/index.ts index be306821e4..e457370794 100644 --- a/packages/session/session-projection/src/index.ts +++ b/packages/session/session-projection/src/index.ts @@ -440,12 +440,10 @@ export class SessionProjectionRegistry extends Service { ) } let state = usable ? def.stateSchema.parse(row.val) : def.init() - // The events are seq-ordered: slice off the already-folded prefix - // (events at or below the seed watermark) and fold only the tail. const from = usable ? row.seq : baseSeq - 1 - const tailStart = events.findIndex(event => event.seq > from) - const tail = tailStart === -1 ? [] : events.slice(tailStart) - for (const event of tail) state = def.apply(state, event) + for (const event of events) { + if (event.seq > from) state = def.apply(state, event) + } if (def.wire !== undefined) values[def.key] = def.wire.viewSchema.parse(def.wire.view(state)) refreshed[def.key] = { ver: def.stateVersion, seq: endSeq, val: state } }