Commit Graph

4 Commits (36ffec94e96e41b13675e7987fca352621cc84e8)

Author SHA1 Message Date
VinPropane 93bd45d49a NEO-146: fix in-memory outcome idempotency race and clear parity
Lock idempotency keys alongside row ids in TryAppend so concurrent
duplicate keys cannot both succeed; return true from TryClearInstance
when the row is absent to match Postgres idempotent DELETE behavior.
2026-06-24 21:13:42 -04:00
VinPropane 7740d2145f NEO-146: address Bugbot findings on contract outcome stores
Ensure instance schema before outcome DDL, require matching player/instance
on Postgres append, catch unique violations on concurrent duplicates, and
add parity plus concurrency integration tests.
2026-06-24 20:58:17 -04:00
VinPropane b087c03a47 NEO-146: address re-review in-memory outcome guard parity
InMemoryContractOutcomeStore checks IContractInstanceStore.TryGet before
append; add unit test, README/plan updates, and close r2 review items.
2026-06-24 20:52:49 -04:00
VinPropane ae641a4dd0 NEO-146: add contract instance and outcome stores with Postgres split
Durable per-player contract instances (one active) and append-only
outcome audit rows, mirroring NEO-116/135 store patterns with V011/V012
migrations, AAA tests, README docs, and Bruno health smoke.
2026-06-24 20:27:32 -04:00