# rolo-brain — runtime prompt contract This document specifies the exact first-user-turn layout the model was trained on. If you are wiring `rolo-brain` into your own runtime, the assembled prompt should match this grammar; deviations move inference off the training distribution and reduce output quality. You don't need this file if you're using `ollama run` interactively — the REPL sends each line as a plain user message, and Gemma's instruction-following keeps the conversation coherent. But the state-conditioned voice the fine-tune adds (mood, energy, animation state) only activates when the prompt includes the bracketed state header described below. This contract is for developers calling `/api/chat` from code who want the full conditioned behavior. --- ## 1. The contract in one sentence There is no system role. Each inference call sends exactly one `user` message containing a bracketed state header, a blank line, and either the user's message (chat) or the literal sentinel `` (proactive speech). --- ## 2. First-user-turn grammar After Ollama applies the chat template, the prompt fed to the model is: ``` user model ``` The portion you assemble and put in `messages[0].content` is: ``` ``` Rules: - `` is required and follows the grammar in §3. - `` is omitted on the chat channel and required on the speech channel. On chat, the state block is followed immediately by the blank-line separator. - Exactly one blank line (two `\n` in a row) separates the header(s) from the message body, on both channels. - `` is the user's typed message verbatim on chat, or the literal string `` on speech (see §5). An optional `[Observation: …]` line may appear between the pet-state block and the blank-line separator on the speech channel. --- ## 3. State header vocabulary The state block has the form: ``` [Mood: | Energy: | Social: | Time: