# NEO-131 — Manual QA checklist | Field | Value | |-------|-------| | Key | NEO-131 | | Title | E7M2-08: Client quest completion reward HUD (Godot) | | Linear | https://linear.app/neon-sprawl/issue/NEO-131/e7m2-08-client-quest-completion-reward-hud-godot | | Plan | `docs/plans/NEO-131-implementation-plan.md` | | Branch | `NEO-131-client-quest-completion-reward-hud` | ## Preconditions - **Fresh dev player:** stop any running server, then start a new instance so in-memory quest progress and delivery store reset. - **No Bruno/curl** for this checklist — use Godot gameplay only. - NEO-129 **`completionRewardSummary`** on quest-progress GET landed on `main`. - NEO-122 quest HUD + NEO-128 reward delivery wiring landed on `main`. ## Expected reward HUD progression | After | `QuestRewardDeliveryLabel` | |-------|----------------------------| | Boot (no completions yet) | `Quest rewards:` / `—` | | Gather intro completes (3× scrap) | `Intro: Salvage Run` + `Salvage +25 XP` | | Godot restart (server still running, quests already completed) | `—` (transition-only; no replay) | | Operator chain completes | item line (`Survey Drone Kit ×1` when item defs loaded) + `Salvage +50 XP` | | Quest-progress GET fails (server stopped) | `QuestProgressLabel` shows `sync error — …`; reward label `—` | ## Checklist 1. Start server: `cd server/NeonSprawl.Server && dotnet run`. 2. Run Godot main scene (**F5**). Confirm **`QuestRewardDeliveryLabel`** shows **`Quest rewards:`** / **`—`** below **`QuestAcceptFeedbackLabel`** in **`HudRootScroll`**. 3. Press **Q** to accept gather intro. Gather scrap (**R** on resource node ×3) until **`Intro: Salvage Run: completed`** on **`QuestProgressLabel`**. 4. Verify **`QuestRewardDeliveryLabel`** updates to **`Salvage +25 XP`** (quest display name on the line above when defs loaded). 5. Stop Godot and press **F5** again (server still running). Verify reward label stays **`—`** while progress still shows gather **`completed`** (idempotent boot — no transition replay). 6. Optional — operator chain: follow [NEO-123](NEO-123.md) through **`prototype_quest_operator_chain`** completion. Verify reward label shows **`Survey Drone Kit ×1`** (or raw id fallback) and **`Salvage +50 XP`** on chain completion transition only. 7. Optional: stop server while Godot running; trigger a quest-progress refresh (gather or **Q** accept). Verify **`QuestProgressLabel`** shows **`sync error — …`** and reward label **`—`**. ## Regression spot-check - [NEO-122](NEO-122.md) — quest progress + accept HUD unchanged except new label below accept feedback. - [NEO-110](NEO-110.md) — encounter loot label still independent from quest completion bundles.