# Manual QA — NEO-141 (faction telemetry hook sites) Reference: [implementation plan](../plans/NEO-141-implementation-plan.md), [NEO-136 implementation plan](../plans/NEO-136-implementation-plan.md) (reputation ops), [NEO-137 implementation plan](../plans/NEO-137-implementation-plan.md) (gate ops). ## 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**; faction standing, gate eval, and reward delivery behavior match NEO-136/137/138. ## Code review check - [ ] Open `server/NeonSprawl.Server/Game/Factions/ReputationOperations.cs`. - [ ] Confirm **`reputation_delta`** comment block immediately after **`auditStore.TryAppend`** returns **`true`**. - [ ] Confirm **`TODO(E9.M1)`** markers and planned payload fields; **no** new `ILogger` or metrics calls. - [ ] Open `server/NeonSprawl.Server/Game/Factions/FactionGateOperations.cs`. - [ ] Confirm **`faction_gate_blocked`** comment on standing read-failure deny and threshold deny branches. - [ ] Confirm **no** duplicate hook comments in **`QuestStateOperations`**, **`QuestAcceptApi`**, **`FactionStandingApi`**, or **`RewardRouterOperations`** for these event names. - [ ] Open [server README — Faction telemetry hooks (NEO-141)](../../server/README.md#faction-telemetry-hooks-neo-141) — NEO-141 subsection present with event table. - [ ] Open [server README — Reward telemetry hooks (NEO-130)](../../server/README.md#reward-telemetry-hooks-neo-130) — **`reputation_delta`** stub row removed; cross-link to NEO-141 present. ## Regression (optional) ```bash cd server && dotnet test NeonSprawl.sln ``` Expect all tests pass (comments-only change). ## Bruno (optional sanity) From `bruno/neon-sprawl-server/` against a running server: - **Accept grid contract faction gate deny** — **`faction_gate_blocked`** deny unchanged. - **Accept grid contract after operator chain** — rep grant + accept success unchanged.