Pillar 01
SOP engine
Every change runs a versioned YAML procedure with typed steps — intent, checks, approval and apply are steps in a definition, not free-form tool calls.
11 procedures · 9 step types
- No change runs outside a procedure.
- Every step is recorded in order.
- Procedures are versioned and reviewable.
sop:
id: provision_vm
name: "Provision Virtual Machine"
version: "1.0"
description: "Standard procedure for provisioning Azure VMs with security and cost controls"
trigger: "user requests VM creation"
min_role: developer
approval_required: true
context_required:
- resource_count_by_type
- budget_remaining
- active_alerts
steps:
- id: gather_intent
type: ask_user
prompt: |
What is the purpose of this VM?
Which environment (dev/staging/prod)?
What workload type?
mcq:
questions:
- id: purpose
question: "What will this VM be used for?"
options:
- label: "Compute"
value: "compute"
description: "CPU-intensive workloads"
- label: "Storage"
value: "storage"
description: "File storage services"
- label: "Web Server"
value: "web"
description: "HTTP/HTTPS serving"
- label: "Database"
value: "database"
description: "Database engine hosting"
- id: environment
question: "Which environment?"
options:
- label: "Development"
value: "dev"
description: "Development environment"
- label: "Staging"
value: "staging"
description: "Pre-production testing"
- label: "Production"
value: "prod"
description: "Live production"
validation:
required_fields: [purpose, environment]
- id: check_existing
type: query_world_model
auto_execute: true
query: "VMs in {environment} with similar purpose"
gate:
warn_if: "similar_resources_found"
message: "A VM with similar purpose already exists: {match_name}. Proceed or reuse?"
- id: select_sizing
type: recommend
source: knowledge_base
query: "optimal Azure VM size for {purpose} workload"
constraints:
- type: cost_policy
rule: "max_monthly_cost"
values:
dev: 150
staging: 300
prod: 600
- type: security
rule: "no_public_ip_unless_justified"
present_options: true
- id: generate_hcl
type: generate_code
generator: claude
context_from_steps: [gather_intent, select_sizing]
enforce:
- encryption_at_rest: true
- nsg_default_deny: true
- managed_identity: true
- diagnostics_enabled: true
- required_tags: [owner, cost_center, environment, sop_id]
validation:
terraform_validate: must_pass
checkov_scan: must_pass_critical
cost_estimate: must_be_within_policy
- id: cost_review
type: present
auto_execute: true
show:
- estimated_monthly_cost
- budget_remaining_after
- cost_vs_alternatives
- security_scan_summary
gate: user_acknowledges
- id: plan_review
type: run_tool
auto_execute:
condition: blast_radius_below
threshold: 25.0
tool: run_tofu_plan
present: diff_output
gate: user_approves_plan
- id: approval
type: request_approval
required_role: approver
present_to_approver:
- sop_execution_summary
- cost_estimate
- security_scan_results
- plan_diff
- blast_radius
gate: approver_approves
- id: apply
type: run_tool
tool: run_tofu_apply
post_validate:
- verify_resource_in_azure
- verify_tags_applied
- verify_nsg_active
- log_to_audit
- id: record
type: post_validate
auto_execute: true
actions:
- log_sop_completion
- update_world_model
- record_cost_baseline