Chapter 6 of 6 · Validation and operations

CI/CD, policy as code, and controlled promotion

Runtime assurance 4 hours in a non-production POC

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 remainsOwner
Promotion, restore, action pins, and release-record continuityRelease owner
GitHub environment protection and OIDC trustGitHub and Entra administrators
Bicep inputs, exact Azure scopes, and what-if reviewPlatform owner
evaluation and security gatesQuality and security owners
Framework path and duplicate-agent review in the control definitionAgent and portfolio owners
smoke-check interfaceObservability owner
APIM selectors and routing controlGateway owner
Permitted and blocked checkpointDelivery 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.

Session 12

CI/CD, policy as code, and controlled promotion slide deck