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
VinPropane
7ecc8746f5
NEO-144: validate contract templates in content CI
...
Add roster, freeze, cross-ref, and band-1 economy cap gates for E7M4 prototype templates.
2026-06-20 19:18:58 -04:00
VinPropane
58d2c32152
NEO-144: add contract template schemas and prototype catalog
...
Lock ContractTemplate row shape and the single frozen repeat-combat-pocket template for CI.
2026-06-20 19:18:56 -04:00
VinPropane
c7a9e81067
NEO-144: align Epic 7 decomposition docs with E7M4 backlog
...
Update module status, freeze table, register, and Slice 4 DoD links for contract generator work.
2026-06-20 19:15:58 -04:00
VinPropane
4238038e11
NEO-144: add E7M4 Slice 4 pre-production backlog
...
Land NEO-144–NEO-154 story order, freeze table, and cross-link from E7M3 downstream.
2026-06-20 19:15:56 -04:00
VinPropane
53122f9f2a
NEO-144: add E7M4-01 contract catalog kickoff plan
...
Lock ContractTemplate schemas, CI gates, and file lists before server load in NEO-145.
2026-06-20 19:15:43 -04:00
VinPropane
74b6586004
Merge pull request #183 from ViPro-Technologies/NEO-143-playable-faction-reputation-gate-capstone
...
NEO-143: Playable faction reputation + gate capstone (Godot)
2026-06-17 22:24:10 -04:00
VinPropane
24a70d3566
NEO-143: Add Slice 3 faction capstone manual QA and docs.
...
Ship NEO-143 capstone checklist extending NEO-132, client README
end-to-end faction loop section, cross-links, and E7.M3 Ready alignment.
2026-06-17 21:43:35 -04:00
VinPropane
0903bf00bd
NEO-143: Add Slice 3 faction capstone implementation plan.
...
Kickoff clarifications adopt docs-primary scope, NEO-132-extended
capstone path, and NEO-142 regression for gate deny verification.
2026-06-17 21:40:03 -04:00
VinPropane
4f02dc47fa
Merge pull request #182 from ViPro-Technologies/NEO-142-client-faction-standing-gate-hud
...
NEO-142: Client faction standing + gate feedback HUD (Godot)
2026-06-17 21:38:07 -04:00
VinPropane
4b221cdf2a
NEO-142: gdformat faction standing and quest reward tests
2026-06-17 21:31:16 -04:00