VinPropane
7268935bc7
NEO-148: address code review doc follow-ups
...
Add E7.M4 alignment register entry, E7.M2 cross-ref, Postgres store-key
migration note, and defer contract fixture reset to NEO-149.
2026-06-27 21:24:12 -04:00
VinPropane
e75ac3932f
NEO-148: add code review for contract reward router
2026-06-27 19:59:31 -04:00
VinPropane
76ce1943c7
NEO-148: add contract completion reward router and delivery store extension
...
TryDeliverContractCompletion reuses the quest grant-apply path with
contract-specific idempotency keys and source-kind-aware delivery store rows.
2026-06-27 19:58:07 -04:00
VinPropane
b20d7d001e
NEO-148: add E7M4-05 implementation plan for contract reward router
2026-06-27 19:54:16 -04:00
VinPropane
52ab7dbec2
Merge pull request #188 from ViPro-Technologies/NEO-147-e7m4-04-contract-generator-try-issue
...
NEO-147: E7M4-04 contract generator TryIssue
2026-06-27 19:50:36 -04:00
VinPropane
c237bead53
NEO-147: guard DenyCreateFailure when create snapshot is null
2026-06-27 19:43:44 -04:00
VinPropane
81f4cde673
chore: remove redundant test namespace using in gate tests
2026-06-27 19:40:13 -04:00
VinPropane
58a188eac0
chore: dedupe faction id constants in gate operation tests
2026-06-27 19:30:28 -04:00
VinPropane
39805ef8e6
chore: fix QuestDefinitionCatalogLoader analyzer warnings
2026-06-27 19:26:52 -04:00
VinPropane
fbb248770f
NEO-147: update decomposition tracking and strike review findings
2026-06-27 19:23:17 -04:00
VinPropane
3549b647a5
NEO-147: add standing and duplicate-seed review follow-up tests
2026-06-27 19:23:17 -04:00
VinPropane
be0525b152
NEO-147: add code review for contract generator TryIssue
2026-06-27 19:21:24 -04:00
VinPropane
c37c3c76a3
NEO-147: use class-level grid faction id in generator tests
2026-06-27 19:18:23 -04:00
VinPropane
44f4e4c3ce
NEO-147: mark faction id locals const in generator tests
2026-06-27 19:15:43 -04:00
VinPropane
60aa0be4f0
NEO-147: document generator operations and reconcile plan
2026-06-27 19:15:14 -04:00
VinPropane
87a0eb25ec
NEO-147: add contract generator unit and integration tests
2026-06-27 19:15:14 -04:00
VinPropane
7f62f43f92
NEO-147: add ContractGeneratorOperations.TryIssue orchestrator
2026-06-27 19:15:11 -04:00
VinPropane
e0efaa3c15
NEO-147: add E7M4-04 contract generator kickoff plan
2026-06-27 19:12:27 -04:00
VinPropane
29bc2423b5
Merge pull request #187 from ViPro-Technologies/NEO-146-e7m4-03-contract-instance-outcome-stores
...
NEO-146: E7M4-03 contract instance and outcome stores
2026-06-24 21:27:51 -04:00
VinPropane
1cf80a4e4e
NEO-146: fix stale active index race in TryGetActiveForPlayer
...
Read the active index under the player lock and remove stale entries
only when the indexed instance id still matches, preventing concurrent
get/complete/reissue from dropping a newer active pointer.
2026-06-24 21:21:02 -04:00
VinPropane
a64f7100a2
NEO-146: update plan reconciliation test count to 874
2026-06-24 21:13:44 -04:00
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
237e39c8ca
NEO-146: simplify using declarations in outcome persistence tests
...
Apply IDE0063 where braced scopes have no name clashes with later blocks.
2026-06-24 21:11:53 -04:00
VinPropane
6c4221072a
NEO-146: fix in-memory create/complete lock ordering
...
Nest player and instance locks in TryCreateActive, TryMarkComplete, and
TryClearInstance so concurrent create and complete cannot leave a stale
active index or mismatched snapshot.
2026-06-24 21:05:56 -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
a9bc1acaa8
NEO-146: add re-review after cleanup and review follow-up
2026-06-24 20:51:04 -04:00
VinPropane
01e82f38f6
NEO-146: fix record struct docs and collection spread in tests
...
Replace param XML on record struct mutation outcomes with summary cref
docs to avoid Roslynator RCS1263 false positives; apply IDE0305 in
RewardRouterOperationsTests and update style guide guidance.
2026-06-24 20:47:40 -04:00
VinPropane
a4f37db594
NEO-146: restore test layout section in csharp-style guide
...
Fix IDE0270 section that accidentally overwrote the test project layout heading.
2026-06-24 20:46:27 -04:00
VinPropane
b519f4e9eb
NEO-146: fix mutation outcome docs and null-check style
...
Add summary and Kind param XML docs on mutation outcome records, simplify
PostgresDockerHelper null guard with ?? throw, and document RCS1139/IDE0270.
2026-06-24 20:46:23 -04:00
VinPropane
b6b0b87534
NEO-146: fix remaining C# analyzer style warnings
...
Apply using simplification, inline declarations, const locals, and
Lock in PostgresDockerHelper; document RCS1118 and IDE0018 in style guide.
2026-06-24 20:44:30 -04:00
VinPropane
e0877fea7f
NEO-146: use collection spread in EncounterProgressApi
...
Apply IDE0305 to defeated-target ordering, assert stable sort in API
tests, and document sorted defeatedTargetIds in Bruno.
2026-06-24 20:41:40 -04:00
VinPropane
b455ff5ad5
NEO-146: apply C# collection and using style fixes
...
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.
2026-06-24 20:41:25 -04:00
VinPropane
1922900477
NEO-146: address code review findings for contract stores
...
Add Postgres race/deny tests, duplicate instance id coverage, FK-safe
outcome append, MakeInstanceKey locking, decomposition alignment updates,
and strike-through review doc.
2026-06-24 20:37:16 -04:00
VinPropane
be53d80705
NEO-146: add code review for contract instance and outcome stores
2026-06-24 20:35:16 -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
VinPropane
82c45941ae
NEO-146: add E7M4-03 contract instance and outcome stores kickoff plan
2026-06-22 20:36:47 -04:00
VinPropane
f18309809a
Merge pull request #186 from ViPro-Technologies/chore/neo-145-contract-catalog-analyzer-warnings
...
chore: fix contract catalog analyzer warnings
2026-06-20 19:53:37 -04:00
VinPropane
93fd8864dc
chore: fix contract catalog analyzer warnings.
...
Primary constructor on ContractTemplateCatalog; concrete List return
types in loader parse helpers; collection spread in NormalizeBundle;
const emptyCatalog in roster gate test.
2026-06-20 19:46:39 -04:00
VinPropane
e3988874d2
Merge pull request #185 from ViPro-Technologies/NEO-145-e7m4-02-server-contract-template-catalog-load-fail-fast
...
NEO-145: E7M4-02 server contract template catalog load (fail-fast)
2026-06-20 19:43:56 -04:00
VinPropane
56bc22c70d
NEO-145: address review findings — tests and decomposition docs.
...
Rename cross-ref unit test; add loader freeze-overflow and missing-schema
negatives; update E7.M4/CT.M1 alignment tables and strike through review.
2026-06-20 19:36:25 -04:00
VinPropane
1b904b594d
NEO-145: add code review for contract catalog load branch.
2026-06-20 19:34:37 -04:00
VinPropane
937412eda6
NEO-145: reconcile implementation plan with shipped catalog load.
2026-06-20 19:31:54 -04:00
VinPropane
5ab5022704
NEO-145: add fail-fast contract template catalog load and registry.
...
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.
2026-06-20 19:31:54 -04:00
VinPropane
215493f63b
NEO-145: add E7M4-02 contract catalog load implementation plan.
...
Kickoff plan for fail-fast server loader, IContractTemplateRegistry,
and CI-parity E7M4 gates following NEO-144 content landing.
2026-06-20 19:26:34 -04:00
VinPropane
b5a0f71bca
Merge pull request #184 from ViPro-Technologies/NEO-144-e7m4-01-contracttemplate-catalog-schemas-ci
...
NEO-144: E7M4-01 contract template catalog, schemas, and CI
2026-06-20 19:23:42 -04:00
VinPropane
9cfbf43936
NEO-144: reconcile plan and strike through review follow-ups
...
Document band-cap constant naming, NEO-145 C# port note, and mark review items done.
2026-06-20 19:22:02 -04:00
VinPropane
f7a014fe69
NEO-144: address review findings in contract CI gates
...
Use E7M3 bundle normalization for rep grants, smoke-test contract-seed schema,
and apply cross-ref/band-cap checks to all loaded template rows.
2026-06-20 19:22:02 -04:00
VinPropane
fe9b706092
NEO-144: add code review for contract catalog CI slice
2026-06-20 19:21:01 -04:00
VinPropane
2afd29e4d9
NEO-144: document contract catalog CI and reconcile plan
...
Update content README, module docs, alignment register, and backlog AC for E7M4-01 land.
2026-06-20 19:18:58 -04:00