Skip to content

Correct the media stage bound to connected - #704

Open
robertjamesprior wants to merge 4 commits into
mainfrom
hypeship/live-view-media-reason-bound
Open

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

Conversation

@robertjamesprior

@robertjamesprior robertjamesprior commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Two corrections to the live view embedding guidance, plus a pass over the prose that changed.

The media reason row. It said the bound expires if ICE never reached checking. Since kernel-images#417 the client keeps the media bound armed through connected, so it expires only if ICE never arrives at connected or completed — completed is the other way a healthy connect can land when gathering is already done. An embedder branching on reason would otherwise expect media to fire earlier than it does. This row is the one #698 carried, which this PR supersedes.

The example watchdog. It remounted 15s after mount. The client's connect bounds run in sequence — transport, then signaling, then media — and sum to 48s, so an embedder following the snippet tore the frame down before the client could report which stage stalled. The example now uses 50s, and the prose says why the timer needs room above the budget: it also covers loading the frame, including waking a browser that has gone to sleep.

The note claiming KERNEL_CONNECTION_TIMEOUT stops firing once negotiation begins is corrected the same way: the media bound stays armed past checking until ICE reaches connected or completed, so a connect stalling in between does report one. What never emits it is a viewer whose frames stop after it connected.

Paired with kernel-images#472, which serves the bounds with the page from the live view proxy's environment, so a region can retune them without a browser image release. The defaults stay at transport 15s, signaling 3s and media 30s. Merge order doesn't matter for the docs themselves, but the two describe the same client.

Docs only, prose and one snippet constant. I didn't run mint broken-links on this revision because mint isn't installed in this environment; the change touches no links and the check passed on the previous revision.


Note

Low Risk
Documentation-only changes to live view embedding guidance; no runtime or API behavior changes in this repo.

Overview
Updates live view iframe embedding docs so reason handling and watchdog timing match current client connect behavior.

The media timeout reason now states ICE must reach connected or completed within the bound (not merely checking), including peers that stall after checking. KERNEL_CONNECTION_TIMEOUT guidance is updated the same way: the media bound stays active until those states, and viewers that lose frames after a successful connect will not emit it.

The example remount watchdog increases from 15s to 50s, with new prose that sequential connect stages default to 48s total and embedders should allow extra time for iframe load and waking a sleeping browser.

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

@mintlify

mintlify Bot commented Oct 15, 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 20, 2026, 4:17 AM

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

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.

@Sayan- Sayan- 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.

overal looks good. needs a deslop to conform to docs language guidance

…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.
…udget

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.

This branch was successfully deployed

1 active deployment
staging — 044c381c Deployed Oct 20, 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.

2 participants