neon-sprawl/docs/manual-qa/NEO-40.md

33 lines
1.3 KiB
Markdown

# Manual QA — NEO-40 (progression telemetry hook sites)
Reference: [implementation plan](../plans/NEO-40-implementation-plan.md), [NEO-38 manual QA](./NEO-38.md) (same server surface).
## Preconditions
- Same as NEO-38: run `NeonSprawl.Server` (`dotnet run` from `server/NeonSprawl.Server`; default `http://localhost:5253`).
- This story adds **comments only**; behavior matches NEO-38.
```bash
BASE=http://localhost:5253
ID=dev-local-1
```
## Verify API unchanged
1. **Grant** (same as NEO-38 happy path):
```bash
curl -sS -i -X POST "${BASE}/game/players/${ID}/skill-progression" \
-H "Content-Type: application/json" \
-d '{"schemaVersion":1,"skillId":"salvage","amount":10,"sourceKind":"activity"}'
```
Expect **HTTP 200**, `granted` **true**, `progression` and `levelUps` present as before.
2. **Level-up path** (optional, same as NEO-38 bonus): large grant on `intrusion` if XP crosses the curve threshold; expect `levelUps` non-empty when a boundary is crossed.
## Code review check
- Open `server/NeonSprawl.Server/Game/Skills/SkillProgressionSnapshotApi.cs` and confirm **comment blocks** mark **`xp_grant`** (after successful `TryApplyXpDelta`) and **`level_up`** (inside `nextLevel > prevLevel`), referencing **E9.M1** / no production ingest.
- Confirm there are **no** new `ILogger` or metrics calls for these events.