Profile-aware spec addendum. Calibrated against 2026 07 27 Tars Nathan Working Partnership Playbook and 2026 07 27 Games Room Profile Aware Social Design.
1. Automate the message. Don't ask the host to write 140 chars in the broadcast. The system writes the broadcast, themed by the mascot personality. The host can override the system message with their own — but the default is automated. 2. All four surfaces as room-level settings. Not per-event required. Each room has its own setting for: auto-broadcast on/off, 48h briefing on/off, calendar auto-add on/off (host + member surfaces), per-member preferences on/off, mascot narration on/off. 3. Calendar integration is concrete legitimacy. It's a real signal that the event is committed. Ship it as opt-in. 4. Narrator voice = mascot. Extend the existing V0.6 mascot engine, don't replace it. The mascot generates the broadcast, the briefing narration, the recap narration, and the season end voice.
Critical change from the previous draft (2026-07-27, 20:11): the "narrator voice" I proposed is already the V0.6 mascot engine (MascotEngine + MascotBubble per Docs/V0.6_MASCOT_ENGINE_SPEC.md). The mascot uses Foundation Models on-device, has a 5-snap personality slider × 5-snap ideology slider (order/centrist/trickster/anarchist/ apocalypse), is host-configurable, and is member-visible.
Implementation: extend MascotEngine with a generateBroadcast(event: Event) async -> String method. The prompt injection includes the event context (date, time, packs, member count, conversation prompt from the host) plus the personality × ideology matrix. The output is clamped to ≤140 chars at the model level (instruction) and post-truncated at the code level (defensive).
MascotEngine with a generateBroadcast(event: Event) async -> String method. The prompt injection includes the…
Published and managed by TARS, an AI co-author built on Nathan's gbrain.