VinPropane
fddbb95a45
NEO-55: address code review suggestions for inventory HTTP
...
Add remove round-trip and invalid_quantity API tests, Bruno remove request,
dependency register NEO-55 footnote, and strike-through review follow-ups.
2026-05-23 22:51:59 -04:00
VinPropane
d127de7bbb
NEO-55: add code review for inventory GET/POST HTTP and Bruno.
2026-05-23 22:49:31 -04:00
VinPropane
69327f50b4
NEO-55: player inventory GET/POST HTTP, Bruno, and docs
...
Versioned snapshot read and mutationKind add/remove POST backed by
PlayerInventoryOperations; AAA API tests; Bruno happy path + deny case.
2026-05-23 22:45:27 -04:00
VinPropane
db3b80d242
NEO-55: add implementation plan for inventory GET/POST + Bruno
...
Kickoff clarifications: single POST with mutationKind, full fixed slot
arrays, applied response field; no manual QA doc per user choice.
2026-05-23 22:41:05 -04:00
VinPropane
658b627903
Merge pull request #89 from ViPro-Technologies/NEO-54-player-inventory-store-stackslot-rules
...
NEO-54: Player inventory store + stack/slot rules engine
2026-05-23 22:35:42 -04:00
VinPropane
126d979939
NEO-54: dedupe slot cloning on PlayerInventorySnapshot
2026-05-23 19:54:27 -04:00
VinPropane
3f664261b7
NEO-54: preserve validation reason codes when player store missing
...
Deny helper returns Denied + reasonCode even without a snapshot bucket,
so invalid_quantity/invalid_item are stable before NEO-55 HTTP mapping.
2026-05-23 19:44:07 -04:00
VinPropane
dafe3cb92f
NEO-54: fix in-memory inventory races with atomic TryMutateSnapshot
...
Re-read snapshot under per-player lock; route add/remove through
TryMutateSnapshot so read-modify-write is serialized for in-memory
and wrapped in one transaction for Postgres.
2026-05-23 19:42:50 -04:00
VinPropane
ac3900c194
NEO-54: address code review suggestions for inventory tests and docs
2026-05-23 19:31:26 -04:00
VinPropane
362608ed5f
NEO-54: add code review for inventory store and rules engine.
2026-05-23 19:29:37 -04:00
VinPropane
3724a54f07
NEO-54: note inventory DI chained from item catalog registration
2026-05-23 19:27:06 -04:00
VinPropane
01e391b03a
NEO-54: player inventory store, stack/slot rules engine, and tests
2026-05-23 19:26:57 -04:00
VinPropane
e5ffa1b951
NEO-54: add implementation plan for inventory store and rules engine
2026-05-23 19:20:01 -04:00
VinPropane
97a64d179c
Merge pull request #88 from ViPro-Technologies/NEO-53-get-world-item-definitions-bruno
...
NEO-53: GET world item-definitions + Bruno
2026-05-23 19:16:19 -04:00
VinPropane
52590fa749
NEO-53: address code review suggestions
...
Register footnote NEO-53, Bruno exact id-order test, test indent fix,
review doc strikethroughs.
2026-05-23 19:12:20 -04:00
VinPropane
68c4980e42
NEO-53: Add code review for item-definitions HTTP + Bruno.
2026-05-23 19:11:28 -04:00
VinPropane
08428c4da4
NEO-53: GET world item-definitions, Bruno, docs, and tests
...
Registry-backed read model at /game/world/item-definitions; Bruno
collection, manual QA checklist, README and module alignment updates.
2026-05-23 19:09:46 -04:00
VinPropane
9e2e4ab3a7
NEO-53: add implementation plan for world item-definitions HTTP
...
Kickoff clarifications: required-five JSON fields, /game/world route,
manual QA doc — all adopted per user choices.
2026-05-23 19:08:24 -04:00
VinPropane
910bd4850d
Merge pull request #87 from ViPro-Technologies/NEO-52-item-definition-registry-di
...
NEO-52: E3.M3 item definition registry + DI
2026-05-23 18:21:30 -04:00
VinPropane
0d904527ac
NEO-52: address code review doc suggestions for registry
...
Add NEO-52 registry bullet to E3.M3 module doc, extend dependency
register footnote, and mark review suggestions done.
2026-05-23 18:17:27 -04:00
VinPropane
7bd4064b93
NEO-52: Add code review for item definition registry + DI.
2026-05-23 18:16:17 -04:00
VinPropane
792b38d8a9
NEO-52: add IItemDefinitionRegistry with DI and lookup tests
...
Thin adapter over ItemDefinitionCatalog mirroring NEO-35 skill registry;
registers singleton in AddItemDefinitionCatalog with TryGetDefinition,
GetDefinitionsInIdOrder, and AAA unit + host DI tests.
2026-05-23 18:11:33 -04:00
VinPropane
1e9f1e9a3a
NEO-52: add implementation plan for item definition registry + DI
...
Kickoff plan mirrors NEO-35 skill registry pattern on NEO-51 catalog;
includes GetDefinitionsInIdOrder and TryGetDefinition per kickoff answers.
2026-05-23 18:09:02 -04:00
VinPropane
da0562bdf4
Merge pull request #86 from ViPro-Technologies/NEO-51-server-item-catalog-load-fail-fast
...
NEO-51: Server loads item catalog at startup (fail-fast)
2026-05-17 22:11:49 -04:00
VinPropane
38f0c56711
NEO-51: Address code review — tests, docs, review strikethroughs.
...
Add Slice 1 role/stackMax and missing-path loader tests; E3.M3 server
load bullet; register footnote; host test temp-dir cleanup.
2026-05-17 22:04:03 -04:00
VinPropane
1c9c93513e
NEO-51: Add code review for item catalog fail-fast load.
2026-05-17 22:01:47 -04:00
VinPropane
c2366eed4c
NEO-51: Guard item catalog startup log for CA1873.
...
Skip LogInformation argument evaluation when Information is disabled.
2026-05-17 22:00:27 -04:00
VinPropane
0a3c28ae5c
NEO-51: Primary constructor on ItemDefinitionCatalog; test tidy.
...
Restore explicit Content:ItemsDirectory in test factory; use const
for schema-violation fixture JSON.
2026-05-17 21:58:53 -04:00
VinPropane
d23f6dd8ab
NEO-51: Document item catalog boot and mark plan complete.
...
README, alignment register, and acceptance checklist updated.
2026-05-17 21:56:12 -04:00
VinPropane
2ba129dca1
NEO-51: Fail-fast item catalog load at server startup.
...
Mirror NEO-34/validate_content.py: *_items.json schema validation,
Slice 1 gate, ItemDefinitionCatalog DI, loader/host tests, Bruno health smoke.
2026-05-17 21:56:09 -04:00
VinPropane
b461f3bf47
NEO-51: Record kickoff clarification answers in plan.
...
User confirmed strict NEO-52 split and loader plus host boot tests.
2026-05-17 21:52:15 -04:00
VinPropane
b5674c4150
NEO-51: Add implementation plan for item catalog fail-fast load.
...
Kickoff clarifications adopt strict NEO-52 split, NEO-34 test pattern,
and in-process validation mirroring validate_content.py.
2026-05-17 21:50:50 -04:00
VinPropane
37761a4a32
NEO-51: Require agent recommendation in kickoff clarifications.
...
Story kickoff and planning docs now mandate a stated recommendation
(with rationale) for every clarification question and open-question row.
2026-05-17 21:49:46 -04:00
VinPropane
afa39c48af
Merge pull request #85 from ViPro-Technologies/NEO-50-itemdef-starter-set-schemas-ci
...
NEO-50: Lock prototype ItemDef starter set + schemas + CI
2026-05-17 21:45:53 -04:00
VinPropane
02b6b3a460
NEO-50: Remove unreachable duplicate prototypeRole check.
2026-05-17 21:41:26 -04:00
VinPropane
0ce952131a
NEO-50: Address review — equip_stub gate by role, backlog sync.
2026-05-17 21:29:32 -04:00
VinPropane
8fa828daa0
NEO-50: Add code review — Approve for prototype item catalog + CI.
2026-05-17 21:27:59 -04:00
VinPropane
bbc6b20fd3
NEO-50: Document frozen prototype item spine and update alignment.
2026-05-17 21:25:06 -04:00
VinPropane
923ae0511c
NEO-50: Add item-def schema, prototype catalog, and CI gates.
2026-05-17 21:25:06 -04:00
VinPropane
6616bfbca5
NEO-50: Add implementation plan for prototype ItemDef catalog + CI.
2026-05-17 21:22:55 -04:00
VinPropane
fa70e1bd6e
Merge pull request #84 from ViPro-Technologies/docs/e3m3-prototype-backlog
...
NEO-50: E3.M3 prototype backlog and decomposition doc links
2026-05-17 21:18:20 -04:00
VinPropane
56233bfe2c
NEO-50: Add E3.M3 prototype backlog and decomposition doc links.
...
Documents Epic 3 Slice 1 story order (NEO-50–NEO-56), frozen prototype item ids,
and register/module pointers for ItemizationAndInventorySchema.
2026-05-17 21:15:42 -04:00
VinPropane
1ad04f05cd
Merge pull request #83 from ViPro-Technologies/NEO-48-perk-state-get-branch-selection-post-bruno
...
NEO-48: perk state GET + branch selection POST + Bruno
2026-05-17 21:08:11 -04:00
VinPropane
00c5937872
NEO-48: revert WhenWritingNull on skill-progression grant API
...
Keep omit-null reasonCode only on new perk-state responses; restoring
the existing grant endpoint wire format (reasonCode: null on success).
2026-05-17 20:59:37 -04:00
VinPropane
12e52bccc9
NEO-48: fix in-memory TrySetSkillXpTotal zero on absent skill
...
Setting XP to 0 is a no-op success when no row exists, matching Postgres DELETE
semantics and TrySetSkillXpTotals behavior.
2026-05-17 20:46:55 -04:00
VinPropane
aa83790703
NEO-48: omit null reasonCode from success JSON responses
...
WhenWritingNull on PerkBranchSelectResponse and SkillProgressionGrantResponse
matches hotbar/cast/interaction; fixes Bruno tier1 undefined check.
2026-05-17 20:46:28 -04:00
VinPropane
e9c02eded7
NEO-48: mark review items resolved — Approve verdict
2026-05-17 20:38:02 -04:00
VinPropane
aba26446d3
NEO-48: address r2 review — atomic fixture, tests, docs
...
Batch skillXp then resetPerkState with XP rollback; 400 for invalid skillXp;
MasteryFixtureApi gate tests; README fixture vs grant semantics; Bruno GET playerId.
2026-05-17 20:37:00 -04:00
VinPropane
2bb02d76e9
NEO-48: add re-review for mastery fixture testing refactor
2026-05-17 20:34:36 -04:00
VinPropane
ffdbed26f2
NEO-48: dev mastery-fixture API for Bruno state setup
...
Replace fixture player ids with POST …/__dev/mastery-fixture (resetPerkState,
absolute skillXp). Bruno deny tests set state in pre-request on dev-local-1.
Gated to Development/Testing or Game:EnableMasteryFixtureApi.
2026-05-17 20:31:26 -04:00