33 lines
1.3 KiB
Markdown
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.
|