Skip to content

Make autonomous bored events grounded and Smart-only - #716

Merged
RANGROO merged 5 commits into
unstablefrom
codex/natural-bored-events
Aug 22, 2026
Merged

Make autonomous bored events grounded and Smart-only#716
RANGROO merged 5 commits into
unstablefrom
codex/natural-bored-events

Conversation

@RANGROO

@RANGROO RANGROO commented Aug 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • make Smart Bored the only autonomous NPC bored-event route
  • remove the BORED_EVENT_SERVERSIDE profile/server toggle and obsolete Regular Bored prompts
  • give Smart Bored a dedicated neutral Director system prompt and complete bored-only rules
  • make every bored route honor the active profile's BORED_EVENT probability
  • preserve the separate Narrator bored route and normal Director behavior

Root cause

Regular Bored and Smart Bored had diverged into two user-selectable paths. The built-in profile already enabled Smart, while the generic Smart flow inherited the normal Director system prompt, dramatic examples, and rules encouraging new content, plot twists, foreshadowing, and tension. Smart also redirected before the old prompt-level probability check.

Maintaining the Regular toggle left an obsolete path and duplicated prompt behavior. Appending grounded bored rules to the creative Director prompt still gave the model contradictory instructions.

Implementation

  • route every accepted non-Narrator bored event through Rolemaster unconditionally
  • remove BORED_EVENT_SERVERSIDE from config schema/sample, PHP Profiles, Prisma catalog, profile API labels, default profile metadata, and legacy metadata handling
  • remove unreachable direct bored prompt entries from English, German, Spanish, French, and Polish prompt files
  • retain BORED_EVENT as the user-controlled active-profile probability
  • use director_bored_event_system_prompt instead of director_system_prompt for Smart Bored planning
  • omit director_examples_prompt from Smart Bored requests
  • use director_bored_event_rules instead of appending them to director_instruction_rules
  • retain actor, nearby-listener, action-list, scene-note, JSON, and server-side validation contracts
  • delegate final in-character dialogue to the selected NPC's normal instruction request
  • add idempotent prompts migration 20260821003; it seeds dedicated defaults, preserves custom_prompt values, and removes obsolete profile metadata

Validation

  • PHP 8.2 lint passed for all 15 changed PHP files
  • focused PHPUnit passed: 7 tests, 32 assertions
  • conf_schema.json parsed successfully and exposes BORED_EVENT without BORED_EVENT_SERVERSIDE
  • Prisma profile catalog probe exposes BORED_EVENT without BORED_EVENT_SERVERSIDE
  • default core-profile metadata parsed successfully and no longer contains BORED_EVENT_SERVERSIDE
  • rendered the dedicated Smart Bored system/rules with actor, player, nearby-actor, and action placeholders resolved
  • repository search found no Regular Bored prompt entry and no BORED_EVENT_SERVERSIDE runtime/config reference outside its removal migration
  • git diff --check passed

Performance

Rejected bored events terminate before launching an LLM request. Accepted autonomous NPC bored events now always use the two-stage Director-to-NPC flow, so profiles that previously disabled Smart will incur the additional Director request by design. Smart Bored omits the generic Director examples and general rules, reducing its fixed prompt context; no live connector token benchmark was run. Reviewable diff: 378 changed lines across 17 source/test files.

Compatibility and parity

  • BORED_EVENT remains configurable and controls event probability
  • BORED_EVENT_SERVERSIDE is removed; existing false values are deleted by migration and no longer affect routing
  • a configured Director connector is now required for autonomous NPC bored events
  • the separate Narrator bored route remains available
  • normal Director requests retain their existing system prompt, examples, rules, and custom overrides
  • CHIM MCM timer behavior and plugin protocol are unchanged
  • StobeServer and DialecticServer retain their independent product-specific bored-event systems; no ports are included

Deployment

Not deployed. No version bump, package, promotion, or release.

Manual limits

Prompt quality has not been A/B tested with a live model or in Skyrim. The migration has not been applied to a live installation. The profile UI removal was source/catalog validated but not rendered in a deployed browser; Claude UI delegation was unavailable because local authentication had expired.

Review notes

Open PR #709 overlaps main.php and the prompt file, and #710 overlaps database/profile files. This branch starts from current origin/unstable and keeps its changes confined to bored-event routing, prompts, probability, and removal of the obsolete toggle.

@RANGROO RANGROO changed the title Ground autonomous bored dialogue Make autonomous bored events grounded and Smart-only Aug 22, 2026
@RANGROO
RANGROO marked this pull request as ready for review August 22, 2026 05:11
@RANGROO
RANGROO merged commit e997e34 into unstable Aug 22, 2026
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