Skip to content

quest: plan CARLA control, DTLS timeout, HLS source, and CLI catalog follow-ups - #7751

Merged
kixelated merged 6 commits into
mainfrom
quest-plan/carla-control-and-dtls-timeout
Nov 4, 2026
Merged

kixelated merged 6 commits into
mainfrom
quest-plan/carla-control-and-dtls-timeout

Conversation

@kixelated

@kixelated kixelated commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Plans five quests from a 2026-11-03 planning session with the maintainer.

  • Taking control of a CARLA truck starts from neutral pedals (XS, m1): a takeover keeps the autopilot's last pedals (about 85% throttle, seen on the public demo) until E-stop. Takeover keeps steering and gear but releases the pedals, on both the browser and the worker.
  • A wedged CARLA truck nobody drives respawns after the stuck timeout (S, m1): after a handback, a wedged truck sat for 8 minutes without the 300 s stuck respawn firing. The code rules out a stalled handback at 0 km/h, so the PR first names the condition that kept the detector off: most likely a latched e-stop, otherwise a parked world or a rocking truck. Whether a driverless, latched truck should respawn is left for the maintainer in that PR (recommended: yes).
  • A typed DTLS handshake timeout error (XS, m2, under the WebRTC epic): moq-ice and moq-rtc carry a post-ICE DTLS handshake timeout as Rtc(String), since str0m flattens dimpl's typed TimeoutError::Handshake. Add a typed variant that session end logs like an ICE timeout.
  • moq-hls exposes each rendition's bound source (S, m2): an HLS cache can't tell which source a referenced rendition reads, so it keys on each viewer's grants and viewers with different grants never share entries. Each playlist and segment reports the source path and instance that supplies it, including a predecessor's retained rows. Viewers are still authorized against that source.
  • The moq CLI can publish a changing catalog (S, m2): a catalog recovery replay needed hand-built publishers because moq import publishes one catalog per broadcast.

Ranking and placement (my choices):

  • Both CARLA quests sit at the m1 root, after moq-boy's status loop fix. No epic owns demo/carla; the sockets epic only owns the CARLA socket port, which both link as Related.
  • The DTLS quest goes first in the WebRTC epic: it is ready now, small, and has a caller waiting to drop a string match. It does a text match in moq-ice until the vendored stack lands. vendor.md now owns replacing that match with dimpl's typed variant if it lands second.
  • dtls-after-ice.md's test note now allows the new variant for a post-ICE DTLS failure.
  • Overlap check after merging main: no duplicate with the HLS media grid quest, which covers segmentation, or with the planning PRs moq-dev/moq#7747 and moq-dev/moq#7748.

Public API: none (plan only). Wire: none.

Review

Codex gpt-6.1-sol, medium effort, via quest review --base origin/main --new, round 1 on head 6169567485125f148117d0f1e20c8904db19baa3: no findings.

Online review findings on the earlier heads, all fixed in 6169567485:

  • Pullfrog: the stuck quest's handback suspect can't explain a 0 km/h truck. Fixed: diagnosis comes first, and the e-stop latch is the lead suspect.
  • Pullfrog: the typed DTLS timeout had no owner after vendoring. Fixed: vendor.md owns it.
  • Pullfrog: the route epoch isn't exposed and doesn't mark new content. Fixed: the quest keys on path and instance.
  • OpenAI: a replacement's playlist lists its predecessors' rows. Fixed: each resource reports its supplying source.
  • Pullfrog: the CLI verb is moq import. Fixed.

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

…a typed DTLS timeout

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review November 3, 2026 20:12

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Automated review by review (OpenAI)

Reviewed head 76981b7 against base 151ed38.

No actionable finding in the three quest plans. The CARLA plans describe the observed handoff and stuck-detector paths, retain the socket migration context, and leave the brake choice and diagnosis explicit. The DTLS plan preserves the distinction from ICE timeout and accounts for the eventual vendored-stack transition.

Static GitHub-only review; I did not reproduce the public-demo behavior or run CARLA or DTLS tests.

@pullfrog pullfrog Bot 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.

Important

The stuck-truck quest's recommended fix cannot explain the 0 km/h observation it is based on, and the DTLS quest's typed handover to the vendoring quest is not recorded where the vendoring PR will see it.

Reviewed changes

  • Neutral-pedal takeover (m1, XS): takeoverState and Drive.synchronize currently copy the autopilot's measured pedals, so the plan keeps steering and gear but starts the pedals neutral, clamps a claiming command on the worker too, and updates the sim/web tests and the world.py docstring. Paths, symbols, and test names check out against the code.
  • Stuck respawn after handback (m1, S): the StuckDetector resets on every tick with a driver, e-stop, not autonomous, or a parked world. The plan reproduces the observed wedge, lists two suspects, and recommends arming for driverless un-e-stopped trucks regardless of autonomy while keeping held and e-stopped trucks exempt.
  • Typed DTLS timeout (m2/webrtc, XS): adds a variant to moq_ice::Error and moq_rtc::Error for the post-ICE handshake timeout currently flattened by str0m into Error::Rtc("rtc error: DTLS error: timeout: handshake"), with session::end logging it like IceTimeout. The exact string, the drain mapping, and the moq-tokio webrtc mapping were verified.
  • Index and note updates: the m1 and WebRTC READMEs list the new quests, and dtls-after-ice.md allows the typed variant in its post-ICE failure assertion.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

Comment thread quest/m1/carla-stuck-handback.md Resolved
Comment thread quest/m2/webrtc/dtls-timeout.md Resolved
Comment thread quest/m1/carla-stuck-handback.md Resolved
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 3 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: a11a5596-e4d6-49a6-84dc-06037ba86dd3
Commits

Reviewing files that changed from the base of the PR and between faff8e3 and 6169567.

Files selected for processing: 10
  • quest/m1/README.md
  • quest/m1/carla-stuck-handback.md
  • quest/m1/carla-takeover-neutral.md
  • quest/m2/README.md
  • quest/m2/cli-catalog-updates.md
  • quest/m2/hls-rendition-source.md
  • quest/m2/webrtc/README.md
  • quest/m2/webrtc/dtls-after-ice.md
  • quest/m2/webrtc/dtls-timeout.md
  • quest/m2/webrtc/vendor.md
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Share

@kixelated kixelated changed the title quest: plan CARLA takeover pedals, stuck respawn after handback, and a typed DTLS timeout quest: plan CARLA control, DTLS timeout, and HLS source follow-ups Nov 3, 2026

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Automated review by review (OpenAI)

Reviewed head 22abc2d against base 151ed38.

P2 — Account for predecessor sources when exposing cache identity (quest/m2/hls-rendition-source.md:5–8,17–24). A rendition's current binding does not necessarily identify every segment in its playlist: rs/moq-hls/src/export/rendition.rs:593–625 retains rows from predecessor renditions, and :1323–1330 dispatches an inherited segment to the predecessor, whose own binding authorizes and supplies its bytes. After a replacement, a playlist can therefore list old and new source instances together. Returning only the current source on a playlist or on every segment response can mis-key retained bytes and make a cache or authorization layer treat the predecessor's content as the replacement's. Specify identity for the actual binding supplying each resource (and how a mixed-source playlist is represented), preserve per-viewer authorization, and test a replacement while predecessor rows still drain.

Static GitHub-only review of the new plan and current HLS binding/segment paths. I did not run tests or exercise a cache.

@pullfrog pullfrog Bot 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.

ℹ️ No critical issues — one plan-accuracy point inline.

Reviewed changes

  • Added the moq-hls rendition-source quest and its m2 README entry: the export would report each rendition's bound source so a downstream HLS cache can share entries across viewer grants.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

Comment thread quest/m2/hls-rendition-source.md Resolved
@kixelated kixelated changed the title quest: plan CARLA control, DTLS timeout, and HLS source follow-ups quest: plan CARLA control, DTLS timeout, HLS source, and CLI catalog follow-ups Nov 3, 2026

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Automated review by review (OpenAI)

Reviewed head 4c024d4 against base b5f4bca.

The new CLI catalog-update quest is scoped to an external update mechanism, preserves the one-catalog default, and covers a subscriber and a late joiner. I found no new actionable issue in that addition.

The earlier HLS mixed-source playlist finding remains open: the HLS quest is unchanged and still calls for the current rendition binding without specifying the predecessor bindings supplying retained segment rows.

Static GitHub-only review of the new plan and the prior finding; I did not run the CLI or HLS tests.

@pullfrog pullfrog Bot 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.

ℹ️ No critical issues — one plan-accuracy point inline.

Reviewed changes

  • Added quest/m2/cli-catalog-updates.md and its m2 README entry: a plan for the CLI to publish catalog updates mid-stream so catalog recovery replays need no hand-built clients.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

Comment thread quest/m2/cli-catalog-updates.md Resolved
kixelated and others added 2 commits November 3, 2026 16:57
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nd CLI catalog plans

The stuck quest diagnoses before fixing: a stalled handback cannot hold
the detector off at 0 km/h, so the latched e-stop, a parked world, and
a rocking truck are the suspects. The vendoring quest now owns the typed
DTLS timeout if it lands second. The HLS quest keys on path and instance
and reports each resource's actual source, predecessors included. The CLI
quest names the current `moq import` verb.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@pullfrog pullfrog Bot 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.

✅ No new issues found.

Reviewed changes

This run reviewed the delta since the prior Pullfrog review (4c024d4), namely 6169567, which implements the earlier plan-accuracy findings.

  • Rewrote the CARLA stuck-handback plan to rule out a stalled handback and an abandoned lease from the code, put the latched e-stop first, and leave the driverless-latched respawn policy to the maintainer with a recommendation.
  • Recorded the DTLS/vendoring handover in vendor.md, and made dtls-timeout.md carry dimpl's typed timeout when vendoring lands first instead of adding a throwaway text match.
  • Switched the HLS source identity to path + instance (with the hidden route epoch explained) and specified per-resource supplier reporting, including a predecessor's retained rows, so a mixed-source playlist is covered.
  • Fixed the CLI catalog quest to name the current moq import verb.

The rewritten code claims (handback release and WALKING_PACE, the 1 s command watchdog, STUCK_DISTANCE re-anchoring, and Rendition::after rows carrying their instance) check out against the source.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Automated review by review (OpenAI)

Reviewed head: 6169567.

The prior HLS mixed-source finding is addressed: segments report the source actually supplying their bytes, playlists represent every listed source, and a replacement test retains the predecessor rows. The updated plans preserve per-viewer authorization and put the DTLS text-match replacement with the vendoring work. No additional actionable finding in this delta. Static GitHub inspection only; I did not run HLS, CARLA, or DTLS tests.

(Written by review (OpenAI))

@kixelated
kixelated added this pull request to the merge queue Nov 4, 2026
Merged via the queue into main with commit 3c9facb Nov 4, 2026
9 of 10 checks passed
@kixelated
kixelated deleted the quest-plan/carla-control-and-dtls-timeout branch November 4, 2026 02:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant