Skip to content

[merge-to-it] cloudxr: route OOB progress and headset events through logging - #1201

Merged
lotusl-code merged 3 commits into
mainfrom
merge-to-it/oob-logging-integration
Oct 9, 2026
Merged

lotusl-code merged 3 commits into
mainfrom
merge-to-it/oob-logging-integration

Conversation

@lotusl-code

@lotusl-code lotusl-code commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

[merge-to-it]

Summary

Brings the CloudXR OOB flow into the logging system:

  • oob_progress() logs [<stage>] <msg> at INFO on isaaccapture.cloudxr.oob_teleop_env (still printed to stderr when ISAACCAPTURE_LOGGING=off), and that logger is cyan by default in _logger_colors.
  • OobLifecycle._publish() reports headset connect, disconnect and reconnect through oob_progress(). A disconnect is announced only when the stream itself is lost, not when metrics merely go stale.
  • On shutdown the lifecycle closes the headset's teleop tab so the headset leaves the CloudXR session instead of retrying against a vanished server.
  • The "headset appears asleep" warning mentions that OOB wakes and connects it automatically.

Testing

  • tests/python/core/cloudxr: test_oob_teleop_env.py, test_oob_teleop_adb.py (126 passed), test_oob_teleop_lifecycle.py; tests/python/core/logging_config/test_console.py; pre-commit.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Progress updates now appear in application logs when logging is enabled, or in cyan in the terminal when logging is off.
    • Headset streaming status now distinguishes initial connections from resumed streams and reports disconnects when streaming stops.
    • Stale teleoperation tabs are closed during shutdown.
  • Bug Fixes

    • The asleep-headset warning now clarifies that enabled OOB automation will wake and connect the headset.
    • Stale metrics no longer trigger a disconnect announcement while streaming continues.

@coderabbitai

coderabbitai Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/IsaacCapture/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: a184f3e7-81f9-4da2-ae5b-176140f08471

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/IsaacCapture/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: 9d9be36a-1379-41a2-b87d-cd6ed94061f6

📥 Commits

Reviewing files that changed from the base of the PR and between 6960d4a and 5d4afa8.


📒 Files selected for processing (7)
  • src/python/isaaccapture/cloudxr/oob_teleop_adb.py
  • src/python/isaaccapture/cloudxr/oob_teleop_env.py
  • src/python/isaaccapture/cloudxr/oob_teleop_lifecycle.py
  • src/python/isaaccapture/logging_config/_console.py
  • tests/python/core/cloudxr/test_oob_teleop_env.py
  • tests/python/core/cloudxr/test_oob_teleop_lifecycle.py
  • tests/python/core/logging_config/test_console.py

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 7 remain after this review.



📝 Walkthrough

Walkthrough

OOB teleoperation progress messages now use INFO logging when logging is enabled and cyan stderr output otherwise. Lifecycle publications report initial connection, resumed streaming, and disconnection events. Shutdown closes stale teleoperation tabs before cleaning up owned ADB rules. The asleep-headset warning now describes automatic wake and connection when OOB automation is enabled.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Publication
  participant _publish
  participant oob_progress
  participant Output
  Publication->>_publish: health and streaming flags
  _publish->>oob_progress: connection, resumption, or disconnection event
  oob_progress->>Output: INFO log or stderr progress line
Loading

Merge Risk: ⚪ Minimal · up to 5d4af

The supplied evidence identifies no issue that needs resolution before merging after normal checks.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 20 functions across 7 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: routing OOB progress and headset lifecycle events through logging.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.


✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR

🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR


  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

Comment thread src/python/isaaccapture/cloudxr/oob_teleop_lifecycle.py Outdated
Comment thread src/python/isaaccapture/cloudxr/oob_teleop_lifecycle.py Outdated
Comment thread tests/python/core/cloudxr/test_oob_teleop_lifecycle.py
Comment thread tests/python/core/cloudxr/test_oob_teleop_lifecycle.py
@lotusl-code
lotusl-code force-pushed the merge-to-it/oob-logging-integration branch from 632a6df to f9938ee Compare October 8, 2026 22:49
@lotusl-code
lotusl-code enabled auto-merge (squash) October 9, 2026 18:45
Comment thread src/python/isaaccapture/cloudxr/oob_teleop_lifecycle.py Outdated

@AndreusNvidius AndreusNvidius left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This LGTM.

@lotusl-code
lotusl-code force-pushed the merge-to-it/oob-logging-integration branch from 6f72db8 to ecff0dd Compare October 9, 2026 21:22
@lotusl-code
lotusl-code enabled auto-merge (squash) October 9, 2026 21:35
@lotusl-code
lotusl-code disabled auto-merge October 9, 2026 21:35
lotusl-code and others added 3 commits October 9, 2026 15:09
…logging

Signed-off-by: Lotus Li <lotusl@nvidia.com>
assert_headset_awake() now gates CONNECT, the USB-local transfer and
webclient.py with require_awake=True, so a headset that stays asleep
blocks OOB until it is worn or unlocked. "It will automatically wake up
and connect" no longer holds, and the helper is also reached outside OOB.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lotus Li <lotusl@nvidia.com>
… waits for wake

Same-tab CONNECT runs only after the stream ended, and its other
publishes already carry streaming=False. The WAITING_FOR_AWAKE publish
added with the wake gate did not, so a stream that ended because the
headset went to sleep was announced only once it woke.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lotus Li <lotusl@nvidia.com>
@lotusl-code
lotusl-code force-pushed the merge-to-it/oob-logging-integration branch from ecff0dd to bcc6148 Compare October 9, 2026 22:11
@lotusl-code
lotusl-code enabled auto-merge (squash) October 9, 2026 22:12
Comment thread tests/python/core/cloudxr/test_oob_teleop_lifecycle.py
@lotusl-code
lotusl-code merged commit 1adda42 into main Oct 9, 2026
33 checks passed
@lotusl-code
lotusl-code deleted the merge-to-it/oob-logging-integration branch October 9, 2026 22:28

This branch was successfully deployed

1 active deployment
dev — bcc6148b Deployed Oct 9, 2026 by lotusl-code via publish-wheel #5485
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants