diff --git a/docs/research/2026-08-10-settings-track-handoff.md b/docs/research/2026-08-10-settings-track-handoff.md index 80966b4b..b4152fc9 100644 --- a/docs/research/2026-08-10-settings-track-handoff.md +++ b/docs/research/2026-08-10-settings-track-handoff.md @@ -141,6 +141,23 @@ plausibly video/audio/mouse). subsystems don't exist yet (chess rank...) — the implement-vs-store split per row. +8. **Headless bot settings (user-directed 2026-08-10):** character + options must be settable by bots too. DESIGN CONSTRAINT for the plan: + the option map (option -> CharacterOptions1/2 bit or PlayerModule + property -> wire) is RUNTIME-owned, exposed as a typed set-option + command on the shared IGameRuntimeCommands surface; the graphical + Options panel and the headless host are BOTH consumers of that one + seam (CH3's hear-chat toggles are the proven precedent). The headless + session config (K1 strict versioned JSON) gains an optional + `characterOptions` block of declared desired values; at login, after + the PlayerDescription seeds actual state, the host DIFFS declared vs + actual and sends only changes through the shared command path + (0x0005 per change or one 0x01A1 blob) — idempotent on reconnect. + Presentation-only settings (opacity/audio/quality) stay graphical-only; + the strict schema keeps them out of bot config by construction. + Research: verify which options a bot can meaningfully hold and whether + ACE rejects any option change from a logged-in session. + ## Process (binding, from Campaign CH's five gate rounds) - Model split: Opus research lanes → Fable (main loop) plans →