The important architectural rule is that broker handling belongs inside the protocol, not inside every client.
#Current model
In the current implementation, export execution performs broker coordination by:
- generating or locating the customs package
- collecting artifact metadata
- preparing a broker submission record
- sending the current email-oriented submission
- recording status, timestamps, and any error state
That broker submission record is then surfaced in execute and inspect responses.
#Broker submission fields
The current protocol exposes a stable broker submission view with fields such as:
- identifier
submission_typestatusrecipient_emailsubjectsent_aterror_message
Those fields let clients answer a narrow but important question: "What happened to broker delivery for this export?"
#Why this belongs in the protocol
If broker communication lived outside EntryGo:
- each integration would invent its own delivery semantics
- execute would stop being the true side-effect boundary
- inspect could not explain the full operational outcome
- AI agents would need private knowledge outside the public contract
By keeping broker submission in the protocol:
- execution remains the single place where broker side effects happen
- inspect remains the single place where current broker state is observed
- future transport changes can happen without breaking the export lifecycle
#Why email is acceptable today
Email is the current transport because it is operationally simple and preserves the right contract boundary.
The important product decision is not "email forever." The important decision is "broker delivery is modeled and auditable inside EntryGo."
That gives the platform:
- a real downstream delivery step
- observable status
- retry and failure surfaces
- room to evolve toward direct broker APIs later
#Relationship to execute and inspect
#Execute
Execution creates or updates broker submission state as part of the side-effecting export operation.
#Inspect
Inspection returns the latest broker submission state so callers can reconcile current delivery outcome without assuming the original execute response is still current.
#What clients should do
Human developers, SDK users, and AI agents should all follow the same rule:
- execute through the protocol
- inspect broker submission state through the protocol
- do not treat broker communication as an undocumented side channel
#Future transport evolution
EntryGo can later support:
- direct broker APIs
- structured submission gateways
- broker-specific acknowledgements
- richer receipt handling
Those changes should remain hidden behind the same top-level concept:
- execute triggers broker handling
- broker submission records the state
- inspect returns the latest broker outcome
That continuity is why BrokerSubmission is already a first-class protocol primitive.