feat(think): per-sensor segment change-detection in shadow mode master
Add a deterministic, per-sensor change-detection layer that computes, persists, and logs an idle/redundant/active classification per segment, keyed by sensor name (screen, transcript). Shadow mode only — the dispatched-talent set is unchanged. Observe: VideoProcessor now retains the first and last qualified-frame dHash plus the qualified-frame count and writes them per monitor into the percept .jsonl metadata header (no second decode). Think: new read-only solstone/think/change_detection.py assembles a per-segment SensorState, resolves the chronological same-stream predecessor via iter_segments (never last_segment_key/activity_state), compares per sensor against the predecessor's persisted state, and classifies. sense_splitter persists talents/change.json (new L2-owned sibling file) and the vestigial density.json transcript_lines/screen_frames fields are dropped. run_segment_sense gains a predecessor parameter threaded from both main() call sites; classification computes for every segment (including LLM-idle) before the idle early-return and emits a sense.change_detect structured-log event. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>