Chapter 4 of 6
Decisions and stop conditions#
Resolve every __REQUIRED_*__ value in a working copy before deployment. Keep __RUNTIME_READ_API_BASE_URL__; deployment replaces it in memory.
| Gate | Continue when | Stop when |
|---|---|---|
| Agent and model | The immutable agent name, accountable owner, approved model deployment, named RAI policy, Responses protocol, Entra authorization, and fixed-version routing are set | The selected model differs from the approved deployment profile, the region or model does not support the tool, the name collides with an unmarked agent, or an existing agent has no unique instance_identity |
| Tool authority | tool-manifest.json contains one genuine read-only GET operation, the exact Entra audience, role definition ID, assignment scope, authorization owner, and human change route | The API specification contains a credential; get_policy can change state; the role can write; the owner, audience, role, or scope is unresolved; or preflight does not find exactly one matching project-identity assignment |
| Prohibited action | instructions.md names the blocked write action and the human approval route | The product owner asks to add a write tool in this session |
| Safety and tracing | The live RAI policy meets the approved filters and trace ownership is settled | The policy is missing or trace readers, retention, regional handling, sampling, cost, or sensitive-content restrictions are unresolved |
Use the current agent object model. The agent receives its own instance_identity and stable endpoint when created. Do not upgrade a legacy shared-identity agent in place; choose a new name. The direct OpenAPI managed_identity option still uses the Foundry project managed identity.
The portal can show the endpoint and pin a version. The scripts set protocol, authorization, and agent-card properties through the REST API. Stop if the live response differs from the definition.