Porthole
The debug-build entry point.
Installed automatically by PortholeInitializer on process start, so in the normal case the only things you call yourself are the register functions: they are what turn anonymous state objects into names an agent can reason about.
Everything here is a no-op in release builds, where the porthole-noop artifact with the same signatures takes its place.
Functions
Makes a Compose view's semantics tree readable by the semantics_tree tool.
Undoes attachComposeView. Call it when the view goes away.
Starts the porthole: collectors, and the socket the timeline and the MCP server connect to.
Tracks a NavController's back stack, arguments and deep link.
Names the state held by a ViewModel (or any object) so recomposition reports say CartViewModel.items instead of <unnamed:...>.
Reports a back stack the app owns itself, rather than one androidx holds.