The 0.10 spec is the project owner's requirements document, not a place
for an implementer's verification narrative. Move the per-criterion
evidence added for the ten ticked boxes into the implementation notes
as a new section 8, leaving the spec's Acceptance Criteria section as
just the ten checkboxes. While moving it, make explicit that criterion
2's evidence (server-authoritative travel timing) is inference over a
generic TravelService test plus this connection's seed values, not a
test exercising the Burned Road to Watchpost leg directly.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Fixed five prettier/prettier formatting errors in the three spec files
Slice 0.10 wrote or edited (world-discovery.service.spec.ts,
local-location-interaction.spec.ts, vertical-slice.seed.spec.ts).
Scoped by hand to just those locations so the pre-existing errors
elsewhere in the workspace, unrelated to this slice, are left alone.
Also corrects the implementation notes, which previously understated
the lint state as entirely pre-existing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The hand-made captain icon was copied verbatim at its 1254x1254 authoring
resolution instead of being scaled down, shipping an 80x heavier PNG under
a -128 filename to every hunt card and combat surface showing the Captain.
Resize it to 128x128 like its siblings while keeping the authored
composition; also stop the loop from writing a throwaway cropped icon for
that key before the hand-made one overwrites it.
getCurrentLocation was calling isTravelAllowed per connection, re-querying
the character's discovered locations once per gated exit. Extract the
gating rule into a pure, synchronous WorldDiscoveryService.isRouteOpen so
the map filter can load the discovery set once and filter in memory, while
isTravelAllowed (TravelService's entry point) keeps its exact signature and
behaviour by delegating to the same rule. Also pins that discoversLocationKey
never reaches the client payload.
Thirteen TDD tasks from the approved design: schema, the guard and
enrage combat abilities, the discovery service and its two enforcement
points, the seed content, the derived artwork, and the two frontend
surfaces. Each task carries its own failing test, the code to make it
pass and a commit.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012NjEPjZ8R8e9c23z3vR8bt
Records the seven decisions taken while brainstorming the slice: a
per-character discovery table gating the Ash Pit route, a stub Ash Pit
so the route has a real target, guard and enrage as content-driven
combat abilities, a POI rather than a quest as the investigation, two
new trade goods above the Burned Road tier, a dedicated
WorldDiscoveryService, and the deliberate crossing of the two raider
artwork files so each enemy matches its role.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012NjEPjZ8R8e9c23z3vR8bt
Commit 9391645 lowered the three common guaranteed trade goods from a certain
drop to 60% and left the rare Charred Raider Insignia at 100%, but the seed
test kept asserting 1.0000 for all four and has been failing since.
Asserts the real per-item value instead of one shared constant, so the next
retune fails on the number that actually changed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
master turned the gate watch into painted scenery with its own portrait and
result image; Slice 0.9 turns that same hotspot into a real NPC. Kept the
NPC doorway and dropped the result text and image with it -- a hotspot
carries one or the other, never both.
The warden now uses master's `graufurt-gate-watch.png` instead of the raw
copy this branch added: same figure, already optimized. Borin keeps master's
optimized portrait for the same reason.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Adds a hint to the second pelt hunt: the Hide Bag holds five of any hide,
so Tough Hides can crowd out the fifth pelt with no way forward shown.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The demo character no longer starts with a free Basic Hide Bag: the
bagless HIDE capacity of 1 is what the quest chain exists to teach.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>