Conversation
Implement TrendDetector using relative multi-scale windows, linear-fit scoring, coverage checks, and segment merging. Keep existing detector call sites unchanged so current channel configs continue to work with the new defaults. Future tuning can override detector parameters per dataset or per channel in mhc/constants.py.
… (Drops vs Drop back to baseline)
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 7 minutes and 43 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (11)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Add Multi-Signal Bundle Detectors and Explorer Support
♻️ Current situation & Problem
SensorTSLM previously annotated mostly single-signal patterns such as spikes, drops, trends, and a few direct semantic labels. That worked for local signal interpretation, but it missed an important layer of meaning: multiple signals often become useful only when they are interpreted together.
Examples:
inbedaloneasleepaloneThis PR adds a new bundle detection layer that looks across channels and emits higher-level co-occurrence annotations. These bundles are intended to be more useful as narrative building blocks for downstream captioning and story generation.
The PR also makes those bundles visible and searchable in the explorer, and adds data-driven analysis tooling so we can validate which signal combinations are actually useful in the dataset rather than relying only on intuition.
⚙️ Release Notes
Example bundle types now include:
awake_in_bedrestful_sleepactivity_surgesteady_cardiononstep_cardiostair_climb_burststairs_effortwatch_nonwear_context📚 Documentation
The main addition in this PR is the new bundle detection layer.
What the bundle detectors do
The bundle detectors combine multiple channels into more descriptive events.
Examples:
sleep:inbed+sleep:asleep+ low-motion context -> sleep-related bundlesThese bundles are then rendered as text annotations and can be used by downstream systems as richer semantic primitives.
Why this is useful
This makes SensorTSLM outputs:
Overlap handling
A key part of this PR is that overlapping bundles are no longer treated as equally good annotations.
Examples:
activity_surgenonstep_cardioThe detector therefore applies a specificity/priority-based selection layer so the “harder” or more descriptive bundle survives when multiple candidates explain the same window.
Explorer support
The explorer now supports bundle inspection by:
✅ Testing
Verified with:
Additional validation included:
Data-driven findings from validation included:
restful_sleepandawake_in_bedare strong and interpretableactivity_surgeandnonstep_cardioare useful but broader, so overlap suppression is importantwatch_nonwear_contextis useful as a metadata-style annotation when phone/sleep/workout context continues during missing watch dataCode of Conduct & Contributing Guidelines