Guest–Host Messaging · Documentation

Architecture

Guest–Host Messaging's pipeline, its owned data, the events it emits/consumes, and what is out of scope.

Guest–Host Messaging
threadcontexttranslatemeteredsmart-replymeteredsendor ticketmetered · LLMdeterministic · $0
Live diagram — two metered stages (smart-reply + translate); send and convert-to-ticket are deterministic.
thread$0$translatemetered$smart-replymeteredsend$0COST LEVER · draft + translate on demand
Live diagram — spend accrues only when the host asks for a draft or a translation.

Owned data + shared-core reads

Messaging reads shared-core `booking`, `guest`, and `partner` (host), and writes the C2-owned `conversation` / `message` (guest-host kind), a `ticket` on convert, and `cost_ledger` rows for the metered stages. The data invariant holds: an owner's send + translation are canonical (durable mirror), while a viewer's smart-reply and translation are ephemeral (a credential-tagged cost row that resets; translation display-only). Guests act only within their own threads.

Metered AI + out of scope

Two metered stages — `smart-reply` (shared with #16) and `translate` — both dual-mode by design (Cloud `claude-haiku-4-5`, cost-capped/fail-closed / OSS recorded $0 on local hardware; translate records an OSS NLLB-class model, smart-reply an OSS chat model). Both run OSS-only and are honestly labelled simulated — a deterministic draft and a bracketed "(simulated translation)" output — each writing a cost row. Out of scope and labelled: translation and message delivery are in-app only. Cost, mode, and trace are inspector-only.

Architecture · Guest–Host Messaging · Abhishek Saxena