VinPropane
705a7cd028
NEO-121: Add comment-only quest telemetry hook sites in QuestStateOperations.
...
Document quest_start, quest_step_complete, quest_complete, and quest_accept_denied
anchors for future E9.M1 ingest with README, manual QA, and module doc updates.
2026-06-07 12:29:52 -04:00
VinPropane
ea3b7cceb5
NEO-120: Address code review test coverage gaps.
...
Add HTTP tests for already_completed deny snapshot and empty {} body;
tighten already_active AAA arrange. Strike through resolved review items.
2026-06-07 12:21:19 -04:00
VinPropane
9fe6cb36fd
NEO-120: Document quest accept POST and reconcile plan.
...
Update server README, E7.M1 module docs, alignment register, backlog, and
implementation plan reconciliation for shipped accept HTTP.
2026-06-07 12:18:53 -04:00
VinPropane
2fa2e35ca6
NEO-120: Add quest accept POST API, tests, and Bruno spine.
...
Wire QuestStateOperations.TryAccept at POST /game/players/{id}/quests/{questId}/accept
with shared quest row projection, integration tests, and Bruno accept flows.
2026-06-07 12:18:51 -04:00
VinPropane
ad906fec40
NEO-119: Tighten quest-progress order and side-effect test coverage.
2026-06-07 12:10:55 -04:00
VinPropane
9e4c52f653
NEO-119: Document quest-progress GET and reconcile plan docs.
2026-06-07 11:56:31 -04:00
VinPropane
066d1ff981
NEO-119: Add GET quest-progress API with inventory refresh hook.
2026-06-07 11:56:28 -04:00
VinPropane
71dbdd9a3e
NEO-118: Wire quest objectives to gather, craft, and encounter events.
...
Add QuestObjectiveWiring with auto step advance/complete, hook into
GatherOperations, CraftOperations, EncounterCompletionOperations, and
QuestStateOperations accept/advance for inventory_has_item checks.
2026-06-06 19:54:37 -04:00
VinPropane
540257d12d
NEO-117: Fix Bugbot deny-code misclassification on quest accept.
...
Add CanWritePlayer to IPlayerQuestStateStore and check before
prerequisite gate; map TryActivate/TryAdvanceStep store failures
from progress snapshots instead of always unknown_player.
2026-06-06 19:36:41 -04:00
VinPropane
025c3250d2
NEO-117: Address code review findings for QuestStateOperations.
...
Align test DI resolution with encounter pattern, add unknown_quest
advance/complete tests, catalog quest id constants, refactor
TryMarkComplete readability, and update decomposition docs.
2026-06-06 19:30:21 -04:00
VinPropane
f053ffbb39
NEO-117: Add QuestStateOperations with reason codes and tests.
...
Server-authoritative accept, step advance, and idempotent complete
wrapping IPlayerQuestStateStore with prerequisite enforcement.
2026-06-06 19:26:37 -04:00
VinPropane
fabbdae4c2
NEO-116: Make Postgres TryActivate safe under concurrent insert.
...
Use INSERT ON CONFLICT DO NOTHING so duplicate activations return false
with the existing snapshot instead of raising a primary-key violation.
2026-06-03 23:25:13 -04:00
VinPropane
de611ac294
NEO-116: Address code review findings for quest state store.
...
Fix persistence test AAA layout, empty-id denial theory, frozen id constants,
Postgres rollback/JSONB read, XML doc cref, README Bruno link, and review doc.
2026-06-03 23:19:52 -04:00
VinPropane
395b70c030
NEO-116: Add player quest state store with Postgres persistence.
...
Introduces IPlayerQuestStateStore (in-memory + V008 Postgres), QuestStepState
snapshots, DI wiring, AAA unit tests, and docs for E7M1-05 before NEO-117 ops.
2026-06-03 23:04:50 -04:00
VinPropane
5f1244843c
NEO-115: serialize JsonSchema registry registration for parallel tests.
...
Recipe and reward-table loaders registered schemas without locking,
corrupting SchemaRegistry.Global when xUnit spun up multiple
WebApplicationFactory hosts concurrently in CI.
2026-06-03 22:37:55 -04:00
VinPropane
ab315f326b
NEO-115: address code review findings for quest definitions GET.
...
Derive expected quest id order from PrototypeE7M1QuestCatalogRules,
assert refine craft_recipe objective in integration test, and update
module dependency register plus review doc strikethroughs.
2026-06-03 22:22:44 -04:00
VinPropane
31cd67725d
NEO-115: add GET /game/world/quest-definitions API and tests.
...
Expose read-only v1 quest projection from IQuestDefinitionRegistry with
flat objective fields, Bruno collection, and integration coverage.
2026-06-03 22:14:37 -04:00
VinPropane
5d302742f7
NEO-114: Address code review — backlog wording and empty-id test.
2026-06-01 21:49:57 -04:00
VinPropane
0bcbb4b041
NEO-114: Document quest registry and reconcile E7.M1 alignment.
2026-06-01 21:47:01 -04:00
VinPropane
cd67810849
NEO-114: Add IQuestDefinitionRegistry adapter and DI registration.
2026-06-01 21:46:59 -04:00
VinPropane
9c2ab5ae4d
NEO-113: address code review — docs, schema and chain terminal tests.
2026-05-31 22:36:26 -04:00
VinPropane
b841b64581
NEO-113: add fail-fast quest catalog load and loader tests.
2026-05-31 22:33:43 -04:00
VinPropane
df248308c7
NEO-109: Restore early return on completion failure guard.
...
Bugbot PR #148 : keep consistent guard-clause pattern in
EncounterCombatWiring.TryProcessCastOutcome.
2026-05-31 19:25:33 -04:00
VinPropane
0f60423863
NEO-109: Drop unused definition out param in activation path.
2026-05-31 19:06:06 -04:00
VinPropane
c40bcd3ffe
NEO-109: Address code review hook-anchor findings.
...
Move encounter_start comments after successful TryActivate; clarify
encounter_complete_denied caller context; strike through review items.
2026-05-31 19:06:01 -04:00
VinPropane
1a7b5312c5
NEO-109: Add Slice 3 encounter telemetry hook comments.
...
Document encounter_start, encounter_complete, reward_attribution, and
encounter_complete_denied at engine anchors; remove wiring duplicate.
2026-05-31 19:03:03 -04:00
VinPropane
a5182a4c14
NEO-108: Fix Bruno encounter-progress and combat-health smokes.
...
Use collection-relative ./scripts require path; reset encounter stores in
combat-targets dev fixture for inactive GET; combat-health uses slot 3.
2026-05-31 18:43:50 -04:00
VinPropane
25f3714554
NEO-108: Address code review findings for encounter-progress GET.
...
Add BuildSnapshot invariant tests, whitespace 404, idempotent second GET,
grant-order assertions; dedupe MapRow progress lookup; strike review items.
2026-05-31 18:39:52 -04:00
VinPropane
07ebb9efb8
NEO-108: Add Bruno smokes and document encounter-progress GET.
...
Bruno folder covers inactive default and three-NPC defeat spine; README and
E5.M3 docs mark E5M3-08 landed with plan reconciliation.
2026-05-31 18:37:43 -04:00
VinPropane
c1fd2053d0
NEO-108: Add GET encounter-progress API and integration tests.
...
Projects progress, completion, and event stores into versioned per-player
rows with inactive/active/completed state and commit-time grant summary.
2026-05-31 18:37:42 -04:00
VinPropane
f51617f8b5
NEO-107: Address code review findings for event store persistence.
...
Update E5.M3 module summary and NEO-105 snapshot, fix store test AAA
layout, add empty encounter id fail-closed test, strike through review items.
2026-05-31 18:27:28 -04:00
VinPropane
a02496c6bc
NEO-107: Persist EncounterCompleteEvent and wire E7.M2 hook stub.
...
Add IEncounterCompleteEventStore with in-memory implementation, record
events on successful TryCompleteAndGrant, and expand reward_delivery
hook comments for future QuestRewardBundle routing.
2026-05-31 18:26:11 -04:00
VinPropane
9c74933e6e
NEO-106: Address code review findings for combat encounter wiring.
2026-05-31 18:10:41 -04:00
VinPropane
8306f92554
NEO-106: Document combat encounter wiring and update E5.M3 docs.
2026-05-31 18:08:29 -04:00
VinPropane
f581cf412c
NEO-106: Wire encounter progress and completion from ability cast.
2026-05-31 18:08:28 -04:00
VinPropane
01bcd7334c
NEO-105: Consolidate inventory snapshot clone helper.
...
Add PlayerInventorySnapshot.Clone() and use it from craft and
encounter completion pre-flight paths (Bugbot PR #144 ).
2026-05-31 17:11:55 -04:00
VinPropane
cbb6f137fd
NEO-105: Address code review findings for encounter completion.
...
Add apply-phase rollback test, E9.M1 deny hook comment, inventory
reason passthrough, and tighten idempotent replay assertions.
2026-05-31 17:02:32 -04:00
VinPropane
009fedf65e
NEO-105: Document encounter completion grants and update E5.M3 docs.
2026-05-31 16:57:54 -04:00
VinPropane
0cf82b9c0a
NEO-105: Add encounter completion operations and inventory grants.
...
TryCompleteAndGrant applies reward-table fixed grants with pre-flight
simulate, compensating rollback, and idempotent completion marking.
Returns EncounterCompleteEvent payload for NEO-107 persistence.
2026-05-31 16:57:53 -04:00
VinPropane
0289930897
NEO-104: Use subset check for all-targets-defeated predicate.
...
Matches documented semantics; extra defeated ids via direct store
calls no longer block completion readiness (Bugbot PR #143 ).
2026-05-31 16:44:48 -04:00
VinPropane
91f74b7d6e
NEO-104: Address code review findings for encounter stores.
...
Normalize encounter ids in IsAllRequiredTargetsDefeated, document TryActivate
completion gating, lock IsCompleted reads, add operations tests, and update
plan and review doc.
2026-05-31 16:37:22 -04:00
VinPropane
aaccbbbcaf
NEO-104: Add encounter progress and completion stores.
...
In-memory IEncounterProgressStore and IEncounterCompletionStore with
EncounterProgressOperations for activation, defeat tracking, and
all-targets-defeated checks; unit tests and docs.
2026-05-31 16:18:56 -04:00
VinPropane
e4e75f5dc7
NEO-103: Address code review follow-ups.
...
Mark E5M3-04 landed in module Summary, assert fixedGrants order in
C# test, add Bruno ordinal comment, strike through review items.
2026-05-31 15:43:37 -04:00
VinPropane
935e8d5f16
NEO-103: Document encounter-definitions route and mark E5M3-04 landed.
...
Update server README, module snapshot, alignment register, backlog,
and implementation plan reconciliation.
2026-05-31 15:40:12 -04:00
VinPropane
9b48ec5f39
NEO-103: Add GET /game/world/encounter-definitions API.
...
Expose schema v1 encounter list with nested completionCriteria and
rewardTable summary via encounter and reward-table registries.
2026-05-31 15:40:12 -04:00
VinPropane
5229c17598
NEO-102: address code review — sync module register + README id lookup note
2026-05-31 00:40:37 -04:00
VinPropane
734876cde9
NEO-102: add encounter and reward-table definition registries + DI
...
Thin IEncounterDefinitionRegistry / IRewardTableDefinitionRegistry adapters
over NEO-101 catalogs with TryNormalizeKnown, DI registration, and 18 AAA tests.
2026-05-31 00:38:38 -04:00
VinPropane
21749e7977
NEO-101: Address code review — schema tests, module snapshot, host boot.
...
Adds row-level JsonSchema violation tests for both loaders, symmetric empty reward-tables host boot test, and E5.M3 implementation snapshot; review doc marked Done.
2026-05-31 00:08:41 -04:00
VinPropane
f921095fb0
NEO-101: Fail-fast encounter and reward-table catalog load at startup.
...
Adds Game/Encounters loaders mirroring validate_content.py E5M3 gates, DI registration with reward-tables-before-encounters load order, 19 AAA tests, and server README catalog sections.
2026-05-31 00:05:57 -04:00
VinPropane
d7c3ede5a7
chore: Epic 5 stable slice anchors and doc cluster alignment
...
Add explicit HTML slice anchors to epic_05, restore deep links across E5
backlogs and plans, fix E5M2 NEO-98 resolve vocabulary and E5.M3 Linear row,
and record review follow-up as Done.
2026-05-30 19:25:56 -04:00