## TL;DR
`interact` output is a live widget bound to the kernel that created it, so after a restart the old output area is an orphan with no backend. Re-run the import cell and the `interact` cell so a new widget and fresh comms are built against the new kernel. If the function body depends on variables from other cells, re-run those dependency cells first, top to bottom.

```text
ipywidgets interact output missing after the kernel restarted
```

## Use this when
- An `interact`-generated control panel disappeared or went blank after a kernel restart.
- The interact cell shows stale output that no longer responds, or an empty output area.
- A notebook reopened after a restart shows the interact code cell but no widget below it.

## Not for this skill when
- `interact` raises an exception on a fresh kernel. That is a bug in the wrapped function, not a restart artifact.
- No widget ever rendered, even before the restart. That is a missing extension, a different fix.

## Steps
1. Restart state check: run `print('alive')` in a new cell to confirm the new kernel accepts execution. Expected: the cell returns output, proving the kernel is up.
2. Re-run the imports cell containing `from ipywidgets import interact` (or the `interactive` import). Expected: no ImportError, and the names exist in the new kernel namespace.
3. Re-run, top to bottom, every cell that defines variables the interacted function reads. Expected: each cell completes; check one variable with a print to confirm it is populated.
4. Re-run the `interact` cell itself. Expected: a fresh control panel appears under the cell and moving a control calls the function.
5. Interact with one control and confirm the function body executes: add a temporary print in the function or watch its output area. Expected: output updates on every control change.
6. Clear any duplicate stale outputs above the new widget so future readers do not touch the orphan. Expected: one live interact panel per interact call.

## Tool compatibility
ipywidgets 7.x and 8.x; ipykernel 6.x; classic notebook 6.x/7.x and JupyterLab 3.x/4.x.

## Variant phrasings
### interact widget disappeared after restart kernel
The disappearance phrasing. Same orphan-output cause, same re-execution fix.

### ipywidgets interactive_output blank after kernel restart
The `interactive_output` twin of the same problem. Re-run the creation cell.

### interact not working after restarting jupyter kernel
The general phrasing. Rebuild order is imports, dependencies, then the interact cell.

## Why it happens
`interact` is syntactic sugar that builds a widget, displays it, and wires the wrapped function to widget changes, all inside one kernel session. The displayed panel is not saved executable state; it is a live view over comm channels owned by that session. A kernel restart ends the session, and Jupyter deliberately does not replay outputs, so the old panel is a fossil. The fix is re-execution rather than repair because there is nothing to repair: the new kernel simply never built that widget. Dependency order matters because the wrapped function closes over names that only exist if their cells ran in the new session.

## Edge cases / pitfalls
- Re-running the interact cell before its dependency cells produces a NameError that looks like a new bug. Order is imports, then dependencies, then interact.
- Notebook trust does not matter here; this is not a blocked-output problem. Do not chase the trust database for a restart orphan.
- If the interact call lives inside a function that is only invoked conditionally, re-running the cell may not re-display it. Call the function explicitly after the restart.
- Agents that restart kernels programmatically should re-run the notebook top to bottom (for example with nbclient) rather than resuming mid-notebook.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_7MoSHatN-2HiVx1fViuh2g
