docs: record the Slice 0.10 watchpost implementation and its deviations
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -226,16 +226,85 @@ Graufurt
|
||||
|
||||
## 12. Acceptance Criteria
|
||||
|
||||
- [ ] Abandoned Watchpost exists as a full playable location.
|
||||
- [ ] Travel from Burned Road works with server-authoritative timing.
|
||||
- [ ] Location has a stronger, distinct encounter pool.
|
||||
- [ ] At least one stronger enemy combines previously learned mechanics.
|
||||
- [ ] Both HIDE and RAIDER_TROPHY carrying systems matter.
|
||||
- [ ] Tier-1 equipment progression is meaningfully improved here.
|
||||
- [ ] Story/investigation points toward the Ash Pit.
|
||||
- [ ] Ash Pit route can be discovered without a level gate.
|
||||
- [ ] Existing merchant/reputation loop continues to work.
|
||||
- [ ] All player-facing content is English.
|
||||
- [x] Abandoned Watchpost exists as a full playable location.
|
||||
- [x] Travel from Burned Road works with server-authoritative timing.
|
||||
- [x] Location has a stronger, distinct encounter pool.
|
||||
- [x] At least one stronger enemy combines previously learned mechanics.
|
||||
- [x] Both HIDE and RAIDER_TROPHY carrying systems matter.
|
||||
- [x] Tier-1 equipment progression is meaningfully improved here.
|
||||
- [x] Story/investigation points toward the Ash Pit.
|
||||
- [x] Ash Pit route can be discovered without a level gate.
|
||||
- [x] Existing merchant/reputation loop continues to work.
|
||||
- [x] All player-facing content is English.
|
||||
|
||||
### Verification status
|
||||
|
||||
Every criterion above is supported by evidence from the automated test suite,
|
||||
the build, or the seeded content itself — no criterion here needed the
|
||||
running app to confirm structurally:
|
||||
|
||||
1. **Full playable location** — seeded as an `OUTPOST` with four points of
|
||||
interest (hunt, investigate, search, map-out) and its own encounter pool
|
||||
(`vertical-slice.seed.spec.ts`: "seeds the watchpost as a huntable
|
||||
outpost"); local content in `local-location.content.ts`.
|
||||
2. **Server-authoritative travel** — the Burned Road ↔ Watchpost connection
|
||||
is seeded both ways at 15 s / 10 % ambush (`"connects the burned road and
|
||||
the watchpost both ways without a gate"`); `TravelService` computes
|
||||
`arrivesAt` server-side and is covered generically by
|
||||
`travel.service.spec.ts`.
|
||||
3. **Stronger, distinct pool** — `"gives the watchpost its own encounter
|
||||
pool"` seeds exactly Road Bandit, Raider Scout, Raider Veteran, Burned
|
||||
Hound and the rare Raider Captain; `"marks only the captain as a rare
|
||||
encounter"` confirms the rarity split.
|
||||
4. **An enemy combining learned mechanics** — the Raider Veteran carries both
|
||||
`telegraph` (existing, from the Burned Road) and the new `guard`
|
||||
(`"arms the veteran with a telegraph and a guard on different
|
||||
cadences"`); the priority between them is covered in
|
||||
`combat-engine.service.spec.ts`.
|
||||
5. **Both bag categories matter** — Scorched Hide is seeded `HIDE`, Raider
|
||||
Warband Mark is seeded `RAIDER_TROPHY`
|
||||
(`vertical-slice.seed.spec.ts`), and both categories were already
|
||||
load-bearing bag mechanics before this slice (Slice 0.7.5/0.9).
|
||||
6. **Tier-1 equipment improved** — the Raider Veteran's own loot table adds
|
||||
Plunderer Gloves, Reinforced Leather Jacket and Watchman's Leggings on top
|
||||
of the Raider Warband Mark, and the Raider Scout carries Bandit Hood at a
|
||||
raised chance (`item-content.ts`); the Road Bandit's own table (already
|
||||
present) is left untouched at the same values
|
||||
(`"leaves the road bandit loot table untouched"` pins Bandit Blade at
|
||||
`0.1800`), so the Watchpost's gear opportunities are additive, not a
|
||||
rebalance of the Burned Road.
|
||||
7. **Investigation points to the Ash Pit** — the `inspect-watchpost` hotspot
|
||||
carries the §8 clue text verbatim and `discoversLocationKey: 'ash-pit'`
|
||||
(`"points the watchpost investigation at the ash pit"`).
|
||||
8. **Ash Pit discoverable without a level gate** — the gate is
|
||||
`requiresDiscovery`, not `minRecommendedLevel`; `WorldDiscoveryService`
|
||||
contains no level check at all. Covered end to end: the hotspot writes the
|
||||
discovery (`local-location-interaction.spec.ts`: `"discovers the route the
|
||||
hotspot points at"`), the map hides/reveals it
|
||||
(`world.service.spec.ts`: `"hides a gated connection until the character
|
||||
has discovered it"` / `"shows a gated connection once it has been
|
||||
discovered"`), and travel itself refuses/allows it
|
||||
(`world-discovery.service.spec.ts` and `travel.service.spec.ts`, both:
|
||||
`"refuses a gated route the character has not discovered"` /
|
||||
`"allows a gated route once it has been discovered"`).
|
||||
9. **Merchant/reputation loop continues** — both new trade goods have
|
||||
exchange rules paying Silver and regional reputation, and pay more than
|
||||
their Burned Road equivalents (`"lets Borin buy both watchpost trade
|
||||
goods"`, `"pays more for watchpost goods than for road goods"`). No new
|
||||
code path grants Silver, reputation or Renown directly from a kill; the
|
||||
pack-wide rule (README.md) that only the exchange grants those was already
|
||||
enforced before this slice and nothing in Slice 0.10 bypasses it.
|
||||
10. **English content** — every string seeded for the Watchpost and Ash Pit
|
||||
(descriptions, hotspot titles and result text, monster flavour text) was
|
||||
read during this review and is English.
|
||||
|
||||
What this status does **not** cover, because it cannot be produced by static
|
||||
evidence: actually applying migration `1798000000000` to a real PostgreSQL
|
||||
database, confirming the second `db:seed` run is idempotent against real
|
||||
constraints, and a hand-played pass through the loop in a browser. Those are
|
||||
listed precisely in the implementation notes
|
||||
(`0.10-Abandoned-Watchpost-implementation-notes.md`, §7) as outstanding work
|
||||
for the project owner.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user