A 5e storytelling engine with an LLM DM

Bind the character on stage and inject their sheet master

The campaign learns what a character is: a directory under characters/ with an entry.md in it. take_stage appends the exact line [[characters/<slug>]] takes the stage. to the campaign log, on_stage scans the log backwards for the last such line, and log_character_event appends to the character's own day-partitioned log/ through the same day_file plumbing as the campaign log. The line format lives in one module and is a contract: /play and the sheet tool will write it, the engine reads it. The Dm resolves who is on stage fresh every turn, one character by being the only one, several by the record, none by an unbound session, so the first character rolled mid-session binds on the next turn. The prompt gains a section after the clock carrying the sheet read fresh from disk each turn, frontmatter as written and prose after it, so a hand edit in vim reaches the next turn. Steps 1 and 2 of plan 0014. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvctyUUkzw7PcNrjCGG6dF