Summary
pkg/session/store.go:137 is a plain int64 incremented at :284 with no atomic/mutex, while the store is hit concurrently (HTTP handlers + runtime PersistenceObserver). Lost increments → duplicate message IDs → UpdateMessage (searches by ID, store.go:290-314) can edit the wrong message.
Fix
Use atomic.Int64 (or a mutex) for the counter.
Acceptance
- Concurrent
AddMessage test asserts unique IDs; -race clean.
Summary
pkg/session/store.go:137is a plainint64incremented at:284with no atomic/mutex, while the store is hit concurrently (HTTP handlers + runtime PersistenceObserver). Lost increments → duplicate message IDs →UpdateMessage(searches by ID, store.go:290-314) can edit the wrong message.Fix
Use
atomic.Int64(or a mutex) for the counter.Acceptance
AddMessagetest asserts unique IDs;-raceclean.