Problem
transcript.py defines operator_event (and TrialRecord.operator_judgement exists), but grep shows no framework code path ever emits/sets them — so operator_scorer() always returns False for framework-run rollouts. Operator judgement currently only works when an embodiment adapter sets termination_reason/metadata itself (as the so101/yam adapters do via their own operator loops).
(approval_event has the same gap on main today, but the review-fixes forward-port adds its emission from the rollout — this issue is about the operator loop.)
Decision needed
Design the operator-in-the-loop path: where does the framework solicit an operator verdict (end of trial? via an OperatorIO protocol?), who records operator_judgement, and how does it reach the scorer. Until then, docs should state that operator_scorer requires adapter-side support.
🤖 Generated with Claude Code
Problem
transcript.pydefinesoperator_event(andTrialRecord.operator_judgementexists), but grep shows no framework code path ever emits/sets them — sooperator_scorer()always returns False for framework-run rollouts. Operator judgement currently only works when an embodiment adapter setstermination_reason/metadata itself (as the so101/yam adapters do via their own operator loops).(
approval_eventhas the same gap on main today, but thereview-fixesforward-port adds its emission from the rollout — this issue is about the operator loop.)Decision needed
Design the operator-in-the-loop path: where does the framework solicit an operator verdict (end of trial? via an
OperatorIOprotocol?), who recordsoperator_judgement, and how does it reach the scorer. Until then, docs should state thatoperator_scorerrequires adapter-side support.🤖 Generated with Claude Code