fix: playtest bugs #1/#3/#6/#12/#20/#25#296
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan
cargo build -p sidequest-serverclean🤖 Generated with Claude Code