# 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.