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

2.7 KiB

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 accepts grid contract when rep gate met and embedded row completionRewardSummary.reputationGrants = [{ factionId: prototype_faction_rust_collective, amount: 10 }].
  • NEO-129 gather-intro completionRewardSummary shape unchanged except new empty reputationGrants array.

Client HUD verification deferred to NEO-142 (Godot HUD) — this story is server HTTP projection only.