Chapter 6 of 6
Confirm the result#
Run both paths, then pause for the delivery owner.
Intended path#
PowerShell
.\scripts\verify.ps1 `
-Check Intended `
-ReleaseSha "<40-character-release-sha>" `
-PromotionRunId <github-actions-run-id>
Bash
./scripts/verify.sh \
--check intended \
--release-sha "<40-character-release-sha>" \
--promotion-run-id <github-actions-run-id>
The verifier checks the workflow identity and the successful gate, preview, and deployment jobs. It does not retrieve or hash the durable release record. The release owner checks that record through the approved release/security-store interface before using it for restore.
Blocked/failure path#
Dispatch the same workflow with evaluation_record=generated-blocked-tool-process-self-test, then run:
PowerShell
.\scripts\verify.ps1 `
-Check Blocked `
-ReleaseSha "<40-character-release-sha>" `
-PromotionRunId <github-actions-run-id>
Bash
./scripts/verify.sh \
--check blocked \
--release-sha "<40-character-release-sha>" \
--promotion-run-id <github-actions-run-id>
The validation job must return BLOCK. No Azure preview, apply approval, deployment, routing change, or release-record approval may run.
Delivery-owner checkpoint#
The delivery owner confirms the intended run reached each apply environment after its matching preview, while the blocked run stopped before Azure. If either sequence differs, keep the previous approved selector at 100% and correct the workflow.
After implementation#
| What remains | Owner |
|---|---|
| Promotion, restore, action pins, and release-record continuity | Release owner |
| GitHub environment protection and OIDC trust | GitHub and Entra administrators |
| Bicep inputs, exact Azure scopes, and what-if review | Platform owner |
| evaluation and security gates | Quality and security owners |
| Framework path and duplicate-agent review in the control definition | Agent and portfolio owners |
| smoke-check interface | Observability owner |
| APIM selectors and routing control | Gateway owner |
| Permitted and blocked checkpoint | Delivery owner |
GitHub, Azure, Microsoft Foundry, Application Insights, the approved release platform, and the security and change systems retain their native records. Do not copy runtime records into this repository.
To restore, dispatch Restore previous AI release with the exact approved release ID and recorded SHA-256. Start with dry_run=true. The workflow validates the release digest and implementationSession marker, previews the selector change, and waits for production approval. Rerun with dry_run=false to move only the stable selector to that approved immutable release.
Restore preserves current and older code, prompt, agent, model, APIM, evaluation, and deployment versions. It does not delete shared state. Use these workflows only for the approved repository, four GitHub environments, two resource-group scopes, and routing selectors recorded in the control definition.