CHANNEL_PROMPT tells the model: "separate short thoughts with a blank line — each block is delivered as its own bubble." But send_to_contact makes exactly one send_imessage call per reply, and there's no block-splitting logic anywhere in the send path — the whole reply arrives as a single bubble.
Practical effect: models that follow the instruction literally compose multi-block replies for bubbles that never materialize, producing noticeably longer messages than intended (we observed this consistently in live traffic — one bridged model wrote 3–4 paragraph replies while a sibling bridge's model, ignoring the same line, sent one).
Suggested fix is to make the prompt match delivery — e.g. "The whole reply is delivered as a single message — blank lines do not split it. Prefer one short paragraph."
Happy to PR the one-line change if useful.
CHANNEL_PROMPTtells the model: "separate short thoughts with a blank line — each block is delivered as its own bubble." Butsend_to_contactmakes exactly onesend_imessagecall per reply, and there's no block-splitting logic anywhere in the send path — the whole reply arrives as a single bubble.Practical effect: models that follow the instruction literally compose multi-block replies for bubbles that never materialize, producing noticeably longer messages than intended (we observed this consistently in live traffic — one bridged model wrote 3–4 paragraph replies while a sibling bridge's model, ignoring the same line, sent one).
Suggested fix is to make the prompt match delivery — e.g. "The whole reply is delivered as a single message — blank lines do not split it. Prefer one short paragraph."
Happy to PR the one-line change if useful.