NEO-140: remove server-only manual QA doc after story end
Manual QA checklists are for client-facing stories; Bruno and dotnet test cover this HTTP projection slice.pull/181/head
parent
960b4900d0
commit
ef75111b2a
|
|
@ -1,40 +0,0 @@
|
||||||
# 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)](https://linear.app/neon-sprawl/issue/NEO-142/e7m3-10-client-faction-standing-gate-feedback-hud-godot) — this story is server HTTP projection only.
|
|
||||||
|
|
@ -63,9 +63,7 @@ Client can see gate requirements and completion rep summary without local math.
|
||||||
- **Quest progress GET:** `QuestProgressApi.MapCompletionRewardSummary` maps `RewardDeliveryEvent.GrantedReputation` → `reputationGrants` (`QuestReputationGrantJson`: `factionId`, `amount`); required array when summary present.
|
- **Quest progress GET:** `QuestProgressApi.MapCompletionRewardSummary` maps `RewardDeliveryEvent.GrantedReputation` → `reputationGrants` (`QuestReputationGrantJson`: `factionId`, `amount`); required array when summary present.
|
||||||
- **Accept POST:** inherits updated mapper via `QuestProgressApi.MapQuestProgressRow` — no accept-specific changes.
|
- **Accept POST:** inherits updated mapper via `QuestProgressApi.MapQuestProgressRow` — no accept-specific changes.
|
||||||
- **Tests:** `QuestDefinitionsWorldApiTests` grid-contract gate row + wire-level `factionGateRules` omission; `QuestProgressApiTests` operator-chain +15 rep, grid-contract +10 rep, gather-intro empty rep; **823** tests green.
|
- **Tests:** `QuestDefinitionsWorldApiTests` grid-contract gate row + wire-level `factionGateRules` omission; `QuestProgressApiTests` operator-chain +15 rep, grid-contract +10 rep, gather-intro empty rep; **823** tests green.
|
||||||
- **Bruno:** extended `Get quest definitions.bru`; new `Get quest progress after operator chain complete.bru`; gather-intro bru asserts empty `reputationGrants`.
|
- **Manual QA:** none — server-only HTTP projections; Bruno + `dotnet test` cover verification (manual QA checklists reserved for client-facing stories per project convention).
|
||||||
- **Docs:** `server/README.md` quest-definitions + quest-progress sections; E7.M3 module + alignment register updated.
|
|
||||||
- **Manual QA:** [`docs/manual-qa/NEO-140.md`](../manual-qa/NEO-140.md).
|
|
||||||
|
|
||||||
## Technical approach
|
## Technical approach
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ This branch lands **E7M3-08**: additive HTTP projections so clients can read fac
|
||||||
| `docs/decomposition/modules/E7_M3_FactionReputationLedger.md` | **Matches** — Status line notes E7M3-08 landed (NEO-140). |
|
| `docs/decomposition/modules/E7_M3_FactionReputationLedger.md` | **Matches** — Status line notes E7M3-08 landed (NEO-140). |
|
||||||
| `docs/decomposition/modules/documentation_and_implementation_alignment.md` | **Matches** — E7.M3 row updated with quest HTTP projection links. |
|
| `docs/decomposition/modules/documentation_and_implementation_alignment.md` | **Matches** — E7.M3 row updated with quest HTTP projection links. |
|
||||||
| `docs/decomposition/modules/module_dependency_register.md` | **N/A change** — no register row edit required beyond module doc / alignment table. |
|
| `docs/decomposition/modules/module_dependency_register.md` | **N/A change** — no register row edit required beyond module doc / alignment table. |
|
||||||
| `docs/manual-qa/NEO-140.md` | **Matches** — Bruno + curl checklist covers gate rules and rep summary assertions. |
|
| `docs/manual-qa/NEO-140.md` | **Removed post-merge** — server-only story; manual QA reserved for client-facing work (story-end decision). |
|
||||||
| `server/README.md` | **Matches** — Quest-definitions and quest-progress sections document new fields with NEO-140 cross-links. |
|
| `server/README.md` | **Matches** — Quest-definitions and quest-progress sections document new fields with NEO-140 cross-links. |
|
||||||
|
|
||||||
## Blocking issues
|
## Blocking issues
|
||||||
|
|
@ -48,7 +48,7 @@ None.
|
||||||
cd /Users/don/neon-sprawl && dotnet test NeonSprawl.sln
|
cd /Users/don/neon-sprawl && dotnet test NeonSprawl.sln
|
||||||
```
|
```
|
||||||
|
|
||||||
Manual (see `docs/manual-qa/NEO-140.md`):
|
Manual (Bruno — no separate manual QA doc for this server-only story):
|
||||||
|
|
||||||
- `cd server/NeonSprawl.Server && dotnet run`
|
- `cd server/NeonSprawl.Server && dotnet run`
|
||||||
- Bruno: `quest-definitions/Get quest definitions`
|
- Bruno: `quest-definitions/Get quest definitions`
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue