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
VinPropane
b72201b1f0
NEO-48: Bruno fixture players for deterministic perk deny tests
...
Seed neo48-perk-fresh and neo48-perk-branch via Game:FixturePlayerIds;
level_too_low uses isolated fresh player, branch_already_chosen sets up
neo48-perk-branch in pre-request instead of skipping on shared state.
2026-05-17 20:26:21 -04:00
VinPropane
f4c3fe86e4
NEO-48: skip level_too_low Bruno when dev player already progressed
...
Pre-request checks salvage level and tier-1 pick; bru.skipRequest avoids
false failure after branch_already_chosen or skill-progression grants.
2026-05-17 20:23:42 -04:00
VinPropane
d5b65c94f6
NEO-48: fix Bruno pre-request baseUrl for branch_already_chosen
...
Use getEnvVar fallback and axios like other collection scripts; Invalid URL
when baseUrl was undefined in pre-request.
2026-05-17 20:22:22 -04:00
VinPropane
3ba8300652
NEO-48: address code review — Bruno deny, API deny tests
...
Add self-contained branch_already_chosen Bruno request, HTTP deny smoke
for unknown track/tier/branch and null-body 400, folder docs for level_too_low.
2026-05-17 20:21:42 -04:00
VinPropane
0838e661c9
NEO-48: add code review for perk-state HTTP
2026-05-17 20:16:46 -04:00
VinPropane
39c54c3881
NEO-48: perk-state HTTP, Bruno, tests, and docs
...
GET/POST /game/players/{id}/perk-state with versioned JSON, engine-backed
branch selection, PerkStateApiTests, Bruno collection, README, and E2.M3 alignment.
2026-05-17 20:10:31 -04:00
VinPropane
5290044845
NEO-48: add implementation plan for perk-state HTTP
...
Kickoff plan for GET/POST /game/players/{id}/perk-state, Bruno, and API
tests; records user choices on route path and unlockedEvents on success.
2026-05-17 20:06:52 -04:00
VinPropane
1c102af15e
Merge pull request #82 from ViPro-Technologies/NEO-49-perk-unlock-telemetry-hook-sites
...
NEO-49: perk_unlock telemetry hook sites
2026-05-17 19:28:45 -04:00
VinPropane
5058bc1963
NEO-49: address code review follow-ups for telemetry hooks
2026-05-17 19:21:21 -04:00
VinPropane
7ce9dc172c
NEO-49: add code review for perk_unlock telemetry hooks
2026-05-17 19:15:17 -04:00
VinPropane
38ef54c238
NEO-49: document perk_unlock hook sites in README, module, and manual QA
2026-05-17 19:10:14 -04:00
VinPropane
340dbbe60d
NEO-49: add comment-only perk_unlock telemetry hook in TryUnlockPerks
2026-05-17 19:10:12 -04:00
VinPropane
0d63965724
chore: gitignore VS Code C# Dev Tools auto-generated runners
2026-05-17 19:09:10 -04:00
VinPropane
f3e48f4077
NEO-49: kickoff implementation plan for perk_unlock telemetry hooks
2026-05-17 19:08:54 -04:00
VinPropane
01a02da923
Merge pull request #81 from ViPro-Technologies/NEO-47-perk-unlock-engine-perkstate-persistence
...
NEO-47: Perk unlock engine + PerkState persistence
2026-05-17 19:00:18 -04:00
VinPropane
76e710b491
NEO-47: re-review — follow-ups verified, approve for merge
2026-05-17 18:46:25 -04:00
VinPropane
0a2a6fe45b
NEO-47: address code review follow-ups for perk unlock engine
...
Retroactive path-auto unlock on branch pick, unlock rollback, CanWritePlayer
gate, expanded deny tests, gather-hook smoke, decomposition docs, review strikethroughs.
2026-05-17 18:45:11 -04:00
VinPropane
2520a80b6e
NEO-47: add code review for perk unlock engine
2026-05-17 18:42:28 -04:00
VinPropane
38774a5b39
NEO-47: perk unlock engine, PerkState persistence, and tests
...
Add V004 perk tables, in-memory/Postgres stores, PerkUnlockEngine (tier-1 branch
pick, path-auto tier-2 unlocks), level-up hook in skill XP grants, and AAA tests.
Bruno docs note internal perk reevaluation on level-up (HTTP in NEO-48).
2026-05-17 18:38:41 -04:00
VinPropane
e297b3a023
NEO-47: add implementation plan for perk unlock engine
...
Kickoff clarifications, tier-2 auto-path recommendation, and file/test lists for PerkState persistence and level-up hooks.
2026-05-17 18:34:50 -04:00
VinPropane
619146da85
Merge pull request #80 from ViPro-Technologies/NEO-46-mastery-catalog-startup-load
...
NEO-46: Server loads mastery catalog at startup (fail-fast)
2026-05-17 18:28:19 -04:00