Agent / Expose, do not reimplement
How this relates to Surface
Surface and Agent answer different questions:
Surface
"What may this feature observe and which application Messages may it cause?"
Agent
"How should part of that application boundary be exposed safely to an agent?"A Surface makes an excellent agent context because it is already an inspectable consumer-facing projection of application state. Agent then adds protocol input, availability, authorization, completion, resources, audit, and adapter-facing metadata around the application's existing Messages.
The agent contract does not become a second owner of the state it observes.
Submodels, Sync, Remote, or plain application update still own their respective
transitions.