Skip to content

fix: playtest bugs #1/#3/#6/#12/#20/#25#296

Merged
slabgorb merged 6 commits intodevelopfrom
fix/playtest-bugs-session8
Apr 4, 2026
Merged

fix: playtest bugs #1/#3/#6/#12/#20/#25#296
slabgorb merged 6 commits intodevelopfrom
fix/playtest-bugs-session8

Conversation

@slabgorb
Copy link
Copy Markdown
Owner

@slabgorb slabgorb commented Apr 4, 2026

Summary

Test plan

  • cargo build -p sidequest-server clean
  • 14 tests passing (server + game)
  • No regressions

🤖 Generated with Claude Code

slabgorb and others added 6 commits April 4, 2026 15:31
Adds materialize_world() call for returning players on reconnect,
ensuring world_history reflects current campaign maturity as the game
progresses. Also adds OTEL world_materialization StateTransition event
for both new-player (chargen) and returning-player (reconnect) paths.

9 wiring tests: structural verification of the call and OTEL events,
plus behavioral tests for materialize_world from server context.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ScenarioState.process_between_turns() was fully implemented but never
called from the turn pipeline — NPCs appeared to act in narration but
had zero mechanical backing (Pattern 5: LLM Compensation).

Now: after prompt context build, if an active scenario exists, we call
process_between_turns() which runs gossip propagation, NPC action
selection (weighted by role + tension), and clue availability checks.
Selected actions are injected into narrator context as constraints so
the prose wraps around real decisions. OTEL events emitted for every
NPC action, gossip spread, and clue discovery — GM panel is the lie
detector.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add dedicated conlang vocabulary section to narrator prompt pipeline.
Language knowledge (morphemes and names learned during gameplay) is now
queried from the LoreStore and injected as a structured prompt section,
bypassing generic lore budget competition.

- query_all_language_knowledge(): cross-language character knowledge query
- format_language_knowledge_for_prompt(): grouped vocabulary formatter
- OTEL conlang_knowledge_injected event for GM panel verification
- Wiring test verifying end-to-end reachability
- Fix pre-existing ItemState missing field in inventory test helpers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bug #1/#3 (agency): Inject PC agency constraint every turn regardless of
multiplayer state. Explicitly list all PC names. Prohibit PC-to-PC physical
scripting. Previously only fired when other_pcs was non-empty.

Bug #6 (GM watcher): Send GameStateSnapshot for all active sessions on
watcher WebSocket connect. Previously forward-only stream with no replay —
late-connecting GM panel showed "Waiting for first turn..." indefinitely.

Bug #20 (music rotation): Increase ThemeRotator history depth from 3 to 6
and candidate pool from 3 to 5. History of 3 was too shallow for 8+ tracks
per mood, causing same-track repetition within the selection window.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
StatusCommand (which /character aliases to) only showed HP, level, class,
and location. Stats (Brawn, Reflexes, etc.) were generated during chargen
but never displayed. Now includes sorted stat grid and ability list with
genre descriptions and mechanical effects.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Previously the "PROACTIVE MUTATION NARRATION" instruction only injected
when relevance.references_ability was true (player explicitly mentions an
ability). Mutations like Psychic Static should manifest through sensory
hints even when the player doesn't invoke them. Now the proactive
instruction is always present alongside the ability list.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@slabgorb slabgorb merged commit a3b17eb into develop Apr 4, 2026
@slabgorb slabgorb deleted the fix/playtest-bugs-session8 branch April 5, 2026 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant