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.