What Gets Checked
Context informs the check. It is never scored. Every Policy result and Metric describes the Event it belongs to, even when an earlier Event in the same conversation violates a Policy.
Grouping Events into a Conversation
White Circle builds context from Events that share an identifier. Useexternal_session_id for conversations that outlive a single run.
When an Event has both,
external_session_id selects the context and run_id is used only for grouping.
If you omit run_id, White Circle generates one. A generated run_id is unique to that request, so those Events get no previous context.
1
First Event
Send an Event with an
external_session_id:2
Later Event
Send the next Event with the same
external_session_id. It does not have to be a message; here a tool returns the stored record:3
Third Event
A later message is checked against everything before it:
4
What the Model Sees
White Circle checks The tool output enters the conversation with the
evt_user_002 against all three Events:tool role, and agent.instructions would enter as system. The result belongs to evt_user_002 alone.Context in a Batch
Events in aPOST /api/events batch become context for the Events after them, in the order you list them in the events array.
A batch can mix Event types, and each one becomes context for those after it:
Array order defines context, not arrival order. White Circle checks a batch concurrently, and no Event is ever checked against an Event listed after it.
