An app surface is the part your user sees. It should read named data, render every state, and send named requests. It should not import package storage details.
A founder adds aCustomers screen. The screen needs a list, a loading state, an empty state, and one action: archive a customer.Read
The surface asks for a stable input name and renders loading, error, empty, and success states.
→
Render
The user sees concrete product data: customers, messages, tasks, rooms, invoices, or whatever your product owns.
→
Act
The surface sends a small request to a target instead of mutating local files by hand.