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.
Replace .ToArray() with collection spread, simplify single-statement
await using blocks, use Lock for Postgres schema gates, and document
IDE0063/IDE0305/IDE0330/CA1859 conventions in csharp-style.md.
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.
Primary constructor on ContractTemplateCatalog; concrete List return
types in loader parse helpers; collection spread in NormalizeBundle;
const emptyCatalog in roster gate test.
Startup loader mirrors validate_content.py E7M4 gates (roster, freeze,
cross-ref, band caps); IContractTemplateRegistry resolves templates by id.
Bruno health smoke confirms host boot after catalog validation.