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

41 lines
2.4 KiB
Markdown

# NEO-140 — Manual QA checklist
| Field | Value |
|-------|-------|
| Key | NEO-140 |
| Title | E7M3-08: Extend quest HTTP projections for rep + gates |
| Linear | https://linear.app/neon-sprawl/issue/NEO-140/e7m3-08-extend-quest-http-projections-for-rep-gates |
| Plan | `docs/plans/NEO-140-implementation-plan.md` |
| Branch | `NEO-140-e7m3-quest-http-rep-gate-projections` |
## Preconditions
- Server running: `cd server/NeonSprawl.Server && dotnet run` (in-memory dev player `dev-local-1`).
- Bruno collection `bruno/neon-sprawl-server` loaded with `baseUrl` = `http://localhost:5253`, `playerId` = `dev-local-1`.
- NEO-138 reward router rep grants and NEO-139 faction-standing GET landed on `main`.
## Setup sanity
- [ ] `curl -sS http://localhost:5253/health` returns `"status":"ok"`.
- [ ] `dotnet test NeonSprawl.sln` passes (821+ tests).
## Quest definitions — factionGateRules
- [ ] Run Bruno **`quest-definitions/Get quest definitions`**. Response **200**; `prototype_quest_grid_contract.factionGateRules` = `[{ factionId: prototype_faction_grid_operators, minStanding: 15 }]`.
- [ ] Same response: `prototype_quest_gather_intro` and `prototype_quest_operator_chain` have **no** `factionGateRules` key.
- [ ] `curl -sS http://localhost:5253/game/world/quest-definitions | jq '.quests[] | select(.id=="prototype_quest_grid_contract") | .factionGateRules'` matches the Bruno assertion.
## Quest progress — completionRewardSummary.reputationGrants
- [ ] Run Bruno **`quest-progress/Get quest progress after gather intro complete`**. Gather row `completionRewardSummary.reputationGrants` = `[]`.
- [ ] Run Bruno **`quest-progress/Get quest progress after operator chain complete`**. Operator-chain row `completionRewardSummary.reputationGrants` = `[{ factionId: prototype_faction_grid_operators, amount: 15 }]`; item and skill XP lines unchanged from NEO-129 freeze.
- [ ] Second GET in the operator-chain bru matches the first (idempotent summary).
## No regressions
- [ ] Bruno **`faction-standing/Get faction standing after operator chain`** still shows Grid Operators standing **15** after operator-chain flow.
- [ ] Bruno **`quest-progress/Accept grid contract after operator chain`** still accepts grid contract when rep gate met.
- [ ] NEO-129 gather-intro **`completionRewardSummary`** shape unchanged except new empty **`reputationGrants`** array.
**Client HUD verification** deferred to [NEO-142](NEO-142.md) — this story is server HTTP projection only.