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

3.2 KiB
Raw Blame History

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/issue and GET …/contracts on main.
  • 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

  1. Start server: cd server/NeonSprawl.Server && dotnet run.
  2. Run Godot main scene (F5). Confirm contract labels appear in HudRootScroll below quest reward labels.
  3. Press Shift+C. Verify ContractActiveLabel shows active with prototype_combat_pocket objective id and issue feedback shows success.
  4. Defeat all three combat pocket NPCs (hotbar casts). Verify encounter completed (3/3) and contract GET refresh shows completed on ContractActiveLabel.
  5. Verify ContractRewardDeliveryLabel lists contract completion grants (scrap_metal_bulk ×5, Salvage +15 XP) after pocket clear — not on boot alone.
  6. Press Shift+C again while contract still active (before clear) or after issuing once — verify readable deny when active_contract_exists.
  7. Optional: stop server while Godot running, press Shift+C — verify Contract: error — … or Contract issue: failed — … on HUD.

Notes

  • Prototype flow is issue then clear the bound encounter. Issuing after the pocket is already cleared leaves the contract active until 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 15 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.