# Manual QA — NEO-64 (gather telemetry hook sites)

Reference: [implementation plan](../plans/NEO-64-implementation-plan.md), [NEO-62 implementation plan](../plans/NEO-62-implementation-plan.md) (gather engine), [NEO-63 implementation plan](../plans/NEO-63-implementation-plan.md) (interact 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**; gather behavior matches NEO-62/NEO-63.

## Code review check

- [ ] Open `server/NeonSprawl.Server/Game/Gathering/GatherOperations.cs`.
- [ ] Confirm **`resource_gathered`** comment block on the successful gather path (after depletion commit, before **`GatherResult`** return).
- [ ] Confirm **`gather_node_depleted`** comment block is inside `if (remainingAfterGather == 0)` (not on pre-gather **`node_depleted`** deny).
- [ ] Confirm **`TODO(E9.M1)`** markers and planned payload fields; **no** new `ILogger` or metrics calls.
- [ ] Confirm **no** duplicate hook comments in `InteractionApi.cs`.
- [ ] Open `GatherResult.cs` — summary cross-references NEO-64 hook anchor in **`TryGather`**.
- [ ] Open [server README — Gather telemetry hooks (NEO-64)](../../server/README.md#gather-telemetry-hooks-neo-64) — NEO-64 subsection 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/interaction/` against a running server:

- **Post interact prototype resource node gather** — `allowed: true` unchanged.
- **Post interact gather then get inventory** — scrap quantity increases unchanged.
- **Post interact depleted node deny** — `allowed: false`, `reasonCode: node_depleted` unchanged.
