Behavioral Observatory labels persist through
public.eval_behavioral_labels. The current narrow contract stores one label per reviewer per run item and assumes the reviewer is the signed-in owner/user for this privileged label surface.Status
Table
Behavioral Observatory labels are stored in:Key fields
The table stores:Label values
Currentintent values:
guest_affect values:
response_strategy values:
humanness range:
status values:
One-label rule
There is one label per reviewer per run item. The current uniqueness rule is:RLS assumptions
Current RLS uses the Clerk JWT subject:Current limitation
The current persistence model is good for owner/user-owned run labeling on the privileged Behavioral Observatory surface. It is not yet sufficient for a future workflow where:Saved / unsaved / error states
The UI should preserve these truth states:derived: suggested from existing run/review context, not savedunsaved: reviewer changed values but did not savesaving: save is in progresssaved: Supabase confirmed the labelerror: save/load failed
saved should be treated as persisted Behavioral Observatory label data.
SQL workflow
Canonical migrations live in:scripts/sql exists so an operator can open SQL in Finder/CotEditor and copy/paste into the Supabase SQL Editor.
scripts/sql is not proof that a migration was applied.
After applying SQL, run the matching verify SQL and confirm the live schema, policies, and counts.
Current helper files
Apply helper:Future support
Future evaluator workflows may require:- owner/admin assignment records
- evaluator-to-owner review grants
- RLS policies that allow assigned reviewers to label owner runs
- clearer reviewer/owner separation in UI copy
- audit views for who saved which Behavioral Observatory label

