# Manual QA — NEO-121 (quest telemetry hook sites) Reference: [implementation plan](../plans/NEO-121-implementation-plan.md), [NEO-117 implementation plan](../plans/NEO-117-implementation-plan.md) (quest operations), [NEO-118 implementation plan](../plans/NEO-118-implementation-plan.md) (objective wiring). ## Preconditions - Run `NeonSprawl.Server` (`dotnet run` from `server/NeonSprawl.Server`; default `http://localhost:5253`) if exercising Bruno; not required for code review only. - This story adds **comments only**; quest behavior matches NEO-117/118/119/120. ## Code review check - [ ] Open `server/NeonSprawl.Server/Game/Quests/QuestStateOperations.cs`. - [ ] Confirm **`quest_start`** comment block immediately after successful **`TryActivate`** in **`TryAccept`** (before objective wiring). - [ ] Confirm **`quest_step_complete`** comment block after successful **`TryAdvanceStep`** store commit. - [ ] Confirm **`quest_complete`** comment block after first-time **`TryMarkComplete`** commit (not on idempotent **`completed`** early return). - [ ] Confirm **`quest_accept_denied`** comment in **`DenyAccept`** (used by all **`TryAccept`** deny paths). - [ ] Confirm **`TODO(E9.M1)`** markers and planned payload fields; **no** new `ILogger` or metrics calls. - [ ] Confirm **no** duplicate hook comments in **`QuestAcceptApi`**, **`QuestProgressApi`**, or **`QuestObjectiveWiring`**. - [ ] Open [server README — Quest telemetry hooks (NEO-121)](../../server/README.md#quest-telemetry-hooks-neo-121) — NEO-121 subsection present with event table. ## Regression (optional) ```bash cd server && dotnet test NeonSprawl.sln ``` Expect all tests pass (comments-only change). ## Bruno (optional sanity) From `bruno/neon-sprawl-server/quest-progress/` against a running server: - **Get quest progress default** — all quests **`not_started`** unchanged. - **Post accept gather intro** — **`accepted: true`** unchanged. - **Post accept duplicate** — **`accepted: false`**, **`reasonCode: already_active`** unchanged.