Printable idea sheet
first_paint_contract
reqlan rq/extension/host/startup-performance.rq:51
Katz 0.058
The platform spinner ends only after VS Code loads the host module, calls `activate`, the provider registers, and `resolveWebviewView` assigns HTML.
`resolveWebviewView` is async: it binds the view, yields one turn so the overlay can be claimed, then assigns the lightweight HTML / Svelte shell ( retry once on invalid-state ). It does **not** `postMessage` in that method.
The webview installs its host message listener, mounts, waits for its first animation frame, then posts the one-shot `ready` signal from a queued task.
Host messages start only after that handshake. Index discovery / sync waits for the same signal so synchronous parser or database setup cannot race the first visible frame.
Windows overlay restore can dispose and re-resolve the sidebar; the provider rebinds and waits for a new `ready`.
first_paint_startup webview_claim_race
App.svelte
app.svelte.ts
startup-gate.ts
safe-webview-post.ts
- status
- done
- tests
- "../../../packages/extension/test/startup-gate.test.ts", "../../../packages/extension/test/safe-webview-post.test.ts"
Interactive page: first_paint_contract