Skip to content

Correct the live view media reason row and timeout warning - #698

Closed
robertjamesprior wants to merge 2 commits into
mainfrom
hypeship/live-view-media-bound
Closed

robertjamesprior wants to merge 2 commits into
mainfrom
hypeship/live-view-media-bound

Conversation

@robertjamesprior

@robertjamesprior robertjamesprior commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

The media row said ICE never reached checking, and the warning under the watchdog example said a connection that stalls after negotiation never emits KERNEL_CONNECTION_TIMEOUT. Both describe the client before kernel-images#417.

With that fix the media bound stays armed past checking and clears on connected or completed, so a peer that stalls after checking does report — and completed counts as success because ICE can reach it without connected when gathering is already done.

Docs-only. Ships with kernel-images#417; the page tolerates images that predate it, and the warning is now scoped to them. No other rows change. Prose and table edits only — Mintlify has no build step, and I did not run mintlify dev locally.


Note

Low Risk
Documentation-only prose and table edits in live-view.mdx; no runtime or API behavior changes.

Overview
Updates Live View parent-frame docs to match post–connect-failure fix client behavior (kernel-images#417).

The media reason row now says the media-stage timeout fires when ICE never reaches connected or completed (including stalls after checking), not when it fails to reach checking. The watchdog guidance is scoped to images without that fix: only on those older images does clearing the timeout at negotiation start mean a post-negotiation stall may never emit KERNEL_CONNECTION_TIMEOUT.

Reviewed by Cursor Bugbot for commit df0367d. Bugbot is set up for automated code reviews on this repo. Configure here.

@mintlify

mintlify Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
Kernel 🟢 Ready View Preview Oct 14, 2026, 6:04 PM

💡 Tip: Enable Automations to automatically generate PRs for you.

The `media` reason matches a peer that reaches neither `connected` nor
`completed` inside its bound — `completed` arrives without `connected` when
gathering is already done. The warning under the watchdog example describes
the client before this fix, where `checking` cleared the only watchdog, so
scope it to images without the connect-failure fix.
@robertjamesprior robertjamesprior changed the title Correct the media reason row to cover through connected Correct the live view media reason row and timeout warning Oct 14, 2026
@robertjamesprior
robertjamesprior marked this pull request as ready for review October 14, 2026 18:03
robertjamesprior added a commit that referenced this pull request Oct 19, 2026
…ance

The example remounts at 35s, above the client's connect bounds, which run in
sequence (transport, signaling, media) and now sum to 28s after
kernel-images#472 settled the media bound at 10s. Below the budget the example
reproduces the bug this page was fixing: the embedder tears the frame down
before the client can name the stage that stalled.

The prose around it says what the timer has to clear and why, since the timer
also covers loading the frame and waking a sleeping browser. The timeout
warning names `completed` alongside `connected`, which is the other way the
media bound clears.

The `media` row now reads "connected or completed ... covers a peer that stalls
after checking", folded in from #698, which this supersedes.
@robertjamesprior

Copy link
Copy Markdown
Contributor Author

folded into #704: the media row now says connected or completed and covers a peer that stalls after checking, and the example watchdog moved above the 28s budget. closing this so the two aren't editing the same lines.

robertjamesprior added a commit that referenced this pull request Oct 20, 2026
* Correct the media stage bound to connected

* Move the example watchdog above the client's connect budget

The snippet remounted 15s after mount. The client's connect bounds run in
sequence and sum to 23s, so an embedder following the example tore the frame
down before the client could report which stage stalled — including media,
the stage most likely to have stalled.

Also correct the note about KERNEL_CONNECTION_TIMEOUT never firing once
negotiation begins. The media bound stays armed past `checking` until ICE
reaches `connected`, so a connect that stalls in between does report one;
what never emits it is a viewer whose frames stop after it connected.

* Set the example watchdog above the connect budget and deslop the guidance

The example remounts at 35s, above the client's connect bounds, which run in
sequence (transport, signaling, media) and now sum to 28s after
kernel-images#472 settled the media bound at 10s. Below the budget the example
reproduces the bug this page was fixing: the embedder tears the frame down
before the client can name the stage that stalled.

The prose around it says what the timer has to clear and why, since the timer
also covers loading the frame and waking a sleeping browser. The timeout
warning names `completed` alongside `connected`, which is the other way the
media bound clears.

The `media` row now reads "connected or completed ... covers a peer that stalls
after checking", folded in from #698, which this supersedes.

* Keep the media bound at 30s and move the example watchdog above the budget

The media bound stays at its interim ceiling. The stretch through ICE
`connected` is unmeasured in every region, so shortening the default is not
something the probe data supports yet; a region that has the timings lowers it
through the live view proxy's override instead.

With the defaults unchanged, the three bounds sum to 48s rather than 28s, so
the example timer moves to 50s to stay above the budget it has to outlast.

* Apply mason's notes on the watchdog paragraph

The prose said the timer covers waking a browser. It doesn't: the proxy wakes the
browser before the socket opens, so that time is already inside the transport
bound, and only loading the page itself is extra.

The example timer moves to 60s. 50s left 2s over the 48s budget, which is thin
for "leave room above the budget", and a region that raises its bounds moves the
budget past 48s anyway. The earlier terminal events still show the fallback as
soon as they arrive, so this timer only catches a silent stall.

Also contracts "Do not" to "Don't", which the docs style guide asks for.

* Correct the transport and peer reason rows

A socket close at any point before the connect succeeds reports `transport`, not
only one before signaling, and `peer` also covers ICE reaching `failed` or
`closed` and the data channel closing before the connect.

The retry advice follows: remounting repeats a construction or offer throw, but
it can fix an ICE failure, so that case is worth one retry.

This branch was successfully deployed

1 active deployment
staging — df0367d8 Deployed Oct 14, 2026 by mintlify[bot]
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