The boundary

A View member anchors a component to the client; a provider class anchors the server. Handlers written inside a View compile to browser code; handlers on domain classes are server code. An emit whose name crosses realms IS the boundary — the transport is generated, never written. A server-realm name inside client code is a located compile error, not a runtime surprise.

// board.hl — one file, both realms
import Store from './store.hl'

Hybrid rows = Store.topRows($board)    // server: per-request need

View {
	ul { for (r of rows) { li { r.title } } }
	button { 'refresh'
		on click() {                    // client: ships to the browser
			emit repull({ board = $board })  // the emit IS the boundary
		}
	}
}