mono.run_enrollment for enrollees, and staff through the run).target_kind = operator). Staff use the Messages console to write to one person (direct), a whole group (cohort with target_cohort_id), or everyone in the run (everyone).message row is written with its run_id and sender_id, and one message_recipient row per person who should see it, each carrying its own read_at. This channel is deliberately out-of-band: it is not part of the conversation the models see, it is never graded, and it produces no chat_round. Talking to an enrollee can never quietly alter their condition. A null read_at is how staff see who has not read an announcement.message, message_recipient| If… | Then… |
|---|---|
| Staff watching an enrollee want to change the nudge or model set-up of the live run | Not possible: those definitions are locked (RESTRICT) while any run references them. Watching allows observing and operating — pause, withdraw, message — and nothing more. |
| A group message is sent, and someone is added to the group afterwards | They do not receive it: recipients are resolved from cohort_member at send time. |
| The run is purged | Its messages go with it, because message.run_id is set. |
message rows exist with target_kind operator and everyone, recipients are materialized, and no chat_round was created.Sometimes an enrollee needs to say something to a human: the task is unclear, something broke, or they want out. That is what this channel is for.
The important part is what it is not. It sits completely outside the experiment. Nothing said here is fed to the AI, nothing is scored, and nothing about it changes the conditions the enrollee is being tested under. Staff can watch a session and talk to the person in it, but they cannot reach in and change the study while it runs, which would silently invalidate the data.
Staff can write to one person, to a whole group, or to everyone in a run, and can see who has actually read it.
message + message_recipient are entirely separate from chat_round — that separation is what keeps the channel out-of-band.