3.2 KiB
3.2 KiB
NEO-153 — Manual QA checklist
| Field | Value |
|---|---|
| Key | NEO-153 |
| Title | E7M4-10: Client contract issue + progress HUD (Godot) |
| Linear | https://linear.app/neon-sprawl/issue/NEO-153/e7m4-10-client-contract-issue-progress-hud-godot |
| Plan | docs/plans/NEO-153-implementation-plan.md |
| Branch | NEO-153-e7m4-10-client-contract-issue-progress-hud-godot |
Preconditions
- Fresh dev player: restart server so contract instance state is clean (or use dev fixture reset if a prior contract exists).
- Server deps: NEO-151
POST …/contracts/issueandGET …/contractsonmain. - No Bruno/curl for this checklist — issue and progress use Godot Shift+C and combat pocket clear only.
Expected contract HUD progression
| After | ContractActiveLabel |
ContractIssueFeedbackLabel |
ContractRewardDeliveryLabel |
|---|---|---|---|
| Boot | Contract: — |
Contract issue: — (Shift+C prototype) |
Contract rewards: — |
| Shift+C issue | Clear Combat Pocket (Repeat): active — objective prototype_combat_pocket |
Contract issue: Clear Combat Pocket (Repeat) issued |
— |
| Defeat ×3 NPCs (combat pocket) | …: completed — objective prototype_combat_pocket |
unchanged | scrap_metal_bulk ×5 + Salvage +15 XP (display names when item defs loaded) |
| Duplicate Shift+C while active | unchanged active line | Contract issue: denied — active contract already issued |
unchanged |
Checklist
- Start server:
cd server/NeonSprawl.Server && dotnet run. - Run Godot main scene (F5). Confirm contract labels appear in
HudRootScrollbelow quest reward labels. - Press Shift+C. Verify
ContractActiveLabelshowsactivewithprototype_combat_pocketobjective id and issue feedback shows success. - Defeat all three combat pocket NPCs (hotbar casts). Verify encounter
completed (3/3)and contract GET refresh showscompletedonContractActiveLabel. - Verify
ContractRewardDeliveryLabellists contract completion grants (scrap_metal_bulk ×5,Salvage +15 XP) after pocket clear — not on boot alone. - Press Shift+C again while contract still active (before clear) or after issuing once — verify readable deny when
active_contract_exists. - Optional: stop server while Godot running, press Shift+C — verify
Contract: error — …orContract issue: failed — …on HUD.
Notes
- Prototype flow is issue then clear the bound encounter. Issuing after the pocket is already cleared leaves the contract
activeuntil a future matching clear (NEO-149 v1 edge case). - Fixed seed
prototype_contract_dev_seed— repeat re-issue after complete requires NEO-154 capstone (seed rotation / fixture reset). - Encounter + quest HUD regression: NEO-110 manual QA, NEO-122 manual QA.
Acceptance
- Steps 1–5 completable in one session without Bruno/curl.
- Active contract shows encounter objective id after Shift+C issue.
- Completed contract shows reward summary line on HUD after pocket clear.