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

3.3 KiB

NEO-142 — Manual QA checklist

Field Value
Key NEO-142
Title E7M3-10: Client faction standing + gate feedback HUD (Godot)
Linear https://linear.app/neon-sprawl/issue/NEO-142/e7m3-10-client-faction-standing-gate-feedback-hud-godot
Plan docs/plans/NEO-142-implementation-plan.md
Branch NEO-142-client-faction-standing-gate-hud

Preconditions

  • Fresh dev player: stop any running server, then start a new instance so quest progress, faction standing, and reward delivery reset.
  • No Bruno/curl for this checklist — use Godot gameplay only.
  • NEO-139 GET /game/players/{id}/faction-standing and NEO-140 quest HTTP rep/gate projections landed on main.
  • NEO-122 quest HUD + NEO-131 reward HUD landed on main.

Expected HUD progression

After FactionStandingLabel QuestAcceptFeedbackLabel
Boot Grid Operators: 0, Rust Collective: 0 idle accept hint
Operator chain completes Grid Operators: 15 unchanged
Accept grid contract before rep (after chain complete, standing still 0) still 0 until chain rep lands readable gate deny with required standing
Accept grid contract at standing 15 unchanged accept succeeds

Checklist

  1. Start server: cd server/NeonSprawl.Server && dotnet run.
  2. Run Godot main scene (F5). Confirm FactionStandingLabel appears below QuestRewardDeliveryLabel with both factions at 0.
  3. Follow NEO-123 through prototype_quest_operator_chain completion (or use the operator-chain segment from NEO-131 step 6).
  4. Verify FactionStandingLabel updates to Grid Operators: 15 (Rust Collective still 0) — may lag QuestRewardDeliveryLabel rep line by one faction-standing GET round-trip; confirm both within a moment after operator-chain completion.
  5. Verify QuestRewardDeliveryLabel on operator-chain completion includes Grid Operators +15 rep (alongside item/skill lines when present).
  6. Verify readable faction_gate_blocked copy via GdUnit (client/test/faction_standing_hud_test.gd) — normal Godot gameplay completes operator chain with +15 rep atomically, so live accept of prototype_quest_grid_contract succeeds at standing 15 rather than denying. Optional server dev setup: POST …/__dev/quest-fixture with completedQuestIds: [prototype_quest_operator_chain] and faction reset (see Bruno seq 10) then attempt grid-contract accept in Godot — expect Grid Operators standing 15 required (have 0) on QuestAcceptFeedbackLabel.
  7. Accept prototype_quest_grid_contract when Grid Operators: 15. Verify accept succeeds.
  8. Optional: stop server while Godot running; confirm FactionStandingLabel shows error — … while quest labels keep NEO-122 sync error behavior.

Regression spot-check

  • NEO-122 — quest progress + accept HUD unchanged except new label below reward label.
  • NEO-131 — reward label transition-only behavior unchanged except rep grant lines.

Full-flow capstone: NEO-143 extends NEO-132 with end-to-end Slice 3 faction reputation verification (operator chain +15 → grid contract +10 → idempotency). Gate deny remains component QA here (step 6).